Replace wayland with xmonad
diff --git a/modules/chromium.nix b/modules/chromium.nix
index dadac9d..c4c5c81 100644
--- a/modules/chromium.nix
+++ b/modules/chromium.nix
@@ -4,7 +4,7 @@
 }: {
   home.home.packages = [ pkgs.chromium ];
 
-  config.nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-features=WebUIDarkMode --force-dark-mode --enable-features=WebRTCPipeWireCapturer";
+  config.nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --enable-features=WebUIDarkMode --force-dark-mode --enable-features=WebRTCPipeWireCapturer";
 
   config.environment.persistence."/nix/persist".users.${username}.directories = [ ".config/chromium" ];
 }
diff --git a/modules/input.nix b/modules/input.nix
new file mode 100644
index 0000000..3f6b1cc
--- /dev/null
+++ b/modules/input.nix
@@ -0,0 +1,6 @@
+{pkgs, ...}: {
+  config.services.xserver.libinput = {
+    enable = true;
+    touchpad.naturalScrolling = true;
+  };
+}
diff --git a/modules/security.nix b/modules/security.nix
index 0cf0586..0f857d4 100644
--- a/modules/security.nix
+++ b/modules/security.nix
@@ -35,9 +35,7 @@
     let
       lockCommand =
         lib.pipe ''
-          ${pkgs.sway}/bin/swaymsg output "*" dpms off
           ${pkgs.systemd}/bin/systemd-inhibit --why="Already locked" --what=idle --who="lock script" ${config.security.wrapperDir}/physlock -s -p "${lockMessage}"
-          while [ $(${pkgs.sway}/bin/swaymsg -t get_outputs | ${pkgs.jq}/bin/jq "[.[] | .dpms] | any") = "false" ]; do ${pkgs.coreutils}/bin/sleep 0.1; ${pkgs.sway}/bin/swaymsg output "*" dpms on; done
         '' [
           (lib.splitString "\n")
           (lib.filter (line: line != ""))
diff --git a/modules/xmonad.nix b/modules/xmonad.nix
index 66ee90b..745739e 100644
--- a/modules/xmonad.nix
+++ b/modules/xmonad.nix
@@ -1,10 +1,26 @@
-{pkgs, ...}: {
-  home.xsession.windowManager.xmonad = {
+{ pkgs, home, config, ... }: {
+  home = {
+    xsession = {
+      windowManager.xmonad = {
+        enable = true;
+        enableContribAndExtras = true;
+        config = ./xmonad/xmonad.hs;
+        extraPackages = haskellPackages: with haskellPackages; [
+        ];
+      };
+    };
+    programs.zsh.profileExtra = ''
+      if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then
+        exec ${pkgs.systemd}/bin/systemd-cat -t xmonad ${pkgs.xorg.xinit}/bin/startx
+      fi
+    '';
+    home.file.".xinitrc".text = ''
+    ${home.xsession.windowManager.command}
+    '';
+  };
+  config.services.xserver = {
     enable = true;
-    enableContribAndExtras = true;
-    config = ./xmonad/xmonad.hs;
-    extraPackages = haskellPackages: with haskellPackages; [
-      taffybar
-    ];
+    layout = "gb";
+    displayManager.startx.enable = true;
   };
 }
diff --git a/modules/xmonad/xmonad.hs b/modules/xmonad/xmonad.hs
index 518ba33..76cc166 100644
--- a/modules/xmonad/xmonad.hs
+++ b/modules/xmonad/xmonad.hs
@@ -1,10 +1,24 @@
 -- spell-checker:words xmonad
 import XMonad
 
+import System.Exit
 import XMonad.Util.EZConfig
 
+terminal = "kitty"      -- Kitty, my beloved <3
+launcher = "pkill rofi; rofi -show combi"
+networkManager = "wpa_cli select_network $(wpa_cli list_networks | tail -n +3 | rofi -dmenu -window-title 'Select Network' | awk '{print $1;}')"
+modifierKey = mod4Mask  -- Use Super as our mod key
+
+shift = shiftMask
+
 main :: IO ()
 main = xmonad $ def
-  { modMask = mod4Mask  -- Use Super as our mod key
-  , terminal = "kitty"  -- Kitty, my beloved <3
-  }
+  { modMask = modifierKey  -- Use Super as our mod key
+  , XMonad.terminal = Main.terminal
+  } `additionalKeys`
+  [ ((modifierKey, xK_d), spawn launcher)
+  , ((modifierKey, xK_n), spawn networkManager)
+  , ((modifierKey .|. shift, xK_q), kill)
+  , ((modifierKey, xK_q), spawn "xmonad --restart")
+  , ((modifierKey .|. shift, xK_c), io (exitWith ExitSuccess))
+  ]