My Nix Configuration

[flake] even more misc fixes yolo

pyrox.dev ef0fe98b 8018b6be

verified
-1
homeModules/profiles/gui/default.nix
··· 34 34 krita 35 35 libappindicator 36 36 libappindicator-gtk3 37 - lutris 38 37 prismlauncher 39 38 pwvucontrol 40 39 hyprshot
+3
homeModules/programs/git/default.nix
··· 94 94 userEmail = "pyrox@pyrox.dev"; 95 95 userName = "dish"; 96 96 }; 97 + mergiraf = lib.mkIf cfg.enable { 98 + enable = true; 99 + }; 97 100 lazygit = lib.mkIf cfg.lazygit.enable { 98 101 enable = true; 99 102 settings = {
+29 -5
homeModules/wayland/default.nix
··· 1 + { 2 + pkgs, 3 + config, 4 + osConfig, 5 + lib, 6 + ... 7 + }: 8 + let 9 + c = osConfig.py.programs.hyprland; 10 + cfg = config.wayland.windowManager.hyprland; 11 + in 1 12 { 2 13 imports = [ 3 - ./sway.nix 4 - ./keybindings.nix 5 - ./waybar.nix 6 - ./swaylock.nix 7 - ./hyprland 14 + ./services.nix 15 + ./hypridle.nix 8 16 ]; 17 + config = { 18 + catppuccin.hyprland.enable = c.enable; 19 + wayland.windowManager.hyprland = { 20 + enable = c.enable; 21 + # Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package 22 + package = null; 23 + systemd = { 24 + enable = true; 25 + enableXdgAutostart = true; 26 + }; 27 + settings = import ./settings.nix; 28 + plugins = [ 29 + pkgs.hyprlandPlugins.hy3 30 + ]; 31 + }; 32 + }; 9 33 }
-33
homeModules/wayland/hyprland/default.nix
··· 1 - { 2 - pkgs, 3 - config, 4 - osConfig, 5 - lib, 6 - ... 7 - }: 8 - let 9 - c = osConfig.py.programs.hyprland; 10 - cfg = config.wayland.windowManager.hyprland; 11 - in 12 - { 13 - imports = [ 14 - ./services.nix 15 - ./hypridle.nix 16 - ]; 17 - config = { 18 - catppuccin.hyprland.enable = c.enable; 19 - wayland.windowManager.hyprland = { 20 - enable = c.enable; 21 - # Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package 22 - package = null; 23 - systemd = { 24 - enable = true; 25 - enableXdgAutostart = true; 26 - }; 27 - settings = import ./settings.nix; 28 - plugins = [ 29 - pkgs.hyprlandPlugins.hy3 30 - ]; 31 - }; 32 - }; 33 - }
homeModules/wayland/hyprland/env.nix homeModules/wayland/env.nix
+1
homeModules/wayland/hyprland/hypridle.nix homeModules/wayland/hypridle.nix
··· 14 14 lock_cmd = "loginctl lock-session"; 15 15 before_sleep_cmd = "loginctl lock-session"; 16 16 after_sleep_cmd = "hyprctl dispatch dpms on"; 17 + inhibit_sleep = 3; 17 18 }; 18 19 }; 19 20 };
-98
homeModules/wayland/hyprland/keybindings.nix
··· 1 - { 2 - "$mod" = "SUPER"; 3 - "$satty" = "satty -f -"; 4 - 5 - binde = [ 6 - # Media binds that can be held and repeated 7 - ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" 8 - ", XF86MonBrightnessUp, exec, brightnessctl set +5%" 9 - ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" 10 - ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" 11 - ]; 12 - 13 - bind = [ 14 - "SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox" 15 - "$mod, Return, exec, ghostty" 16 - "$mod, X, global, caelestia:session" 17 - "$mod, D, global, caelestia:launcher" 18 - "SUPER_SHIFT, E, exit" 19 - 20 - # Media Binds 21 - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" 22 - ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" 23 - ", XF86AudioPlay, exec, playerctl play-pause" 24 - ", XF86AudioNext, exec, playerctl next" 25 - ", XF86AudioPrev, exec, playerctl previous" 26 - 27 - # Workspace binds 28 - "$mod, 1, workspace, 01" 29 - "SUPER_SHIFT, 1, hy3:movetoworkspace, 01, follow, warp" 30 - "$mod, 2, workspace, 02" 31 - "SUPER_SHIFT, 2, hy3:movetoworkspace, 02, follow, warp" 32 - "$mod, 3, workspace, 03" 33 - "SUPER_SHIFT, 3, hy3:movetoworkspace, 03, follow, warp" 34 - "$mod, 4, workspace, 04" 35 - "SUPER_SHIFT, 4, hy3:movetoworkspace, 04, follow, warp" 36 - "$mod, 5, workspace, 05" 37 - "SUPER_SHIFT, 5, hy3:movetoworkspace, 05, follow, warp" 38 - "$mod, 6, workspace, 06" 39 - "SUPER_SHIFT, 6, hy3:movetoworkspace, 06, follow, warp" 40 - "$mod, 7, workspace, 07" 41 - "SUPER_SHIFT, 7, hy3:movetoworkspace, 07, follow, warp" 42 - "$mod, 8, workspace, 08" 43 - "SUPER_SHIFT, 8, hy3:movetoworkspace, 08, follow, warp" 44 - "$mod, 9, workspace, 09" 45 - "SUPER_SHIFT, 9, hy3:movetoworkspace, 09, follow, warp" 46 - "$mod, 0, workspace, 10" 47 - "SUPER_SHIFT, 0, hy3:movetoworkspace, 10, follow, warp" 48 - # Scratchpad 49 - "SUPER_SHIFT, -, movetoworkspace, special" 50 - "$mod, -, togglespecialworkspace" 51 - 52 - # Window Management 53 - "SUPER_SHIFT, Up, hy3:movewindow, up, once, visible" 54 - "SUPER_SHIFT, K, hy3:movewindow, up, once, visible" 55 - "$mod, Up, hy3:movefocus, up, visible, warp" 56 - "$mod, K, hy3:movefocus, up, visible, warp" 57 - 58 - "SUPER_SHIFT, Right, hy3:movewindow, right, once, visible" 59 - "SUPER_SHIFT, L, hy3:movewindow, right, once, visible" 60 - "$mod, Right, hy3:movefocus, right, visible, warp" 61 - "$mod, L, hy3:movefocus, right, visible, warp" 62 - 63 - "SUPER_SHIFT, Left, hy3:movewindow, left, once, visible" 64 - "SUPER_SHIFT, H, hy3:movewindow, left, once, visible" 65 - "$mod, Left, hy3:movefocus, left, visible, warp" 66 - "$mod, H, hy3:movefocus, left, visible, warp" 67 - 68 - "SUPER_SHIFT, Down, hy3:movewindow, down, once, visible" 69 - "SUPER_SHIFT, J, hy3:movewindow, down, once, visible" 70 - "$mod, Down, hy3:movefocus, down, visible, warp" 71 - "$mod, J, hy3:movefocus, down, visible, warp" 72 - 73 - "SUPER_SHIFT, Q, killactive" 74 - "$mod, F, fullscreen, 0" 75 - "$mod, Space, hy3:togglefocuslayer" 76 - "SUPER_SHIFT, Space, togglefloating, active" 77 - 78 - # Screenshots 79 - "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty" 80 - "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty" 81 - ]; 82 - 83 - bindm = [ 84 - "$mod, mouse:272, movewindow" 85 - ]; 86 - 87 - # Unbind a bunch of default keybinds 88 - unbind = [ 89 - "$mod, C" 90 - "$mod, E" 91 - "$mod, J" 92 - "$mod, M" 93 - "$mod, P" 94 - "$mod, Q" 95 - "$mod, R" 96 - "$mod, V" 97 - ]; 98 - }
homeModules/wayland/hyprland/monitors.nix homeModules/wayland/monitors.nix
homeModules/wayland/hyprland/plugins.nix homeModules/wayland/plugins.nix
homeModules/wayland/hyprland/services.nix homeModules/wayland/services.nix
homeModules/wayland/hyprland/settings.nix homeModules/wayland/settings.nix
homeModules/wayland/hyprland/variables.nix homeModules/wayland/variables.nix
homeModules/wayland/hyprland/windowrules.nix homeModules/wayland/windowrules.nix
+96 -43
homeModules/wayland/keybindings.nix
··· 1 - { config, lib, ... }: 2 - let 3 - inherit (config.wayland.windowManager.sway.config) menu; 4 - mod = config.wayland.windowManager.sway.config.modifier; 5 - term = config.wayland.windowManager.sway.config.terminal; 6 - grim = "grim -g"; 7 - slurp-screen = "\"$(slurp -c -b '#1e1e2e80' -o -r)\" -"; 8 - slurp-box = "\"$(slurp -c '#f38ba8ff' -b '#1e1e2e80' -w 1 -d -F 'IBM Plex Mono')\" -"; 9 - satty = "satty -f -"; 10 - cfg = config.py.profiles.gui; 11 - in 12 1 { 13 - config.wayland.windowManager.sway.config.keybindings = lib.mkIf cfg.enable ( 14 - lib.mkOptionDefault { 15 - "${mod}+d" = "${menu}"; 16 - "${mod}+Shift+F" = "exec MOZ_DISABLE_RDD_SANDBOX=1 firefox"; 17 - "${mod}+Return" = "exec ${term}"; 18 - "${mod}+x" = "exec wlogout"; 19 - "${mod}+s" = null; 20 - "${mod}+w" = null; 21 - "XF86MonBrightnessDown" = "exec brightnessctl set 5%-"; 22 - "XF86MonBrightnessUp" = "exec brightnessctl set +5%"; 23 - "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"; 24 - "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; 25 - "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; 26 - "XF86AudioMicMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; 27 - "XF86AudioPlay" = "exec playerctl play-pause"; 28 - "XF86AudioNext" = "exec playerctl next"; 29 - "XF86AudioPrev" = "exec playerctl previous"; 30 - "Shift+F3" = "exec ${grim} ${slurp-screen} | ${satty}"; 31 - "Shift+F4" = "exec ${grim} ${slurp-box} | ${satty}"; 32 - "${mod}+Shift+1" = "move container to workspace number 1"; 33 - "${mod}+Shift+2" = "move container to workspace number 2"; 34 - "${mod}+Shift+3" = "move container to workspace number 3"; 35 - "${mod}+Shift+4" = "move container to workspace number 4"; 36 - "${mod}+Shift+5" = "move container to workspace number 5"; 37 - "${mod}+Shift+6" = "move container to workspace number 6"; 38 - "${mod}+Shift+7" = "move container to workspace number 7"; 39 - "${mod}+Shift+8" = "move container to workspace number 8"; 40 - "${mod}+Shift+9" = "move container to workspace number 9"; 41 - "${mod}+Shift+0" = "move container to workspace number 10"; 42 - "${mod}+0" = "workspace number 10"; 43 - } 44 - ); 2 + "$mod" = "SUPER"; 3 + "$satty" = "satty -f -"; 4 + 5 + binde = [ 6 + # Media binds that can be held and repeated 7 + ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" 8 + ", XF86MonBrightnessUp, exec, brightnessctl set +5%" 9 + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" 10 + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" 11 + ]; 12 + 13 + bind = [ 14 + "SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox" 15 + "$mod, Return, exec, ghostty" 16 + "$mod, X, global, caelestia:session" 17 + "$mod, D, global, caelestia:launcher" 18 + "SUPER_SHIFT, E, exit" 19 + 20 + # Media Binds 21 + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" 22 + ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" 23 + ", XF86AudioPlay, exec, playerctl play-pause" 24 + ", XF86AudioNext, exec, playerctl next" 25 + ", XF86AudioPrev, exec, playerctl previous" 26 + 27 + # Workspace binds 28 + "$mod, 1, workspace, 01" 29 + "SUPER_SHIFT, 1, hy3:movetoworkspace, 01" 30 + "$mod, 2, workspace, 02" 31 + "SUPER_SHIFT, 2, hy3:movetoworkspace, 02" 32 + "$mod, 3, workspace, 03" 33 + "SUPER_SHIFT, 3, hy3:movetoworkspace, 03" 34 + "$mod, 4, workspace, 04" 35 + "SUPER_SHIFT, 4, hy3:movetoworkspace, 04" 36 + "$mod, 5, workspace, 05" 37 + "SUPER_SHIFT, 5, hy3:movetoworkspace, 05" 38 + "$mod, 6, workspace, 06" 39 + "SUPER_SHIFT, 6, hy3:movetoworkspace, 06" 40 + "$mod, 7, workspace, 07" 41 + "SUPER_SHIFT, 7, hy3:movetoworkspace, 07" 42 + "$mod, 8, workspace, 08" 43 + "SUPER_SHIFT, 8, hy3:movetoworkspace, 08" 44 + "$mod, 9, workspace, 09" 45 + "SUPER_SHIFT, 9, hy3:movetoworkspace, 09" 46 + "$mod, 0, workspace, 10" 47 + "SUPER_SHIFT, 0, hy3:movetoworkspace, 10" 48 + # Scratchpad 49 + "SUPER_SHIFT, -, hy3:movetoworkspace, special:default" 50 + "$mod, -, togglespecialworkspace, default" 51 + 52 + # Window Management 53 + "SUPER_SHIFT, Up, hy3:movewindow, up, once, visible" 54 + "SUPER_SHIFT, K, hy3:movewindow, up, once, visible" 55 + "$mod, Up, hy3:movefocus, up, visible, warp" 56 + "$mod, K, hy3:movefocus, up, visible, warp" 57 + 58 + "SUPER_SHIFT, Right, hy3:movewindow, right, once, visible" 59 + "SUPER_SHIFT, L, hy3:movewindow, right, once, visible" 60 + "$mod, Right, hy3:movefocus, right, visible, warp" 61 + "$mod, L, hy3:movefocus, right, visible, warp" 62 + 63 + "SUPER_SHIFT, Left, hy3:movewindow, left, once, visible" 64 + "SUPER_SHIFT, H, hy3:movewindow, left, once, visible" 65 + "$mod, Left, hy3:movefocus, left, visible, warp" 66 + "$mod, H, hy3:movefocus, left, visible, warp" 67 + 68 + "SUPER_SHIFT, Down, hy3:movewindow, down, once, visible" 69 + "SUPER_SHIFT, J, hy3:movewindow, down, once, visible" 70 + "$mod, Down, hy3:movefocus, down, visible, warp" 71 + "$mod, J, hy3:movefocus, down, visible, warp" 72 + 73 + "SUPER_SHIFT, Q, killactive" 74 + "$mod, F, fullscreen, 0" 75 + "$mod, Space, hy3:togglefocuslayer" 76 + "SUPER_SHIFT, Space, togglefloating, active" 77 + 78 + # Screenshots 79 + "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty" 80 + "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty" 81 + ]; 82 + 83 + bindm = [ 84 + "$mod, mouse:272, movewindow" 85 + ]; 86 + 87 + # Unbind a bunch of default keybinds 88 + unbind = [ 89 + "$mod, C" 90 + "$mod, E" 91 + "$mod, J" 92 + "$mod, M" 93 + "$mod, P" 94 + "$mod, Q" 95 + "$mod, R" 96 + "$mod, V" 97 + ]; 45 98 }
-156
homeModules/wayland/sway.nix
··· 1 - { 2 - pkgs, 3 - config, 4 - lib, 5 - ... 6 - }: 7 - let 8 - term = config.wayland.windowManager.sway.config.terminal; 9 - homeDir = config.home.homeDirectory; 10 - cfg = config.py.profiles.gui; 11 - in 12 - { 13 - config = lib.mkIf cfg.enable { 14 - catppuccin = { 15 - sway.enable = true; 16 - }; 17 - home.sessionVariables = { 18 - XDG_CURRENT_DESKTOP = "sway"; 19 - }; 20 - wayland.windowManager.sway = { 21 - enable = lib.mkDefault true; 22 - package = null; 23 - # nix-community/home-manager/issues/5311 24 - checkConfig = false; 25 - wrapperFeatures.base = true; 26 - wrapperFeatures.gtk = true; 27 - extraConfig = '' 28 - default_border pixel 29 - focus_on_window_activation smart 30 - ''; 31 - systemd = { 32 - enable = true; 33 - xdgAutostart = true; 34 - }; 35 - config = { 36 - terminal = lib.getExe pkgs.ghostty; 37 - menu = "exec ${lib.getExe pkgs.onagre}"; 38 - modifier = "Mod4"; 39 - bars = [ { command = "true"; } ]; 40 - focus = { 41 - followMouse = true; 42 - mouseWarping = true; 43 - newWindow = "smart"; 44 - }; 45 - fonts = { 46 - names = [ "Inter" ]; 47 - style = "Regular"; 48 - size = 12.0; 49 - }; 50 - gaps = { 51 - inner = 1; 52 - outer = 1; 53 - smartBorders = "on"; 54 - smartGaps = false; 55 - }; 56 - input = { 57 - "type:keyboard" = { 58 - xkb_options = "caps:escape"; 59 - }; 60 - "type:mouse" = { 61 - accel_profile = "flat"; 62 - }; 63 - "type:touchpad" = { 64 - accel_profile = "adaptive"; 65 - scroll_factor = "1.5"; 66 - tap = "enabled"; 67 - }; 68 - }; 69 - modes = { 70 - resize = { 71 - Escape = "mode default"; 72 - Return = "mode default"; 73 - Up = "resize shrink height 10 px"; 74 - Down = "resize grow height 10 px"; 75 - Left = "resize shrink width 10 px"; 76 - Right = "resize grow width 10 px"; 77 - h = "resize shrink width 10 px"; 78 - j = "resize grow height 10 px"; 79 - k = "resize shrink height 10 px"; 80 - l = "resize grow width 10 px"; 81 - }; 82 - }; 83 - output = { 84 - eDP-1 = { 85 - scale = "1.2"; 86 - }; 87 - }; 88 - startup = [ 89 - { command = "${pkgs.dex}/bin/dex -a"; } 90 - { command = "${homeDir}/scripts/unfuck-xdg-portals.fish"; } 91 - { command = "wl-paste -t text --watch clipman store --no-persist"; } 92 - ]; 93 - window = { 94 - commands = [ 95 - { 96 - command = "inhibit_idle fullscreen"; 97 - criteria = { 98 - class = "Chromium|zoom|Firefox"; 99 - }; 100 - } 101 - { 102 - command = "floating enable, sticky enable, resize set 20 ppt 40 ppt, border pixel 4"; 103 - criteria = { 104 - app_id = "^py.floating$"; 105 - }; 106 - } 107 - { 108 - command = "resize set 20 ppt"; 109 - criteria = { 110 - title = "Mumble PTT"; 111 - }; 112 - } 113 - ]; 114 - }; 115 - colors = { 116 - background = "$base"; 117 - focused = { 118 - border = "$pink"; 119 - background = "$base"; 120 - text = "$text"; 121 - indicator = "$rosewater"; 122 - childBorder = "$pink"; 123 - }; 124 - focusedInactive = { 125 - border = "$mauve"; 126 - background = "$base"; 127 - text = "$text"; 128 - indicator = "$rosewater"; 129 - childBorder = "$mauve"; 130 - }; 131 - unfocused = { 132 - border = "$mauve"; 133 - background = "$base"; 134 - text = "$text"; 135 - indicator = "$rosewater"; 136 - childBorder = "$mauve"; 137 - }; 138 - urgent = { 139 - border = "$peach"; 140 - background = "$base"; 141 - text = "$peach"; 142 - indicator = "$overlay0"; 143 - childBorder = "$peach"; 144 - }; 145 - placeholder = { 146 - border = "$overlay0"; 147 - background = "$base"; 148 - text = "$text"; 149 - indicator = "$overlay0"; 150 - childBorder = "$overlay0"; 151 - }; 152 - }; 153 - }; 154 - }; 155 - }; 156 - }
-67
homeModules/wayland/swaylock.nix
··· 1 - { 2 - lib, 3 - config, 4 - pkgs, 5 - ... 6 - }: 7 - let 8 - cfg = config.py.profiles.gui; 9 - in 10 - { 11 - catppuccin = { 12 - swaylock.enable = false; 13 - }; 14 - programs.swaylock = lib.mkIf cfg.enable { 15 - enable = lib.mkDefault true; 16 - package = pkgs.swaylock-effects; 17 - settings = { 18 - daemonize = true; 19 - image = "/home/thehedgehog/bgs/ctp-waves.png"; 20 - scaling = "fill"; 21 - line-uses-ring = true; 22 - ignore-empty-password = true; 23 - clock = true; 24 - timestr = "%T"; 25 - effect-blur = "5x5"; 26 - 27 - font = "IBM Plex Sans"; 28 - font-size = 20; 29 - 30 - indicator = true; 31 - indicator-idle-visible = true; 32 - indicator-radius = 100; 33 - indicator-thickness = 5; 34 - 35 - # Catppuccin Theme(avoid IFD by vendoring it in here) 36 - color = "1e1e2e"; 37 - bs-hl-color = "f5e0dc"; 38 - caps-lock-bs-hl-color = "f5e0dc"; 39 - caps-lock-key-hl-color = "a6e3a1"; 40 - inside-color = "00000000"; 41 - inside-clear-color = "00000000"; 42 - inside-caps-lock-color = "00000000"; 43 - inside-ver-color = "00000000"; 44 - inside-wrong-color = "00000000"; 45 - key-hl-color = "a6e3a1"; 46 - layout-bg-color = "00000000"; 47 - layout-border-color = "00000000"; 48 - layout-text-color = "cdd6f4"; 49 - line-color = "00000000"; 50 - line-clear-color = "00000000"; 51 - line-caps-lock-color = "00000000"; 52 - line-ver-color = "00000000"; 53 - line-wrong-color = "00000000"; 54 - ring-color = "b4befe"; 55 - ring-clear-color = "f5e0dc"; 56 - ring-caps-lock-color = "fab387"; 57 - ring-ver-color = "89b4fa"; 58 - ring-wrong-color = "eba0ac"; 59 - separator-color = "00000000"; 60 - text-color = "cdd6f4"; 61 - text-clear-color = "f5e0dc"; 62 - text-caps-lock-color = "fab387"; 63 - text-ver-color = "89b4fa"; 64 - text-wrong-color = "eba0ac"; 65 - }; 66 - }; 67 - }
-37
homeModules/wayland/waybar-mocha.css
··· 1 - /* 2 - * 3 - * Catppuccin Mocha palette 4 - * Maintainer: rubyowo 5 - * 6 - */ 7 - 8 - @define-color base #1e1e2e; 9 - @define-color mantle #181825; 10 - @define-color crust #11111b; 11 - 12 - @define-color text #cdd6f4; 13 - @define-color subtext0 #a6adc8; 14 - @define-color subtext1 #bac2de; 15 - 16 - @define-color surface0 #313244; 17 - @define-color surface1 #45475a; 18 - @define-color surface2 #585b70; 19 - 20 - @define-color overlay0 #6c7086; 21 - @define-color overlay1 #7f849c; 22 - @define-color overlay2 #9399b2; 23 - 24 - @define-color blue #89b4fa; 25 - @define-color lavender #b4befe; 26 - @define-color sapphire #74c7ec; 27 - @define-color sky #89dceb; 28 - @define-color teal #94e2d5; 29 - @define-color green #a6e3a1; 30 - @define-color yellow #f9e2af; 31 - @define-color peach #fab387; 32 - @define-color maroon #eba0ac; 33 - @define-color red #f38ba8; 34 - @define-color mauve #cba6f7; 35 - @define-color pink #f5c2e7; 36 - @define-color flamingo #f2cdcd; 37 - @define-color rosewater #f5e0dc;
-128
homeModules/wayland/waybar-style.css
··· 1 - @import "mocha.css"; 2 - #waybar { 3 - font-family: 4 - BlexMono Nerd Font, 5 - sans-serif; 6 - font-size: 16px; 7 - } 8 - 9 - #window { 10 - padding: 0 4px; 11 - } 12 - 13 - .modules-center { 14 - padding-right: 20px; 15 - } 16 - 17 - window#waybar { 18 - border: none; 19 - border-radius: 0; 20 - box-shadow: none; 21 - text-shadow: none; 22 - transition-duration: 0s; 23 - color: @text; 24 - background: @base; 25 - } 26 - 27 - #workspaces { 28 - margin: 0 5px; 29 - } 30 - 31 - #workspaces button { 32 - padding: 0 8px; 33 - color: @text; 34 - border-bottom: 2px solid @subtext0; 35 - border-radius: 0px; 36 - min-width: 25px; 37 - margin-right: 8px; 38 - } 39 - 40 - #workspaces button.visible { 41 - color: @subtext0; 42 - } 43 - 44 - #workspaces button.focused { 45 - border-bottom: 3px solid @mauve; 46 - font-weight: bold; 47 - } 48 - 49 - #workspaces button.urgent { 50 - border: 2px solid @red; 51 - } 52 - 53 - #workspaces button:hover { 54 - border-color: @blue; 55 - color: @blue; 56 - } 57 - 58 - /* Repeat style here to ensure properties are overwritten as there's no !important and button:hover above resets the colour */ 59 - 60 - #workspaces button.focused { 61 - color: @subtext0; 62 - } 63 - #workspaces button.focused:hover { 64 - color: @text; 65 - } 66 - 67 - #tray, 68 - #mode, 69 - #battery, 70 - #temperature, 71 - #cpu, 72 - #memory, 73 - #network, 74 - #wireplumber, 75 - #clock, 76 - #idle_inhibitor, 77 - #sway-language, 78 - #backlight { 79 - padding: 2px 8px; 80 - margin: 2px 5px; 81 - color: @text; 82 - } 83 - 84 - #mode:hover, 85 - #battery:hover, 86 - #temperature:hover, 87 - #cpu:hover, 88 - #memory:hover, 89 - #network:hover, 90 - #wireplumber:hover, 91 - #clock:hover, 92 - #idle_inhibitor:hover, 93 - #sway-language:hover, 94 - #backlight:hover { 95 - background-color: @subtext1; 96 - color: @base; 97 - } 98 - 99 - #clock { 100 - font-weight: bold; 101 - } 102 - 103 - #battery.warning { 104 - color: @yellow; 105 - } 106 - 107 - #battery.critical { 108 - color: @red; 109 - } 110 - 111 - #battery.charging, 112 - #battery.full { 113 - color: @green; 114 - } 115 - 116 - #battery.warning:hover, 117 - #battery.critical:hover, 118 - #battery.charging:hover, 119 - #battery.full:hover { 120 - color: @base; 121 - } 122 - 123 - @keyframes blink { 124 - to { 125 - background-color: #ffffff; 126 - color: black; 127 - } 128 - }
-172
homeModules/wayland/waybar.nix
··· 1 - { 2 - pkgs, 3 - lib, 4 - config, 5 - ... 6 - }: 7 - let 8 - cfg = config.py.profiles.gui; 9 - sway = config.wayland.windowManager.sway; 10 - in 11 - { 12 - config = { 13 - xdg.configFile."waybar/mocha.css" = lib.mkIf (cfg.enable && sway.enable) { 14 - source = ./waybar-mocha.css; 15 - recursive = false; 16 - }; 17 - catppuccin.waybar.enable = false; 18 - programs.waybar = lib.mkIf (cfg.enable && sway.enable) { 19 - enable = lib.mkDefault false; 20 - systemd.enable = true; 21 - systemd.target = "sway-session.target"; 22 - style = ./waybar-style.css; 23 - settings = { 24 - mainBar = { 25 - layer = "top"; 26 - position = "top"; 27 - height = 32; 28 - modules-left = [ 29 - "sway/workspaces" 30 - "sway/mode" 31 - ]; 32 - modules-center = [ "mpris" ]; 33 - modules-right = [ 34 - "idle_inhibitor" 35 - "wireplumber" 36 - "network" 37 - "temperature" 38 - "backlight" 39 - "battery" 40 - "clock" 41 - "tray" 42 - ]; 43 - "sway/workspaces" = { 44 - disable-scroll = true; 45 - enable-bar-scroll = false; 46 - active-only = false; 47 - all-outputs = false; 48 - format = "{icon}"; 49 - }; 50 - "idle_inhibitor" = { 51 - format = "{icon} "; 52 - format-icons = { 53 - "activated" = ""; 54 - "deactivated" = ""; 55 - }; 56 - }; 57 - "tray" = { 58 - icon-size = 25; 59 - spacing = 12; 60 - }; 61 - "clock" = { 62 - tooltip-format = "<tt><small>{calendar}</small></tt>"; 63 - format = " {:%H:%M:%S}"; 64 - format-alt = "{%d %b %Y}"; 65 - interval = 1; 66 - calendar = { 67 - format = { 68 - today = "<span color='#89b4fa'><b><u>{}</u></b></span>"; 69 - }; 70 - }; 71 - }; 72 - "cpu" = { 73 - format = " {usage}%"; 74 - interval = 5; 75 - tooltip = false; 76 - }; 77 - "memory" = { 78 - format = " {}%"; 79 - }; 80 - "temperature" = { 81 - critical-threshold = 80; 82 - format = "{icon} {temperatureC}°C"; 83 - format-icons = [ 84 - "" 85 - "" 86 - "" 87 - "" 88 - "" 89 - ]; 90 - }; 91 - "backlight" = { 92 - format = "{icon} {percent}%"; 93 - format-icons = [ 94 - "󰃚" 95 - "󰃛" 96 - "󰃜" 97 - "󰃝" 98 - "󰃞" 99 - "󰃟" 100 - "󰃠" 101 - ]; 102 - }; 103 - "battery" = { 104 - states = { 105 - good = 65; 106 - warning = 30; 107 - critical = 15; 108 - }; 109 - full-at = 80; 110 - format = "{icon} {capacity}%"; 111 - format-charging = "󰂄 {capacity}%"; 112 - format-plugged = " {capacity}%"; 113 - format-alt = "{icon} {time}"; 114 - format-icons = [ 115 - "󰂎" 116 - "󰁺" 117 - "󰁻" 118 - "󰁼" 119 - "󰁽" 120 - "󰁾" 121 - "󰁿" 122 - "󰂀" 123 - "󰂁" 124 - "󰂂" 125 - "󰁹" 126 - ]; 127 - }; 128 - "network" = { 129 - format-wifi = "<big></big> {essid}"; 130 - format-ethernet = "󰈀 {ifname}: {ipaddr}/{cidr}"; 131 - format-linked = "󰄡 {ifname} (No IP)"; 132 - format-disconnected = "⚠ Disconnected!"; 133 - format-alt = "{ifname}: {ipaddr}/{cidr}"; 134 - on-click = lib.getExe pkgs.networkmanagerapplet; 135 - }; 136 - "wireplumber" = { 137 - format = "{icon} {volume}%"; 138 - format-muted = "󰝟"; 139 - format-icons = [ 140 - "" 141 - "" 142 - "" 143 - ]; 144 - states = { 145 - low = 15; 146 - med = 40; 147 - high = 60; 148 - }; 149 - scroll-step = 5; 150 - on-click = lib.getExe pkgs.pwvucontrol; 151 - }; 152 - mpris = { 153 - format = "{status_icon} {dynamic}"; 154 - max-length = 100; 155 - format-paused = "{status_icon} <i>{dynamic}</i>"; 156 - dynamic-order = [ 157 - "artist" 158 - "title" 159 - ]; 160 - status-icons = { 161 - playing = ""; 162 - paused = ""; 163 - }; 164 - player-icons = { 165 - firefox = "󰈹"; 166 - }; 167 - }; 168 - }; 169 - }; 170 - }; 171 - }; 172 - }
+5 -4
homeModules/xdg/default.nix
··· 19 19 xdgOpenUsePortal = true; 20 20 extraPortals = [ 21 21 pkgs.xdg-desktop-portal-gtk 22 - pkgs.xdg-desktop-portal-wlr 23 22 ]; 24 23 config = { 25 24 common = { 26 - default = [ "gtk" ]; 27 - "org.freedesktop.impl.portal.Screenshot" = [ "wlr" ]; 28 - "org.freedesktop.impl.portal.ScreenCast" = [ "wlr" ]; 25 + default = [ 26 + "hyprland" 27 + "gtk" 28 + ]; 29 + "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; 29 30 }; 30 31 }; 31 32 };
+3 -4
hosts/zaphod/misc.nix
··· 39 39 "pyrox" 40 40 ]; 41 41 # users.extraGroups.libvirtd.members = ["thehedgehog" "pyrox"]; 42 - # xdg.portal.extraPortals = [ 43 - # pkgs.xdg-desktop-portal-gtk 44 - # ]; 45 - xdg.portal.wlr.enable = true; 46 42 xdg.portal.xdgOpenUsePortal = true; 47 43 48 44 users.users.root.hashedPassword = "$6$6EtuZhVOJdfI9DYP$1Qnd7R8qdN.E5yE2kDQCNg2zgJ5cIjNBKsIW/qJgb8wcKlUpIoVg/fEKvBkAgCiLyojVG2kzfu4J9LR8rA8a2/"; ··· 59 55 percentageLow = 30; 60 56 percentageCritical = 15; 61 57 }; 58 + 59 + # For caelestia screen recording 60 + programs.gpu-screen-recorder.enable = true; 62 61 }
+1
nixosModules/default-config/nixpkgsConfig.nix
··· 6 6 nixpkgs = { 7 7 overlays = [ 8 8 inputs.self.overlays.openssh-fixperms 9 + inputs.self.overlays.hy3-fixes 9 10 inputs.golink.overlays.default 10 11 ]; 11 12 config = {
+3 -9
nixosModules/homes/thehedgehog-zaphod/caelestia-cli.json
··· 13 13 "enableQt": false 14 14 }, 15 15 "toggles": { 16 - "communication": { 16 + "discord": { 17 17 "discord": { 18 18 "enable": true, 19 19 "match": [ ··· 21 21 "class": "equibop" 22 22 } 23 23 ], 24 - "command": [ 25 - "equibop" 26 - ], 24 + "command": ["equibop"], 27 25 "move": true 28 26 } 29 27 }, ··· 39 37 } 40 38 } 41 39 ], 42 - "command": [ 43 - "ghostty", 44 - "-e", 45 - "btop" 46 - ] 40 + "command": ["ghostty", "-e", "btop"] 47 41 } 48 42 } 49 43 }
+94 -16
nixosModules/homes/thehedgehog-zaphod/caelestia-shell.json
··· 128 128 }, 129 129 "general": { 130 130 "apps": { 131 - "audio": ["pwvucontrol"], 132 - "explorer": ["thunar"], 133 - "playback": ["mpv"], 134 - "terminal": ["ghostty"] 131 + "audio": [ 132 + "pwvucontrol" 133 + ], 134 + "explorer": [ 135 + "thunar" 136 + ], 137 + "playback": [ 138 + "mpv" 139 + ], 140 + "terminal": [ 141 + "ghostty" 142 + ] 135 143 }, 136 144 "battery": { 137 145 "criticalLevel": 3, ··· 171 179 "timeout": 600 172 180 }, 173 181 { 174 - "idleAction": ["systemctl", "suspend"], 182 + "idleAction": [ 183 + "systemctl", 184 + "suspend" 185 + ], 175 186 "timeout": 900 176 187 } 177 188 ] ··· 181 192 "actionPrefix": ">", 182 193 "actions": [ 183 194 { 184 - "command": ["autocomplete", "calc"], 195 + "command": [ 196 + "autocomplete", 197 + "calc" 198 + ], 185 199 "dangerous": false, 186 200 "description": "Do simple math equations (powered by Qalc)", 187 201 "enabled": true, ··· 189 203 "name": "Calculator" 190 204 }, 191 205 { 192 - "command": ["systemctl", "poweroff"], 206 + "name": "Wallpaper", 207 + "icon": "image", 208 + "description": "Change the current wallpaper", 209 + "command": [ 210 + "autocomplete", 211 + "wallpaper" 212 + ], 213 + "enabled": true, 214 + "dangerous": false 215 + }, 216 + { 217 + "name": "Random", 218 + "icon": "casino", 219 + "description": "Switch to a random wallpaper", 220 + "command": [ 221 + "caelestia", 222 + "wallpaper", 223 + "-r" 224 + ], 225 + "enabled": true, 226 + "dangerous": false 227 + }, 228 + { 229 + "name": "Discord", 230 + "icon": "d", 231 + "description": "Open Discord", 232 + "command": [ 233 + "caelestia", 234 + "toggle", 235 + "discord" 236 + ], 237 + "enabled": true, 238 + "dangerous": false 239 + }, 240 + { 241 + "command": [ 242 + "systemctl", 243 + "poweroff" 244 + ], 193 245 "dangerous": true, 194 246 "description": "Shutdown the system", 195 247 "enabled": true, ··· 197 249 "name": "Shutdown" 198 250 }, 199 251 { 200 - "command": ["systemctl", "reboot"], 252 + "command": [ 253 + "systemctl", 254 + "reboot" 255 + ], 201 256 "dangerous": true, 202 257 "description": "Reboot the system", 203 258 "enabled": true, ··· 205 260 "name": "Reboot" 206 261 }, 207 262 { 208 - "command": ["loginctl", "terminate-user", ""], 263 + "command": [ 264 + "loginctl", 265 + "terminate-user", 266 + "" 267 + ], 209 268 "dangerous": true, 210 269 "description": "Log out of the current session", 211 270 "enabled": true, ··· 213 272 "name": "Logout" 214 273 }, 215 274 { 216 - "command": ["loginctl", "lock-session"], 275 + "command": [ 276 + "loginctl", 277 + "lock-session" 278 + ], 217 279 "dangerous": false, 218 280 "description": "Lock the current session", 219 281 "enabled": true, ··· 221 283 "name": "Lock" 222 284 }, 223 285 { 224 - "command": ["systemctl", "suspend"], 286 + "command": [ 287 + "systemctl", 288 + "suspend" 289 + ], 225 290 "dangerous": false, 226 291 "description": "Suspend", 227 292 "enabled": true, ··· 264 329 "paths": { 265 330 "mediaGif": "", 266 331 "sessionGif": "", 267 - "wallpaperDir": "~/bgs/wallpapers/xenia/" 332 + "wallpaperDir": "~/bgs/wallpapers" 268 333 }, 269 334 "services": { 270 335 "audioIncrement": 0.1, ··· 284 349 }, 285 350 "session": { 286 351 "commands": { 287 - "hibernate": ["systemctl", "suspend"], 288 - "logout": ["loginctl", "terminate-user", ""], 289 - "reboot": ["systemctl", "reboot"], 290 - "shutdown": ["systemctl", "poweroff"] 352 + "hibernate": [ 353 + "systemctl", 354 + "suspend" 355 + ], 356 + "logout": [ 357 + "loginctl", 358 + "terminate-user", 359 + "" 360 + ], 361 + "reboot": [ 362 + "systemctl", 363 + "reboot" 364 + ], 365 + "shutdown": [ 366 + "systemctl", 367 + "poweroff" 368 + ] 291 369 }, 292 370 "dragThreshold": 30, 293 371 "enabled": true,
+5
nixosModules/homes/thehedgehog-zaphod/default.nix
··· 12 12 pkgs.mindustry 13 13 pkgs.signal-desktop 14 14 ]; 15 + home.sessionVariables = { 16 + QT_QPA_PLATFORM = "wayland;xcb"; 17 + GDK_BACKEND = "wayland,x11,*"; 18 + NIXOS_OZONE_WL = "1"; 19 + }; 15 20 py.profiles.desktop.enable = true; 16 21 programs.caelestia = { 17 22 enable = true;
+1
overlays/default.nix
··· 2 2 flake.overlays = { 3 3 cinny = import ./cinny; 4 4 openssh-fixperms = import ./openssh-fixperms; 5 + hy3-fixes = import ./hy3-fixes; 5 6 }; 6 7 }
+12
overlays/hy3-fixes/default.nix
··· 1 + final: prev: { 2 + hyprlandPlugins = prev.hyprlandPlugins // { 3 + hy3 = prev.hyprlandPlugins.hy3.overrideAttrs (old: { 4 + patches = (old.patches or [ ]) ++ [ 5 + (prev.fetchpatch { 6 + url = "https://github.com/outfoxxed/hy3/commit/8a3f46a40984e74094f71b5bd38df3dbe5daa97f.patch?full_index=1"; 7 + hash = "sha256-zNGCMcidRx7zV3mnlQT4EjA36g7MeBf6A9gyvITeZ4c="; 8 + }) 9 + ]; 10 + }); 11 + }; 12 + }