one flake containing all of my nixos configs
{
  config,
  lib,
  pkgs,
  ...
}: {
  config = lib.mkIf config.dotfiles.gui.sway.enable {
    wayland.windowManager.sway = {
      config.fonts.names = ["DejaVu Sans Mono" "FontAwesome5Free"]; # TODO don't hardcode
      config.bars = [{command = "waybar";}];
      config.floating.criteria = [
        {app_id = "pavucontrol";}
        {app_id = "zenity";}
        {
          app_id = "org.keepassxc.KeePassXC";
        }
        {class = ".zoom";}
      ];
      config.floating.titlebar = false;
      config.focus.mouseWarping = true;
      config.gaps.inner = 3;
      config.gaps.outer = 3;
      config.gaps.smartGaps = true;
      config.input."*".natural_scroll = "enabled";
      config.input."type:touchpad" = {
        tap = lib.mkDefault "enabled";
        tap_button_map = lib.mkDefault "lrm";
        accel_profile = lib.mkDefault "adaptive";
      };
      config.output."*".bg = "${../wallpapers}/1.jpg fill";
      config.startup = [
        {
          command = "${pkgs.kanshi}/bin/kanshi";
          always = true;
        }
      ];
      config.window.titlebar = false;
      config.workspaceAutoBackAndForth = true;
      wrapperFeatures.base = true;
      wrapperFeatures.gtk = true;
      extraConfig = ''
        seat seat0 xcursor_theme breeze 62
        for_window [app_id="scratch_terminal"] move scratchpad, resize set 800 610
        exec ${pkgs.alacritty}/bin/alacritty --title=scratch_terminal
      '';
    };
  };
}