My Nix Configuration
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

[flake] remove hyprland and caelestia, switch to niri+dms

dish 36747921 3280e6ba

+330 -995
+1 -145
flake.lock
··· 88 88 "type": "github" 89 89 } 90 90 }, 91 - "caelestia": { 92 - "inputs": { 93 - "caelestia-cli": "caelestia-cli", 94 - "nixpkgs": [ 95 - "nixpkgs" 96 - ], 97 - "quickshell": [ 98 - "quickshell" 99 - ] 100 - }, 101 - "locked": { 102 - "lastModified": 1766885627, 103 - "narHash": "sha256-Ux+D5mjfLEMQfCaG9g4TGKgBsQ/oVjo1613/m7Uk/5Y=", 104 - "owner": "caelestia-dots", 105 - "repo": "shell", 106 - "rev": "dfa28d7f85215bd42d02717255c45b8126aeb8da", 107 - "type": "github" 108 - }, 109 - "original": { 110 - "owner": "caelestia-dots", 111 - "repo": "shell", 112 - "type": "github" 113 - } 114 - }, 115 - "caelestia-cli": { 116 - "inputs": { 117 - "caelestia-shell": [ 118 - "caelestia" 119 - ], 120 - "nixpkgs": [ 121 - "caelestia", 122 - "nixpkgs" 123 - ] 124 - }, 125 - "locked": { 126 - "lastModified": 1766714789, 127 - "narHash": "sha256-hmhLNI09u6QJoGkS7ur+wgc1z2LYb3jQP0wB3qwyrLU=", 128 - "owner": "caelestia-dots", 129 - "repo": "cli", 130 - "rev": "b049cb17496b622917d41c057c78b3aa5d885a1a", 131 - "type": "github" 132 - }, 133 - "original": { 134 - "owner": "caelestia-dots", 135 - "repo": "cli", 136 - "type": "github" 137 - } 138 - }, 139 91 "ctp": { 140 92 "inputs": { 141 93 "nixpkgs": "nixpkgs" ··· 173 125 "owner": "lnl7", 174 126 "ref": "master", 175 127 "repo": "nix-darwin", 176 - "type": "github" 177 - } 178 - }, 179 - "dms": { 180 - "inputs": { 181 - "nixpkgs": [ 182 - "nixpkgs" 183 - ], 184 - "quickshell": "quickshell" 185 - }, 186 - "locked": { 187 - "lastModified": 1767327733, 188 - "narHash": "sha256-cPAiqJzXiDdT+XM0z8Fy7M1ob2PD0uD2NcfEhbGineo=", 189 - "owner": "AvengeMedia", 190 - "repo": "DankMaterialShell", 191 - "rev": "3e1c6534bdcc234bba90351f714f075d2672f526", 192 - "type": "github" 193 - }, 194 - "original": { 195 - "owner": "AvengeMedia", 196 - "repo": "DankMaterialShell", 197 - "type": "github" 198 - } 199 - }, 200 - "dms-plugins": { 201 - "flake": false, 202 - "locked": { 203 - "lastModified": 1766092383, 204 - "narHash": "sha256-0RXRgUXXoX+C0q+drsShjx2rCTdmqFzOCR/1rGB/W2E=", 205 - "owner": "AvengeMedia", 206 - "repo": "dms-plugins", 207 - "rev": "8fa7c5286171c66a209dd74e9a47d6e72ccfdad6", 208 - "type": "github" 209 - }, 210 - "original": { 211 - "owner": "AvengeMedia", 212 - "repo": "dms-plugins", 213 - "type": "github" 214 - } 215 - }, 216 - "dms-power-usage": { 217 - "flake": false, 218 - "locked": { 219 - "lastModified": 1766564307, 220 - "narHash": "sha256-9lMWVCiAW+0fAZD4dXGhE+6f8d1/4DHejfUumfoHY2s=", 221 - "owner": "Daniel-42-z", 222 - "repo": "dms-power-usage", 223 - "rev": "04b7da69b98be23d6f6bbc0430461680b43809e0", 224 - "type": "github" 225 - }, 226 - "original": { 227 - "owner": "Daniel-42-z", 228 - "repo": "dms-power-usage", 229 - "type": "github" 230 - } 231 - }, 232 - "dms-wp-shuffler": { 233 - "flake": false, 234 - "locked": { 235 - "lastModified": 1765957886, 236 - "narHash": "sha256-il8/6FJNLIk9DjpyLmCiL1p2d0bpDDeNttHfcmBeI/4=", 237 - "owner": "Daniel-42-z", 238 - "repo": "dms-wallpaper-shuffler", 239 - "rev": "2b2e63e1831d6e184eecbcad8a2794734bd5d4ae", 240 - "type": "github" 241 - }, 242 - "original": { 243 - "owner": "Daniel-42-z", 244 - "repo": "dms-wallpaper-shuffler", 245 128 "type": "github" 246 129 } 247 130 }, ··· 683 566 "quickshell": { 684 567 "inputs": { 685 568 "nixpkgs": [ 686 - "dms", 687 - "nixpkgs" 688 - ] 689 - }, 690 - "locked": { 691 - "lastModified": 1766725085, 692 - "narHash": "sha256-O2aMFdDUYJazFrlwL7aSIHbUSEm3ADVZjmf41uBJfHs=", 693 - "ref": "refs/heads/master", 694 - "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", 695 - "revCount": 715, 696 - "type": "git", 697 - "url": "https://git.outfoxxed.me/quickshell/quickshell" 698 - }, 699 - "original": { 700 - "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", 701 - "type": "git", 702 - "url": "https://git.outfoxxed.me/quickshell/quickshell" 703 - } 704 - }, 705 - "quickshell_2": { 706 - "inputs": { 707 - "nixpkgs": [ 708 569 "nixpkgs" 709 570 ] 710 571 }, ··· 726 587 "inputs": { 727 588 "agenix": "agenix", 728 589 "buildbot-nix": "buildbot-nix", 729 - "caelestia": "caelestia", 730 590 "ctp": "ctp", 731 - "dms": "dms", 732 - "dms-plugins": "dms-plugins", 733 - "dms-power-usage": "dms-power-usage", 734 - "dms-wp-shuffler": "dms-wp-shuffler", 735 591 "dn42": "dn42", 736 592 "easy-hosts": "easy-hosts", 737 593 "flake-compat": "flake-compat", ··· 744 600 "nix-index-database": "nix-index-database", 745 601 "nixpkgs": "nixpkgs_2", 746 602 "nixpkgs-stalwart-fix": "nixpkgs-stalwart-fix", 747 - "quickshell": "quickshell_2", 603 + "quickshell": "quickshell", 748 604 "tangled": "tangled", 749 605 "treefmt-nix": "treefmt-nix" 750 606 }
-22
flake.nix
··· 42 42 inputs.flake-parts.follows = "flake-parts"; 43 43 inputs.treefmt-nix.follows = ""; 44 44 }; 45 - caelestia = { 46 - url = "github:caelestia-dots/shell"; 47 - inputs.nixpkgs.follows = "nixpkgs"; 48 - inputs.quickshell.follows = "quickshell"; 49 - }; 50 45 ctp = { 51 46 url = "github:catppuccin/nix"; 52 47 }; 53 48 dn42 = { 54 49 url = "github:pyrox0/dn43.nix"; 55 50 inputs.nixpkgs.follows = "nixpkgs"; 56 - }; 57 - dms = { 58 - url = "github:AvengeMedia/DankMaterialShell"; 59 - inputs.nixpkgs.follows = "nixpkgs"; 60 - }; 61 - # DMS Plugins 62 - dms-wp-shuffler = { 63 - url = "github:Daniel-42-z/dms-wallpaper-shuffler"; 64 - flake = false; 65 - }; 66 - dms-power-usage = { 67 - url = "github:Daniel-42-z/dms-power-usage"; 68 - flake = false; 69 - }; 70 - dms-plugins = { 71 - url = "github:AvengeMedia/dms-plugins"; 72 - flake = false; 73 51 }; 74 52 easy-hosts.url = "github:tgirlcloud/easy-hosts"; 75 53 golink = {
+1 -3
homeModules/all-modules.nix
··· 6 6 inputs.self.homeModules.scripts 7 7 inputs.self.homeModules.services 8 8 inputs.self.homeModules.theming 9 - inputs.self.homeModules.hyprland 9 + inputs.self.homeModules.niri 10 10 inputs.self.homeModules.xdg 11 11 12 12 inputs.nix-index-database.homeModules.nix-index 13 13 inputs.ctp.homeModules.catppuccin 14 - inputs.caelestia.homeManagerModules.default 15 - inputs.dms.homeModules.dank-material-shell 16 14 ]; 17 15 }
+1 -1
homeModules/default.nix
··· 5 5 }: 6 6 { 7 7 flake.homeModules = { 8 - hyprland = import ./hyprland; 8 + niri = import ./niri; 9 9 xdg = import ./xdg; 10 10 programs = import ./programs; 11 11 services = import ./services;
-32
homeModules/hyprland/default.nix
··· 1 - { 2 - pkgs, 3 - config, 4 - osConfig, 5 - lib, 6 - ... 7 - }: 8 - let 9 - c = osConfig.py.programs.hyprland; 10 - in 11 - { 12 - imports = [ 13 - ./services.nix 14 - ./hypridle.nix 15 - ]; 16 - config = { 17 - catppuccin.hyprland.enable = c.enable; 18 - wayland.windowManager.hyprland = { 19 - inherit (c) enable; 20 - # Per https://nix-community.github.io/home-manager/options.xhtml#opt-wayland.windowManager.hyprland.package 21 - package = null; 22 - systemd = { 23 - enable = true; 24 - enableXdgAutostart = true; 25 - }; 26 - settings = import ./settings.nix { inherit lib config; }; 27 - plugins = [ 28 - pkgs.hyprlandPlugins.hy3 29 - ]; 30 - }; 31 - }; 32 - }
-11
homeModules/hyprland/env.nix
··· 1 - { 2 - env = [ 3 - "WLR_NO_HARDWARE_CURSORS, 1" 4 - "WLR_RENDERER_ALLOW_SOFTWARE, 1" 5 - "NIXOS_OZONE_WL, 1" 6 - "XDG_SESSION_TYPE, wayland" 7 - "QT_QPA_PLATFORM, wayland" 8 - "XDG_CURRENT_DESKTOP, Hyprland" 9 - "XDG_SESSION_DESKTOP, Hyprland" 10 - ]; 11 - }
-36
homeModules/hyprland/hypridle.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: 6 - let 7 - cfg = config.wayland.windowManager.hyprland; 8 - in 9 - { 10 - config.services.hypridle = lib.mkIf cfg.enable { 11 - enable = true; 12 - settings = { 13 - general = { 14 - lock_cmd = "loginctl lock-session"; 15 - # before_sleep_cmd = "loginctl lock-session"; 16 - after_sleep_cmd = "hyprctl dispatch dpms on"; 17 - inhibit_sleep = 3; 18 - }; 19 - listener = [ 20 - { 21 - timeout = 420; 22 - on-timeout = "loginctl lock-session"; 23 - } 24 - { 25 - timeout = 600; 26 - on-timeout = "hyprctl dispatch dpms off"; 27 - on-resume = "hyprctl dispatch dpms on"; 28 - } 29 - { 30 - timeout = 900; 31 - on-timeout = "systemctl resume"; 32 - } 33 - ]; 34 - }; 35 - }; 36 - }
-110
homeModules/hyprland/keybindings.nix
··· 1 - { lib, shell }: 2 - { 3 - "$mod" = "SUPER"; 4 - "$satty" = "satty -f -"; 5 - 6 - binde = [ 7 - # Media binds that can be held and repeated 8 - ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" 9 - ", XF86MonBrightnessUp, exec, brightnessctl set +5%" 10 - ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" 11 - ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" 12 - ]; 13 - 14 - bind = [ 15 - "SUPER_SHIFT, F, exec, MOZ_DISABLE_RDD_SANDBOX=1 firefox" 16 - "$mod, Return, exec, ghostty" 17 - "SUPER_SHIFT, E, exit" 18 - 19 - # Media Binds 20 - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" 21 - ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" 22 - ", XF86AudioPlay, exec, playerctl play-pause" 23 - ", XF86AudioNext, exec, playerctl next" 24 - ", XF86AudioPrev, exec, playerctl previous" 25 - 26 - # Workspace binds 27 - "$mod, 1, workspace, 01" 28 - "SUPER_SHIFT, 1, hy3:movetoworkspace, 01" 29 - "$mod, 2, workspace, 02" 30 - "SUPER_SHIFT, 2, hy3:movetoworkspace, 02" 31 - "$mod, 3, workspace, 03" 32 - "SUPER_SHIFT, 3, hy3:movetoworkspace, 03" 33 - "$mod, 4, workspace, 04" 34 - "SUPER_SHIFT, 4, hy3:movetoworkspace, 04" 35 - "$mod, 5, workspace, 05" 36 - "SUPER_SHIFT, 5, hy3:movetoworkspace, 05" 37 - "$mod, 6, workspace, 06" 38 - "SUPER_SHIFT, 6, hy3:movetoworkspace, 06" 39 - "$mod, 7, workspace, 07" 40 - "SUPER_SHIFT, 7, hy3:movetoworkspace, 07" 41 - "$mod, 8, workspace, 08" 42 - "SUPER_SHIFT, 8, hy3:movetoworkspace, 08" 43 - "$mod, 9, workspace, 09" 44 - "SUPER_SHIFT, 9, hy3:movetoworkspace, 09" 45 - "$mod, 0, workspace, 10" 46 - "SUPER_SHIFT, 0, hy3:movetoworkspace, 10" 47 - # Scratchpad 48 - "SUPER_SHIFT, -, hy3:movetoworkspace, special:default" 49 - "$mod, -, togglespecialworkspace, default" 50 - 51 - # Window Management 52 - "SUPER_SHIFT, Up, hy3:movewindow, up, once, visible" 53 - "SUPER_SHIFT, K, hy3:movewindow, up, once, visible" 54 - "$mod, Up, hy3:movefocus, up, visible, warp" 55 - "$mod, K, hy3:movefocus, up, visible, warp" 56 - 57 - "SUPER_SHIFT, Right, hy3:movewindow, right, once, visible" 58 - "SUPER_SHIFT, L, hy3:movewindow, right, once, visible" 59 - "$mod, Right, hy3:movefocus, right, visible, warp" 60 - "$mod, L, hy3:movefocus, right, visible, warp" 61 - 62 - "SUPER_SHIFT, Left, hy3:movewindow, left, once, visible" 63 - "SUPER_SHIFT, H, hy3:movewindow, left, once, visible" 64 - "$mod, Left, hy3:movefocus, left, visible, warp" 65 - "$mod, H, hy3:movefocus, left, visible, warp" 66 - 67 - "SUPER_SHIFT, Down, hy3:movewindow, down, once, visible" 68 - "SUPER_SHIFT, J, hy3:movewindow, down, once, visible" 69 - "$mod, Down, hy3:movefocus, down, visible, warp" 70 - "$mod, J, hy3:movefocus, down, visible, warp" 71 - 72 - "SUPER_SHIFT, Q, killactive" 73 - "$mod, F, fullscreen, 0" 74 - # Super-(literal equals) 75 - "$mod, code:21, hy3:togglefocuslayer" 76 - # Super-(literal plus) 77 - "SUPER_SHIFT, code:21, togglefloating, active" 78 - 79 - # Screenshots 80 - "SHIFT, F3, exec, hyprshot -m output --raw -z -s | $satty" 81 - "SHIFT, F4, exec, hyprshot -m region --raw -z -s | $satty" 82 - ] 83 - ++ lib.optionals (shell == "caelestia") [ 84 - "$mod, X, global, caelestia:session" 85 - ", XF86PowerOff , global, caelestia:session" 86 - "$mod, Space, global, caelestia:launcher" 87 - ] 88 - ++ lib.optionals (shell == "dms") [ 89 - "$mod, X, exec, dms ipc call powermenu toggle" 90 - ", XF86PowerOff ,exec, dms ipc call powermenu toggle" 91 - "SUPER_SHIFT, X, exec, dms ipc call lock lock" 92 - "$mod, Space, exec, dms ipc call spotlight toggle" 93 - ]; 94 - 95 - bindm = [ 96 - "$mod, mouse:272, movewindow" 97 - ]; 98 - 99 - # Unbind a bunch of default keybinds 100 - unbind = [ 101 - "$mod, C" 102 - "$mod, E" 103 - "$mod, J" 104 - "$mod, M" 105 - "$mod, P" 106 - "$mod, Q" 107 - "$mod, R" 108 - "$mod, V" 109 - ]; 110 - }
-8
homeModules/hyprland/monitors.nix
··· 1 - { 2 - monitor = [ 3 - "eDP-1, 2560x1600@165, 0x0, 1, vrr, 1" 4 - "desc:Acer Technologies SA241Y 0x1497CF17, preferred, 2560x0, 1" 5 - # Fallback for random monitors 6 - ", preferred, auto, 1" 7 - ]; 8 - }
-7
homeModules/hyprland/plugins.nix
··· 1 - { 2 - plugin = { 3 - hy3 = { 4 - no_gaps_when_only = 1; 5 - }; 6 - }; 7 - }
-10
homeModules/hyprland/services.nix
··· 1 - { 2 - config, 3 - ... 4 - }: 5 - let 6 - cfg = config.wayland.windowManager.hyprland; 7 - in 8 - { 9 - services.hyprpolkitagent.enable = cfg.enable; 10 - }
-25
homeModules/hyprland/settings.nix
··· 1 - { config, lib, ... }: 2 - let 3 - inherit (config.py.profiles.desktop) shell; 4 - keybinds = import ./keybindings.nix { inherit lib shell; }; 5 - monitors = import ./monitors.nix; 6 - variables = import ./variables.nix; 7 - plugins = import ./plugins.nix; 8 - env = import ./env.nix; 9 - windowrules = import ./windowrules.nix; 10 - in 11 - { 12 - animation = [ 13 - "global, 1, 4, default" 14 - ]; 15 - exec-once = lib.optionals (shell == "dms") [ 16 - "dms run" 17 - "bash -c \"wl-paste --watch cliphist store &\"" 18 - ]; 19 - } 20 - // keybinds 21 - // monitors 22 - // variables 23 - // plugins 24 - // env 25 - // windowrules
-40
homeModules/hyprland/variables.nix
··· 1 - # https://wiki.hypr.land/Configuring/Variables 2 - { 3 - general = { 4 - gaps_in = 1; 5 - gaps_out = 10; 6 - layout = "hy3"; 7 - resize_on_border = true; 8 - }; 9 - decoration = { 10 - blur.enabled = false; 11 - shadow.enabled = false; 12 - }; 13 - misc = { 14 - disable_hyprland_logo = true; 15 - disable_splash_rendering = true; 16 - font_family = "Inter"; 17 - mouse_move_focuses_monitor = true; 18 - }; 19 - input = { 20 - kb_options = "caps:escape"; 21 - repeat_delay = 300; 22 - touchpad = { 23 - scroll_factor = 1.5; 24 - tap_button_map = "lmr"; 25 - tap-and-drag = false; 26 - }; 27 - }; 28 - render = { 29 - direct_scanout = 0; 30 - non_shader_cm = 3; 31 - cm_fs_passthrough = 0; 32 - }; 33 - cursor = { 34 - hotspot_padding = 2; 35 - }; 36 - ecosystem = { 37 - no_update_news = true; 38 - no_donation_nag = true; 39 - }; 40 - }
-9
homeModules/hyprland/windowrules.nix
··· 1 - { 2 - windowrule = [ 3 - "match:title Celeste, immediate, content game" 4 - "match:title Melvor Idle, tile" 5 - # Borderlands 2 6 - "match:class steam_app_49520, immediate, content game, fullscreen, monitor DP-2" 7 - "match:initial_class steam_app_49520, immediate, content game, fullscreen, monitor DP-2" 8 - ]; 9 - }
+241
homeModules/niri/config.kdl
··· 1 + input { 2 + warp-mouse-to-focus 3 + focus-follows-mouse max-scroll-amount="0%" 4 + 5 + keyboard { 6 + repeat-delay 200 7 + repeat-rate 20 8 + xkb { 9 + options "caps:escape" 10 + } 11 + } 12 + 13 + touchpad { 14 + dwt 15 + drag false 16 + tap-button-map "left-middle-right" 17 + scroll-factor 1.5 18 + } 19 + 20 + mouse { 21 + scroll-factor 1.5 22 + } 23 + } 24 + 25 + output "Acer Technologies SA241Y 0x1497CF17" { 26 + mode "1920x1080@74.973" 27 + scale 1 28 + transform "normal" 29 + position x=2560 y=0 30 + focus-at-startup 31 + } 32 + 33 + output "eDP-1" { 34 + mode "2560x1600@165" 35 + scale 1 36 + transform "normal" 37 + position x=0 y=0 38 + variable-refresh-rate 39 + focus-at-startup 40 + } 41 + 42 + layout { 43 + gaps 5 44 + background-color "transparent" 45 + center-focused-column "never" 46 + 47 + // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. 48 + preset-column-widths { 49 + proportion 0.33333 50 + proportion 0.5 51 + proportion 0.66667 52 + } 53 + // preset-window-heights { } 54 + default-column-width { proportion 0.5; } 55 + // If you leave the brackets empty, the windows themselves will decide their initial width. 56 + // default-column-width {} 57 + 58 + focus-ring { 59 + width 2 60 + active-color "#a6e3a1" 61 + inactive-color "#6c7086" 62 + } 63 + border { 64 + off 65 + } 66 + struts { 67 + left 5 68 + right 5 69 + top 5 70 + bottom 5 71 + } 72 + } 73 + 74 + prefer-no-csd 75 + spawn-at-startup "dms" "run" 76 + 77 + environment { 78 + XDG_CURRENT_DESKTOP "niri" 79 + QT_QPA_PLATFORM "wayland" 80 + ELECTRON_OZONE_PLATFORM_HINT "auto" 81 + QT_QPA_PLATFORMTHEME "gtk3" 82 + QT_QPA_PLATFORMTHEME_QT6 "gtk3" 83 + GDK_BACKEND "wayland,x11,*" 84 + } 85 + 86 + hotkey-overlay { 87 + } 88 + 89 + screenshot-path "~/Pictures/screenshots/%Y/%m/%d-%H-%M-%S.png" 90 + 91 + window-rule { 92 + match app-id=r#"firefox$"# title="^Picture-in-Picture$" 93 + open-floating true 94 + } 95 + window-rule { 96 + match title="Celeste" 97 + open-fullscreen true 98 + } 99 + 100 + window-rule { 101 + match title=r#"^Borderlands 2"# 102 + open-fullscreen true 103 + open-on-output "Acer Technologies SA241Y 0x1497CF17" 104 + } 105 + 106 + binds { 107 + Super+Shift+Slash { show-hotkey-overlay; } 108 + 109 + Super+Space hotkey-overlay-title="Launcher" { spawn "dms" "ipc" "spotlight" "toggle"; } 110 + Super+Return hotkey-overlay-title="Open Terminal" { spawn "ghostty"; } 111 + Super+X hotkey-overlay-title="Power Menu" { spawn "dms" "ipc" "powermenu" "toggle"; } 112 + Super+Shift+X hotkey-overlay-title="Lock Session" { spawn "dms" "ipc" "lock" "lock"; } 113 + 114 + XF86AudioRaiseVolume hotkey-overlay-title="Volume Up" allow-when-locked=true { spawn "dms" "ipc" "audio" "increment" "5"; } 115 + XF86AudioLowerVolume hotkey-overlay-title="Volume Down" allow-when-locked=true { spawn "dms" "ipc" "audio" "decrement" "5"; } 116 + XF86AudioMute hotkey-overlay-title="Mute Audio" allow-when-locked=true { spawn "dms" "ipc" "audio" "mute"; } 117 + XF86AudioPlay allow-when-locked=true { spawn "dms" "ipc" "mpris" "playPause"; } 118 + XF86AudioStop allow-when-locked=true { spawn "dms" "ipc" "mpris" "stop"; } 119 + XF86AudioPrev allow-when-locked=true { spawn "dms" "ipc" "mpris" "previous"; } 120 + XF86AudioNext allow-when-locked=true { spawn "dms" "ipc" "mpris" "next"; } 121 + 122 + XF86MonBrightnessUp allow-when-locked=true { spawn "dms" "ipc" "brightness" "increment" "5"; } 123 + XF86MonBrightnessDown allow-when-locked=true { spawn "dms" "ipc" "brightness" "decrement" "5"; } 124 + 125 + Super+O repeat=false { toggle-overview; } 126 + 127 + Super+Q repeat=false { close-window; } 128 + 129 + Mod+Left { focus-column-left; } 130 + Mod+Down { focus-window-down; } 131 + Mod+Up { focus-window-up; } 132 + Mod+Right { focus-column-right; } 133 + Mod+H { focus-column-left; } 134 + Mod+J { focus-window-down; } 135 + Mod+K { focus-window-up; } 136 + Mod+L { focus-column-right; } 137 + 138 + Mod+Shift+Left { move-column-left; } 139 + Mod+Shift+Down { move-window-down; } 140 + Mod+Shift+Up { move-window-up; } 141 + Mod+Shift+Right { move-column-right; } 142 + Mod+Shift+H { move-column-left; } 143 + Mod+Shift+J { move-window-down; } 144 + Mod+Shift+K { move-window-up; } 145 + Mod+Shift+L { move-column-right; } 146 + 147 + Mod+Home { focus-column-first; } 148 + Mod+End { focus-column-last; } 149 + Mod+Ctrl+Home { move-column-to-first; } 150 + Mod+Ctrl+End { move-column-to-last; } 151 + 152 + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } 153 + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } 154 + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } 155 + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } 156 + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } 157 + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } 158 + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } 159 + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } 160 + 161 + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } 162 + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } 163 + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } 164 + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } 165 + 166 + Mod+WheelScrollRight { focus-column-right; } 167 + Mod+WheelScrollLeft { focus-column-left; } 168 + Mod+Ctrl+WheelScrollRight { move-column-right; } 169 + Mod+Ctrl+WheelScrollLeft { move-column-left; } 170 + 171 + // Usually scrolling up and down with Shift in applications results in 172 + // horizontal scrolling; these binds replicate that. 173 + Mod+Shift+WheelScrollDown { focus-column-right; } 174 + Mod+Shift+WheelScrollUp { focus-column-left; } 175 + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } 176 + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } 177 + 178 + Mod+1 { focus-workspace 1; } 179 + Mod+2 { focus-workspace 2; } 180 + Mod+3 { focus-workspace 3; } 181 + Mod+4 { focus-workspace 4; } 182 + Mod+5 { focus-workspace 5; } 183 + Mod+6 { focus-workspace 6; } 184 + Mod+7 { focus-workspace 7; } 185 + Mod+8 { focus-workspace 8; } 186 + Mod+9 { focus-workspace 9; } 187 + Mod+Shift+1 { move-window-to-workspace 1; } 188 + Mod+Shift+2 { move-window-to-workspace 2; } 189 + Mod+Shift+3 { move-window-to-workspace 3; } 190 + Mod+Shift+4 { move-window-to-workspace 4; } 191 + Mod+Shift+5 { move-window-to-workspace 5; } 192 + Mod+Shift+6 { move-window-to-workspace 6; } 193 + Mod+Shift+7 { move-window-to-workspace 7; } 194 + Mod+Shift+8 { move-window-to-workspace 8; } 195 + Mod+Shift+9 { move-window-to-workspace 9; } 196 + 197 + Mod+Tab { focus-workspace-previous; } 198 + 199 + Mod+BracketLeft { consume-or-expel-window-left; } 200 + Mod+BracketRight { consume-or-expel-window-right; } 201 + 202 + // Consume one window from the right to the bottom of the focused column. 203 + Mod+Comma { consume-window-into-column; } 204 + // Expel the bottom window from the focused column to the right. 205 + Mod+Period { expel-window-from-column; } 206 + 207 + Mod+R { switch-preset-column-width; } 208 + Mod+Shift+R { switch-preset-window-height; } 209 + Mod+Ctrl+R { reset-window-height; } 210 + Mod+F { maximize-column; } 211 + Mod+Shift+F { fullscreen-window; } 212 + 213 + Mod+Ctrl+F { expand-column-to-available-width; } 214 + 215 + Mod+C { center-column; } 216 + 217 + Mod+Ctrl+C { center-visible-columns; } 218 + 219 + Mod+Shift+Equal { toggle-window-floating; } 220 + Mod+Equal { switch-focus-between-floating-and-tiling; } 221 + 222 + Mod+W { toggle-column-tabbed-display; } 223 + 224 + Print { screenshot; } 225 + Shift+F3 { screenshot-screen; } 226 + Shift+F4 { screenshot-window; } 227 + 228 + Mod+Shift+E { quit; } 229 + 230 + Ctrl+Alt+L { spawn "loginctl" "lock-session"; } 231 + } 232 + 233 + // DMS Integration 234 + layer-rule { 235 + match namespace="^quickshell$" 236 + place-within-backdrop true 237 + } 238 + layer-rule { 239 + match namespace="dms:blurwallpaper" 240 + place-within-backdrop true 241 + }
+7
homeModules/niri/default.nix
··· 1 + { 2 + config = { 3 + xdg.configFile."niri/config.kdl" = { 4 + source = ./config.kdl; 5 + }; 6 + }; 7 + }
-22
homeModules/profiles/desktop/default.nix
··· 6 6 }: 7 7 let 8 8 cfg = config.py.profiles.desktop; 9 - inherit (cfg) shell; 10 9 inherit (lib) mkIf mkDefault mkEnableOption; 11 - 12 - mkShellOption = 13 - name: var: 14 - lib.mkOption { 15 - type = lib.types.bool; 16 - default = if (shell == var) then true else false; 17 - description = "Enable ${name}"; 18 - readOnly = true; 19 - visible = false; 20 - internal = true; 21 - }; 22 10 in 23 11 { 24 12 options.py.profiles.desktop = { 25 13 enable = mkEnableOption "Desktop Config"; 26 - shell = lib.mkOption { 27 - type = lib.types.enum [ 28 - "caelestia" 29 - "dms" 30 - ]; 31 - default = "caelestia"; 32 - description = "The desktop shell to use in the graphical environment"; 33 - }; 34 - caelestia = mkShellOption "Caelestia shell" "caelestia"; 35 - dms = mkShellOption "DMS" "dms"; 36 14 }; 37 15 config = mkIf cfg.enable { 38 16 py.profiles.base.enable = true;
-1
homeModules/profiles/gui/default.nix
··· 36 36 libappindicator-gtk3 37 37 prismlauncher 38 38 pwvucontrol 39 - hyprshot 40 39 satty 41 40 ueberzug 42 41 (olympus.overrideAttrs (_: {
-50
homeModules/programs/caelestia/caelestia-cli.json
··· 1 - { 2 - "record": { 3 - "extraArgs": [] 4 - }, 5 - "theme": { 6 - "enableTerm": false, 7 - "enableHypr": false, 8 - "enableDiscord": false, 9 - "enableSpicetify": false, 10 - "enableFuzzel": false, 11 - "enableBtop": true, 12 - "enableGtk": false, 13 - "enableQt": false 14 - }, 15 - "toggles": { 16 - "discord": { 17 - "discord": { 18 - "enable": true, 19 - "match": [ 20 - { 21 - "class": "equibop" 22 - } 23 - ], 24 - "command": [ 25 - "equibop" 26 - ], 27 - "move": true 28 - } 29 - }, 30 - "sysmon": { 31 - "btop": { 32 - "enable": true, 33 - "match": [ 34 - { 35 - "class": "btop", 36 - "title": "btop", 37 - "workspace": { 38 - "name": "special:sysmon" 39 - } 40 - } 41 - ], 42 - "command": [ 43 - "ghostty", 44 - "-e", 45 - "btop" 46 - ] 47 - } 48 - } 49 - } 50 - }
-364
homeModules/programs/caelestia/caelestia-shell.json
··· 1 - { 2 - "appearance": { 3 - "anim": { 4 - "durations": { 5 - "scale": 0.5 6 - } 7 - }, 8 - "font": { 9 - "family": { 10 - "clock": "Inter", 11 - "material": "Material Symbols Rounded", 12 - "mono": "BlexMono Nerd Font", 13 - "sans": "Inter" 14 - }, 15 - "size": { 16 - "scale": 1.1 17 - } 18 - }, 19 - "padding": { 20 - "scale": 1 21 - }, 22 - "rounding": { 23 - "scale": 0 24 - }, 25 - "spacing": { 26 - "scale": 0.5 27 - }, 28 - "transparency": { 29 - "base": 0.85, 30 - "enabled": false, 31 - "layers": 0.4 32 - } 33 - }, 34 - "background": { 35 - "desktopClock": { 36 - "enabled": false 37 - }, 38 - "enabled": true, 39 - "visualiser": { 40 - "autoHide": true, 41 - "enabled": false, 42 - "rounding": 1, 43 - "spacing": 1 44 - } 45 - }, 46 - "bar": { 47 - "clock": { 48 - "showIcon": false 49 - }, 50 - "dragThreshold": 20, 51 - "entries": [ 52 - { 53 - "enabled": true, 54 - "id": "workspaces" 55 - }, 56 - { 57 - "enabled": true, 58 - "id": "spacer" 59 - }, 60 - { 61 - "enabled": false, 62 - "id": "activeWindow" 63 - }, 64 - { 65 - "enabled": true, 66 - "id": "spacer" 67 - }, 68 - { 69 - "enabled": true, 70 - "id": "clock" 71 - }, 72 - { 73 - "enabled": true, 74 - "id": "statusIcons" 75 - }, 76 - { 77 - "enabled": true, 78 - "id": "tray" 79 - }, 80 - { 81 - "enabled": true, 82 - "id": "power" 83 - } 84 - ], 85 - "persistent": true, 86 - "scrollActions": { 87 - "brightness": false, 88 - "volume": false, 89 - "workspaces": false 90 - }, 91 - "showOnHover": true, 92 - "status": { 93 - "showAudio": true, 94 - "showBattery": true, 95 - "showBluetooth": true, 96 - "showKbLayout": false, 97 - "showLockStatus": true, 98 - "showMicrophone": false, 99 - "showNetwork": true 100 - }, 101 - "tray": { 102 - "background": true, 103 - "compact": false, 104 - "iconSubs": [], 105 - "recolour": true 106 - }, 107 - "workspaces": { 108 - "activeIndicator": true, 109 - "activeLabel": "", 110 - "activeTrail": false, 111 - "label": " ", 112 - "occupiedBg": false, 113 - "occupiedLabel": "", 114 - "perMonitorWorkspaces": true, 115 - "showWindows": true, 116 - "shown": 5 117 - } 118 - }, 119 - "border": { 120 - "rounding": 0, 121 - "thickness": 10 122 - }, 123 - "dashboard": { 124 - "dragThreshold": 50, 125 - "enabled": true, 126 - "mediaUpdateInterval": 500, 127 - "showOnHover": true 128 - }, 129 - "general": { 130 - "apps": { 131 - "audio": [ 132 - "pwvucontrol" 133 - ], 134 - "explorer": [ 135 - "thunar" 136 - ], 137 - "playback": [ 138 - "mpv" 139 - ], 140 - "terminal": [ 141 - "ghostty" 142 - ] 143 - }, 144 - "battery": { 145 - "criticalLevel": 3, 146 - "warnLevels": [ 147 - { 148 - "icon": "battery_android_frame_2", 149 - "level": 20, 150 - "message": "You might want to plug in a charger", 151 - "title": "Low battery" 152 - }, 153 - { 154 - "icon": "battery_android_frame_1", 155 - "level": 10, 156 - "message": "You should probably plug in a charger <b>now</b>", 157 - "title": "Did you see the previous message?" 158 - }, 159 - { 160 - "critical": true, 161 - "icon": "battery_android_alert", 162 - "level": 5, 163 - "message": "PLUG THE CHARGER RIGHT NOW!!", 164 - "title": "Critical battery level" 165 - } 166 - ] 167 - }, 168 - "idle": { 169 - "inhibitWhenAudio": false, 170 - "lockBeforeSleep": false, 171 - "timeouts": [] 172 - } 173 - }, 174 - "launcher": { 175 - "actionPrefix": ">", 176 - "actions": [ 177 - { 178 - "command": [ 179 - "autocomplete", 180 - "calc" 181 - ], 182 - "dangerous": false, 183 - "description": "Do simple math equations (powered by Qalc)", 184 - "enabled": true, 185 - "icon": "calculate", 186 - "name": "Calculator" 187 - }, 188 - { 189 - "name": "Wallpaper", 190 - "icon": "image", 191 - "description": "Change the current wallpaper", 192 - "command": [ 193 - "autocomplete", 194 - "wallpaper" 195 - ], 196 - "enabled": true, 197 - "dangerous": false 198 - }, 199 - { 200 - "name": "Random", 201 - "icon": "casino", 202 - "description": "Switch to a random wallpaper", 203 - "command": [ 204 - "caelestia", 205 - "wallpaper", 206 - "-r" 207 - ], 208 - "enabled": true, 209 - "dangerous": false 210 - }, 211 - { 212 - "command": [ 213 - "systemctl", 214 - "poweroff" 215 - ], 216 - "dangerous": true, 217 - "description": "Shutdown the system", 218 - "enabled": true, 219 - "icon": "power_settings_new", 220 - "name": "Shutdown" 221 - }, 222 - { 223 - "command": [ 224 - "systemctl", 225 - "reboot" 226 - ], 227 - "dangerous": true, 228 - "description": "Reboot the system", 229 - "enabled": true, 230 - "icon": "cached", 231 - "name": "Reboot" 232 - }, 233 - { 234 - "command": [ 235 - "loginctl", 236 - "terminate-user", 237 - "" 238 - ], 239 - "dangerous": true, 240 - "description": "Log out of the current session", 241 - "enabled": true, 242 - "icon": "exit_to_app", 243 - "name": "Logout" 244 - }, 245 - { 246 - "command": [ 247 - "loginctl", 248 - "lock-session" 249 - ], 250 - "dangerous": false, 251 - "description": "Lock the current session", 252 - "enabled": true, 253 - "icon": "lock", 254 - "name": "Lock" 255 - }, 256 - { 257 - "command": [ 258 - "systemctl", 259 - "suspend" 260 - ], 261 - "dangerous": false, 262 - "description": "Suspend", 263 - "enabled": true, 264 - "icon": "bedtime", 265 - "name": "Sleep" 266 - } 267 - ], 268 - "dragThreshold": 50, 269 - "enableDangerousActions": false, 270 - "hiddenApps": [], 271 - "maxShown": 7, 272 - "maxWallpapers": 9, 273 - "showOnHover": false, 274 - "specialPrefix": "@", 275 - "useFuzzy": { 276 - "actions": false, 277 - "apps": true, 278 - "schemes": false, 279 - "variants": false, 280 - "wallpapers": false 281 - }, 282 - "vimKeybinds": true 283 - }, 284 - "lock": { 285 - "recolourLogo": false, 286 - "enableFprint": false 287 - }, 288 - "notifs": { 289 - "actionOnClick": true, 290 - "clearThreshold": 0.3, 291 - "defaultExpireTimeout": 5000, 292 - "expandThreshold": 20, 293 - "expire": true 294 - }, 295 - "osd": { 296 - "enableBrightness": true, 297 - "enableMicrophone": false, 298 - "enabled": true, 299 - "hideDelay": 2000 300 - }, 301 - "paths": { 302 - "mediaGif": "", 303 - "sessionGif": "", 304 - "wallpaperDir": "~/bgs/wallpapers" 305 - }, 306 - "services": { 307 - "audioIncrement": 0.1, 308 - "defaultPlayer": "Spotify", 309 - "gpuType": "", 310 - "playerAliases": [ 311 - { 312 - "from": "Mozilla firefox", 313 - "to": "Firefox" 314 - } 315 - ], 316 - "smartScheme": false, 317 - "useFahrenheit": true, 318 - "useTwelveHourClock": false, 319 - "visualiserBars": 0, 320 - "weatherLocation": "Norfolk+Virginia" 321 - }, 322 - "session": { 323 - "commands": { 324 - "hibernate": [ 325 - "systemctl", 326 - "suspend" 327 - ], 328 - "logout": [ 329 - "loginctl", 330 - "terminate-user" 331 - ], 332 - "reboot": [ 333 - "systemctl", 334 - "reboot" 335 - ], 336 - "shutdown": [ 337 - "systemctl", 338 - "poweroff" 339 - ] 340 - }, 341 - "dragThreshold": 30, 342 - "enabled": true, 343 - "vimKeybinds": true 344 - }, 345 - "sidebar": { 346 - "dragThreshold": 80, 347 - "enabled": true 348 - }, 349 - "utilities": { 350 - "enabled": true, 351 - "maxToasts": 4, 352 - "toasts": { 353 - "audioInputChanged": true, 354 - "audioOutputChanged": true, 355 - "capsLockChanged": true, 356 - "chargingChanged": true, 357 - "configLoaded": true, 358 - "dndChanged": true, 359 - "gameModeChanged": true, 360 - "numLockChanged": true, 361 - "nowPlaying": true 362 - } 363 - } 364 - }
-23
homeModules/programs/caelestia/default.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: 6 - let 7 - cfg = config.py.profiles.desktop.caelestia; 8 - en = config.py.profiles.desktop.enable; 9 - in 10 - { 11 - config = lib.mkIf (cfg && en) { 12 - programs.caelestia = { 13 - enable = true; 14 - settings = builtins.fromJSON (builtins.readFile ./caelestia-shell.json); 15 - systemd = { 16 - enable = true; 17 - target = "graphical-session.target"; 18 - }; 19 - cli.enable = true; 20 - cli.settings = builtins.fromJSON (builtins.readFile ./caelestia-cli.json); 21 - }; 22 - }; 23 - }
-2
homeModules/programs/default.nix
··· 1 1 { 2 2 imports = [ 3 3 # keep-sorted start 4 - ./caelestia 5 4 ./chromium 6 - ./dms 7 5 ./firefox 8 6 ./fish 9 7 ./ghostty
-20
homeModules/programs/dms/default.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: 6 - let 7 - cfg = config.py.profiles.desktop.dms; 8 - en = config.py.profiles.desktop.enable; 9 - in 10 - { 11 - config = lib.mkIf (cfg && en) { 12 - programs.dank-material-shell = { 13 - enable = true; 14 - enableDynamicTheming = false; 15 - enableAudioWavelength = false; 16 - enableCalendarEvents = false; 17 - enableSystemSound = false; 18 - }; 19 - }; 20 - }
-1
homeModules/theming/default.nix
··· 17 17 package = pkgs.catppuccin-cursors.mochaBlue; 18 18 name = "catppuccin-mocha-blue-cursors"; 19 19 gtk.enable = true; 20 - hyprcursor.enable = true; 21 20 }; 22 21 gtk = mkIf pro.gui.enable { 23 22 enable = true;
+3 -1
homeModules/xdg/default.nix
··· 18 18 enable = true; 19 19 xdgOpenUsePortal = true; 20 20 extraPortals = [ 21 + pkgs.xdg-desktop-portal-gnome 21 22 pkgs.xdg-desktop-portal-gtk 22 23 ]; 23 24 config = { 24 25 common = { 25 26 default = [ 26 - "hyprland" 27 + "gnome" 27 28 "gtk" 28 29 ]; 29 30 "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; 31 + "org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ]; 30 32 }; 31 33 }; 32 34 };
+2 -1
hosts/default.nix
··· 10 10 inputs.self.nixosModules.defaultConfig 11 11 inputs.self.nixosModules.defaultUsers 12 12 inputs.self.nixosModules.firefox 13 - inputs.self.nixosModules.hyprland 13 + inputs.self.nixosModules.niri 14 14 inputs.self.nixosModules.forgejo-runner 15 15 inputs.self.nixosModules.hm-pyrox 16 16 inputs.self.nixosModules.hm-thehedgehog ··· 58 58 inputs.hardware.nixosModules.framework-16-7040-amd 59 59 inputs.self.nixosModules.hm-pyrox-zaphod 60 60 inputs.self.nixosModules.hm-thehedgehog-zaphod 61 + inputs.self.nixosModules.dms 61 62 { 62 63 home-manager.useGlobalPkgs = true; 63 64 home-manager.useUserPackages = true;
+4 -1
hosts/zaphod/default.nix
··· 29 29 profiles.gui.enable = true; 30 30 users.default.enable = true; 31 31 programs = { 32 + # keep-sorted start 32 33 appimage.enable = true; 33 34 chromium.enable = true; 34 35 dconf.enable = true; 36 + dms.enable = true; 35 37 firefox.enable = true; 36 38 fish.enable = true; 37 - hyprland.enable = true; 38 39 less.enable = true; 39 40 neovim.enable = true; 41 + niri.enable = true; 40 42 noisetorch.enable = true; 41 43 steam.enable = true; 42 44 wireshark.enable = true; 45 + # keep-sorted end 43 46 }; 44 47 }; 45 48
-3
hosts/zaphod/misc.nix
··· 53 53 percentageLow = 30; 54 54 percentageCritical = 15; 55 55 }; 56 - 57 - # For caelestia screen recording 58 - programs.gpu-screen-recorder.enable = true; 59 56 }
-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 10 9 inputs.golink.overlays.default 11 10 inputs.quickshell.overlays.default 12 11 ];
+2 -1
nixosModules/default.nix
··· 9 9 10 10 # Programs 11 11 chromium = import ./programs/chromium; 12 + dms = import ./programs/dms; 12 13 firefox = import ./programs/firefox; 13 - hyprland = import ./programs/hyprland; 14 14 miscPrograms = import ./programs/misc; 15 15 neovim = import ./programs/neovim; 16 + niri = import ./programs/niri; 16 17 17 18 # Services 18 19 buildbot = import ./services/buildbot;
-13
nixosModules/homes/thehedgehog-zaphod/default.nix
··· 1 1 { 2 2 pkgs, 3 - lib, 4 - inputs, 5 3 self', 6 4 ... 7 5 }: 8 - let 9 - shell = "caelestia"; 10 - in 11 6 { 12 7 home-manager.users.thehedgehog = { 13 8 home.packages = [ ··· 17 12 ]; 18 13 home.sessionVariables = { 19 14 QT_QPA_PLATFORM = "wayland;xcb"; 20 - GDK_BACKEND = "wayland,x11,*"; 21 15 NIXOS_OZONE_WL = "1"; 22 16 }; 23 17 py.profiles.desktop = { 24 - inherit shell; 25 18 enable = true; 26 - }; 27 - programs.dank-material-shell.plugins = lib.mkIf (shell == "dms") { 28 - dms-wallpaper-shuffler.src = inputs.dms-wp-shuffler; 29 - dms-power-usage.src = inputs.dms-power-usage; 30 - DankPomodoroTimer.src = "${inputs.dms-plugins}/DankPomodoroTimer"; 31 - DankBatteryAlerts.src = "${inputs.dms-plugins}/DankBatteryAlerts"; 32 19 }; 33 20 }; 34 21 }
+46
nixosModules/programs/dms/default.nix
··· 1 + { 2 + config, 3 + lib, 4 + inputs', 5 + pkgs, 6 + ... 7 + }: 8 + let 9 + cfg = config.py.programs.dms; 10 + # dank-plugins-src = pkgs.fetchFromGitHub { 11 + # owner = "AvengeMedia"; 12 + # repo = "dms-plugins"; 13 + # rev = "8fa7c5286171c66a209dd74e9a47d6e72ccfdad6"; 14 + # hash = ""; 15 + # }; 16 + in 17 + { 18 + options = { 19 + py.programs.dms.enable = lib.mkEnableOption "Dank-Material-Shell"; 20 + }; 21 + config = lib.mkIf cfg.enable { 22 + programs.dms-shell = { 23 + enable = true; 24 + systemd.enable = false; 25 + enableSystemMonitoring = true; 26 + enableClipboard = true; 27 + quickshell.package = inputs'.quickshell.packages.quickshell; 28 + # plugins = { 29 + # dankPomodoroTimer.src = dank-plugins-src; 30 + # dankDesktopWeather.src = dank-plugins-src; 31 + # powerUsagePlugin.src = pkgs.fetchFromGitHub { 32 + # owner = "Daniel-42-z"; 33 + # repo = "dms-power-usage"; 34 + # rev = "04b7da69b98be23d6f6bbc0430461680b43809e0"; 35 + # hash = ""; 36 + # }; 37 + # mediaPlayer.src = pkgs.fetchFromGitHub { 38 + # owner = "arrifat346afs"; 39 + # repo = "mediaPlayer"; 40 + # rev = "4d73e6c810f85093339eb6cc6dad251ea6c15b04"; 41 + # hash = ""; 42 + # }; 43 + # }; 44 + }; 45 + }; 46 + }
-19
nixosModules/programs/hyprland/default.nix
··· 1 - { 2 - config, 3 - lib, 4 - ... 5 - }: 6 - let 7 - cfg = config.py.programs.hyprland; 8 - in 9 - { 10 - options = { 11 - py.programs.hyprland.enable = lib.mkEnableOption "Hyprland"; 12 - }; 13 - config = lib.mkIf cfg.enable { 14 - programs.hyprland = { 15 - enable = true; 16 - xwayland.enable = true; 17 - }; 18 - }; 19 - }
+22
nixosModules/programs/niri/default.nix
··· 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: 7 + let 8 + cfg = config.py.programs.niri; 9 + in 10 + { 11 + options = { 12 + py.programs.niri.enable = lib.mkEnableOption "Niri"; 13 + }; 14 + config = lib.mkIf cfg.enable { 15 + programs.niri = { 16 + enable = true; 17 + }; 18 + environment.systemPackages = [ 19 + pkgs.xwayland-satellite 20 + ]; 21 + }; 22 + }
-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; 6 5 }; 7 6 }
-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 - }