one flake containing all of my nixos configs
{
  config,
  pkgs,
  lib,
  ...
}: let
  dotfiles_cfg = config.dotfiles;
  cfg = dotfiles_cfg.gui.sway;
in
  with lib; {
    imports = [
      ./kanshi.nix
      ./keybindings.nix
      ./screenshots.nix
      ./waybar.nix
      ./swayidle.nix
      ./sway.nix
    ];

    options.dotfiles.gui.sway = {
      enable = mkEnableOption "Use highly configured sway as the window manager.";
    };

    config = mkIf cfg.enable {
      wayland.windowManager.sway = {
        enable = mkDefault cfg.enable;
        config.terminal = with dotfiles_cfg.gui; "${terminal}/bin/${terminal.pname}";
      };
      programs.waybar.enable = mkDefault cfg.enable;
      services.kanshi.enable = mkDefault cfg.enable;

      # notifications daemon
      services.mako = {
        enable = mkDefault true;
        anchor = mkDefault "top-center";
        defaultTimeout = mkDefault 2750;
      };

      services.blueman-applet.enable = mkDefault true;
      services.gammastep = {
        enable = mkDefault true;
        latitude = "36.174465";
        longitude = "-86.767960";
      };

      home.packages = with pkgs; [
        wldash
        imv
        libnotify
        mpv
        pavucontrol
        playerctl
        pulseaudio
        ranger
        swaylock-effects
        wl-clipboard
      ];

      xdg.configFile."nwg-panel/drawer.css".source = ./nwg-panel.css;
      xdg.configFile."nwg-bar/style.css".source = ./nwg-bar.css;
      xdg.configFile."nwg-bar/icons".source = ./icons;
      xdg.configFile."nwg-bar/bar.json".text = ''
        [
          {
            "label": "Lock screen",
            "exec": "${pkgs.swaylock-effects}/bin/swaylock -f -c 000000",
            "icon": "${config.xdg.configHome}/nwg-bar/icons/system-lock-screen.svg"
          },
          {
            "label": "Sleep",
            "exec": "systemctl hybrid-sleep",
            "icon": "${config.xdg.configHome}/nwg-bar/icons/system-shutdown.svg"
          },
          {
            "label": "Logout",
            "exec": "swaymsg exit",
            "icon": "${config.xdg.configHome}/nwg-bar/icons/system-log-out.svg"
          },
          {
            "label": "Reboot",
            "exec": "systemctl reboot",
            "icon": "${config.xdg.configHome}/nwg-bar/icons/system-reboot.svg"
          },
          {
            "label": "Shutdown",
            "exec": "systemctl -i poweroff",
            "icon": "${config.xdg.configHome}/nwg-bar/icons/system-shutdown.svg"
          }
        ]
      '';
      xdg.configFile."swaylock/config".source = ./swaylock.config;
    };
  }