From bb361f28686d5ca4f2d18682f01d942422c60aa1 Mon Sep 17 00:00:00 2001 From: lucy Date: Tue, 20 Oct 2026 08:30:35 +0200 Subject: [PATCH] convert niri module to nix --- modules/home/programs/emacs.nix | 3 - modules/home/programs/niri.nix | 345 +++++++++++++++++--------------- modules/system/stylix/fonts.nix | 1 + 3 files changed, 189 insertions(+), 160 deletions(-) diff --git a/modules/home/programs/emacs.nix b/modules/home/programs/emacs.nix index f8d6d78..de4a89c 100644 --- a/modules/home/programs/emacs.nix +++ b/modules/home/programs/emacs.nix @@ -7,9 +7,6 @@ extraConfig = '' ;; -*- lexical-binding: t; -*- (setq make-backup-files nil) - - (add-to-list 'default-frame-alist '(font . "JetBrainsMono Nerd Font Mono-14")) - (require 'package) (add-to-list 'package-archives '("melpa-snapshots" diff --git a/modules/home/programs/niri.nix b/modules/home/programs/niri.nix index 1feea0c..498ea75 100644 --- a/modules/home/programs/niri.nix +++ b/modules/home/programs/niri.nix @@ -1,163 +1,194 @@ { ... }: { - flake.homeModules.niri = { + flake.homeModules.niri = { config, lib, ... }: { wayland.windowManager.niri = { enable = true; - extraConfig = '' - prefer-no-csd - hotkey-overlay { - skip-at-startup - } - - environment { - GTK_THEME "adw-gtk3-dark" - XDG_CURRENT_DESKTOP "niri" - XDG_SESSION_TYPE "wayland" - XDG_SESSION_DESKTOP "niri" - QT_QPA_PLATFORM "wayland;xcb" - OZONE_PLATFORM "wayland" - ELECTRON_OZONE_PLATFORM_HINT "auto" - } - cursor { - xcursor-size 24 - xcursor-theme "macOS" - } - input { - keyboard { - xkb { - layout "eu" - } - } - - touchpad { - tap - natural-scroll - - } - - mouse { - accel-speed -0.4 - accel-profile "flat" - } - focus-follows-mouse max-scroll-amount="20%" - - } - - output "PNP(BNQ) BenQ EX2710Q K6R04023019" { - mode "2560x1440@165.002" - scale 1 - transform "normal" - position x=1920 y=0 - } - output "Dell Inc. DELL P2317H 9KFDW6C533DB" { - position x=0 y=0 - } - - output "eDP-1" { - scale 1 - } - - - layout { - gaps 16 - center-focused-column "never" - default-column-width { proportion 0.6; } - focus-ring { - off - } - border { - width 2 - active-color "#ffc87f" - inactive-color "#505050" - } - } - spawn-at-startup "qs" - screenshot-path null - animations {} - window-rule { - geometry-corner-radius 16 - clip-to-geometry true - } - - binds { - Mod+return { spawn-sh "ghostty +new-window"; } - Mod+space { spawn "fuzzel"; } - Mod+e { spawn "nautilus"; } - - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } - XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } - XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } - - XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } - XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; } - XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } - XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } - - XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } - XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } - - Mod+O repeat=false { toggle-overview; } - Mod+Q repeat=false { 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+comma { focus-monitor-left; } - Mod+period { focus-monitor-right; } - - Mod+Shift+comma { move-column-to-monitor-left; } - Mod+Shift+period { move-column-to-monitor-right; } - - - Mod+Shift+WheelScrollDown { focus-column-right; } - Mod+Shift+WheelScrollUp { focus-column-left; } - 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+Shift+1 { move-column-to-workspace 1; } - Mod+Shift+2 { move-column-to-workspace 2; } - Mod+Shift+3 { move-column-to-workspace 3; } - Mod+Shift+4 { move-column-to-workspace 4; } - Mod+Shift+5 { move-column-to-workspace 5; } - Mod+Shift+6 { move-column-to-workspace 6; } - Mod+Shift+7 { move-column-to-workspace 7; } - Mod+Shift+8 { move-column-to-workspace 8; } - Mod+Shift+9 { move-column-to-workspace 9; } - - Mod+BracketLeft { consume-or-expel-window-left; } - Mod+BracketRight { consume-or-expel-window-right; } - Mod+F { maximize-column; } - - Mod+Minus { set-column-width "-10%"; } - Mod+Equal { set-column-width "+10%"; } - - Mod+V { toggle-window-floating; } - Mod+Shift+S { screenshot; } - Alt+Shift+S { screenshot-screen; } - Alt+Ctrl+S { screenshot-window; } - Mod+Shift+q { quit; } - } - ''; + settings = { + prefer-no-csd = { }; + hotkey-overlay.skip-at-startup = { }; + environment = { + XDG_CURRENT_DESKTOP = "niri"; + XDG_SESSION_TYPE = "wayland"; + XDG_SESSION_DESKTOP = "niri"; + }; + cursor = { + xcursor-size = 24; + xcursor-theme = "macOS"; + }; + input = { + keyboard.xkb.layout = "eu"; + touchpad = { + tap = { }; + natural-scroll = { }; + }; + mouse = { + accel-speed = -0.4; + accel-profile = "flat"; + }; + focus-follows-mouse._props.max-scroll-amount = "20%"; + }; + spawn-at-startup = [ "qs" ]; + screenshot-path = null; + animations = { }; + layout = { + gaps = 16; + center-focused-column = "never"; + default-column-width._children = [ { proportion = 0.6; } ]; + focus-ring.off = { }; + border = { + width = 2; + active-color = config.lib.stylix.colors.base0D; + inactive-color = config.lib.stylix.colors.base03; + }; + }; + binds = { + "Mod+Return".spawn-sh = "ghostty +new-window"; + "Mod+space".spawn = [ "fuzzel" ]; + "Mod+e".spawn = [ "nautilus" ]; + "XF86AudioRaiseVolume" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; + }; + "XF86AudioLowerVolume" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; + }; + "XF86AudioMute" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + }; + "XF86AudioMicMute" = { + _props.allow-when-locked = true; + spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; + }; + "XF86AudioPlay" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl play-pause"; + }; + "XF86AudioStop" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl stop"; + }; + "XF86AudioPrev" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl previous"; + }; + "XF86AudioNext" = { + _props.allow-when-locked = true; + spawn-sh = "playerctl next"; + }; + "XF86MonBrightnessUp" = { + _props.allow-when-locked = true; + spawn = [ + "brightnessctl" + "--class=backlight" + "set" + "+10%" + ]; + }; + "XF86MonBrightnessDown" = { + _props.allow-when-locked = true; + spawn = [ + "brightnessctl" + "--class=backlight" + "set" + "10%-" + ]; + }; + "Mod+O" = { + _props.repeat = false; + toggle-overview = { }; + }; + "Mod+Q" = { + _props.repeat = false; + 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+comma".focus-monitor-left = { }; + "Mod+period".focus-monitor-right = { }; + "Mod+Shift+comma".move-column-to-monitor-left = { }; + "Mod+Shift+period".move-column-to-monitor-right = { }; + "Mod+Shift+WheelScrollDown".focus-column-right = { }; + "Mod+Shift+WheelScrollUp".focus-column-left = { }; + "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+Shift+1".move-column-to-workspace = 1; + "Mod+Shift+2".move-column-to-workspace = 2; + "Mod+Shift+3".move-column-to-workspace = 3; + "Mod+Shift+4".move-column-to-workspace = 4; + "Mod+Shift+5".move-column-to-workspace = 5; + "Mod+Shift+6".move-column-to-workspace = 6; + "Mod+Shift+7".move-column-to-workspace = 7; + "Mod+Shift+8".move-column-to-workspace = 8; + "Mod+Shift+9".move-column-to-workspace = 9; + "Mod+BracketLeft".consume-or-expel-window-left = { }; + "Mod+BracketRight".consume-or-expel-window-right = { }; + "Mod+F".maximize-column = { }; + "Mod+Minus".set-column-width = "-10%"; + "Mod+Equal".set-column-width = "+10%"; + "Mod+V".toggle-window-floating = { }; + "Mod+Shift+S".screenshot = { }; + "Alt+Shift+S".screenshot-screen = { }; + "Alt+Ctrl+S".screenshot-window = { }; + "Mod+Shift+q".quit = { }; + }; + _children = [ + { + output = { + _args = [ "PNP(BNQ) BenQ EX2710Q K6R04023019" ]; + mode = "2560x1440@165.002"; + scale = 1; + transform = "normal"; + position._props = { + x = 1920; + y = 0; + }; + }; + } + { + output = { + _args = [ "Dell Inc. DELL P2317H 9KFDW6C533DB" ]; + position._props = { + x = 0; + y = 0; + }; + }; + } + { + output = { + _args = [ "eDP-1" ]; + scale = 1; + }; + } + { + window-rule._children = [ + { geometry-corner-radius = 16; } + { clip-to-geometry = true; } + ]; + } + ]; + }; }; }; } diff --git a/modules/system/stylix/fonts.nix b/modules/system/stylix/fonts.nix index c8025a6..b45a8c1 100644 --- a/modules/system/stylix/fonts.nix +++ b/modules/system/stylix/fonts.nix @@ -1,6 +1,7 @@ { ... }: { flake.nixosModules.stylix_fonts = { pkgs, config, ... }: { stylix.fonts = { + sizes.terminal = 14; serif = { package = config.stylix.fonts.monospace.package; name = config.stylix.fonts.monospace.name;