{ config, pkgs, unstable, ... }: { # Home Manager needs a bit of information about you and the # paths it should manage. home.username = "cw"; home.homeDirectory = "/home/cw"; home.packages = [ pkgs.git pkgs.nmap pkgs.fzf pkgs.charm ]; # home.doom-emacs = { # enable = true; # doomPrivateDir = "${home.homeDirectory}/.config/doom.d"; # }; #HACK https://github.com/NixOS/nixpkgs/issues/70142 https://discourse.nixos.org/t/opening-i3-from-home-manager-automatically/4849/7 xsession.scriptPath = ".hm-xsession"; xsession = { enable = true; # windowManager.spectrwm = { # enable = true; # bindings = { # term = "Mod+Return"; # restart = "Mod+Shift+r"; # quit = "Mod+Shift+q"; # }; # programs = { # term = "${pkgs.konsole}/bin/konsole"; # # search = "${pkgs.dmenu}/bin/dmenu -ip -p 'Window name/id:'"; # search = "${pkgs.dmenu}/bin/dmenu-run"; # }; # settings = { # modkey = "Mod4"; # workspace_limit = 9; # focus_mode = "manual"; # focus_close = "next"; # }; # }; windowManager.i3 = { enable = true; # package = pkgs.i3-gaps; config = let mod = "Mod4"; in { modifier = mod; defaultWorkspace = "1: Home"; modes = { system = { l = "exec --no-startup-id ${pkgs.systemd}/bin/loginctl lock-session"; r = "exec --no-startup-id ${pkgs.systemd}/bin/systemctl reboot"; s = "exec --no-startup-id ${pkgs.systemd}/bin/systemctl suspend"; "Shift+s" = "exec --no-startup-id ${pkgs.systemd}/bin/systemctl poweroff"; h = "exec --no-startup-id ${pkgs.systemd}/bin/systemctl hibernate"; b = "exec --no-startup-id ${pkgs.systemd}/bin/systemctl hybrid-sleep"; }; resize = { Left = "resize shrink width 10 px or 1 ppt"; Down = "resize grow height 10 px or 1 ppt"; Up = "resize shrink height 10 px or 1 ppt"; Right = "resize grow width 10 px or 1 ppt"; Escape = "mode default"; Return = "mode default"; "${mod}+r" = "mode default"; }; }; keybindings = { "${mod}+Shift+q" = "kill"; "${mod}+Return" = "exec ${pkgs.konsole}/bin/konsole"; "${mod}+d" = "exec --no-startup-id ${pkgs.dmenu}/bin/dmenu-run"; "${mod}+l" = "exec --no-startup-id ${pkgs.systemd}/bin/loginctl lock-session"; "${mod}+Left" = "focus left"; "${mod}+Down" = "focus down"; "${mod}+Up" = "focus up"; "${mod}+Right" = "focus right"; "${mod}+Shift+Left" = "move left"; "${mod}+Shift+Down" = "move down"; "${mod}+Shift+Up" = "move up"; "${mod}+Shift+Right" = "move right"; "${mod}+h" = "split h"; "${mod}+v" = "split v"; "${mod}+f" = "fullscreen toggle"; "${mod}+s" = "layout stacking"; "${mod}+w" = "layout tabbed"; "${mod}+e" = "layout toggle split"; "${mod}+Shift+space" = "floating toggle"; "${mod}+space" = "focus mode_toggle"; "${mod}+a" = "focus parent"; "${mod}+1" = "workspace 1: Home"; "${mod}+2" = "workspace 2: Emacs"; "${mod}+3" = "workspace 3: Web"; "${mod}+4" = "workspace 4: Media"; "${mod}+5" = "workspace 5: Chat"; "${mod}+6" = "workspace 6: Mail"; "${mod}+7" = "workspace 7: Utility"; "${mod}+8" = "workspace 8: System"; "${mod}+9" = "workspace 9: Background"; "${mod}+0" = "mode system"; "${mod}+minus" = "scratchpad show"; # "${mod}+equal" = "workspace number 12"; "${mod}+Ctrl+1" = "move container to workspace 1: Home"; "${mod}+Ctrl+2" = "move container to workspace 2: Emacs"; "${mod}+Ctrl+3" = "move container to workspace 3: Web"; "${mod}+Ctrl+4" = "move container to workspace 4: Media"; "${mod}+Ctrl+5" = "move container to workspace 5: Chat"; "${mod}+Ctrl+6" = "move container to workspace 6: Mail"; "${mod}+Ctrl+7" = "move container to workspace 7: Utility"; "${mod}+Ctrl+8" = "move container to workspace 8: System"; "${mod}+Ctrl+9" = "move container to workspace 9: Background"; "${mod}+Shift+1" = "move container to workspace 1: Home; workspace 1: Home"; "${mod}+Shift+2" = "move container to workspace 2: Emacs; workspace 2: Emacs"; "${mod}+Shift+3" = "move container to workspace 3: Web; workspace 3: Web"; "${mod}+Shift+4" = "move container to workspace 4: Media; workspace 4: Media"; "${mod}+Shift+5" = "move container to workspace 5: Chat; workspace 5: Chat"; "${mod}+Shift+6" = "move container to workspace 6: Mail; workspace 6: Mail"; "${mod}+Shift+7" = "move container to workspace 7: Utility; workspace 7: Utility"; "${mod}+Shift+8" = "move container to workspace 8: System; workspace 8: System"; "${mod}+Shift+9" = "move container to workspace 9: Background; workspace 9: Background"; "${mod}+Shift+minus" = "move scratchpad"; "${mod}+Shift+c" = "reload"; # reload config "${mod}+Shift+r" = "restart"; "${mod}+r" = "mode resize"; }; bars = [{ statusCommand = "${pkgs.i3status}/bin/i3status"; }]; # window = { # border = 1; # titlebar = false; # hideEdgeBorders = "smart"; # #commands = []; # }; # floating = { # border = 1; # titlebar = false; # }; # fonts = { # names = [ "DejaVuSansMono Nerd Font" ]; # size = 8.0; # }; workspaceAutoBackAndForth = true; workspaceLayout = "default"; }; }; # windowManager.command = "${config.xsession.windowManager.i3.package}/bin/i3"; }; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards # incompatible changes. # # You can update Home Manager without changing this value. See # the Home Manager release notes for a list of state version # changes in each release. home.stateVersion = "22.05"; # Let Home Manager install and manage itself. programs.home-manager.enable = true; }