{
  pkgs,
  lib,
  home,
  ...
}: {
  home = {
    wayland.windowManager.sway = {
      enable = true;
      wrapperFeatures.gtk = true;
      package = pkgs.sway-unwrapped;

      config = rec {
        assigns = {};
        bars = [];
        colors = {};
        defaultWorkspace = null;
        down = "j";
        floating = {};
        focus = {};
        fonts = {};
        gaps = {
          inner = 10;
          top = -10;
          outer = 0;
          smartGaps = false;
        };
        input = {
          "type:touchpad" = {
            dwt = "enabled";
            tap = "enabled";
            natural_scroll = "enabled";
            middle_emulation = "enabled";
            events = "disabled_on_external_mouse";
          };
          "type:keyboard" = {
            xkb_layout = "gb";
            xkb_options = "caps:none";
          };
          "type:tablet_tool" = {
            map_to_output = "eDP-1";
          };
        };
        keybindings = lib.mkOptionDefault {
          "${modifier}+g" = "sticky toggle";
          "${modifier}+k" = "exec wl-copy -c";
          "${modifier}+f" = "maximize toggle";
          "XF86AudioRaiseVolume" = "exec pamixer -ui 5 && ( pamixer --get-mute && expr \"$(pamixer --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK";
          "XF86AudioLowerVolume" = "exec pamixer -ud 5 && ( pamixer --get-mute && expr \"$(pamixer --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK";
          "XF86AudioMute" = "exec pamixer --toggle-mute && ( pamixer --get-mute && expr \"$(pamixer --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK";
          "XF86AudioMicMute" = "exec pamixer --toggle-mute --default-source && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --default-source --get-volume > $WOBSOCK";
          "XF86MonBrightnessUp" = "exec light -A 3 && light -G | cut -d'.' -f1 > $WOBSOCK";
          "XF86MonBrightnessDown" = "exec light -U 3 && light -G | cut -d'.' -f1 > $WOBSOCK";
          "${modifier}+XF86AudioRaiseVolume" = "exec pamixer --default-source -ui 5 && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --default-source --get-volume > $WOBSOCK";
          "${modifier}+XF86AudioLowerVolume" = "exec pamixer --default-source -ud 5 && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --get-volume --default-source > $WOBSOCK";
          "${modifier}+XF86AudioMute" = "exec pamixer --toggle-mute --default-source && ( pamixer --get-mute --default-source && expr \"$(pamixer --default-source --get-volume)\" + 100 > $WOBSOCK ) || pamixer --default-source --get-volume > $WOBSOCK";
          "${modifier}+XF86MonBrightnessUp" = "exec light -A 6 && light -G | cut -d'.' -f1 > $WOBSOCK";
          "${modifier}+XF86MonBrightnessDown" = "exec light -U 6 && light -G | cut -d'.' -f1 > $WOBSOCK";
          "${modifier}+n" = ''exec wpa_cli select_network $(wpa_cli list_networks | tail -n +3 | rofi -dmenu -window-title "Select Network" | awk '{print $1;}')'';
        };
        keycodebindings = {
          "66" = "exec ${pkgs.wtype}/bin/wtype -P F12";
        };
        left = "h";
        modes = {
          resize = {
            Down = "resize grow height 10 px";
            Escape = "mode default";
            Left = "resize shrink width 10 px";
            Return = "mode default";
            Right = "resize grow width 10 px";
            Up = "resize shrink height 10 px";
            h = "resize shrink width 10 px";
            j = "resize grow height 10 px";
            k = "resize shrink height 10 px";
            l = "resize grow width 10 px";
          };
        };
        modifier = "Mod4";
        output = rec {
          HDMI-A-1 = {
            resolution = "3840x2160";
            bg = "#FFD0F9 solid_color";
            position = "0,0";
          };
          HDMI-A-2 = HDMI-A-1;
          # For some reason my monitor sometimes gets one identifier and
          # sometimes the other, despite being plugged into the same port
          eDP-1 = {
            resolution = "1920x1080";
            position = "0,2160";
          };
          "*" = {
          };
        };
        right = "l";
        seat = {
          "*" = {
            hide_cursor = "when-typing enable";
          };
        };
        startup = [
          {command = "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK";}
          {
            command = "light -N 1";
            always = false;
          }
          {
            command = "\"pkill wob; rm -f $WOBSOCK && mkfifo $WOBSOCK && tail -f $WOBSOCK | wob --output='*'\"";
            always = true;
          }
        ];
        terminal = "${pkgs.kitty}/bin/kitty";
        up = "k";
        window = {};
        workspaceAutoBackAndForth = true;
        workspaceLayout = "default";
        workspaceOutputAssign = [];
      };

      extraSessionCommands = ''
        unset __HM_SESS_VARS_SOURCED
        . "$HOME/.nix-profile/etc/profile.d/hm-session-vars.sh"

        # export WLR_NO_HARDWARE_CURSORS=1
        # TODO: Check if above is still needed w/ nvidia card enabled
        # export SDL_VIDEODRIVER=wayland
        # needs qt5.qtwayland in systemPackages
        # export QT_QPA_PLATFORM=wayland
        # export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
        # Fix for some Java AWT applications (e.g. Android Studio),
        # use this if they aren't displayed properly:
        export _JAVA_AWT_WM_NONREPARENTING=1
      '';

      swaynag = {
        enable = false;
        settings = {
          "<config>" = {
            background = "#ffffff99";
            border-bottom = "#00000000";
            button-background = "#ffffffcc";
            button-padding = 10;
            button-border-size = 0;
          };

          warning = {
            background = "#ffffff99";
            border-bottom = "#00000000";
            button-background = "#ffff00";
          };

          error = {
            background = "#ffffff99";
            border-bottom = "#00000000";
            button-background = "#ff0000";
          };

          green = {
            background = "#ffffff99";
            border-bottom = "#00000000";
            button-background = "#00b300";
          };

          blue = {
            background = "#ffffff99";
            border-bottom = "#00000000";
            button-background = "#0000ff";
          };
        };
      };

      systemdIntegration = true;

      extraConfig = ''
        set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
      '';
    };

    home.packages = with pkgs; [
      wl-clipboard
      pamixer
      wob
      wtype
    ];

    programs.zsh.profileExtra = ''
      if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
      exec systemd-cat -t sway sway --unsupported-gpu
      fi
    '';
  };
}
