All my system configs and packages in one repo

presets/niri: switch to systemd services + autostart

pluie.me 45f7417d a463605d

verified
+208 -136
+22 -14
modules/hjem-ext/programs/vesktop.nix
··· 11 11 { 12 12 options.ext.programs.vesktop = { 13 13 enable = lib.mkEnableOption "Vesktop"; 14 - 15 14 package = lib.mkPackageOption pkgs "vesktop" { }; 15 + autostart = lib.mkEnableOption "autostarting Vesktop"; 16 16 17 17 settings = lib.mkOption { 18 18 inherit (format) type; ··· 50 50 }; 51 51 52 52 config = lib.mkIf cfg.enable { 53 - packages = [ 54 - (cfg.package.override { 55 - withSystemVencord = cfg.vencord.useSystemPackage; 56 - }) 53 + packages = lib.mkMerge [ 54 + [ 55 + (cfg.package.override { 56 + withSystemVencord = cfg.vencord.useSystemPackage; 57 + }) 58 + ] 59 + (lib.mkIf cfg.autostart [ 60 + (pkgs.makeAutostartItem { 61 + name = "vesktop"; 62 + package = pkgs.vesktop; 63 + prependExtraArgs = [ "--wayland-text-input-version=3" ]; 64 + }) 65 + ]) 57 66 ]; 58 67 59 - xdg.config.files = 60 - { 61 - "vesktop/settings.json".source = format.generate "vesktop-settings.json" cfg.settings; 62 - } 63 - // lib.optionalAttrs cfg.vencord.enable { 64 - "vesktop/settings/settings.json".source = 65 - format.generate "vencord-settings.json" cfg.vencord.settings; 68 + xdg.config.files = { 69 + "vesktop/settings.json".source = format.generate "vesktop-settings.json" cfg.settings; 70 + } 71 + // lib.optionalAttrs cfg.vencord.enable { 72 + "vesktop/settings/settings.json".source = 73 + format.generate "vencord-settings.json" cfg.vencord.settings; 66 74 67 - "vesktop/settings/quickCss.css".text = cfg.vencord.css; 68 - }; 75 + "vesktop/settings/quickCss.css".text = cfg.vencord.css; 76 + }; 69 77 }; 70 78 }
-14
users/leah/presets/niri/config.kdl
··· 343 343 } 344 344 workspace "gaming" 345 345 346 - spawn-at-startup "waybar" 347 - spawn-at-startup "swaync" 348 - spawn-at-startup "fcitx5" 349 - spawn-at-startup "swayidle" 350 - spawn-at-startup "swaybg" 351 - spawn-at-startup "swayosd-server" 352 - 353 - // TODO: I do not know why 1Pass doesn't work on Wayland 354 - spawn-at-startup "env" "ELECTRON_OZONE_PLATFORM_HINT=x11" "1password" 355 - spawn-at-startup "ghostty" "--launched-from=desktop" 356 - spawn-at-startup "firefox" 357 - spawn-at-startup "vesktop" "--wayland-text-input-version=3" 358 - spawn-at-startup "steam" 359 - 360 346 window-rule { 361 347 match at-startup=true app-id="vesktop" 362 348 open-on-workspace "chat"
+65 -41
users/leah/presets/niri/default.nix
··· 7 7 ./gui-toolkits.nix 8 8 ./services.nix 9 9 ./waybar 10 + ./swaync 11 + ./swayosd 10 12 ]; 11 13 12 14 programs.niri.enable = true; 13 15 14 - services.udev.packages = [ pkgs.swayosd ]; 15 - systemd.packages = [ pkgs.swayosd ]; 16 + services.gnome.gnome-keyring.enable = true; 17 + security.pam.services.login.enableGnomeKeyring = true; 16 18 17 19 hjem.users.leah = { 18 20 packages = with pkgs; [ 19 - # I'm using Nautilus here because it a) looks nice 20 - # and b) avoids configuring XDP GNOME to use a XDP GTK's file chooser 21 - nautilus 22 - 23 21 networkmanagerapplet 24 - swaynotificationcenter 25 - waybar 26 22 xwayland-satellite 27 23 brightnessctl 28 24 wleave ··· 32 28 loupe 33 29 gnome-logs 34 30 resources 31 + # I'm using Nautilus here because it a) looks nice 32 + # and b) avoids configuring XDP GNOME to use a XDP GTK's file chooser 33 + nautilus 35 34 ]; 36 35 37 - xdg.config.files = { 38 - "niri/config.kdl".source = ./config.kdl; 39 - "swaync/style.css".source = ./swaync/style.css; 40 - "swaync/config.json".source = ./swaync/config.json; 41 - }; 42 - }; 36 + xdg.config.files."niri/config.kdl".source = ./config.kdl; 43 37 44 - hjem.users.leah.rum.programs.fuzzel = { 45 - enable = true; 38 + ext.programs.swaylock = { 39 + enable = true; 40 + package = pkgs.swaylock-effects; 46 41 47 - settings.main = { 48 - font = "Sans:size=14"; 49 - use-bold = true; 50 - show-actions = true; 51 - match-counter = true; 42 + settings = { 43 + show-failed-attempts = true; 44 + ignore-empty-password = true; 45 + daemonize = true; 52 46 53 - # Make Fuzzel take on-demand focus and stop it 54 - # from closing automatically 55 - keyboard-focus = "on-demand"; 56 - exit-on-keyboard-focus-loss = false; 47 + screenshots = true; 48 + scaling = "fit"; 49 + clock = true; 50 + indicator-idle-visible = true; 51 + grace = 3; 52 + effect-blur = "10x10"; 53 + effect-vignette = "0.5:0.8"; 54 + effect-pixelate = 4; 57 55 58 - lines = 8; 59 - y-margin = 8; 60 - horizontal-pad = 20; 61 - vertical-pad = 16; 62 - inner-pad = 8; 63 - anchor = "bottom"; 64 - layer = "top"; 56 + text-color = "#cdd6f4"; 57 + inside-color = "#181825"; 58 + inside-clear-color = "#a6e3a1"; 59 + inside-ver-color = "#cba6f7"; 60 + inside-wrong-color = "#f38ba8"; 61 + ring-color = "#1e1e2e"; 62 + ring-clear-color = "#a6e3a1"; 63 + ring-ver-color = "#cba6f7"; 64 + ring-wrong-color = "#f38ba8"; 65 + key-hl-color = "#eba0ac"; 66 + bs-hl-color = "#6c7086"; 67 + line-color = "#313244"; 68 + 69 + timestr = "%H:%M"; 70 + datestr = "%e %b '%y / %a"; 71 + }; 65 72 }; 66 73 67 - settings.border = { 68 - radius = 8; 69 - width = 2; 70 - }; 71 - }; 74 + rum.programs.fuzzel = { 75 + enable = true; 76 + 77 + settings.main = { 78 + font = "Sans:size=14"; 79 + use-bold = true; 80 + show-actions = true; 81 + match-counter = true; 82 + 83 + # Make Fuzzel take on-demand focus 84 + keyboard-focus = "on-demand"; 72 85 73 - hjem.users.leah.ext.programs.swayosd = { 74 - enable = true; 75 - settings.server.show_percentage = true; 76 - style = ./swayosd/style.css; 86 + lines = 8; 87 + width = 35; 88 + y-margin = 8; 89 + horizontal-pad = 20; 90 + vertical-pad = 16; 91 + inner-pad = 8; 92 + anchor = "bottom"; 93 + layer = "top"; 94 + }; 95 + 96 + settings.border = { 97 + radius = 8; 98 + width = 2; 99 + }; 100 + }; 77 101 }; 78 102 }
+16 -1
users/leah/presets/niri/services.nix
··· 9 9 name = "swaybg"; 10 10 runtimeInputs = [ pkgs.swaybg ]; 11 11 text = '' 12 - swaybg -i ${../../wallpaper.jpg} 12 + exec swaybg -i "${../../wallpaper.jpg}" "$@" 13 13 ''; 14 14 }; 15 15 ··· 39 39 swayidle' 40 40 swaybg' 41 41 ]; 42 + 43 + hjem.users.leah.systemd.services = { 44 + swaybg = { 45 + after = [ "graphical-session.target" ]; 46 + wantedBy = [ "graphical-session.target" ]; 47 + serviceConfig.ExecStart = lib.getExe swaybg'; 48 + restartTriggers = [ swaybg' ]; 49 + }; 50 + swayidle = { 51 + after = [ "graphical-session.target" ]; 52 + wantedBy = [ "graphical-session.target" ]; 53 + serviceConfig.ExecStart = lib.getExe swayidle'; 54 + restartTriggers = [ swayidle' ]; 55 + }; 56 + }; 42 57 43 58 security = { 44 59 polkit.enable = true;
+15
users/leah/presets/niri/swaync/default.nix
··· 1 + { 2 + pkgs, 3 + ... 4 + }: 5 + { 6 + hjem.users.leah = { 7 + packages = [ pkgs.swaynotificationcenter ]; 8 + systemd.targets.graphical-session-pre.wants = [ "swaync.service" ]; 9 + 10 + xdg.config.files = { 11 + "swaync/style.css".source = ./style.css; 12 + "swaync/config.json".source = ./config.json; 13 + }; 14 + }; 15 + }
+34
users/leah/presets/niri/swayosd/default.nix
··· 1 + { 2 + lib, 3 + config, 4 + ... 5 + }: 6 + let 7 + swayosd = config.hjem.users.leah.ext.programs.swayosd.package; 8 + in 9 + { 10 + # LibInput backend 11 + services = { 12 + dbus.packages = [ swayosd ]; 13 + udev.packages = [ swayosd ]; 14 + }; 15 + systemd = { 16 + packages = [ swayosd ]; 17 + targets.graphical.wants = [ "swayosd-libinput-backend.service" ]; 18 + }; 19 + 20 + # Server 21 + hjem.users.leah = { 22 + ext.programs.swayosd = { 23 + enable = true; 24 + settings.server.show_percentage = true; 25 + style = ./style.css; 26 + }; 27 + systemd.services.swayosd-server = { 28 + after = [ "graphical-session.target" ]; 29 + wantedBy = [ "graphical-session.target" ]; 30 + serviceConfig.ExecStart = lib.getExe' swayosd "swayosd-server"; 31 + restartTriggers = [ swayosd ]; 32 + }; 33 + }; 34 + }
+1 -1
users/leah/presets/niri/waybar/config.nix
··· 186 186 }; 187 187 "custom/wleave" = { 188 188 format = ""; 189 - on-click = "wleave"; 189 + on-click = "wleave -x"; 190 190 }; 191 191 } 192 192 {
+1
users/leah/presets/niri/waybar/default.nix
··· 9 9 { 10 10 hjem.users.leah = { 11 11 packages = [ pkgs.waybar ]; 12 + systemd.targets.graphical-session-pre.wants = [ "waybar.service" ]; 12 13 13 14 xdg.config.files = { 14 15 "waybar/style.css".source = ./style.css;
+7 -1
users/leah/programs/1password.nix
··· 1 1 { 2 2 config, 3 3 pkgs, 4 - lib, 5 4 ... 6 5 }: 7 6 { ··· 18 17 19 18 # Add 1Pass as SSH agent 20 19 hjem.users.leah = { 20 + packages = [ 21 + (pkgs.makeAutostartItem { 22 + name = "1password"; 23 + inherit (config.programs._1password-gui) package; 24 + }) 25 + ]; 26 + 21 27 environment.sessionVariables.SSH_AUTH_SOCK = "${config.hjem.users.leah.directory}/.1password/agent.sock"; 22 28 }; 23 29 }
-36
users/leah/programs/default.nix
··· 76 76 wrap = true; 77 77 }; 78 78 }; 79 - 80 - swaylock = { 81 - enable = true; 82 - package = pkgs.swaylock-effects; 83 - 84 - settings = { 85 - show-failed-attempts = true; 86 - ignore-empty-password = true; 87 - daemonize = true; 88 - 89 - screenshots = true; 90 - scaling = "fit"; 91 - clock = true; 92 - indicator-idle-visible = true; 93 - grace = 3; 94 - effect-blur = "10x10"; 95 - effect-vignette = "0.5:0.8"; 96 - effect-pixelate = 4; 97 - 98 - text-color = "#cdd6f4"; 99 - inside-color = "#181825"; 100 - inside-clear-color = "#a6e3a1"; 101 - inside-ver-color = "#cba6f7"; 102 - inside-wrong-color = "#f38ba8"; 103 - ring-color = "#1e1e2e"; 104 - ring-clear-color = "#a6e3a1"; 105 - ring-ver-color = "#cba6f7"; 106 - ring-wrong-color = "#f38ba8"; 107 - key-hl-color = "#eba0ac"; 108 - bs-hl-color = "#6c7086"; 109 - line-color = "#313244"; 110 - 111 - timestr = "%H:%M"; 112 - datestr = "%e %b '%y / %a"; 113 - }; 114 - }; 115 79 }; 116 80 }; 117 81 }
+1
users/leah/programs/discord/default.nix
··· 1 1 { 2 2 hjem.users.leah.ext.programs.vesktop = { 3 3 enable = true; 4 + autostart = true; 4 5 5 6 settings = { 6 7 minimizeToTray = "on";
+7 -1
users/leah/programs/firefox/default.nix
··· 59 59 # I've seen how HM does it, and I don't think it's worth it at all... 60 60 in 61 61 { 62 - hjem.users.leah.packages = [ wrappedFirefox ]; 62 + hjem.users.leah.packages = [ 63 + wrappedFirefox 64 + (pkgs.makeAutostartItem { 65 + name = "firefox"; 66 + package = wrappedFirefox; 67 + }) 68 + ]; 63 69 }
+32 -27
users/leah/programs/ghostty.nix
··· 4 4 ... 5 5 }: 6 6 { 7 - # Required by apps like Fuzzel for determing the default terminal 8 - hjem.users.leah.environment.sessionVariables.TERMINAL = "ghostty"; 7 + hjem.users.leah = { 8 + # Required by apps like Fuzzel for determing the default terminal 9 + environment.sessionVariables.TERMINAL = "ghostty"; 10 + systemd.targets.graphical-session.wants = [ 11 + "app-com.mitchellh.ghostty.service" 12 + ]; 9 13 10 - hjem.users.leah.rum.programs.ghostty = { 11 - enable = true; 12 - package = inputs.ghostty.packages.${pkgs.system}.ghostty; 14 + rum.programs.ghostty = { 15 + enable = true; 16 + package = inputs.ghostty.packages.${pkgs.system}.ghostty; 13 17 14 - settings = { 15 - font-family = "Iosevka"; 16 - font-size = 14; 18 + settings = { 19 + font-family = "Iosevka"; 20 + font-size = 14; 17 21 18 - background = "#1e1e2e"; 22 + background = "#1e1e2e"; 19 23 20 - window-decoration = "client"; 21 - window-theme = "ghostty"; 24 + window-decoration = "client"; 25 + window-theme = "ghostty"; 22 26 23 - unfocused-split-opacity = 0.8; 24 - background-opacity = 0.85; 25 - background-blur = true; 27 + unfocused-split-opacity = 0.8; 28 + background-opacity = 0.85; 29 + background-blur = true; 26 30 27 - # Massively improves the nvim experience 28 - mouse-hide-while-typing = true; 31 + # Massively improves the nvim experience 32 + mouse-hide-while-typing = true; 29 33 30 - quick-terminal-size = "30%"; 31 - quick-terminal-autohide = true; 34 + quick-terminal-size = "30%"; 35 + quick-terminal-autohide = true; 32 36 33 - keybind = [ 34 - "ctrl+shift+up=new_split:up" 35 - "ctrl+shift+down=new_split:down" 36 - "ctrl+shift+left=new_split:left" 37 - "ctrl+shift+right=new_split:right" 38 - "alt+shift+left=next_tab" 39 - "alt+shift+right=previous_tab" 40 - "global:ctrl+backquote=toggle_quick_terminal" 41 - ]; 37 + keybind = [ 38 + "ctrl+shift+up=new_split:up" 39 + "ctrl+shift+down=new_split:down" 40 + "ctrl+shift+left=new_split:left" 41 + "ctrl+shift+right=new_split:right" 42 + "alt+shift+left=next_tab" 43 + "alt+shift+right=previous_tab" 44 + "global:ctrl+backquote=toggle_quick_terminal" 45 + ]; 46 + }; 42 47 }; 43 48 }; 44 49 }
+7
users/leah/programs/steam.nix
··· 29 29 protontricks.enable = true; 30 30 remotePlay.openFirewall = true; 31 31 }; 32 + 33 + hjem.users.leah.packages = [ 34 + (pkgs.makeAutostartItem { 35 + name = "steam"; 36 + package = pkgs.steam; 37 + }) 38 + ]; 32 39 }