From 0758864078ceed3b767efb0e7997de933201d267 Mon Sep 17 00:00:00 2001 From: William Date: Mon, 20 Oct 2025 10:29:16 -0300 Subject: [PATCH] niri fully in home manager now --- flake.nix | 4 +- homeConfigurations.nix | 2 + hosts/modules/desktop/desktop.nix | 10 +- users/modules/{ => desktop}/desktop.nix | 19 +- users/modules/desktop/niri.nix | 222 ++++++++++++++++++++++++ users/modules/stylix.nix | 10 +- utils.nix | 3 +- 7 files changed, 248 insertions(+), 22 deletions(-) rename users/modules/{ => desktop}/desktop.nix (78%) create mode 100644 users/modules/desktop/niri.nix diff --git a/flake.nix b/flake.nix index b9ca962..fc1c117 100644 --- a/flake.nix +++ b/flake.nix @@ -43,7 +43,9 @@ deploy-rs.url = "github:serokell/deploy-rs"; - niri.url = "github:sodiboo/niri-flake"; + niri-flake.url = "github:sodiboo/niri-flake"; + + niri.url = "github:baduhai/niri/auto-center-when-space-available"; }; outputs = diff --git a/homeConfigurations.nix b/homeConfigurations.nix index 422681d..a6866c8 100644 --- a/homeConfigurations.nix +++ b/homeConfigurations.nix @@ -10,6 +10,7 @@ in flake.homeConfigurations = { "user@rotterdam" = mkHome { username = "user"; + hostname = "rotterdam"; tags = [ "btop" "desktop" @@ -25,6 +26,7 @@ in "user@io" = mkHome { username = "user"; + hostname = "io"; tags = [ "btop" "desktop" diff --git a/hosts/modules/desktop/desktop.nix b/hosts/modules/desktop/desktop.nix index 045c088..f3a9f3a 100644 --- a/hosts/modules/desktop/desktop.nix +++ b/hosts/modules/desktop/desktop.nix @@ -1,4 +1,5 @@ { + config, inputs, lib, pkgs, @@ -7,7 +8,7 @@ { imports = [ - inputs.niri.nixosModules.niri + inputs.niri-flake.nixosModules.niri inputs.nix-flatpak.nixosModules.nix-flatpak ]; @@ -72,11 +73,11 @@ enable = true; settings = { default_session = { - command = "${lib.getExe pkgs.tuigreet} --time --remember --asterisks --cmd ${pkgs.niri}/bin/niri-session"; + command = "${lib.getExe pkgs.tuigreet} --time --remember --asterisks --cmd ${config.programs.niri.package}/bin/niri-session"; user = "greeter"; }; initial_session = { - command = "${lib.getExe pkgs.niri}"; + command = "${config.programs.niri.package}/bin/niri-session"; user = "user"; }; }; @@ -116,10 +117,9 @@ programs = { niri = { enable = true; - package = pkgs.niri; + package = inputs.niri.packages.${pkgs.system}.niri; }; dconf.enable = true; - kdeconnect.enable = true; appimage = { enable = true; binfmt = true; diff --git a/users/modules/desktop.nix b/users/modules/desktop/desktop.nix similarity index 78% rename from users/modules/desktop.nix rename to users/modules/desktop/desktop.nix index f2517f3..ab84c77 100644 --- a/users/modules/desktop.nix +++ b/users/modules/desktop/desktop.nix @@ -1,25 +1,11 @@ { inputs, pkgs, ... }: { - imports = [ - inputs.dms.homeModules.dankMaterialShell.default - inputs.zen-browser.homeModules.beta - ]; - fonts.fontconfig.enable = true; home.packages = with pkgs; [ xwayland-satellite ]; programs = { - dankMaterialShell = { - enable = true; - enableVPN = false; - }; - - zen-browser = { - enable = true; - profiles.william = { }; - }; ghostty = { enable = true; @@ -42,6 +28,11 @@ }; }; + services.kdeconnect = { + enable = true; + indicator = true; + }; + gtk = { enable = true; gtk3.extraConfig = { diff --git a/users/modules/desktop/niri.nix b/users/modules/desktop/niri.nix new file mode 100644 index 0000000..07ce11e --- /dev/null +++ b/users/modules/desktop/niri.nix @@ -0,0 +1,222 @@ +{ + inputs, + pkgs, + hostname ? null, + ... +}: + +let + isRotterdam = hostname == "rotterdam"; +in + +{ + imports = [ + inputs.dms.homeModules.dankMaterialShell.default + ]; + + home.packages = with pkgs; [ xwayland-satellite ]; + + programs.dankMaterialShell = { + enable = true; + enableVPN = false; + }; + + xdg.configFile."niri/config.kdl".text = '' + input { + keyboard { + xkb { + layout "us" + variant "altgr-intl" + } + } + touchpad { + tap + dwt + drag true + drag-lock + natural-scroll + accel-speed 0.2 + accel-profile "flat" + scroll-method "two-finger" + middle-emulation + } + mouse { + natural-scroll + accel-speed 0.2 + accel-profile "flat" + } + warp-mouse-to-focus mode="center-xy" + focus-follows-mouse + } + + layout { + gaps 8 + center-focused-column "never" + auto-center-when-space-available + preset-column-widths { + ${ + if isRotterdam then + '' + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + '' + else + '' + proportion 0.5 + proportion 1 + '' + } + } + default-column-width { proportion ${if isRotterdam then "0.33333" else "0.5"}; } + focus-ring { + off + } + border { + width 4 + active-color "#ffc87f" + inactive-color "#505050" + urgent-color "#9b0000" + } + tab-indicator { + width 4 + gap 4 + place-within-column + } + struts { + left 8 + right 8 + } + } + + overview { + zoom 0.65 + } + + spawn-at-startup "bash" "-c" "wl-paste --watch cliphist store &" + spawn-at-startup "dms" "run" + layer-rule { + match namespace="^wallpaper$" + place-within-backdrop true + } + + spawn-at-startup "xwayland-satellite" + environment { + DISPLAY ":0" + } + + hotkey-overlay { + skip-at-startup + } + + prefer-no-csd + screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" + + animations { + slowdown 0.3 + } + + // open zen at half window width + window-rule { + match app-id="zen" + default-column-width { proportion ${if isRotterdam then "0.5" else "1"}; } + } + + window-rule { + geometry-corner-radius 12 + clip-to-geometry true + } + + config-notification { + disable-failed + } + + binds { + Mod+Return { spawn "ghostty"; } + Alt+Space { spawn "dms" "ipc" "call" "spotlight" "toggle"; } + XF86AudioRaiseVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "increment" "5"; } + XF86AudioLowerVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "decrement" "5"; } + XF86AudioMute allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "mute"; } + XF86AudioMicMute allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "micmute"; } + XF86MonBrightnessUp allow-when-locked=true { spawn "dms" "ipc" "call" "brightness" "increment" "5" ""; } + XF86MonBrightnessDown allow-when-locked=true { spawn "dms" "ipc" "call" "brightness" "decrement" "5" ""; } + Ctrl+Alt+Shift+A allow-when-locked=true { spawn "toggleaudiosink"; } + Mod+W repeat=false { toggle-overview; } + Mod+Q { close-window; } + Super+Shift+L hotkey-overlay-title="Lock Screen" { spawn "dms" "ipc" "call" "lock" "lock"; } + Mod+Shift+Q { close-window; } + Mod+V hotkey-overlay-title="Clipboard Manager" { spawn "dms" "ipc" "call" "clipboard" "toggle"; } + Mod+M hotkey-overlay-title="Task Manager" { spawn "dms" "ipc" "call" "processlist" "toggle"; } + Alt+F4 { 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+L { focus-column-right; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Ctrl+Alt+J { focus-workspace-down; } + Ctrl+Alt+K { focus-workspace-up; } + Ctrl+Alt+Down { focus-workspace-down; } + Ctrl+Alt+Up { focus-workspace-up; } + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down-or-to-workspace-down; } + Mod+Ctrl+Up { move-window-up-or-to-workspace-up; } + Mod+Ctrl+Right { move-column-right; } + Mod+Ctrl+H { move-column-left; } + Mod+Ctrl+J { move-window-down-or-to-workspace-down; } + Mod+Ctrl+K { move-window-up-or-to-workspace-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; } + Mod+Alt+Left { focus-monitor-left; } + Mod+Alt+Down { focus-monitor-down; } + Mod+Alt+Up { focus-monitor-up; } + Mod+Alt+Right { focus-monitor-right; } + Mod+Alt+H { focus-monitor-left; } + Mod+Alt+J { focus-monitor-down; } + Mod+Alt+K { focus-monitor-up; } + Mod+Alt+L { focus-monitor-right; } + Mod+Alt+Ctrl+Left { move-column-to-monitor-left; } + Mod+Alt+Ctrl+Down { move-column-to-monitor-down; } + Mod+Alt+Ctrl+Up { move-column-to-monitor-up; } + Mod+Alt+Ctrl+Right { move-column-to-monitor-right; } + Mod+Alt+Ctrl+H { move-column-to-monitor-left; } + Mod+Alt+Ctrl+J { move-column-to-monitor-down; } + Mod+Alt+Ctrl+K { move-column-to-monitor-up; } + Mod+Alt+Ctrl+L { move-column-to-monitor-right; } + Mod+Ctrl+U { move-workspace-down; } + Mod+Ctrl+I { move-workspace-up; } + Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } + Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } + 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; } + 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+F { maximize-column; } + Mod+Ctrl+F { fullscreen-window; } + Mod+C { center-visible-columns; } + Mod+Ctrl+C { center-column; } + Mod+Space { toggle-window-floating; } + Mod+Ctrl+Space { switch-focus-between-floating-and-tiling; } + Mod+T { toggle-column-tabbed-display; } + Print { screenshot-screen; } + Mod+Print { screenshot; } + Ctrl+Print { screenshot-window; } + Mod+Backspace allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + Mod+Shift+E { spawn "dms" "ipc" "call" "powermenu" "toggle"; } + Ctrl+Alt+Delete { spawn "dms" "ipc" "call" "powermenu" "toggle"; } + Mod+Ctrl+P { power-off-monitors; } + } + ''; +} diff --git a/users/modules/stylix.nix b/users/modules/stylix.nix index 2c2d39f..d59e355 100644 --- a/users/modules/stylix.nix +++ b/users/modules/stylix.nix @@ -6,7 +6,10 @@ }: { - imports = [ inputs.stylix.homeModules.stylix ]; + imports = [ + inputs.stylix.homeModules.stylix + inputs.zen-browser.homeModules.beta + ]; stylix = { enable = true; @@ -58,4 +61,9 @@ profileNames = [ "william" ]; }; }; + + programs.zen-browser = { + enable = true; + profiles.william = { }; + }; } diff --git a/utils.nix b/utils.nix index 1f2c66c..38cf968 100644 --- a/utils.nix +++ b/utils.nix @@ -102,6 +102,7 @@ in mkHome = { username, + hostname ? null, homeDirectory ? "/home/${username}", tags ? [ ], extraModules ? [ ], @@ -165,7 +166,7 @@ in home-manager.lib.homeManagerConfiguration { inherit pkgs; extraSpecialArgs = { - inherit inputs; + inherit inputs hostname; userTags = allTags; }; modules = allModules ++ [