{ self, inputs, ... }: { perSystem = { pkgs, lib, self', ... }: { packages.myNiri = inputs.wrapper-modules.wrappers.niri.wrap { inherit pkgs; settings = { prefer-no-csd = {}; spawn-sh-at-startup = [ "ckb-next -b" (lib.getExe self'.packages.myNoctalia) # Wallpapers "${pkgs.mpvpaper}/bin/mpvpaper -n 900 -o '--hwdec=auto --no-audio --loop-playlist shuffle --panscan=1.0 --scale=nearest' ALL ${./wallpapers}" ]; screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"; layout = { gaps = 5; center-focused-column = "never"; default-column-width = { proportion = 0.5; }; focus-ring = { width = 1.5; active-color = "#7aa2f7"; inactive-color = "#a9b1d6"; }; border = { off = {}; width = 4; active-color = "#ffc87f"; inactive-color = "#505050"; urgent-color = "#9b0000"; }; }; outputs = { "HDMI-A-1" = { mode = "1920x1080@60.00"; position = _: { props = { x = 0; y = 180; }; }; }; "DP-2" = { mode = "2560x1440@144.00"; position = _: { props = { x = 1920; y = 0; }; }; variable-refresh-rate = {}; }; "DP-1" = { mode = "1680x1050@60.00"; position = _: { props = { x = 4480; y = 195; }; }; }; }; input = { keyboard = { numlock = {}; repeat-rate = 35; repeat-delay = 500; }; touchpad = { tap = {}; natural-scroll = {}; scroll-factor = 0.25; }; focus-follows-mouse = {}; }; window-rules = [ { matches = [ { app-id = "^brave-browser$"; title = "^Picture-in-Picture$"; } ]; open-floating = true; } { matches = [ { app-id = "^org\\.keepassxc\\.KeePassXC$"; } { app-id = "^org\\.gnome\\.World\\.Secrets$"; } ]; block-out-from = "screen-capture"; } { geometry-corner-radius = 12; clip-to-geometry = true; } { matches = [ { app-id = "^brave-browser$"; } ]; open-maximized = true; } { matches = [ { app-id = "^vesktop$"; } ]; open-maximized = true; } { matches = [ { app-id = "^steam$"; } ]; open-maximized = true; } { matches = [ { app-id = "^vesktop$"; } ]; background-effect = { blur = true; xray = false; }; } { matches = [ { app-id="^flameshot$"; } ]; open-floating = true; } ]; binds = { "Mod+Shift+Slash".show-hotkey-overlay = {}; "Mod+T".spawn = "alacritty"; "Mod+D".spawn = "fuzzel"; "Super+Ctrl+L".spawn = "swaylock"; "Super+Alt+S".spawn = [ "sh" "-c" "pkill orca || exec orca" ]; # Media & Volume Controls "XF86AudioRaiseVolume".spawn = [ "sh" "-c" "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0" ]; "XF86AudioLowerVolume".spawn = [ "sh" "-c" "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" ]; "XF86AudioMute".spawn = [ "sh" "-c" "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ]; "XF86AudioMicMute".spawn = [ "sh" "-c" "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" ]; "XF86AudioPlay".spawn = [ "sh" "-c" "playerctl play-pause" ]; "XF86AudioStop".spawn = [ "sh" "-c" "playerctl stop" ]; "XF86AudioPrev".spawn = [ "sh" "-c" "playerctl previous" ]; "XF86AudioNext".spawn = [ "sh" "-c" "playerctl next" ]; # Brightness Controls "XF86MonBrightnessUp".spawn = [ "brightnessctl" "--class=backlight" "set" "+10%" ]; "XF86MonBrightnessDown".spawn = [ "brightnessctl" "--class=backlight" "set" "10%-" ]; # Window & Layout Navigation "Mod+O".toggle-overview = {}; "Mod+Q".close-window = {}; "Mod+Left".focus-column-left = {}; "Mod+Down".focus-window-down = {}; "Mod+Up".focus-window-up = {}; "Mod+Right".focus-column-right = {}; "Mod+H".focus-column-left = {}; "Mod+J".focus-window-down = {}; "Mod+K".focus-window-up = {}; "Mod+L".focus-column-right = {}; "Mod+Ctrl+Left".move-column-left = {}; "Mod+Ctrl+Down".move-window-down = {}; "Mod+Ctrl+Up".move-window-up = {}; "Mod+Ctrl+Right".move-column-right = {}; "Mod+Ctrl+H".move-column-left = {}; "Mod+Ctrl+J".move-window-down = {}; "Mod+Ctrl+K".move-window-up = {}; "Mod+Ctrl+L".move-column-right = {}; "Mod+Home".focus-column-first = {}; "Mod+End".focus-column-last = {}; "Mod+Ctrl+Home".move-column-to-first = {}; "Mod+Ctrl+End".move-column-to-last = {}; # Monitor Navigation "Mod+Shift+Left".focus-monitor-left = {}; "Mod+Shift+Down".focus-monitor-down = {}; "Mod+Shift+Up".focus-monitor-up = {}; "Mod+Shift+Right".focus-monitor-right = {}; "Mod+Shift+H".focus-monitor-left = {}; "Mod+Shift+J".focus-monitor-down = {}; "Mod+Shift+K".focus-monitor-up = {}; "Mod+Shift+L".focus-monitor-right = {}; "Mod+Shift+Ctrl+Left".move-column-to-monitor-left = {}; "Mod+Shift+Ctrl+Down".move-column-to-monitor-down = {}; "Mod+Shift+Ctrl+Up".move-column-to-monitor-up = {}; "Mod+Shift+Ctrl+Right".move-column-to-monitor-right = {}; "Mod+Shift+Ctrl+H".move-column-to-monitor-left = {}; "Mod+Shift+Ctrl+J".move-column-to-monitor-down = {}; "Mod+Shift+Ctrl+K".move-column-to-monitor-up = {}; "Mod+Shift+Ctrl+L".move-column-to-monitor-right = {}; # Workspace Navigation "Mod+Page_Down".focus-workspace-down = {}; "Mod+Page_Up".focus-workspace-up = {}; "Mod+U".focus-workspace-down = {}; "Mod+I".focus-workspace-up = {}; "Mod+Ctrl+Page_Down".move-column-to-workspace-down = {}; "Mod+Ctrl+Page_Up".move-column-to-workspace-up = {}; "Mod+Ctrl+U".move-column-to-workspace-down = {}; "Mod+Ctrl+I".move-column-to-workspace-up = {}; "Mod+Shift+Page_Down".move-workspace-down = {}; "Mod+Shift+Page_Up".move-workspace-up = {}; "Mod+Shift+U".move-workspace-down = {}; "Mod+Shift+I".move-workspace-up = {}; # Scrolling / Mouse Wheel "Mod+WheelScrollDown".focus-workspace-down = {}; "Mod+WheelScrollUp".focus-workspace-up = {}; "Mod+Ctrl+WheelScrollDown".move-column-to-workspace-down = {}; "Mod+Ctrl+WheelScrollUp".move-column-to-workspace-up = {}; "Mod+WheelScrollRight".focus-column-right = {}; "Mod+WheelScrollLeft".focus-column-left = {}; "Mod+Ctrl+WheelScrollRight".move-column-right = {}; "Mod+Ctrl+WheelScrollLeft".move-column-left = {}; "Mod+Shift+WheelScrollDown".focus-column-right = {}; "Mod+Shift+WheelScrollUp".focus-column-left = {}; "Mod+Ctrl+Shift+WheelScrollDown".move-column-right = {}; "Mod+Ctrl+Shift+WheelScrollUp".move-column-left = {}; # Numbered Workspaces "Mod+1".focus-workspace = 1; "Mod+2".focus-workspace = 2; "Mod+3".focus-workspace = 3; "Mod+4".focus-workspace = 4; "Mod+5".focus-workspace = 5; "Mod+6".focus-workspace = 6; "Mod+7".focus-workspace = 7; "Mod+8".focus-workspace = 8; "Mod+9".focus-workspace = 9; "Mod+Ctrl+1".move-column-to-workspace = 1; "Mod+Ctrl+2".move-column-to-workspace = 2; "Mod+Ctrl+3".move-column-to-workspace = 3; "Mod+Ctrl+4".move-column-to-workspace = 4; "Mod+Ctrl+5".move-column-to-workspace = 5; "Mod+Ctrl+6".move-column-to-workspace = 6; "Mod+Ctrl+7".move-column-to-workspace = 7; "Mod+Ctrl+8".move-column-to-workspace = 8; "Mod+Ctrl+9".move-column-to-workspace = 9; # Window Layout Adjustments "Mod+BracketLeft".consume-or-expel-window-left = {}; "Mod+BracketRight".consume-or-expel-window-right = {}; "Mod+Comma".consume-window-into-column = {}; "Mod+Period".expel-window-from-column = {}; "Mod+R".switch-preset-column-width = {}; "Mod+Shift+R".switch-preset-window-height = {}; "Mod+Ctrl+R".reset-window-height = {}; "Mod+F".maximize-column = {}; "Mod+Shift+F".fullscreen-window = {}; "Mod+Ctrl+F".expand-column-to-available-width = {}; "Mod+C".center-column = {}; "Mod+Ctrl+C".center-visible-columns = {}; "Mod+Minus".set-column-width = "-10%"; "Mod+Equal".set-column-width = "+10%"; "Mod+Shift+Minus".set-window-height = "-10%"; "Mod+Shift+Equal".set-window-height = "+10%"; "Mod+V".toggle-window-floating = {}; "Mod+Shift+V".switch-focus-between-floating-and-tiling = {}; "Mod+W".toggle-column-tabbed-display = {}; # Screenshots "Print".screenshot = {}; "Ctrl+Print".screenshot-screen = {}; "Alt+Print".screenshot-window = {}; "Mod+Shift+S".spawn = [ "zsh" "-c" "grim -g \"$(slurp)\" - | satty -f - --copy-command=wl-copy" ]; # System Controls "Mod+Escape".toggle-keyboard-shortcuts-inhibit = {}; "Mod+Shift+E".quit = {}; "Ctrl+Alt+Delete".quit = {}; "Mod+Shift+P".power-off-monitors = {}; }; }; }; }; flake.nixosModules.niri = { pkgs, lib, ... }: { programs.niri = { enable = true; package = self.packages.${pkgs.stdenv.hostPlatform.system}.myNiri; }; security.polkit.enable = true; services.gnome.gnome-keyring.enable = true; environment.systemPackages = with pkgs; [ xwayland-satellite mpvpaper ]; }; }