commit 0f6e6e1e711a34a96cc2205f58202632865daa6b
parent 27391121d592f8c38477bb31676ba390f5e196d2
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Sun, 21 Dec 2025 16:21:03 +0100
parent 27391121d592f8c38477bb31676ba390f5e196d2
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Sun, 21 Dec 2025 16:21:03 +0100
chaotic-evil commit
103 files changed, 3844 insertions(+), 2213 deletions(-)
M
|
277
+++++++++++++++++++++++++++++++++++++++++--------------------------------------
M
|
574
+++++++++++++++++++++++++++++++++++++++++--------------------------------------
M
|
116
++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
M
|
74
+++++++++++++++++++++++++++++++++++++++++++++-----------------------------
A
|
53
+++++++++++++++++++++++++++++++++++++++++++++++++++++
M
|
72
++++++++++++++++++++++++++++++++++++++++--------------------------------
M
|
69
+++++++++++++++++++++++++++++++++++++++++----------------------------
M
|
63
++++++++++++++++++++++++++++++++++++---------------------------
M
|
113
+++++++++++++++++++++++++++++++++++++++++++------------------------------------
M
|
73
++++++++++++++++++++++++++++++++++++++-----------------------------------
D
|
242
-------------------------------------------------------------------------------
A
|
184
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A
|
74
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A
|
96
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
M
|
478
++++++++++++++++++++++++++++++++++++++++---------------------------------------
M
|
104
+++++++++++++++++++++++++++++++++++++++++++-------------------------------------
M
|
94
++++++++++++++++++++++++++++++++++---------------------------------------------
D
|
89
-------------------------------------------------------------------------------
M
|
58
+++++++++++++++++++++++++++++++++-------------------------
M
|
85
+++++++++++++++++++++++++++++++++++++++++++------------------------------------
M
|
163
+++++++++++++++++++++++++++++++++++++++++--------------------------------------
M
|
62
++++++++++++++++++++++++++++++++++----------------------------
M
|
66
+++++++++++++++++++++++++++++++++++-------------------------------
M
|
124
+++++++++++++++++++++++++++----------------------------------------------------
A
|
143
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/config/home/zaphyra/configure/fonts.nix b/config/home/zaphyra/configure/fonts.nix @@ -85,7 +85,7 @@ in liberation_ttf ttf_bitstream_vera noto-fonts - noto-fonts-emoji + noto-fonts-color-emoji nerd-fonts.symbols-only fira-code fira-mono
diff --git a/config/home/zaphyra/configure/niri.nix b/config/home/zaphyra/configure/niri.nix @@ -13,40 +13,38 @@ let in { - imports = - with homeManagerModules.zaphyra; - [ - configure.fonts - - services.dssd - services.batsignal - services.wpaperd - services.shaderbg - services.waybar - services.wob - services.swaync - services.swayidle - services.wlsunset - services.playerctl - services.gomuks-web - services.wvkbd - - programs.niri - programs.swaylock - programs.ghostty - homeManagerModules.common.programs.app2unit - programs.anyrun-launcher - programs.fuzzel - ] - ++ (lib.optionals systemConfig.modules.hardware.bluetooth.enable [ - programs.overskride - programs.airpodsctl - ]); + imports = with homeManagerModules.zaphyra; [ + configure.fonts + + services.dssd + services.batsignal + services.wpaperd + services.shaderbg + services.waybar + services.wob + services.swaync + services.swayidle + services.wlsunset + services.playerctl + services.gomuks-web + services.wvkbd + + homeManagerModules.common.programs.app2unit + ]; home.persistence."/nix/persist/home/${config.home.username}".directories = [ "dconf/.config/dconf" ]; + zaphyra.programs = { + niri.enable = true; + ghostty.enable = true; + anyrun-launcher.enable = true; + fuzzel.enable = true; + overskride.enable = systemConfig.modules.hardware.bluetooth.enable; + airpodsctl.enable = systemConfig.modules.hardware.bluetooth.enable; + }; + tgc.programs.nirius.enable = true; xdg.portal = {
diff --git a/config/home/zaphyra/configure/xdg.nix b/config/home/zaphyra/configure/xdg.nix @@ -13,6 +13,11 @@ enable = true; mime.enable = true; + # terminal-exec = { + # enable = true; + # package = pkgs.xdg-terminal-exec-mkhl; + # }; + userDirs = { enable = true;
diff --git a/config/home/zaphyra/home.nix b/config/home/zaphyra/home.nix @@ -1,4 +1,6 @@ { + hostConfig, + lib, homeManagerModules, pkgs, ... @@ -29,23 +31,10 @@ time = "en_GB.UTF-8"; }; - imports = with homeManagerModules.zaphyra; [ + imports = [ homeManagerModules.common.programs.starship - programs.fish - programs.mcfly - programs.zoxide - programs.eza - programs.bat - - programs.chawan - programs.yazi - programs.micro - programs.helix - programs.tmux - programs.htop - - programs.deploymentUtilities - programs.shellUtilities + ./programs + ./languages ]; }
diff --git a/config/home/zaphyra/languages/default.nix b/config/home/zaphyra/languages/default.nix @@ -0,0 +1,8 @@ +_: { + imports = [ + ./golang.nix + ./javascript.nix + ./nimlang.nix + ./nix.nix + ]; +}
diff --git a/config/home/zaphyra/languages/golang.nix b/config/home/zaphyra/languages/golang.nix @@ -0,0 +1,26 @@ +{ + config, + systemConfig, + lib, + pkgs, + ... +}: + +{ + + options.zaphyra.languages.go.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.languages.go.enable { + home = { + packages = [ pkgs.go ]; + sessionVariables.GOPATH = "${config.xdg.dataHome}/go"; + + }; + + programs.micro.lsp-servers.go.command = lib.getExe pkgs.gopls; + }; + +}
diff --git a/config/home/zaphyra/languages/javascript.nix b/config/home/zaphyra/languages/javascript.nix @@ -0,0 +1,30 @@ +{ + config, + systemConfig, + lib, + pkgs, + ... +}: + +{ + + options.zaphyra.languages.javascript.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.languages.javascript.enable { + home.packages = with pkgs; [ + nodejs + pnpm + ]; + + programs = { + micro.lsp-servers.js.command = lib.getExe pkgs.typescript-language-server; + helix.extraPackages = [ + pkgs.typescript-language-server + ]; + }; + }; + +}
diff --git a/config/home/zaphyra/languages/nimlang.nix b/config/home/zaphyra/languages/nimlang.nix @@ -0,0 +1,31 @@ +{ + config, + systemConfig, + lib, + pkgs, + ... +}: + +{ + + options.zaphyra.languages.nim.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.languages.nim.enable { + home.packages = with pkgs; [ + nim + nimble + ]; + + programs = { + micro.lsp-servers.nim.command = lib.getExe pkgs.nimlangserver; + + helix.extraPackages = [ + pkgs.nimlangserver + ]; + }; + }; + +}
diff --git a/config/home/zaphyra/languages/nix.nix b/config/home/zaphyra/languages/nix.nix @@ -0,0 +1,41 @@ +{ + config, + systemConfig, + lib, + pkgs, + ... +}: + +{ + + options.zaphyra.languages.nix.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.languages.nix.enable { + home.packages = with pkgs; [ + deadnix + nixfmt-rfc-style + nixfmt-tree + statix + ]; + + programs = { + helix.extraPackages = [ + pkgs.nixd + pkgs.nil + ]; + + micro.lsp-servers.nix = { + command = lib.getExe pkgs.nixd; + options = { + config = builtins.toJSON { + formatting.command = [ (lib.getExe pkgs.nixfmt-rfc-style) ]; + }; + }; + }; + }; + + }; +}
diff --git a/config/home/zaphyra/programs/airpodsctl.nix b/config/home/zaphyra/programs/airpodsctl.nix @@ -1,22 +1,22 @@ { config, + lib, pkgs, ... }: { - imports = [ - inputs.airpodsctl.homeManagerModules.kairpodsd - ]; + options.zaphyra.programs.airpodsctl.enable = lib.mkEnableOption "airpodsctl"; - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "kairpodsd/.config/kairpodsd/" - "kairpodsd/.local/share/kairpodsd/" - ]; + config = lib.mkIf config.zaphyra.programs.airpodsctl.enable { + services.kairpodsd.enable = true; + home.packages = [ pkgs.airpodsctl ]; - services.kairpodsd.enable = true; - - home.packages = [ pkgs.airpodsctl ]; + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "kairpodsd/.config/kairpodsd/" + "kairpodsd/.local/share/kairpodsd/" + ]; + }; }
diff --git a/config/home/zaphyra/programs/alacritty.nix b/config/home/zaphyra/programs/alacritty.nix @@ -1,16 +1,20 @@ { + config, + lib, pkgs, ... }: { - home.sessionVariables = { - TERMINAL = "alacritty"; - }; + options.zaphyra.programs.alacritty.enable = lib.mkEnableOption "alacritty terminal emulator"; + + config = lib.mkIf config.zaphyra.programs.alacritty.enable { + home.sessionVariables = { + TERMINAL = "alacritty"; + }; - programs = { - alacritty = { + programs.alacritty = { enable = true; settings = { window.opacity = 0.9; @@ -50,8 +54,8 @@ }; }; }; - }; - wayland.windowManager.sway.config.terminal = "${pkgs.alacritty}/bin/alacritty"; + wayland.windowManager.sway.config.terminal = "${pkgs.alacritty}/bin/alacritty"; + }; }
diff --git a/config/home/zaphyra/programs/anyrun-launcher.nix b/config/home/zaphyra/programs/anyrun-launcher.nix @@ -7,141 +7,152 @@ { - programs.niri.settings.binds = with config.lib.niri.actions; { - "Mod+Space".action = spawn (lib.getExe pkgs.unstable.app2unit) "-C" "--" ( - lib.getExe pkgs.tgc.anyrun - ); + options.zaphyra.programs.anyrun-launcher.enable = lib.mkOption { + type = lib.types.bool; + default = config.zaphyra.programs.niri.enable; }; - home.packages = [ pkgs.tgc.anyrun ]; - xdg.configFile = lib.mapAttrs' (name: value: lib.nameValuePair "anyrun/${name}" { text = value; }) { - "config.ron" = '' - Config( - ignore_exclusive_zones: false, - layer: Overlay, - hide_plugin_info: false, - close_on_click: true, - max_entries: None, - plugins: [ - "${pkgs.tgc.anyrun}/lib/libniri_focus.so", - "${pkgs.tgc.anyrun}/lib/libapplications.so", - ], - keybinds: [ - Keybind( - key: "Return", - action: Select, - ), - Keybind( - key: "Up", - action: Up, - ), - Keybind( - key: "Down", - action: Down, - ), - Keybind( - key: "Escape", - action: Close, - ), - ], - ) - ''; - "applications.ron" = '' - Config( - desktop_actions: true, - max_entries: 30, - preprocess_exec_script: Some("${pkgs.writers.writeDash "anyrun-run.sh" '' - if [ "$1" = "term" ] - then - shift - echo "app2unit -T -- $*" - echo "app2unit -T -- $*" >> ~/foo - else - shift - echo "app2unit -- $*" - fi - ''}"), - terminal: Some(Terminal( - command: "", - args: "", - )), - ) - ''; - "style.css" = '' - window { - background: transparent; - } - - * { - font-family: "Adwaita Sans", "Symbols Nerd Font"; - outline-color: @accent-color; - color: white; - } - - .main { - padding: 0; - margin: 6px; - background: @background-color; - border-radius: 10px; - border: 2px solid @accent-border-color; - box-shadow: 0 0 5px black; - } - - text { - margin: 8px 10px; - font-size: 15pt; - } - - box.info { - min-width: 160px; - } - - box.info image { - margin: 6px; - } - - list.plugin { - background: transparent; - } - - box.matches { - border-top: 1px solid @border-color; - } - - box.matches > box { - padding: 10px 12px; - border-bottom: 1px solid @border-color; - } - - row.match { - border: 1px solid transparent; - border-radius: 5px; - margin: 4px 0; - padding: 4px; - } - - row.match:selected { - background: @button-hover-color; - border: 1px solid @border-color; - } - - row.match box.match:first-child { - border-left: 4px solid transparent; - margin: -4px; - padding: 4px 6px; - } - - row.match:selected box.match:first-child { - border-left: 4px solid @accent-color; - border-radius: 4px; - margin: -4px; - padding: 4px 6px; - } - - label.match.description { - font-size: 10pt; - } - ''; + config = lib.mkIf config.zaphyra.programs.anyrun-launcher.enable { + home.packages = [ pkgs.tgc.anyrun ]; + + programs.niri.settings.binds = { + "Mod+Space".action.spawn = [ + (lib.getExe pkgs.unstable.app2unit) + "-C" + "--" + (lib.getExe pkgs.tgc.anyrun) + ]; + }; + + xdg.configFile = lib.mapAttrs' (name: value: lib.nameValuePair "anyrun/${name}" { text = value; }) { + "config.ron" = '' + Config( + ignore_exclusive_zones: false, + layer: Overlay, + hide_plugin_info: false, + close_on_click: true, + max_entries: None, + plugins: [ + "${pkgs.tgc.anyrun}/lib/libniri_focus.so", + "${pkgs.tgc.anyrun}/lib/libapplications.so", + ], + keybinds: [ + Keybind( + key: "Return", + action: Select, + ), + Keybind( + key: "Up", + action: Up, + ), + Keybind( + key: "Down", + action: Down, + ), + Keybind( + key: "Escape", + action: Close, + ), + ], + ) + ''; + "applications.ron" = '' + Config( + desktop_actions: true, + max_entries: 30, + preprocess_exec_script: Some("${pkgs.writers.writeDash "anyrun-run.sh" '' + if [ "$1" = "term" ] + then + shift + echo "app2unit -T -- $*" + echo "app2unit -T -- $*" >> ~/foo + else + shift + echo "app2unit -- $*" + fi + ''}"), + terminal: Some(Terminal( + command: "", + args: "", + )), + ) + ''; + "style.css" = '' + window { + background: transparent; + } + + * { + font-family: "Adwaita Sans", "Symbols Nerd Font"; + outline-color: @accent-color; + color: white; + } + + .main { + padding: 0; + margin: 6px; + background: @background-color; + border-radius: 10px; + border: 2px solid @accent-border-color; + box-shadow: 0 0 5px black; + } + + text { + margin: 8px 10px; + font-size: 15pt; + } + + box.info { + min-width: 160px; + } + + box.info image { + margin: 6px; + } + + list.plugin { + background: transparent; + } + + box.matches { + border-top: 1px solid @border-color; + } + + box.matches > box { + padding: 10px 12px; + border-bottom: 1px solid @border-color; + } + + row.match { + border: 1px solid transparent; + border-radius: 5px; + margin: 4px 0; + padding: 4px; + } + + row.match:selected { + background: @button-hover-color; + border: 1px solid @border-color; + } + + row.match box.match:first-child { + border-left: 4px solid transparent; + margin: -4px; + padding: 4px 6px; + } + + row.match:selected box.match:first-child { + border-left: 4px solid @accent-color; + border-radius: 4px; + margin: -4px; + padding: 4px 6px; + } + + label.match.description { + font-size: 10pt; + } + ''; + }; }; }
diff --git a/config/home/zaphyra/programs/apostrophe.nix b/config/home/zaphyra/programs/apostrophe.nix @@ -1,10 +1,20 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.apostrophe ]; + options.zaphyra.programs.apostrophe.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.apostrophe.enable { + home.packages = [ pkgs.apostrophe ]; + }; }
diff --git a/config/home/zaphyra/programs/bat.nix b/config/home/zaphyra/programs/bat.nix @@ -1,15 +1,26 @@ -_: +{ + config, + lib, + ... +}: { - programs.bat = { - enable = true; - config.theme = "ansi"; + options.zaphyra.programs.bat.enable = lib.mkOption { + type = lib.types.bool; + default = true; }; - home.shellAliases = { - cat = "bat -pp"; - less = "bat"; + config = lib.mkIf config.zaphyra.programs.bat.enable { + programs.bat = { + enable = true; + config.theme = "ansi"; + }; + + home.shellAliases = { + cat = "bat -pp"; + less = "bat"; + }; }; }
diff --git a/config/home/zaphyra/programs/bitwarden-cli.nix b/config/home/zaphyra/programs/bitwarden-cli.nix @@ -1,25 +1,34 @@ { + config, + systemConfig, + lib, pkgs, ... }: { + options.zaphyra.programs.bitwarden-cli.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = [ pkgs.bitwarden-cli ]; + config = lib.mkIf config.zaphyra.programs.bitwarden-cli.enable { + home.packages = [ pkgs.bitwarden-cli ]; - programs = { - zsh.initExtra = '' - bw-unlock () { - if [[ -z $BW_SESSION ]] ; then - export BW_SESSION="$(bw unlock --raw)" - fi - } - ''; - fish.functions.bw-unlock = '' - if set -g BW_SESSION - set -gx BW_SESSION "$(bw unlock --raw)" - end - ''; + programs = { + zsh.initExtra = '' + bw-unlock () { + if [[ -z $BW_SESSION ]] ; then + export BW_SESSION="$(bw unlock --raw)" + fi + } + ''; + fish.functions.bw-unlock = '' + if set -g BW_SESSION + set -gx BW_SESSION "$(bw unlock --raw)" + end + ''; + }; }; }
diff --git a/config/home/zaphyra/programs/celluloid.nix b/config/home/zaphyra/programs/celluloid.nix @@ -1,17 +1,27 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.celluloid ]; + options.zaphyra.programs.celluloid.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.celluloid.enable { + home.packages = [ pkgs.celluloid ]; - dconf.settings = { - "io/github/celluloid-player/celluloid" = { - always-append-to-playlist = true; - draggable-video-area-enable = true; - always-autohide-cursor = true; + dconf.settings = { + "io/github/celluloid-player/celluloid" = { + always-append-to-playlist = true; + draggable-video-area-enable = true; + always-autohide-cursor = true; + }; }; };
diff --git a/config/home/zaphyra/programs/chaosctl.nix b/config/home/zaphyra/programs/chaosctl.nix @@ -1,5 +1,6 @@ { config, + systemConfig, pkgs, lib, ... @@ -7,14 +8,21 @@ { - home.packages = [ pkgs.tgc.chaosctl ]; + options.zaphyra.programs.chaosctl.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.chaosctl.enable { + home.packages = [ pkgs.tgc.chaosctl ]; - programs.niri.settings.binds = with config.lib.niri.actions; { - "Mod+Shift+D".action = spawn "${pkgs.writeShellScript "cccda-buzzer" '' - export GNUPGHOME=${config.programs.gpg.homedir} - export SSH_AUTH_SOCK=$(${lib.getExe' pkgs.gnupg "gpgconf"} --list-dirs agent-ssh-socket) - ${lib.getExe' pkgs.libnotify "notify-send"} -e "CCCDA-Door" "$(${lib.getExe pkgs.tgc.chaosctl} door buzzer)" - ''}"; + programs.niri.settings.binds = with config.lib.niri.actions; { + "Mod+Shift+D".action = spawn "${pkgs.writeShellScript "cccda-buzzer" '' + export GNUPGHOME=${config.programs.gpg.homedir} + export SSH_AUTH_SOCK=$(${lib.getExe' pkgs.gnupg "gpgconf"} --list-dirs agent-ssh-socket) + ${lib.getExe' pkgs.libnotify "notify-send"} -e "CCCDA-Door" "$(${lib.getExe pkgs.tgc.chaosctl} door buzzer)" + ''}"; + }; }; }
diff --git a/config/home/zaphyra/programs/chawan.nix b/config/home/zaphyra/programs/chawan.nix @@ -1,17 +1,28 @@ -_: +{ + config, + systemConfig, + lib, + ... +}: { - programs.chawan = { - enable = true; - settings = { - buffer = { - images = true; - scripting = "app"; - autofocus = true; - cookie = "save"; + options.zaphyra.programs.chawan.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.chawan.enable { + programs.chawan = { + enable = true; + settings = { + buffer = { + images = true; + scripting = "app"; + autofocus = true; + cookie = "save"; + }; }; }; }; - }
diff --git a/config/home/zaphyra/programs/cozy.nix b/config/home/zaphyra/programs/cozy.nix @@ -1,10 +1,16 @@ { + config, + lib, pkgs, ... }: { - home.packages = [ pkgs.cozy ]; + options.zaphyra.programs.cozy.enable = lib.mkEnableOption "Enable cozy audiobook player"; + + config = lib.mkIf config.zaphyra.programs.cozy.enable { + home.packages = [ pkgs.cozy ]; + }; }
diff --git a/config/home/zaphyra/programs/default.nix b/config/home/zaphyra/programs/default.nix @@ -0,0 +1,5 @@ +_: { + imports = builtins.map (v: ./${v}) ( + builtins.filter (v: v != "default.nix") (builtins.attrNames (builtins.readDir ./.)) + ); +}
diff --git a/config/home/zaphyra/programs/deploymentUtilities.nix b/config/home/zaphyra/programs/deploymentUtilities.nix @@ -1,18 +1,28 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = with pkgs; [ - age - ssh-to-age + options.zaphyra.programs.deploymentUtilities.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - sops + config = lib.mkIf config.zaphyra.programs.deploymentUtilities.enable { + home.packages = with pkgs; [ + age + ssh-to-age - deploy-rs - nh - ]; + sops + + deploy-rs + nh + ]; + }; }
diff --git a/config/home/zaphyra/programs/dino.nix b/config/home/zaphyra/programs/dino.nix @@ -1,15 +1,24 @@ { config, + systemConfig, + lib, pkgs, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "dino/.local/share/dino" - ]; + options.zaphyra.programs.dino.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = [ pkgs.dino ]; + config = lib.mkIf config.zaphyra.programs.dino.enable { + home.packages = [ pkgs.dino ]; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "dino/.local/share/dino" + ]; + }; }
diff --git a/config/home/zaphyra/programs/errands.nix b/config/home/zaphyra/programs/errands.nix @@ -1,15 +1,24 @@ { config, + systemConfig, + lib, pkgs, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "errands/.local/share/errands" - ]; + options.zaphyra.programs.errands.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = [ pkgs.errands ]; + config = lib.mkIf config.zaphyra.programs.errands.enable { + home.packages = [ pkgs.errands ]; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "errands/.local/share/errands" + ]; + }; }
diff --git a/config/home/zaphyra/programs/eza.nix b/config/home/zaphyra/programs/eza.nix @@ -1,19 +1,30 @@ -_: +{ + config, + lib, + ... +}: { - programs.eza = { - enable = true; - git = true; - icons = "auto"; + options.zaphyra.programs.eza.enable = lib.mkOption { + type = lib.types.bool; + default = true; }; - home.shellAliases = { - ls = "eza"; - ll = "eza -l"; - la = "eza -a"; - lla = "eza -la"; - tree = "eza --tree -a"; + config = lib.mkIf config.zaphyra.programs.eza.enable { + programs.eza = { + enable = true; + git = true; + icons = "auto"; + }; + + home.shellAliases = { + ls = "eza"; + ll = "eza -l"; + la = "eza -a"; + lla = "eza -la"; + tree = "eza --tree -a"; + }; }; }
diff --git a/config/home/zaphyra/programs/firefox.nix b/config/home/zaphyra/programs/firefox.nix @@ -1,6 +1,7 @@ { inputs, config, + systemConfig, pkgs, lib, ... @@ -8,314 +9,337 @@ { - home = { - persistence."/nix/persist/home/${config.home.username}".directories = [ - "firefox/.mozilla/firefox/" - "firefox/.cache/mozilla/firefox" - ]; + options.zaphyra.programs.firefox.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - sessionVariables = { - BROWSER = "firefox"; - }; + config = lib.mkIf config.zaphyra.programs.firefox.enable { + home = { + persistence."/nix/persist/home/${config.home.username}".directories = [ + "firefox/.mozilla/firefox/" + "firefox/.cache/mozilla/firefox" + ]; - file."firefox-gnome-theme" = { - source = inputs.firefoxGnomeTheme; - target = ".mozilla/firefox/${config.home.username}/chrome/firefox-gnome-theme"; - }; - }; + sessionVariables = { + BROWSER = "firefox"; + }; - programs.firefox = { - enable = true; - package = pkgs.firefox; - nativeMessagingHosts = [ pkgs.ff2mpv-rust ]; - - profiles."${config.home.username}" = { - id = 0; - isDefault = true; - - settings = { - # required for firefox-gnome-theme - "browser.toolbars.bookmarks.visibility" = "never"; - "browser.tabs.drawInTitlebar" = true; - "browser.theme.dark-private-windows" = false; - "browser.uidensity" = 0; - "svg.context-properties.content.enabled" = true; - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + file."firefox-gnome-theme" = { + source = inputs.firefoxGnomeTheme; + target = ".mozilla/firefox/${config.home.username}/chrome/firefox-gnome-theme"; }; + }; - userChrome = '' - @import "firefox-gnome-theme/userChrome.css"; - ''; + programs.firefox = { + enable = true; + package = pkgs.firefox; + nativeMessagingHosts = with pkgs; [ + ff2mpv-rust + fx-cast-bridge + ]; + + profiles."${config.home.username}" = { + id = 0; + isDefault = true; + + settings = { + # required for firefox-gnome-theme + "browser.toolbars.bookmarks.visibility" = "never"; + "browser.tabs.drawInTitlebar" = true; + "browser.theme.dark-private-windows" = false; + "browser.uidensity" = 0; + "svg.context-properties.content.enabled" = true; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + }; - userContent = '' - @import "firefox-gnome-theme/userContent.css"; - ''; + userChrome = '' + @import "firefox-gnome-theme/userChrome.css"; + ''; - search.force = true; # Required to prevent search engine symlink being overwritten. See https://github.com/nix-community/home-manager/issues/3698 - search.engines = { - "Noogle" = { - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@noogle" ]; - urls = [ { template = "https://noogle.dev/q?term={searchTerms}"; } ]; - }; + userContent = '' + @import "firefox-gnome-theme/userContent.css"; + ''; - "NixOS Options" = { - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@nixos" ]; - urls = [ { template = "https://search.nixos.org/options?query={searchTerms}"; } ]; - }; + search.force = true; # Required to prevent search engine symlink being overwritten. See https://github.com/nix-community/home-manager/issues/3698 + search.engines = { + "Noogle" = { + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@noogle" ]; + urls = [ { template = "https://noogle.dev/q?term={searchTerms}"; } ]; + }; - "Nix Packages" = { - icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = [ "@nixpkgs" ]; - urls = [ { template = "https://search.nixos.org/packages?query={searchTerms}"; } ]; + "NixOS Options" = { + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@nixos" ]; + urls = [ { template = "https://search.nixos.org/options?query={searchTerms}"; } ]; + }; + + "Nix Packages" = { + icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "@nixpkgs" ]; + urls = [ { template = "https://search.nixos.org/packages?query={searchTerms}"; } ]; + }; }; }; - }; - policies = { - DisableSetDesktopBackground = true; + policies = { + DisableSetDesktopBackground = true; - # disable tracking bullshit - DisableTelemetry = true; - DisablePocket = true; - DisableFirefoxStudies = true; - DisableFeedbackCommands = true; + # disable tracking bullshit + DisableTelemetry = true; + DisablePocket = true; + DisableFirefoxStudies = true; + DisableFeedbackCommands = true; - # disable password manager - PasswordManagerEnabled = false; - OfferToSaveLogins = false; - PrimaryPassword = false; - AutofillCreditCardEnabled = false; + # disable password manager + PasswordManagerEnabled = false; + OfferToSaveLogins = false; + PrimaryPassword = false; + AutofillCreditCardEnabled = false; - # disable bookmark-toolbar - NoDefaultBookmarks = true; - DisplayBookmarksToolbar = "never"; - DisplayMenuBar = "default-off"; + # disable bookmark-toolbar + NoDefaultBookmarks = true; + DisplayBookmarksToolbar = "never"; + DisplayMenuBar = "default-off"; - Homepage.StartPage = "previous-session"; - Homepage.Locked = true; + Homepage.StartPage = "previous-session"; + Homepage.Locked = true; - # disable DoH - DNSOverHTTPS.Enabled = false; - DNSOverHTTPS.Locked = true; + # disable DoH + DNSOverHTTPS.Enabled = false; + DNSOverHTTPS.Locked = true; - # enable tracking protection - EnableTrackingProtection = { + # enable tracking protection + EnableTrackingProtection = { - Cryptomining = true; - Fingerprinting = true; - Value = true; - Locked = true; - }; + Cryptomining = true; + Fingerprinting = true; + Value = true; + Locked = true; + }; - UserMessaging = { - ExtensionRecommendations = false; - FeatureRecommendations = false; - UrlbarInterventions = false; - SkipOnboarding = true; - MoreFromMozilla = false; - FirefoxLabs = false; - Locked = true; - }; + UserMessaging = { + ExtensionRecommendations = false; + FeatureRecommendations = false; + UrlbarInterventions = false; + SkipOnboarding = true; + MoreFromMozilla = false; + FirefoxLabs = false; + Locked = true; + }; - Handlers.schemes = - let - handler = { - action = "useHelperApp"; - ask = true; - handlers = [ - { - name = "VDV PKPass DB Navigator Hook"; - path = pkgs.writeShellScript "db-hook" '' - #!/usr/bin/env bash - - if [[ "$1" == "dbnav:"* ]]; then - url=$(echo -n $1 | base64) - xdg-open "https://vdv-pkpass.magicalcodewit.ch/account/db_login/callback?url=$url" - elif [[ "$1" == "bahnbonus:"* ]]; then - url=$(echo -n $1 | base64) - xdg-open "https://vdv-pkpass.magicalcodewit.ch/account/bahnbonus_login/callback?url=$url" - else - xdg-open "$1" - fi - ''; - } - ]; + Handlers.schemes = + let + handler = { + action = "useHelperApp"; + ask = true; + handlers = [ + { + name = "VDV PKPass DB Navigator Hook"; + path = pkgs.writeShellScript "db-hook" '' + #!/usr/bin/env bash + + if [[ "$1" == "dbnav:"* ]]; then + url=$(echo -n $1 | base64) + xdg-open "https://vdv-pkpass.magicalcodewit.ch/account/db_login/callback?url=$url" + elif [[ "$1" == "bahnbonus:"* ]]; then + url=$(echo -n $1 | base64) + xdg-open "https://vdv-pkpass.magicalcodewit.ch/account/bahnbonus_login/callback?url=$url" + else + xdg-open "$1" + fi + ''; + } + ]; + }; + in + { + dbnav = handler; + bahnbonus = handler; }; - in - { - dbnav = handler; - bahnbonus = handler; - }; - Preferences = { - "browser.uiCustomization.state".Status = "default"; - "browser.uiCustomization.state".Value = builtins.toJSON { - currentVersion = 21; - newElementCount = 7; - seen = [ ]; - dirtyAreaCache = [ ]; - placements = { - widget-overflow-fixed-list = [ ]; - toolbar-menubar = [ "menubar-items" ]; - vertical-tabs = [ ]; - PersonalToolbar = [ ]; - unified-extensions-area = [ ]; - nav-bar = [ - "back-button" - "forward-button" - "vertical-spacer" - "stop-reload-button" - "urlbar-container" - "downloads-button" - "_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" - "ublock0_raymondhill_net-browser-action" - "unified-extensions-button" - ]; - TabsToolbar = [ - "tabbrowser-tabs" - "new-tab-button" - ]; + Preferences = { + "browser.uiCustomization.state".Status = "default"; + "browser.uiCustomization.state".Value = builtins.toJSON { + currentVersion = 21; + newElementCount = 7; + seen = [ ]; + dirtyAreaCache = [ ]; + placements = { + widget-overflow-fixed-list = [ ]; + toolbar-menubar = [ "menubar-items" ]; + vertical-tabs = [ ]; + PersonalToolbar = [ ]; + unified-extensions-area = [ ]; + nav-bar = [ + "back-button" + "forward-button" + "vertical-spacer" + "stop-reload-button" + "urlbar-container" + "downloads-button" + "_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" + "ublock0_raymondhill_net-browser-action" + "unified-extensions-button" + ]; + TabsToolbar = [ + "tabbrowser-tabs" + "new-tab-button" + ]; + }; }; - }; - } - // (lib.mapAttrs - (_name: value: { - Status = "locked"; - Value = value; - }) - { - # disable some password-manager/autofill features - "signon.generation.enabled" = false; - "signon.autofillForms" = false; - "signon.firefoxRelay.feature" = "disabled"; - "signon.management.page.breach-alerts.enabled" = false; - - # ask websites to not share or sell data - "privacy.globalprivacycontrol.enabled" = true; - - # disable warning on `abou:config` - "browser.aboutConfig.showWarning" = false; - - # disable telemetry stuff - "browser.ping-centre.telemetry" = false; - "browser.topsites.contile.enabled" = false; - "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; - - # just open previous session - "browser.startup.page" = 3; - - # disable trending search suggestions - "browser.urlbar.suggest.trending" = false; - - # disable 'fancy' newtab page bullshit with tons of tracking and ads - "browser.startup.homepage" = "chrome://browser/content/blanktab.html"; - "browser.newtabpage.enabled" = false; - "browser.newtabpage.activity-stream.telemetry" = false; - "browser.newtabpage.activity-stream.showSearch" = false; - "browser.newtabpage.activity-stream.showSponsored" = false; - "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; - "browser.newtabpage.activity-stream.feeds.telemetry" = false; - "browser.newtabpage.activity-stream.feeds.topsites" = false; - "browser.newtabpage.activity-stream.feeds.snippets" = false; - "browser.newtabpage.activity-stream.feeds.system.topsites" = false; - "browser.newtabpage.activity-stream.feeds.section.highlights" = false; - "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; - "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; - "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; - "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; } - ); - - ExtensionSettings = - lib.pipe - [ - [ - "navbar" - "{446900e4-71c2-419f-a6a7-df9c091e268b}" - ] # Bitwarden Password Manager - [ - "navbar" - "uBlock0@raymondhill.net" - ] # uBlock Origin - [ - "menupanel" - "@ublacklist" - ] # uBlacklist - [ - "menupanel" - "@contain-facebook" - ] # Facebook Container - [ - "menupanel" - "@contain-google" - ] # Google Container - [ - "menupanel" - "containerise@kinte.sh" - ] # Containerise - [ - "menupanel" - "{12cf650b-1822-40aa-bff0-996df6948878}" - ] # cookies.txt + // (lib.mapAttrs + (_name: value: { + Status = "locked"; + Value = value; + }) + { + # disable some password-manager/autofill features + "signon.generation.enabled" = false; + "signon.autofillForms" = false; + "signon.firefoxRelay.feature" = "disabled"; + "signon.management.page.breach-alerts.enabled" = false; + + # ask websites to not share or sell data + "privacy.globalprivacycontrol.enabled" = true; + + # disable warning on `abou:config` + "browser.aboutConfig.showWarning" = false; + + # disable telemetry stuff + "browser.ping-centre.telemetry" = false; + "browser.topsites.contile.enabled" = false; + "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; + + # just open previous session + "browser.startup.page" = 3; + + # disable trending search suggestions + "browser.urlbar.suggest.trending" = false; + + # disable 'fancy' newtab page bullshit with tons of tracking and ads + "browser.startup.homepage" = "chrome://browser/content/blanktab.html"; + "browser.newtabpage.enabled" = false; + "browser.newtabpage.activity-stream.telemetry" = false; + "browser.newtabpage.activity-stream.showSearch" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + "browser.newtabpage.activity-stream.feeds.telemetry" = false; + "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.feeds.snippets" = false; + "browser.newtabpage.activity-stream.feeds.system.topsites" = false; + "browser.newtabpage.activity-stream.feeds.section.highlights" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; + } + ); + + ExtensionSettings = + lib.pipe [ - "menupanel" - "@testpilot-containers" - ] # Firefox Multi-Account Containers + # Bitwarden Password Manager + [ + "navbar" + "{446900e4-71c2-419f-a6a7-df9c091e268b}" + ] + # uBlock Origin + [ + "navbar" + "uBlock0@raymondhill.net" + ] + # uBlacklist + [ + "menupanel" + "@ublacklist" + ] + # Facebook Container + [ + "menupanel" + "@contain-facebook" + ] + # Google Container + [ + "menupanel" + "@contain-google" + ] + # Containerise + [ + "menupanel" + "containerise@kinte.sh" + ] + # cookies.txt + [ + "menupanel" + "{12cf650b-1822-40aa-bff0-996df6948878}" + ] + # Firefox Multi-Account Containers + [ + "menupanel" + "@testpilot-containers" + ] + # IndicateTLS + [ + "menupanel" + "{252ee273-8c8d-4609-b54d-62ae345be0a1}" + ] + # IPvFoo + [ + "menupanel" + "ipvfoo@pmarks.net" + ] + # Modern for Wikipedia + [ + "menupanel" + "{e9090647-32ff-48e4-9c3c-1361e8fd270e}" + ] + # SponsorBlock for YouTube - Skip Sponsorships + [ + "menupanel" + "sponsorBlocker@ajay.app" + ] + # German Dictionary + [ + "menupanel" + "de-DE@dictionaries.addons.mozilla.org" + ] + ] [ - "menupanel" - "{252ee273-8c8d-4609-b54d-62ae345be0a1}" - ] # IndicateTLS - [ - "menupanel" - "ipvfoo@pmarks.net" - ] # IPvFoo - [ - "menupanel" - "{e9090647-32ff-48e4-9c3c-1361e8fd270e}" - ] # Modern for Wikipedia - [ - "menupanel" - "sponsorBlocker@ajay.app" - ] # SponsorBlock for YouTube - Skip Sponsorships - [ - "menupanel" - "de-DE@dictionaries.addons.mozilla.org" - ] # German Dictionary - ] - [ - (lib.map (config: { - name = lib.elemAt config 1; - value = { - installation_mode = "normal_installed"; - default_area = lib.elemAt config 0; - install_url = "https://addons.mozilla.org/firefox/downloads/latest/${lib.elemAt config 1}/latest.xpi"; - }; - })) - lib.listToAttrs - ]; + (lib.map (config: { + name = lib.elemAt config 1; + value = { + installation_mode = "normal_installed"; + default_area = lib.elemAt config 0; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/${lib.elemAt config 1}/latest.xpi"; + }; + })) + lib.listToAttrs + ]; + }; }; - }; - xdg = { - enable = true; - mime.enable = true; + xdg = { + enable = true; + mime.enable = true; - #force hm to override existing mimeapps.list file - configFile."mimeapps.list".force = true; + #force hm to override existing mimeapps.list file + configFile."mimeapps.list".force = true; - mimeApps = { - enable = true; - defaultApplications = { - "x-scheme-handler/http" = "firefox.desktop"; - "x-scheme-handler/https" = "firefox.desktop"; - "x-scheme-handler/chrome" = "firefox.desktop"; + mimeApps = { + enable = true; + defaultApplications = { + "x-scheme-handler/http" = "firefox.desktop"; + "x-scheme-handler/https" = "firefox.desktop"; + "x-scheme-handler/chrome" = "firefox.desktop"; - "image/svg+xml" = "firefox.desktop"; + "image/svg+xml" = "firefox.desktop"; - "text/html" = "firefox.desktop"; - "text/xml" = "firefox.desktop"; + "text/html" = "firefox.desktop"; + "text/xml" = "firefox.desktop"; + }; }; }; };
diff --git a/config/home/zaphyra/programs/fish.nix b/config/home/zaphyra/programs/fish.nix @@ -1,19 +1,25 @@ { config, + lib, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "fish/.local/share/fish" - ]; - - programs.fish = { - enable = true; - generateCompletions = true; + options.zaphyra.programs.fish.enable = lib.mkOption { + type = lib.types.bool; + default = true; }; - # programs.sherlock.settings.ignore = "fish"; + config = lib.mkIf config.zaphyra.programs.fish.enable { + programs.fish = { + enable = true; + generateCompletions = true; + }; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "fish/.local/share/fish" + ]; + }; }
diff --git a/config/home/zaphyra/programs/fractal.nix b/config/home/zaphyra/programs/fractal.nix @@ -1,16 +1,26 @@ { config, + systemConfig, + lib, pkgs, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "fractal/.local/share/fractal/" - "fractal/.cache/fractal/" - ]; + options.zaphyra.programs.fractal.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = [ pkgs.fractal ]; + config = lib.mkIf config.zaphyra.programs.fractal.enable { + home.packages = [ pkgs.fractal ]; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "fractal/.local/share/fractal/" + "fractal/.cache/fractal/" + ]; + + }; }
diff --git a/config/home/zaphyra/programs/fuzzel.nix b/config/home/zaphyra/programs/fuzzel.nix @@ -1,4 +1,9 @@ -_: +{ + config, + systemConfig, + lib, + ... +}: let colors = import ../colors.nix; @@ -6,57 +11,64 @@ let in { - programs.fuzzel = { - enable = true; - settings = { - main = { - launch-prefix = "app2unit --fuzzel-compat --"; - dpi-aware = false; - horizontal-pad = 15; - vertical-pad = 15; - inner-pad = 5; - }; - border = { - width = 2; - radius = 6; - }; - colors = { - background = "#${ - lib.concatStrings ( - lib.map (elem: lib.toHexString elem) [ - colors.background.r - colors.background.g - colors.background.b - (builtins.floor (100 * colors.background.a)) - ] - ) - }"; # Background color - border = "#${ - lib.concatStrings ( - lib.map (elem: lib.toHexString elem) [ - colors.accentBorder.r - colors.accentBorder.g - colors.accentBorder.b - (builtins.floor (100 * colors.accentBorder.a)) - ] - ) - }"; # The color of the match count stats printed at the right-hand side of the input prompt - selection = "#${ - lib.concatStrings ( - lib.map (elem: lib.toHexString elem) [ - colors.buttonHover.r - colors.buttonHover.g - colors.buttonHover.b - (builtins.floor (100 * colors.buttonHover.a)) - ] - ) - }"; # Background color of the selected entry - text = "#d8daddff"; # Text (foreground) color of unselected entries - prompt = "#d8daddff"; # Text (foreground) color of prompt character(s) - input = "#d8daddff"; # Text (foreground) color of input string - match = "#d8daddff"; # Text (foreground) color of the matched substring - selection-text = "#d8daddff"; # Text (foreground) color of the selected entry - selection-match = "#b7d4edf2"; # Text (foreground) color of the matched substring of the selected entry + options.zaphyra.programs.fuzzel.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.fuzzel.enable { + programs.fuzzel = { + enable = true; + settings = { + main = { + launch-prefix = "app2unit --fuzzel-compat --"; + dpi-aware = false; + horizontal-pad = 15; + vertical-pad = 15; + inner-pad = 5; + }; + border = { + width = 2; + radius = 6; + }; + colors = { + background = "#${ + lib.concatStrings ( + lib.map (elem: lib.toHexString elem) [ + colors.background.r + colors.background.g + colors.background.b + (builtins.floor (100 * colors.background.a)) + ] + ) + }"; # Background color + border = "#${ + lib.concatStrings ( + lib.map (elem: lib.toHexString elem) [ + colors.accentBorder.r + colors.accentBorder.g + colors.accentBorder.b + (builtins.floor (100 * colors.accentBorder.a)) + ] + ) + }"; # The color of the match count stats printed at the right-hand side of the input prompt + selection = "#${ + lib.concatStrings ( + lib.map (elem: lib.toHexString elem) [ + colors.buttonHover.r + colors.buttonHover.g + colors.buttonHover.b + (builtins.floor (100 * colors.buttonHover.a)) + ] + ) + }"; # Background color of the selected entry + text = "#d8daddff"; # Text (foreground) color of unselected entries + prompt = "#d8daddff"; # Text (foreground) color of prompt character(s) + input = "#d8daddff"; # Text (foreground) color of input string + match = "#d8daddff"; # Text (foreground) color of the matched substring + selection-text = "#d8daddff"; # Text (foreground) color of the selected entry + selection-match = "#b7d4edf2"; # Text (foreground) color of the matched substring of the selected entry + }; }; }; };
diff --git a/config/home/zaphyra/programs/gajim.nix b/config/home/zaphyra/programs/gajim.nix @@ -1,16 +1,25 @@ { config, + systemConfig, + lib, pkgs, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "gajim/.local/share/gajim" - "gajim/.config/gajim" - ]; + options.zaphyra.programs.gajim.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = [ pkgs.gajim ]; + config = lib.mkIf config.zaphyra.programs.gajim.enable { + home.packages = [ pkgs.gajim ]; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "gajim/.local/share/gajim" + "gajim/.config/gajim" + ]; + }; }
diff --git a/config/home/zaphyra/programs/ghostty.nix b/config/home/zaphyra/programs/ghostty.nix @@ -1,19 +1,35 @@ -_: +{ + config, + systemConfig, + lib, + ... +}: { - home.sessionVariables.TERMINAL = "ghostty"; + options.zaphyra.programs.ghostty.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.ghostty.enable { + home.sessionVariables.TERMINAL = "ghostty"; + # xdg.terminal-exec.settings.default = [ "com.mitchellh.ghostty.desktop" ]; + + programs.ghostty = { + enable = true; + enableFishIntegration = true; + enableZshIntegration = true; + enableBashIntegration = true; + installBatSyntax = true; - programs.ghostty = { - enable = true; - enableFishIntegration = true; - enableZshIntegration = true; - enableBashIntegration = true; - installBatSyntax = true; + settings = { + background-opacity = 0.8; + background-blur = true; - settings = { - background-opacity = 0.8; - background-blur = true; + clipboard-trim-trailing-spaces = true; + clipboard-paste-protection = false; + }; }; };
diff --git a/config/home/zaphyra/programs/git.nix b/config/home/zaphyra/programs/git.nix @@ -1,49 +1,65 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.gitui ]; - home.shellAliases = { - reinitgit = "rm -rf .git && git init && git add -A && git commit -m 'init'"; + options.zaphyra.programs.git.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; }; - programs.lazygit = { - enable = true; - settings = { - disableStartupPopups = true; - gui.nerdFontsVersion = "3"; - git.overrideGpg = true; - os.editPreset = "micro"; + config = lib.mkIf config.zaphyra.programs.git.enable { + home.packages = [ pkgs.gitui ]; + home.shellAliases = { + reinitgit = "rm -rf .git && git init && git add -A && git commit -m 'init'"; }; - }; - programs.git = { - enable = true; + programs.lazygit = { + enable = true; + settings = { + disableStartupPopups = true; + gui.nerdFontsVersion = "3"; + git.overrideGpg = true; + os.editPreset = "micro"; + }; + }; - package = pkgs.gitFull; + programs.difftastic = { + enable = true; + git.enable = true; + git.diffToolMode = true; + }; - userName = "Katja Ramona Sophie Kwast (zaphyra)"; - userEmail = "git@zaphyra.eu"; + programs.git = { + enable = true; - difftastic.enable = true; + package = pkgs.gitFull; - ignores = [ - ".DS_Store" - "*.swp" - ]; + ignores = [ + ".DS_Store" + "*.swp" + ]; - aliases = { - log-gpg = "log --show-signature"; - pfusch = "push -f"; - }; + settings = { + user.name = "Katja Ramona Sophie Kwast (zaphyra)"; + user.email = "git@zaphyra.eu"; + + aliases = { + log-gpg = "log --show-signature"; + pfusch = "push -f"; + }; - extraConfig = { - features.manyFiles = true; - pull.rebase = false; - init.defaultBranch = "main"; + extraConfig = { + features.manyFiles = true; + pull.rebase = false; + init.defaultBranch = "main"; + }; + }; }; };
diff --git a/config/home/zaphyra/programs/gnome-calendar.nix b/config/home/zaphyra/programs/gnome-calendar.nix @@ -1,48 +1,23 @@ { config, + systemConfig, + lib, pkgs, ... }: -let - gnome-online-accounts = pkgs.gnome-online-accounts.overrideAttrs (prevAttrs: { - mesonFlags = prevAttrs.mesonFlags ++ [ - "-Dexchange=false" - "-Dgoogle=false" - "-Dkerberos=false" - "-Downcloud=false" - "-Dwindows_live=false" - "-Dms_graph=false" - ]; - }); - -in { + options.zaphyra.programs.gnome-calendar.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "evolution-data-server/.local/share/evolution" - "gnome-online-accounts/.config/goa-1.0" - ]; - - home.packages = with pkgs; [ - gnome-online-accounts-gtk - (evolution-data-server-gtk4.override { - withGtk4 = true; - enableOAuth2 = false; - }) - gnome-calendar - ]; - - dbus.packages = [ gnome-online-accounts ]; - - systemd.user.services.gnome-online-accounts = { - Unit.Description = "Gnome Online Accounts"; + config = lib.mkIf config.zaphyra.programs.gnome-calendar.enable { + zaphyra.programs.gnome-online-accounts.enable = true; - Service = { - Type = "dbus"; - ExecStart = "${gnome-online-accounts}/libexec/goa-daemon"; - BusName = "org.gnome.OnlineAccounts"; - }; + home.packages = with pkgs; [ + gnome-calendar + ]; }; }
diff --git a/config/home/zaphyra/programs/gnome-obfuscate.nix b/config/home/zaphyra/programs/gnome-obfuscate.nix @@ -1,10 +1,20 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.gnome-obfuscate ]; + options.zaphyra.programs.gnome-obfuscate.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.gnome-obfuscate.enable { + home.packages = [ pkgs.gnome-obfuscate ]; + }; }
diff --git a/config/home/zaphyra/programs/gnome-online-accounts.nix b/config/home/zaphyra/programs/gnome-online-accounts.nix @@ -0,0 +1,53 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + options.zaphyra.programs.gnome-online-accounts.enable = + lib.mkEnableOption "Enable gnome-online-accounts and evolution-data-server"; + + config = lib.mkIf config.zaphyra.programs.gnome-online-accounts.enable ( + let + gnome-online-accounts = pkgs.gnome-online-accounts.overrideAttrs (prevAttrs: { + mesonFlags = prevAttrs.mesonFlags ++ [ + "-Dexchange=false" + "-Dgoogle=false" + "-Dkerberos=false" + "-Downcloud=false" + "-Dms_graph=false" + ]; + }); + + in + { + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "evolution-data-server/.local/share/evolution" + "gnome-online-accounts/.config/goa-1.0" + ]; + + home.packages = with pkgs; [ + gnome-online-accounts-gtk + (evolution-data-server-gtk4.override { + withGtk4 = true; + enableOAuth2 = false; + }) + ]; + + dbus.packages = [ gnome-online-accounts ]; + + systemd.user.services.gnome-online-accounts = { + Unit.Description = "Gnome Online Accounts"; + + Service = { + Type = "dbus"; + ExecStart = "${gnome-online-accounts}/libexec/goa-daemon"; + BusName = "org.gnome.OnlineAccounts"; + }; + }; + } + ); + +}
diff --git a/config/home/zaphyra/programs/gnome-text-editor.nix b/config/home/zaphyra/programs/gnome-text-editor.nix @@ -1,21 +1,31 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.gnome-text-editor ]; + options.zaphyra.programs.gnome-text-editor.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.gnome-text-editor.enable { + home.packages = [ pkgs.gnome-text-editor ]; - dconf.settings = { - "org/gnome/TextEditor" = { - highlight-current-line = true; - wrap-text = true; - show-line-numbers = true; - show-map = true; - show-right-margin = true; - indent-style = "space"; - indent-width = 4; + dconf.settings = { + "org/gnome/TextEditor" = { + highlight-current-line = true; + wrap-text = true; + show-line-numbers = true; + show-map = true; + show-right-margin = true; + indent-style = "space"; + indent-width = 4; + }; }; };
diff --git a/config/home/zaphyra/programs/gpg.nix b/config/home/zaphyra/programs/gpg.nix @@ -1,51 +1,59 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home = { - packages = [ pkgs.pcsctools ]; - - shellAliases = { - gpg-card-relearn = "gpg-connect-agent 'scd serialno' 'learn --force' /bye"; - }; + options.zaphyra.programs.gpg.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; }; - programs = { - gpg = { - enable = true; - mutableTrust = true; - mutableKeys = true; - settings.keyserver = "hkps://keyserver.ubuntu.com:443"; - scdaemonSettings.disable-ccid = true; - }; + config = lib.mkIf config.zaphyra.programs.gpg.enable { + home = { + packages = [ pkgs.pcsc-tools ]; - git.signing = { - format = "openpgp"; - signByDefault = true; - key = "95F0FE7CD7E6A022"; + shellAliases = { + gpg-card-relearn = "gpg-connect-agent 'scd serialno' 'learn --force' /bye"; + }; }; - # sherlock.settings.ignore = "Gscriptor"; - }; + programs = { + gpg = { + enable = true; + mutableTrust = true; + mutableKeys = true; + settings.keyserver = "hkps://keyserver.ubuntu.com:443"; + scdaemonSettings.disable-ccid = true; + }; + + git.signing = { + format = "openpgp"; + signByDefault = true; + key = "95F0FE7CD7E6A022"; + }; + }; - services = { - gpg-agent = { - enable = true; - enableSshSupport = true; - enableExtraSocket = true; + services = { + gpg-agent = { + enable = true; + enableSshSupport = true; + enableExtraSocket = true; - pinentry.package = pkgs.pinentry-gnome3; + pinentry.package = pkgs.pinentry-gnome3; - defaultCacheTtl = 600; - defaultCacheTtlSsh = 600; + defaultCacheTtl = 600; + defaultCacheTtlSsh = 600; - sshKeys = [ - # katja@zaphyra.eu - "595A90924C65444EF00F0890BA85DE2A57DD79B2" - ]; + sshKeys = [ + # katja@zaphyra.eu + "595A90924C65444EF00F0890BA85DE2A57DD79B2" + ]; + }; }; };
diff --git a/config/home/zaphyra/programs/gtklock.nix b/config/home/zaphyra/programs/gtklock.nix @@ -1,20 +1,30 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - tgc.programs.gtklock = { - enable = false; - systemd.enable = true; - settings.main = { - idle-hide = true; - idle-timeout = 10; + options.zaphyra.programs.gtklock.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.services.gtklock.enable; + }; + + config = lib.mkIf config.zaphyra.programs.gtklock.enable { + tgc.programs.gtklock = { + enable = false; + systemd.enable = true; + settings.main = { + idle-hide = true; + idle-timeout = 10; + }; + modules = [ + pkgs.gtklock-playerctl-module + ]; }; - modules = [ - pkgs.gtklock-playerctl-module - ]; }; }
diff --git a/config/home/zaphyra/programs/helix.nix b/config/home/zaphyra/programs/helix.nix @@ -1,43 +1,56 @@ { + config, + systemConfig, lib, pkgs, ... }: { + options.zaphyra.programs.helix = { + enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home = { - # sessionVariables.EDITOR = lib.mkForce "hx"; + default = lib.mkOption { + type = lib.types.bool; + default = false; + }; }; - programs.helix = { - enable = true; - settings = { - editor.cursor-shape.insert = "bar"; - editor.bufferline = "always"; - keys.insert."C-t" = "indent"; - keys.insert."C-d" = "unindent"; - theme = "base16_default"; - }; - languages = { - language-server.scls.command = lib.getExe pkgs.unstable.simple-completion-language-server; - language = [ - { - name = "stub"; - scope = "text.stub"; - file-types = [ ]; - shebangs = [ ]; - roots = [ ]; - auto-format = false; - language-servers = [ "scls" ]; - } + config = lib.mkIf config.zaphyra.programs.helix.enable { + programs.helix = { + enable = true; + settings = { + editor.cursor-shape.insert = "bar"; + editor.bufferline = "always"; + keys.insert."C-t" = "indent"; + keys.insert."C-d" = "unindent"; + theme = "base16_default"; + }; + languages = { + language-server.scls.command = lib.getExe pkgs.unstable.simple-completion-language-server; + language = [ + { + name = "stub"; + scope = "text.stub"; + file-types = [ ]; + shebangs = [ ]; + roots = [ ]; + auto-format = false; + language-servers = [ "scls" ]; + } + ]; + }; + extraPackages = [ + pkgs.markdown-oxide ]; }; - extraPackages = [ - pkgs.markdown-oxide - ]; - }; - # programs.sherlock.settings.ignore = "Helix"; + home = lib.mkIf config.zaphyra.programs.helix.default { + sessionVariables.EDITOR = lib.mkForce "hx"; + }; + }; }
diff --git a/config/home/zaphyra/programs/htop.nix b/config/home/zaphyra/programs/htop.nix @@ -1,25 +1,32 @@ { + config, + lib, pkgs, ... }: { - programs.htop = { - enable = true; + options.zaphyra.programs.htop.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; - package = pkgs.htop.override { - sensorsSupport = true; - }; + config = lib.mkIf config.zaphyra.programs.htop.enable { + programs.htop = { + enable = true; - settings = { - hide_userland_threads = 1; - tree_view = 1; - show_program_path = 0; - show_cpu_frequency = 1; + package = pkgs.htop.override { + sensorsSupport = true; + }; + + settings = { + hide_userland_threads = 1; + tree_view = 1; + show_program_path = 0; + show_cpu_frequency = 1; + }; }; }; - # programs.sherlock.settings.ignore = "Htop"; - }
diff --git a/config/home/zaphyra/programs/imv.nix b/config/home/zaphyra/programs/imv.nix @@ -1,10 +1,16 @@ { + config, + lib, pkgs, ... }: { - home.packages = [ pkgs.imv ]; + options.zaphyra.programs.imv.enable = lib.mkEnableOption "Enable imv"; + + config = lib.mkIf config.zaphyra.programs.imv.enable { + home.packages = [ pkgs.imv ]; + }; }
diff --git a/config/home/zaphyra/programs/languages/golang.nix b/config/home/zaphyra/programs/languages/golang.nix @@ -1,17 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - - home = { - packages = [ pkgs.go ]; - sessionVariables.GOPATH = "${config.xdg.dataHome}/go"; - - }; - programs.micro.lsp-servers.go.command = lib.getExe pkgs.gopls; - -}
diff --git a/config/home/zaphyra/programs/languages/javascript.nix b/config/home/zaphyra/programs/languages/javascript.nix @@ -1,19 +0,0 @@ -{ - lib, - pkgs, - ... -}: - -{ - - home.packages = with pkgs; [ - nodejs - pnpm - ]; - - programs.micro.lsp-servers.js.command = lib.getExe pkgs.typescript-language-server; - programs.helix.extraPackages = [ - pkgs.typescript-language-server - ]; - -}
diff --git a/config/home/zaphyra/programs/languages/nimlang.nix b/config/home/zaphyra/programs/languages/nimlang.nix @@ -1,20 +0,0 @@ -{ - lib, - pkgs, - ... -}: - -{ - - home.packages = with pkgs; [ - nim - nimble - ]; - - programs.micro.lsp-servers.nim.command = lib.getExe pkgs.nimlangserver; - - programs.helix.extraPackages = [ - pkgs.nimlangserver - ]; - -}
diff --git a/config/home/zaphyra/programs/languages/nix.nix b/config/home/zaphyra/programs/languages/nix.nix @@ -1,25 +0,0 @@ -{ - lib, - pkgs, - ... -}: - -{ - - home.packages = [ pkgs.nixfmt-rfc-style ]; - - programs.helix.extraPackages = [ - pkgs.nixd - pkgs.nil - ]; - - programs.micro.lsp-servers.nix = { - command = lib.getExe pkgs.nixd; - options = { - config = builtins.toJSON { - formatting.command = [ (lib.getExe pkgs.nixfmt-rfc-style) ]; - }; - }; - }; - -}
diff --git a/config/home/zaphyra/programs/libreoffice.nix b/config/home/zaphyra/programs/libreoffice.nix @@ -1,12 +1,20 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.libreoffice-fresh ]; + options.zaphyra.programs.libreoffice.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - # programs.sherlock.settings.ignore = "LibreOffice *"; + config = lib.mkIf config.zaphyra.programs.libreoffice.enable { + home.packages = [ pkgs.libreoffice-fresh ]; + }; }
diff --git a/config/home/zaphyra/programs/loupe.nix b/config/home/zaphyra/programs/loupe.nix @@ -1,4 +1,6 @@ { + config, + systemConfig, lib, pkgs, ... @@ -6,34 +8,41 @@ { - home.packages = [ pkgs.loupe ]; + options.zaphyra.programs.loupe.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.loupe.enable { + home.packages = [ pkgs.loupe ]; - xdg.mimeApps = { - enable = true; - defaultApplications = lib.genAttrs [ - "image/jpeg" - "image/png" - "image/gif" - "image/webp" - "image/tiff" - "mage/bmp" - "image/svg+xml" - "image/svg+xml-compressed" - "image/avif" - "image/heic" - ] (_name: [ "org.gnome.Loupe.desktop" ]); - associations.added = lib.genAttrs [ - "image/jpeg" - "image/png" - "image/gif" - "image/webp" - "image/tiff" - "mage/bmp" - "image/svg+xml" - "image/svg+xml-compressed" - "image/avif" - "image/heic" - ] (_name: [ "org.gnome.Loupe.desktop" ]); + xdg.mimeApps = { + enable = true; + defaultApplications = lib.genAttrs [ + "image/jpeg" + "image/png" + "image/gif" + "image/webp" + "image/tiff" + "mage/bmp" + "image/svg+xml" + "image/svg+xml-compressed" + "image/avif" + "image/heic" + ] (_name: [ "org.gnome.Loupe.desktop" ]); + associations.added = lib.genAttrs [ + "image/jpeg" + "image/png" + "image/gif" + "image/webp" + "image/tiff" + "mage/bmp" + "image/svg+xml" + "image/svg+xml-compressed" + "image/avif" + "image/heic" + ] (_name: [ "org.gnome.Loupe.desktop" ]); + }; }; }
diff --git a/config/home/zaphyra/programs/mcfly.nix b/config/home/zaphyra/programs/mcfly.nix @@ -1,19 +1,27 @@ { config, + lib, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "mcfly/.local/share/mcfly" - ]; + options.zaphyra.programs.mcfly.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; + + config = lib.mkIf config.zaphyra.programs.mcfly.enable { + programs.mcfly = { + enable = true; + enableFishIntegration = true; + enableZshIntegration = true; + fuzzySearchFactor = 2; + }; - programs.mcfly = { - enable = true; - enableFishIntegration = true; - enableZshIntegration = true; - fuzzySearchFactor = 2; + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "mcfly/.local/share/mcfly" + ]; }; }
diff --git a/config/home/zaphyra/programs/micro.nix b/config/home/zaphyra/programs/micro.nix @@ -7,25 +7,31 @@ }: { + options = { + zaphyra.programs.micro.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; - options.programs.micro.lsp-servers = lib.mkOption { - default = { }; - type = lib.types.attrsOf ( - lib.types.submodule { - options = { - command = lib.mkOption { - type = lib.types.str; - }; - options = lib.mkOption { - inherit ((pkgs.formats.json { })) type; - default = { }; + programs.micro.lsp-servers = lib.mkOption { + default = { }; + type = lib.types.attrsOf ( + lib.types.submodule { + options = { + command = lib.mkOption { + type = lib.types.str; + }; + options = lib.mkOption { + inherit ((pkgs.formats.json { })) type; + default = { }; + }; }; - }; - } - ); + } + ); + }; }; - config = { + config = lib.mkIf config.zaphyra.programs.micro.enable { programs = { micro = { enable = true;
diff --git a/config/home/zaphyra/programs/mpv.nix b/config/home/zaphyra/programs/mpv.nix @@ -1,13 +1,20 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - programs = { - mpv.enable = true; - mpv.scripts = [ pkgs.mpvScripts.mpris ]; + options.zaphyra.programs.mpv.enable = lib.mkEnableOption "mpv"; + + config = lib.mkIf config.zaphyra.programs.mpv.enable { + programs = { + mpv.enable = true; + mpv.scripts = [ pkgs.mpvScripts.mpris ]; + }; }; }
diff --git a/config/home/zaphyra/programs/nautilus.nix b/config/home/zaphyra/programs/nautilus.nix @@ -1,5 +1,6 @@ { config, + systemConfig, lib, pkgs, ... @@ -7,62 +8,70 @@ { - home.packages = with pkgs; [ - nautilus - sushi # quick-preview for nautilus - ]; - - home.sessionVariables = { - NAUTILUS_4_EXTENSION_DIR = "${config.home.profileDirectory}/lib/nautilus/extensions-4"; + options.zaphyra.programs.nautilus.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; }; - xdg.mimeApps.enable = true; - xdg.mimeApps.defaultApplications = lib.genAttrs [ - "inode/directory" - "application/x-7z-compressed" - "application/x-7z-compressed-tar" - "application/x-bzip" - "application/x-bzip-compressed-tar" - "application/x-compress" - "application/x-compressed-tar" - "application/x-cpio" - "application/x-gzip" - "application/x-lha" - "application/x-lzip" - "application/x-lzip-compressed-tar" - "application/x-lzma" - "application/x-lzma-compressed-tar" - "application/x-tar" - "application/x-tarz" - "application/x-xar" - "application/x-xz" - "application/x-xz-compressed-tar" - "application/zip" - "application/gzip" - "application/bzip2" - "application/x-bzip2-compressed-tar" - "application/vnd.rar;application/zstd" - "application/x-zstd-compressed-tar" - ] (_name: [ "org.gnome.Nautilus.desktop" ]); - - gtk.gtk4.extraCss = '' - /* remove 'starred' in nautilus side-panel */ - .nautilus-window .navigation-sidebar > .sidebar-row:nth-child(2) { - min-height:0; - font-size: 0; - -gtk-icon-size: 0; - margin-top: -2px; - } - ''; + config = lib.mkIf config.zaphyra.programs.nautilus.enable { + home.packages = with pkgs; [ + nautilus + sushi # quick-preview for nautilus + ]; - dconf.settings = { - "org/gnome/nautilus/list-view" = { - use-tree-view = true; - default-zoom-level = "small"; + home.sessionVariables = { + NAUTILUS_4_EXTENSION_DIR = "${config.home.profileDirectory}/lib/nautilus/extensions-4"; }; - "org/gnome/nautilus/preferences" = { - date-time-format = "detailed"; - default-folder-viewer = "list-view"; + + xdg.mimeApps.enable = true; + xdg.mimeApps.defaultApplications = lib.genAttrs [ + "inode/directory" + "application/x-7z-compressed" + "application/x-7z-compressed-tar" + "application/x-bzip" + "application/x-bzip-compressed-tar" + "application/x-compress" + "application/x-compressed-tar" + "application/x-cpio" + "application/x-gzip" + "application/x-lha" + "application/x-lzip" + "application/x-lzip-compressed-tar" + "application/x-lzma" + "application/x-lzma-compressed-tar" + "application/x-tar" + "application/x-tarz" + "application/x-xar" + "application/x-xz" + "application/x-xz-compressed-tar" + "application/zip" + "application/gzip" + "application/bzip2" + "application/x-bzip2-compressed-tar" + "application/vnd.rar;application/zstd" + "application/x-zstd-compressed-tar" + ] (_name: [ "org.gnome.Nautilus.desktop" ]); + + gtk.gtk4.extraCss = '' + /* remove 'starred' in nautilus side-panel */ + .nautilus-window .navigation-sidebar > :nth-child(3) { + min-height: 0; + font-size: 0; + -gtk-icon-size: 0; + margin-top: -2px; + } + ''; + + dconf.settings = { + "org/gnome/nautilus/list-view" = { + use-tree-view = true; + default-zoom-level = "small"; + }; + "org/gnome/nautilus/preferences" = { + date-time-format = "detailed"; + default-folder-viewer = "list-view"; + show-delete-permanently = true; + }; }; };
diff --git a/config/home/zaphyra/programs/networkManagerDmenu.nix b/config/home/zaphyra/programs/networkManagerDmenu.nix @@ -1,46 +1,49 @@ { - pkgs, + config, lib, + pkgs, ... }: { - home.packages = [ pkgs.networkmanager_dmenu ]; - - xdg.configFile."networkmanager-dmenu/config.ini".text = lib.generators.toINI { } { - dmenu = { - dmenu_command = "${lib.getExe pkgs.fuzzel} --anchor=top-right --x-margin=13 --y-margin=13"; - active_chars = "=="; - highlight = true; - highlight_bold = true; - compact = false; - pinentry = lib.getExe pkgs.pinentry-gnome3; - wifi_icons = "󰤯󰤟󰤢󰤥󰤨"; - format = "{name:<{max_len_name}s} {sec:<{max_len_sec}s} {icon:>4}"; - list_saved = false; - prompt = "Networks"; - }; - - dmenu_passphrase = { - obscure = false; - obscure_color = "#222222"; - }; - - pinentry = { - description = "Get network password"; - prompt = "Password:"; - }; - - editor = { - terminal = lib.getExe pkgs.ghostty; - gui_if_available = true; - gui = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor"; + options.zaphyra.programs.networkManagerDmenu.enable = lib.mkEnableOption "networkmanager-dmenu"; + + config = lib.mkIf config.zaphyra.programs.networkManagerDmenu.enable { + home.packages = [ pkgs.networkmanager_dmenu ]; + + xdg.configFile."networkmanager-dmenu/config.ini".text = lib.generators.toINI { } { + dmenu = { + dmenu_command = "${lib.getExe pkgs.fuzzel} --anchor=top-right --x-margin=13 --y-margin=13"; + active_chars = "=="; + highlight = true; + highlight_bold = true; + compact = false; + pinentry = lib.getExe pkgs.pinentry-gnome3; + wifi_icons = "󰤯󰤟󰤢󰤥󰤨"; + format = "{name:<{max_len_name}s} {sec:<{max_len_sec}s} {icon:>4}"; + list_saved = false; + prompt = "Networks"; + }; + + dmenu_passphrase = { + obscure = false; + obscure_color = "#222222"; + }; + + pinentry = { + description = "Get network password"; + prompt = "Password:"; + }; + + editor = { + terminal = lib.getExe pkgs.ghostty; + gui_if_available = true; + gui = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor"; + }; + + nmdm.rescan_delay = 5; }; - - nmdm.rescan_delay = 5; }; - # programs.sherlock.settings.ignore = "NetworkManager Dmenu"; - }
diff --git a/config/home/zaphyra/programs/niri.nix b/config/home/zaphyra/programs/niri.nix @@ -1,242 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - - programs.niri.settings = { - input = { - workspace-auto-back-and-forth = true; - - focus-follows-mouse = { - enable = true; - max-scroll-amount = "0%"; - }; - - touchpad.click-method = "clickfinger"; - - keyboard.xkb = { - layout = "us,de,ru"; - variant = "mac,qwerty,mac"; - options = "grp:alt_shift_toggle"; - }; - }; - - outputs."eDP-1".scale = 1; - - cursor.theme = config.gtk.cursorTheme.name; - - gestures.hot-corners.enable = false; - - layout = { - always-center-single-column = true; - gaps = 15; - - default-column-width = { - proportion = 1.0; - }; - - focus-ring = { - width = 2; - inactive.color = "rgba(59, 135, 86, .9)"; - active.color = "rgba(74, 169, 108, .9)"; - }; - - tab-indicator = { - gaps-between-tabs = 10; - position = "top"; - }; - } - // (lib.genAttrs [ "preset-column-widths" "preset-window-heights" ] (_name: [ - { proportion = 1.0; } - { proportion = 0.75; } - { proportion = 0.5; } - { proportion = 1.0 / 3.0; } - { proportion = 0.25; } - ])); - - environment = { - QT_QPA_PLATFORM = "wayland"; - QT_WAYLAND_FORCE_DPI = "physical"; - QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; - }; - - prefer-no-csd = true; - - window-rules = [ - { - shadow.enable = true; - matches = [ - { - is-floating = true; - } - ]; - } - { - geometry-corner-radius = lib.genAttrs [ "bottom-left" "bottom-right" "top-left" "top-right" ] ( - _name: 6.0 - ); - clip-to-geometry = true; - } - { - matches = [ - { - at-startup = true; - app-id = "org.gnome.Fractal"; - } - { - at-startup = true; - app-id = "im.dino.Dino"; - } - { - at-startup = true; - app-id = "org.gajim.Gajim"; - } - ]; - - default-column-display = "tabbed"; - open-on-workspace = "4"; - } - { - matches = [ - { app-id = "firefox$"; } - { app-id = "thunderbird$"; } - ]; - - open-maximized = true; - } - { - matches = [ - { app-id = "org.gnome.NautilusPreviewer$"; } - ]; - - open-floating = true; - } - { - matches = [ - { app-id = "thunderbird$"; } - ]; - - open-on-workspace = "2"; - } - { - matches = [ - { - app-id = "firefox$"; - title = "^Picture-in-Picture$"; - } - ]; - - open-floating = true; - default-column-width.fixed = 480; - default-window-height.fixed = 270; - default-floating-position = { - x = 32; - y = 32; - relative-to = "bottom-right"; - }; - } - ]; - - binds = - with config.lib.niri.actions; - { - "Mod+Shift+E".action = quit; - "Mod+Space".action = lib.mkDefault (spawn (lib.getExe pkgs.fuzzel)); - "Mod+Return".action = lib.mkDefault (spawn (lib.getExe pkgs.unstable.app2unit) "-T"); - - "Mod+L".action = spawn (lib.getExe' pkgs.systemd "loginctl") "lock-session"; - "Mod+Z".action = power-off-monitors; - # "Mod+Z".action = spawn (lib.getExe' pkgs.systemd "systemctl") "suspend"; - - "Mod+W" = { - action = close-window; - repeat = false; - }; - - "XF86AudioRaiseVolume" = { - allow-when-locked = true; - action = lib.mkDefault (spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "1%+"); - }; - "XF86AudioLowerVolume" = { - allow-when-locked = true; - action = lib.mkDefault (spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "1%-"); - }; - "XF86MonBrightnessUp" = { - allow-when-locked = true; - action = lib.mkDefault (spawn (lib.getExe pkgs.brightnessctl) "s" "+5%"); - }; - "XF86MonBrightnessDown" = { - allow-when-locked = true; - action = lib.mkDefault (spawn (lib.getExe pkgs.brightnessctl) "s" "5%-"); - }; - - "Mod+Tab".action = toggle-overview; - - "Mod+Prior".action = focus-workspace-up; - "Mod+Next".action = focus-workspace-down; - - "Mod+Shift+Prior".action = move-window-up-or-to-workspace-up; - "Mod+Shift+Next".action = move-window-down-or-to-workspace-down; - - "Mod+Ctrl+Prior".action = focus-monitor-up; - "Mod+Ctrl+Next".action = focus-monitor-down; - - "Mod+Left".action = focus-column-left; - "Mod+Right".action = focus-column-right; - "Mod+Up".action = focus-window-or-workspace-up; - "Mod+Down".action = focus-window-or-workspace-down; - - "Mod+Shift+Left".action = move-column-left; - "Mod+Shift+Right".action = move-column-right; - "Mod+Shift+Up".action = move-window-up; - "Mod+Shift+Down".action = move-window-down; - - "Mod+R".action = switch-preset-column-width; - "Mod+Shift+R".action = switch-preset-window-height; - "Mod+Ctrl+R".action = reset-window-height; - - "Mod+C".action = center-window; - - "Mod+F".action = maximize-column; - "Mod+Ctrl+F".action = expand-column-to-available-width; - "Mod+Shift+F".action = fullscreen-window; - "Mod+Alt+F".action = set-column-width "50%"; - - "Mod+Minus".action = set-column-width "-10%"; - "Mod+Equal".action = set-column-width "+10%"; - "Mod+Shift+Minus".action = set-window-height "-10%"; - "Mod+Shift+Equal".action = set-window-height "+10%"; - - "Mod+Shift+Space".action = toggle-window-floating; - - "Mod+Shift+Return".action = spawn (lib.getExe pkgs.tgc.nirius) "toggle-follow-mode"; - - "Mod+T".action = toggle-column-tabbed-display; - - "Mod+Print".action = spawn (lib.getExe pkgs.hyprpicker) "--lowercase-hex" "--autocopy"; - "Print".action = screenshot; - "Alt+Print".action = screenshot-window; - } - // (lib.mergeAttrsList ( - lib.map - (num: { - "Mod+${toString num}".action.focus-workspace = num; - "Mod+Shift+${toString num}".action.move-column-to-workspace = num; - }) - [ - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - ] - )); - }; -}
diff --git a/config/home/zaphyra/programs/niri/binds.nix b/config/home/zaphyra/programs/niri/binds.nix @@ -0,0 +1,184 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + + config = lib.mkIf config.zaphyra.programs.niri.enable { + programs.niri.settings = { + binds = + (lib.mergeAttrsList ( + lib.map + (num: { + "Mod+${toString num}" = lib.mkDefault { action.focus-workspace = num; }; + "Mod+Shift+${toString num}" = lib.mkDefault { action.move-column-to-workspace = num; }; + }) + [ + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + ] + )) + // (lib.mapAttrs + ( + _: attrs: + (lib.mkDefault ( + attrs + // { + action = + if (lib.isList attrs.action) then + { + "spawn" = attrs.action; + } + else if (lib.isAttrs attrs.action) then + attrs.action + else + { + "${attrs.action}" = [ ]; + }; + } + )) + ) + { + "Mod+1".action.focus-workspace = "browser"; + "Mod+Shift+1".action.move-column-to-workspace = "browser"; + "Mod+2".action.focus-workspace = "mail"; + "Mod+Shift+2".action.move-column-to-workspace = "mail"; + "Mod+3".action.focus-workspace = "terminal"; + "Mod+Shift+3".action.move-column-to-workspace = "terminal"; + "Mod+4".action.focus-workspace = "chat"; + "Mod+Shift+4".action.move-column-to-workspace = "chat"; + + "Mod+Shift+E".action = "quit"; + "Mod+Z".action = "power-off-monitors"; + # "Mod+Z".action = spawn (lib.getExe' pkgs.systemd "systemctl") "suspend"; + + "Mod+Space".action = [ (lib.getExe pkgs.fuzzel) ]; + "Mod+Return".action = [ + (lib.getExe pkgs.unstable.app2unit) + "-T" + ]; + "Mod+L".action = [ + (lib.getExe' pkgs.systemd "loginctl") + "lock-session" + ]; + + "Mod+W" = { + action = "close-window"; + repeat = false; + }; + + "XF86AudioMute" = { + allow-when-locked = true; + action = [ + "wpctl" + "set-mute" + "@DEFAULT_AUDIO_SINK@" + "toggle" + ]; + }; + "XF86AudioRaiseVolume" = { + allow-when-locked = true; + action = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + ".5%+" + ]; + }; + "XF86AudioLowerVolume" = { + allow-when-locked = true; + action = [ + "wpctl" + "set-volume" + "@DEFAULT_AUDIO_SINK@" + ".5%-" + ]; + }; + + "XF86MonBrightnessUp" = { + allow-when-locked = true; + action = [ + (lib.getExe pkgs.brightnessctl) + "s" + "+2%" + ]; + }; + "XF86MonBrightnessDown" = { + allow-when-locked = true; + action = [ + (lib.getExe pkgs.brightnessctl) + "s" + "2%-" + ]; + }; + + "Mod+Tab".action = "toggle-overview"; + + "Mod+Prior".action = "focus-workspace-up"; + "Mod+Next".action = "focus-workspace-down"; + + "Mod+Shift+Prior".action = "move-window-up-or-to-workspace-up"; + "Mod+Shift+Next".action = "move-window-down-or-to-workspace-down"; + + "Mod+Ctrl+Left".action = "focus-monitor-left"; + "Mod+Ctrl+Right".action = "focus-monitor-right"; + + "Mod+Left".action = "focus-column-left"; + "Mod+Right".action = "focus-column-right"; + "Mod+Up".action = "focus-window-or-workspace-up"; + "Mod+Down".action = "focus-window-or-workspace-down"; + + "Mod+Shift+Left".action = "move-column-left"; + "Mod+Shift+Right".action = "move-column-right"; + "Mod+Shift+Up".action = "move-window-up"; + "Mod+Shift+Down".action = "move-window-down"; + + "Mod+R".action = "switch-preset-column-width"; + "Mod+Shift+R".action = "switch-preset-window-height"; + "Mod+Ctrl+R".action = "reset-window-height"; + + "Mod+C".action = "center-window"; + + "Mod+F".action = "maximize-column"; + "Mod+Ctrl+F".action = "expand-column-to-available-width"; + "Mod+Shift+F".action = "fullscreen-window"; + "Mod+Alt+F".action.set-column-width = "50%"; + + "Mod+Minus".action.set-column-width = "-10%"; + "Mod+Equal".action.set-column-width = "+10%"; + "Mod+Shift+Minus".action.set-window-height = "-10%"; + "Mod+Shift+Equal".action.set-window-height = "+10%"; + + "Mod+Shift+Space".action = "toggle-window-floating"; + + "Mod+Shift+Return".action = [ + (lib.getExe pkgs.tgc.nirius) + "toggle-follow-mode" + ]; + + "Mod+T".action = "toggle-column-tabbed-display"; + + "Mod+Print".action = [ + (lib.getExe pkgs.hyprpicker) + "--lowercase-hex" + "--autocopy" + ]; + + "Print".action = "screenshot"; + "Alt+Print".action = "screenshot-window"; + } + ); + }; + }; + +}
diff --git a/config/home/zaphyra/programs/niri/default.nix b/config/home/zaphyra/programs/niri/default.nix @@ -0,0 +1,74 @@ +{ + config, + systemConfig, + lib, + ... +}: + +{ + + options.zaphyra.programs.niri.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + imports = [ + ./binds.nix + ./io.nix + ./rules.nix + ]; + + config = lib.mkIf config.zaphyra.programs.niri.enable { + programs.niri.settings = { + environment = { + QT_QPA_PLATFORM = "wayland"; + QT_WAYLAND_FORCE_DPI = "physical"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + }; + + cursor.theme = config.gtk.cursorTheme.name; + + prefer-no-csd = true; + + workspaces = { + "001-browser".name = "browser"; + "003-mail".name = "mail"; + "003-terminal".name = "terminal"; + "004-chat".name = "chat"; + }; + + overview = { + workspace-shadow.enable = false; + }; + + layout = { + always-center-single-column = true; + gaps = 15; + background-color = "transparent"; + + default-column-width = { + proportion = 1.0; + }; + + focus-ring = { + width = 2; + inactive.color = "rgba(59, 135, 86, .9)"; + active.color = "rgba(74, 169, 108, .9)"; + }; + + tab-indicator = { + gaps-between-tabs = 10; + position = "top"; + }; + } + // (lib.genAttrs [ "preset-column-widths" "preset-window-heights" ] (_name: [ + { proportion = 1.0; } + { proportion = 0.75; } + { proportion = 0.5; } + { proportion = 1.0 / 3.0; } + { proportion = 0.25; } + ])); + }; + }; + +}
diff --git a/config/home/zaphyra/programs/niri/io.nix b/config/home/zaphyra/programs/niri/io.nix @@ -0,0 +1,36 @@ +{ + config, + lib, + ... +}: + +{ + + config = lib.mkIf config.zaphyra.programs.niri.enable { + programs.niri.settings = { + gestures.hot-corners.enable = false; + + input = { + workspace-auto-back-and-forth = true; + + focus-follows-mouse = { + enable = true; + max-scroll-amount = "0%"; + }; + + touchpad.click-method = "clickfinger"; + + keyboard.xkb = { + layout = "us,de,ru"; + variant = "mac,qwerty,mac"; + options = "grp:alt_shift_toggle"; + }; + }; + + outputs = { + "eDP-1".scale = 1; + }; + }; + }; + +}
diff --git a/config/home/zaphyra/programs/niri/rules.nix b/config/home/zaphyra/programs/niri/rules.nix @@ -0,0 +1,96 @@ +{ + config, + lib, + ... +}: +{ + + config = lib.mkIf config.zaphyra.programs.niri.enable { + programs.niri.settings = { + layer-rules = [ + { + matches = [ + { namespace = "shaderbg"; } + ]; + place-within-backdrop = true; + } + ]; + + window-rules = [ + { + shadow.enable = true; + matches = [ + { + is-floating = true; + } + ]; + } + { + geometry-corner-radius = lib.genAttrs [ "bottom-left" "bottom-right" "top-left" "top-right" ] ( + _name: 6.0 + ); + clip-to-geometry = true; + } + { + matches = [ + { + at-startup = true; + app-id = "^org.gnome.Fractal$"; + } + { + at-startup = true; + app-id = "^im.dino.Dino$"; + } + { + at-startup = true; + app-id = "^org.gajim.Gajim$"; + } + ]; + + default-column-display = "tabbed"; + open-on-workspace = "chat"; + } + { + matches = [ + { app-id = "firefox$"; } + { app-id = "thunderbird$"; } + ]; + + open-maximized = true; + } + { + matches = [ + { app-id = "^org.gnome.NautilusPreviewer$"; } + ]; + + open-floating = true; + } + { + matches = [ + { app-id = "^thunderbird$"; } + ]; + + open-on-workspace = "mail"; + } + { + matches = [ + { + app-id = "firefox$"; + title = "^Picture-in-Picture$"; + } + ]; + + open-floating = true; + default-column-width.fixed = 480; + default-window-height.fixed = 270; + default-floating-position = { + x = 32; + y = 32; + relative-to = "bottom-right"; + }; + } + ]; + }; + }; + +}
diff --git a/config/home/zaphyra/programs/nmgui.nix b/config/home/zaphyra/programs/nmgui.nix @@ -1,245 +1,251 @@ { + config, + lib, pkgs, ... }: { - home.packages = [ - (pkgs.writeShellScriptBin "nmgui" '' - windowID=`niri msg --json windows | jq -re '[.[] | select(.app_id == "com.network.manager") | .id][0]'` - - if [ $windowID != "null" ] - then - exec niri msg action close-window --id=$windowID - else - app2unit -- ${ - lib.getExe ( - pkgs.unstable.nmgui.overrideAttrs { - src = pkgs.fetchFromGitHub { - owner = "s-adi-dev"; - repo = "nmgui"; - rev = "08b2380e5b230a2215a6430878e2aa13c3d86d44"; - hash = "sha256-qRFJbzam48GTbQnLrZINE0vAvAJfVN4bJey8MZwCsm4="; - }; - } - ) - } - fi - '') - ]; - - xdg.configFile."nmgui/style.css".text = '' - * { - font-family: "Adwaita Sans", "Symbols Nerd Font"; - outline-color: @accent-color; - color: white; - } - - window { - border: 2px solid @accent-border-color; - background: @background-color; - } - - window { - border-top: unset; - border-bottom-left-radius: 10px; - border-bottom-right-radius: 10px; - } - - #wifi-scan-label, - button, - entry { - border-radius: 4px; - } - - separator { - min-height: 2px; - margin: 0 -20px; - background: @border-color; - } - - entry { - min-height: 32px; - padding-left: 9px; - padding-right: 8px; - border: 1px solid; - border-spacing: 6px; - } - - entry:hover { - outline: none; - background: @button-hover-color; - border: 1px solid @border-color; - } - - text selection { - color: white; - background: @accent-color; - } - - button { - min-height: 24px; - min-width: 16px; - padding: 4px 9px; - background: @button-color; - border: 1px solid @border-color; - color: white; - } - - button.image-button { - padding: 8px 12px 8px 8px; - border: unset; - background: unset; - } - - button:hover { - background: @button-hover-color; - } - - button:disabled { - border-left: 4px solid @accent-color; - border-top: unset; - border-bottom: unset; - padding: unset; - } - - button:disabled box { - margin: -2px; - margin-right: 0; - background: @button-hover-color; - padding: 4px 10px 4px 8px; - border: 1px solid @border-color; - border-right: unset; - } - - switch { - border-radius: 4px; - border: 1px solid @border-color; - background: @button-color; - } - - switch:checked { - background: alpha(@accent-color, .5); - } - - switch slider { - border-radius: 4px; - border: 1px solid @border-color; - background: rgb(190, 190, 190); - margin: 3px; - min-height: 15px; - min-width: 15px; - } - - switch:hover slider, - switch slider:hover { - border 1px solid @border-color; - background: rgb(170, 170, 170); - } - - #wifi-label { - font-size: 15pt; - font-weight: 400; - } - - #wifi-networks-label { - font-size: 12pt; - font-weight: 300; - } - - #wifi-scan-label { - padding: 5px 8px; - background: @button-color; - border: 1px solid @border-color; - color: white; - } - - #wifi-scan-label:hover { - background: @button-hover-color; - color: white; - } - - #network-list-box #network-button { - margin-right: -5px; - border-right: 0; - border-top-right-radius: unset; - border-bottom-right-radius: unset; - } - - #network-list-box .more-details-button { - border-top-left-radius: unset; - border-bottom-left-radius: unset; - margin-left: unset; - } - - /* Details page */ - window > box .image-button { - margin-left:-10px; - } - - window > box > box > box > box:last-child { - margin: 0 -20px -20px; - } - - window > box > box > box > box:last-child > button:first-child { - margin-right: 15px; - } - - /* dialogs */ - .titlebar { - background: transparent; - } - - .dialog-vbox button { - margin: 10px; - } - - .dialog-vbox button:first-child { - margin-right: 5px; - } - - .dialog-vbox button:last-child { - margin-left: 5px; - } - - .dialog-vbox box > label:last-child { - margin: 0 10px 20px; - } - - .password { - background: @button-color; - border: 1px solid @border-color; - color: white; - } - ''; - - programs.niri.settings.window-rules = [ - { - matches = [ { app-id = "com.network.manager$"; } ]; - - focus-ring.enable = false; - - open-focused = true; - open-floating = true; - default-floating-position = { - x = 40; - y = 0; - relative-to = "top-right"; - }; - - geometry-corner-radius = { - "bottom-left" = 9.0; - "bottom-right" = 9.0; - "top-left" = 0.0; - "top-right" = 0.0; - }; - - min-width = 400; - max-width = 400; - min-height = 500; - max-height = 500; - } - ]; + options.zaphyra.programs.nmgui.enable = lib.mkEnableOption "Enable nmgui NetworkManager-GUI"; + + config = lib.mkIf config.zaphyra.programs.nmgui.enable { + home.packages = [ + (pkgs.writeShellScriptBin "nmgui" '' + windowID=`niri msg --json windows | jq -re '[.[] | select(.app_id == "com.network.manager") | .id][0]'` + + if [ $windowID != "null" ] + then + exec niri msg action close-window --id=$windowID + else + app2unit -- ${ + lib.getExe ( + pkgs.unstable.nmgui.overrideAttrs { + src = pkgs.fetchFromGitHub { + owner = "s-adi-dev"; + repo = "nmgui"; + rev = "08b2380e5b230a2215a6430878e2aa13c3d86d44"; + hash = "sha256-qRFJbzam48GTbQnLrZINE0vAvAJfVN4bJey8MZwCsm4="; + }; + } + ) + } + fi + '') + ]; + + xdg.configFile."nmgui/style.css".text = '' + * { + font-family: "Adwaita Sans", "Symbols Nerd Font"; + outline-color: @accent-color; + color: white; + } + + window { + border: 2px solid @accent-border-color; + background: @background-color; + } + + window { + border-top: unset; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + } + + #wifi-scan-label, + button, + entry { + border-radius: 4px; + } + + separator { + min-height: 2px; + margin: 0 -20px; + background: @border-color; + } + + entry { + min-height: 32px; + padding-left: 9px; + padding-right: 8px; + border: 1px solid; + border-spacing: 6px; + } + + entry:hover { + outline: none; + background: @button-hover-color; + border: 1px solid @border-color; + } + + text selection { + color: white; + background: @accent-color; + } + + button { + min-height: 24px; + min-width: 16px; + padding: 4px 9px; + background: @button-color; + border: 1px solid @border-color; + color: white; + } + + button.image-button { + padding: 8px 12px 8px 8px; + border: unset; + background: unset; + } + + button:hover { + background: @button-hover-color; + } + + button:disabled { + border-left: 4px solid @accent-color; + border-top: unset; + border-bottom: unset; + padding: unset; + } + + button:disabled box { + margin: -2px; + margin-right: 0; + background: @button-hover-color; + padding: 4px 10px 4px 8px; + border: 1px solid @border-color; + border-right: unset; + } + + switch { + border-radius: 4px; + border: 1px solid @border-color; + background: @button-color; + } + + switch:checked { + background: alpha(@accent-color, .5); + } + + switch slider { + border-radius: 4px; + border: 1px solid @border-color; + background: rgb(190, 190, 190); + margin: 3px; + min-height: 15px; + min-width: 15px; + } + + switch:hover slider, + switch slider:hover { + border 1px solid @border-color; + background: rgb(170, 170, 170); + } + + #wifi-label { + font-size: 15pt; + font-weight: 400; + } + + #wifi-networks-label { + font-size: 12pt; + font-weight: 300; + } + + #wifi-scan-label { + padding: 5px 8px; + background: @button-color; + border: 1px solid @border-color; + color: white; + } + + #wifi-scan-label:hover { + background: @button-hover-color; + color: white; + } + + #network-list-box #network-button { + margin-right: -5px; + border-right: 0; + border-top-right-radius: unset; + border-bottom-right-radius: unset; + } + + #network-list-box .more-details-button { + border-top-left-radius: unset; + border-bottom-left-radius: unset; + margin-left: unset; + } + + /* Details page */ + window > box .image-button { + margin-left:-10px; + } + + window > box > box > box > box:last-child { + margin: 0 -20px -20px; + } + + window > box > box > box > box:last-child > button:first-child { + margin-right: 15px; + } + + /* dialogs */ + .titlebar { + background: transparent; + } + + .dialog-vbox button { + margin: 10px; + } + + .dialog-vbox button:first-child { + margin-right: 5px; + } + + .dialog-vbox button:last-child { + margin-left: 5px; + } + + .dialog-vbox box > label:last-child { + margin: 0 10px 20px; + } + + .password { + background: @button-color; + border: 1px solid @border-color; + color: white; + } + ''; + + programs.niri.settings.window-rules = [ + { + matches = [ { app-id = "com.network.manager$"; } ]; + + focus-ring.enable = false; + + open-focused = true; + open-floating = true; + default-floating-position = { + x = 40; + y = 0; + relative-to = "top-right"; + }; + + geometry-corner-radius = { + "bottom-left" = 9.0; + "bottom-right" = 9.0; + "top-left" = 0.0; + "top-right" = 0.0; + }; + + min-width = 400; + max-width = 400; + min-height = 500; + max-height = 500; + } + ]; + }; }
diff --git a/config/home/zaphyra/programs/ocrmypdf.nix b/config/home/zaphyra/programs/ocrmypdf.nix @@ -1,10 +1,20 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.ocrmypdf ]; + options.zaphyra.programs.ocrmypdf.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.ocrmypdf.enable { + home.packages = [ pkgs.ocrmypdf ]; + }; }
diff --git a/config/home/zaphyra/programs/overskride.nix b/config/home/zaphyra/programs/overskride.nix @@ -1,10 +1,17 @@ { + config, + lib, pkgs, ... }: { - home.packages = [ pkgs.overskride ]; + options.zaphyra.programs.overskride.enable = + lib.mkEnableOption "Enable overskride bluetooth manager"; + + config = lib.mkIf config.zaphyra.programs.overskride.enable { + home.packages = [ pkgs.overskride ]; + }; }
diff --git a/config/home/zaphyra/programs/papers.nix b/config/home/zaphyra/programs/papers.nix @@ -1,19 +1,29 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.papers ]; + options.zaphyra.programs.papers.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - xdg.mimeApps = { - enable = true; - defaultApplications = { - "application/pdf" = [ "org.gnome.Papers.desktop" ]; - }; - associations.added = { - "application/pdf" = [ "org.gnome.Papers.desktop" ]; + config = lib.mkIf config.zaphyra.programs.papers.enable { + home.packages = [ pkgs.papers ]; + + xdg.mimeApps = { + enable = true; + defaultApplications = { + "application/pdf" = [ "org.gnome.Papers.desktop" ]; + }; + associations.added = { + "application/pdf" = [ "org.gnome.Papers.desktop" ]; + }; }; };
diff --git a/config/home/zaphyra/programs/password-store.nix b/config/home/zaphyra/programs/password-store.nix @@ -1,25 +1,31 @@ { + config, + lib, pkgs, ... }: { - home.packages = [ pkgs.pwgen ]; + options.zaphyra.programs.password-store.enable = lib.mkEnableOption "Enable password-store"; - programs = { - password-store = { - enable = true; - package = pkgs.pass.withExtensions (exts: [ - exts.pass-otp - exts.pass-update - exts.pass-genphrase - ]); - }; + config = lib.mkIf config.zaphyra.programs.password-store.enable { + home.packages = [ pkgs.pwgen ]; + + programs = { + password-store = { + enable = true; + package = pkgs.pass.withExtensions (exts: [ + exts.pass-otp + exts.pass-update + exts.pass-genphrase + ]); + }; - browserpass = { - enable = true; - browsers = [ "firefox" ]; + browserpass = { + enable = true; + browsers = [ "firefox" ]; + }; }; };
diff --git a/config/home/zaphyra/programs/pdfarranger.nix b/config/home/zaphyra/programs/pdfarranger.nix @@ -1,16 +1,26 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.pdfarranger ]; + options.zaphyra.programs.pdfarranger.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + + config = lib.mkIf config.zaphyra.programs.pdfarranger.enable { + home.packages = [ pkgs.pdfarranger ]; - xdg.mimeApps = { - enable = true; - associations.added = { - "application/pdf" = [ "com.github.jeromerobert.pdfarranger.desktop" ]; + xdg.mimeApps = { + enable = true; + associations.added = { + "application/pdf" = [ "com.github.jeromerobert.pdfarranger.desktop" ]; + }; }; };
diff --git a/config/home/zaphyra/programs/pipewire.nix b/config/home/zaphyra/programs/pipewire.nix @@ -1,62 +1,70 @@ { config, + systemConfig, + lib, pkgs, ... }: { - home.packages = with pkgs; [ - pwvucontrol - sonusmix - ]; + options.zaphyra.programs.pipewire.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - xdg.configFile."pipewire/pipewire.conf.d/10-chloe-raop.conf".text = - let - raopSink = ipAddr: name: { - name = "libpipewire-module-raop-sink"; - args = { - "raop.ip" = ipAddr; - "raop.port" = 7000; - "raop.name" = name; - "raop.encryption.type" = "auth_setup"; - }; - }; + config = lib.mkIf config.zaphyra.programs.pipewire.enable { + home.packages = with pkgs; [ + pwvucontrol + ]; - in - builtins.toJSON { - "context.modules" = [ - { name = "libpipewire-module-zeroconf-discover"; } - { - name = "libpipewire-module-raop-discover"; - args."roap.discover-local" = true; - } - (raopSink "192.168.2.63" "Living Room") - (raopSink "192.168.2.57" "Bed Room") - (raopSink "192.168.2.54" "Datacenter") - (raopSink "192.168.2.80" "Kitchen") - { - name = "libpipewire-module-combine-stream"; + xdg.configFile."pipewire/pipewire.conf.d/10-chloe-raop.conf".text = + let + raopSink = ipAddr: name: { + name = "libpipewire-module-raop-sink"; args = { - "node.name" = "raop_multi_room"; - "node.description" = "Multi-Room"; - "combine.mode" = "sink"; - "combine.latency-compensate" = false; - "combine.on-demand-streams" = true; - "stream.rules" = [ - { - actions."create-stream" = { }; - matches = [ - { - "media.class" = "Audio/Sink"; - "node.name" = "~raop_sink.*"; - } - ]; - } - ]; + "raop.ip" = ipAddr; + "raop.port" = 7000; + "raop.name" = name; + "raop.encryption.type" = "auth_setup"; }; - } - ]; - }; + }; + + in + builtins.toJSON { + "context.modules" = [ + { name = "libpipewire-module-zeroconf-discover"; } + { + name = "libpipewire-module-raop-discover"; + args."roap.discover-local" = true; + } + (raopSink "192.168.2.63" "Living Room") + (raopSink "192.168.2.57" "Bed Room") + (raopSink "192.168.2.54" "Datacenter") + (raopSink "192.168.2.80" "Kitchen") + { + name = "libpipewire-module-combine-stream"; + args = { + "node.name" = "raop_multi_room"; + "node.description" = "Multi-Room"; + "combine.mode" = "sink"; + "combine.latency-compensate" = false; + "combine.on-demand-streams" = true; + "stream.rules" = [ + { + actions."create-stream" = { }; + matches = [ + { + "media.class" = "Audio/Sink"; + "node.name" = "~raop_sink.*"; + } + ]; + } + ]; + }; + } + ]; + }; + }; }
diff --git a/config/home/zaphyra/programs/plattenalbum.nix b/config/home/zaphyra/programs/plattenalbum.nix @@ -1,10 +1,19 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.packages = [ pkgs.plattenalbum ]; + options.zaphyra.programs.plattenalbum.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; + config = lib.mkIf config.zaphyra.programs.plattenalbum.enable { + home.packages = [ pkgs.plattenalbum ]; + }; }
diff --git a/config/home/zaphyra/programs/profanity.nix b/config/home/zaphyra/programs/profanity.nix @@ -1,16 +1,25 @@ { config, + systemConfig, + lib, pkgs, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "profanity/.config/profanity/" - "profanity/.local/share/profanity/" - ]; + options.zaphyra.programs.profanity.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = [ pkgs.profanity ]; + config = lib.mkIf config.zaphyra.programs.profanity.enable { + home.packages = [ pkgs.profanity ]; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "profanity/.config/profanity/" + "profanity/.local/share/profanity/" + ]; + }; }
diff --git a/config/home/zaphyra/programs/shellUtilities.nix b/config/home/zaphyra/programs/shellUtilities.nix @@ -1,78 +1,64 @@ { config, + lib, pkgs, ... }: { - programs.jq.enable = true; - - home.shellAliases = { - ".." = "cd .."; - "..." = "cd ../.."; - - rm = "trash-put"; - - diff = "diff --color"; - ip = "ip --color=auto"; - - killall = "pkill"; - - grep = "rg"; - find = "fd"; + options.zaphyra.programs.shellUtilities.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; - zzz = "sleep 1 && systemctl suspend"; + config = lib.mkIf config.zaphyra.programs.shellUtilities.enable { + programs.jq.enable = true; - wget = "wget --hsts-file=\"${config.xdg.dataHome}/wget-hsts\""; - }; + home.shellAliases = { + ".." = "cd .."; + "..." = "cd ../.."; - home.packages = with pkgs; [ - coreutils - trash-cli + rm = "trash-put"; - pwgen + diff = "diff --color"; + ip = "ip --color=auto"; - (pkgs.writeShellScriptBin "use" '' - declare -a all - for p in "$@"; do - all+=("''${NIXPKGS_PATH}#$p") - done - eval nix shell ''${all[@]} - '') + killall = "pkill"; - wget - curl - rsync + grep = "rg"; + find = "fd"; - ripgrep - fd + zzz = "sleep 1 && systemctl suspend"; - fx - file - bc + wget = "wget --hsts-file=\"${config.xdg.dataHome}/wget-hsts\""; + }; - unzip + home.packages = with pkgs; [ + coreutils + trash-cli - smartmontools + pwgen - gptfdisk - e2fsprogs - dosfstools + (pkgs.writeShellScriptBin "use" '' + declare -a all + for p in "$@"; do + all+=("''${NIXPKGS_PATH}#$p") + done + eval nix shell ''${all[@]} + '') - (pkgs.writeShellScriptBin "open" ( - lib.concatStringsSep " " [ - (lib.getExe' pkgs.coreutils "nohup") - (lib.getExe' pkgs.xdg-utils "xdg-open") - "$@" - "> /dev/null 2>&1" - ] - )) + wget + curl + rsync - usbutils - pciutils + ripgrep + fd - lm_sensors - ]; + fx + file + bc + ]; + }; }
diff --git a/config/home/zaphyra/programs/sherlock-launcher.nix b/config/home/zaphyra/programs/sherlock-launcher.nix @@ -1,89 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -{ - - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "sherlock/.cache/sherlock" - ]; - - programs.niri.settings.binds = with config.lib.niri.actions; { - "Mod+Space".action = spawn (lib.getExe pkgs.sherlock-launcher); - }; - - programs.sherlock = { - enable = true; - settings = { - style = '' - window { - border-radius: 5px; - border: 2px solid rgba(255, 255, 255, 0.08); - } - ''; - ignore = '' - btop++ - ''; - config = { - default_apps = { - terminal = "${config.home.sessionVariables.TERMINAL} -e"; - browser = "${config.home.sessionVariables.BROWSER} %u"; - }; - behavior.global_prefix = "app2unit"; - caching.enable = true; - }; - launchers = [ - { - name = "Weather"; - type = "weather"; - args.location = "darmstadt"; - args.update_interval = 30; - home = "OnlyHome"; - priority = 1; - async = true; - shortcut = false; - spawn_focus = false; - actions = [ - { - name = "Show on wttr.in"; - exec = "https://www.wttr.in/darmstadt"; - icon = "emblem-symbolic-link"; - method = "web_launcher"; - } - ]; - } - { - name = "App Launcher"; - type = "app_launcher"; - alias = "app"; - priority = 3; - home = "OnlyHome"; - } - { - name = "Emoji Picker"; - type = "emoji_picker"; - alias = "emoji"; - priority = 4; - home = "OnlyHome"; - } - ]; - }; - }; - - # systemd.user.services.sherlock = { - # Unit = { - # Description = "sherlock daemon"; - # After = [ "graphical-session.target" ]; - # }; - # Service = { - # ExecStart = "${lib.getExe pkgs.sherlock-launcher} --daemonize"; - # Restart = "on-failure"; - # RestartSec = 5; - # }; - # Install.WantedBy = [ "graphical-session.target" ]; - # }; - -}
diff --git a/config/home/zaphyra/programs/ssh.nix b/config/home/zaphyra/programs/ssh.nix @@ -1,30 +1,41 @@ { config, + systemConfig, + lib, ... }: { - home.file.".ssh/known_hosts".force = true; - home.persistence."/nix/persist/home/${config.home.username}".files = [ - "ssh/.ssh/known_hosts" - ]; - - programs.ssh = { - enable = true; - compression = true; + options.zaphyra.programs.ssh.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; - controlMaster = "auto"; - controlPersist = "2m"; + config = lib.mkIf config.zaphyra.programs.ssh.enable { + programs.ssh = { + enable = true; + enableDefaultConfig = false; + matchBlocks = { + "*" = { + compression = true; - serverAliveInterval = 30; + controlMaster = "auto"; + controlPersist = "2m"; - matchBlocks = { - "zaphyra-git" = { - user = "git"; - hostname = "git.zaphyra.eu"; + serverAliveInterval = 30; + }; + "zaphyra-git" = { + user = "git"; + hostname = "git.zaphyra.eu"; + }; }; }; + + # home.file.".ssh/known_hosts".force = true; + home.persistence."/nix/persist/home/${config.home.username}".files = [ + "ssh/.ssh/known_hosts" + ]; }; }
diff --git a/config/home/zaphyra/programs/swaylock.nix b/config/home/zaphyra/programs/swaylock.nix @@ -1,5 +1,6 @@ { inputs, + systemConfig, config, lib, pkgs, @@ -8,37 +9,44 @@ { - programs.swaylock = { - enable = true; - package = pkgs.swaylock-plugin-fprintd; - settings = { - # clock = true; + options.zaphyra.programs.swaylock.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.services.swaylock.enable; + }; - indicator = true; - ring-color = "4aa96c"; - show-failed-attempts = true; - fingerprint = true; + config = lib.mkIf config.zaphyra.programs.swaylock.enable { + programs.swaylock = { + enable = true; + package = pkgs.swaylock-plugin-fprintd; + settings = { + # clock = true; - command = "${lib.getExe pkgs.tgc.shaderbg} '*' --fps 10 ${inputs.self.resources.shaders.background1}"; + indicator = true; + ring-color = "4aa96c"; + show-failed-attempts = true; + fingerprint = false; - # image = "/home/zaphyra/Pictures/Backgrounds/lock.png"; - # scaling = "fit"; - # color = "ffffaf"; - }; - }; + command = "${lib.getExe pkgs.tgc.shaderbg} '*' --fps 10 ${inputs.self.resources.shaders.background1}"; - systemd.user.services.swaylock = { - Unit = { - OnSuccess = [ "unlock.target" ]; - PartOf = [ "lock.target" ]; - After = [ "lock.target" ]; + # image = "/home/zaphyra/Pictures/Backgrounds/lock.png"; + # scaling = "fit"; + # color = "ffffaf"; + }; }; - Service = { - ExecStart = lib.getExe config.programs.swaylock.package; - Restart = "on-failure"; - RestartSec = 0; + + systemd.user.services.swaylock = { + Unit = { + OnSuccess = [ "unlock.target" ]; + PartOf = [ "lock.target" ]; + After = [ "lock.target" ]; + }; + Service = { + ExecStart = lib.getExe config.programs.swaylock.package; + Restart = "on-failure"; + RestartSec = 0; + }; + Install.WantedBy = [ "lock.target" ]; }; - Install.WantedBy = [ "lock.target" ]; }; }
diff --git a/config/home/zaphyra/programs/systemUtilities.nix b/config/home/zaphyra/programs/systemUtilities.nix @@ -0,0 +1,32 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + + options.zaphyra.programs.systemUtilities.enable = lib.mkOption { + type = lib.types.bool; + default = true; + }; + + config = lib.mkIf config.zaphyra.programs.systemUtilities.enable { + programs.jq.enable = true; + + home.packages = with pkgs; [ + smartmontools + + gptfdisk + e2fsprogs + dosfstools + + usbutils + pciutils + + lm_sensors + ]; + }; + +}
diff --git a/config/home/zaphyra/programs/thunderbird.nix b/config/home/zaphyra/programs/thunderbird.nix @@ -8,49 +8,56 @@ { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "thunderbird/.thunderbird/" - "thunderbird/.cache/thunderbird" - ]; - - home.packages = [ pkgs.thunderbird ]; - - systemd.user.services.thunderbird = { - Unit.After = [ "graphical-session-pre.target" ]; - Unit.PartOf = [ "graphical-session.target" ]; - - Service = { - Environment = - "PATH=" - + (lib.makeBinPath [ - "/run/wrappers" - ( - if !systemConfig.nix.settings.use-xdg-base-directories then - "/home/${config.home.username}/.nix-profile" - else - "/home/${config.home.username}/.local/state/nix/profile" - ) - "/nix/var/nix/profiles/default" - "/run/current-system/sw" - ]); - ExecStart = lib.getExe pkgs.thunderbird; - Restart = "always"; - RestartSec = 5; - }; - - Install.WantedBy = [ "graphical-session.target" ]; + options.zaphyra.programs.thunderbird.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; }; - xdg = { - enable = true; - mime.enable = true; + config = lib.mkIf config.zaphyra.programs.thunderbird.enable { + home.packages = [ pkgs.thunderbird ]; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "thunderbird/.thunderbird/" + "thunderbird/.cache/thunderbird" + ]; + + systemd.user.services.thunderbird = { + Unit.After = [ "graphical-session-pre.target" ]; + Unit.PartOf = [ "graphical-session.target" ]; + + Service = { + Environment = + "PATH=" + + (lib.makeBinPath [ + "/run/wrappers" + ( + if !systemConfig.nix.settings.use-xdg-base-directories then + "/home/${config.home.username}/.nix-profile" + else + "/home/${config.home.username}/.local/state/nix/profile" + ) + "/nix/var/nix/profiles/default" + "/run/current-system/sw" + ]); + ExecStart = lib.getExe pkgs.thunderbird; + Restart = "always"; + RestartSec = 5; + }; + + Install.WantedBy = [ "graphical-session.target" ]; + }; + + xdg = { + enable = true; + mime.enable = true; - #force hm to override existing mimeapps.list file - configFile."mimeapps.list".force = true; + #force hm to override existing mimeapps.list file + configFile."mimeapps.list".force = true; - mimeApps.enable = true; - mimeApps.defaultApplications = { - "x-scheme-handler/mailto" = "thunderbird.desktop"; + mimeApps.enable = true; + mimeApps.defaultApplications = { + "x-scheme-handler/mailto" = "thunderbird.desktop"; + }; }; };
diff --git a/config/home/zaphyra/programs/tmux.nix b/config/home/zaphyra/programs/tmux.nix @@ -1,14 +1,22 @@ -_: +{ + config, + lib, + ... +}: { - programs.tmux = { - enable = true; - clock24 = true; - terminal = "xterm-256color"; - extraConfig = '' - set -g mouse on - ''; + options.zaphyra.programs.tmux.enable = lib.mkEnableOption "Enable tmux terminal multiplexer"; + + config = lib.mkIf config.zaphyra.programs.tmux.enable { + programs.tmux = { + enable = true; + clock24 = true; + terminal = "xterm-256color"; + extraConfig = '' + set -g mouse on + ''; + }; }; }
diff --git a/config/home/zaphyra/programs/tuba.nix b/config/home/zaphyra/programs/tuba.nix @@ -1,25 +1,34 @@ { config, + systemConfig, + lib, pkgs, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "tuba/.cache/tuba" - ]; + options.zaphyra.programs.tuba.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = [ pkgs.tuba ]; + config = lib.mkIf config.zaphyra.programs.tuba.enable { + home.packages = [ pkgs.tuba ]; - dconf.settings = { - "dev/geopjr/Tuba" = { - work-in-background = true; - dim-trivial-notifications = true; - group-push-notifications = true; - reply-to-old-post-reminder = false; - show-spoilers = true; + dconf.settings = { + "dev/geopjr/Tuba" = { + work-in-background = true; + dim-trivial-notifications = true; + group-push-notifications = true; + reply-to-old-post-reminder = false; + show-spoilers = true; + }; }; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "tuba/.cache/tuba" + ]; }; }
diff --git a/config/home/zaphyra/programs/typst.nix b/config/home/zaphyra/programs/typst.nix @@ -1,4 +1,6 @@ { + config, + systemConfig, lib, pkgs, ... @@ -6,24 +8,31 @@ { - home.packages = with pkgs; [ - typst - typst-live - typewriter - ]; - - programs.micro.lsp-servers.typ = { - command = lib.getExe pkgs.unstable.tinymist; + options.zaphyra.programs.typst.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; }; - programs.helix.languages = { - language-server.tinymist = { + config = lib.mkIf config.zaphyra.programs.typst.enable { + home.packages = with pkgs; [ + typst + typst-live + typewriter + ]; + + programs.micro.lsp-servers.typ = { command = lib.getExe pkgs.unstable.tinymist; - config = { - preview.background.enabled = true; - preview.background.args = [ "--data-plane-host=127.0.0.1:8123" ]; - fontPaths = [ "./fonts" ]; - exportPdf = "onSave"; + }; + + programs.helix.languages = { + language-server.tinymist = { + command = lib.getExe pkgs.unstable.tinymist; + config = { + preview.background.enabled = true; + preview.background.args = [ "--data-plane-host=127.0.0.1:8123" ]; + fontPaths = [ "./fonts" ]; + exportPdf = "onSave"; + }; }; }; };
diff --git a/config/home/zaphyra/programs/wleave.nix b/config/home/zaphyra/programs/wleave.nix @@ -1,96 +1,103 @@ { config, + lib, pkgs, ... }: { - home.packages = [ - pkgs.tgc.wleave - ]; + options.zaphyra.programs.wleave.enable = lib.mkEnableOption "Enable wleave"; - xdg.configFile."wleave/layout.json".text = builtins.toJSON { - no-version-info = true; - css = "${config.xdg.configHome}/wleave/style.css"; - close-on-lost-focus = true; - buttons-per-row = "1/1"; - margin-top = 380; - margin-bottom = 380; - buttons = [ - { - label = "lock"; - icon = "${pkgs.tgc.wleave}/share/wleave/icons/lock.svg"; - action = "loginctl lock-session"; - text = "Lock"; - keybind = "l"; - } - { - label = "suspend"; - icon = "${pkgs.tgc.wleave}/share/wleave/icons/suspend.svg"; - action = "systemctl suspend"; - text = "Suspend"; - keybind = "u"; - } - { - label = "logout"; - icon = "${pkgs.tgc.wleave}/share/wleave/icons/logout.svg"; - action = "loginctl terminate-user $USER"; - text = "Logout"; - keybind = "e"; - } - { - label = "shutdown"; - icon = "${pkgs.tgc.wleave}/share/wleave/icons/shutdown.svg"; - action = "systemctl poweroff"; - text = "Shutdown"; - keybind = "s"; - } - { - label = "reboot"; - icon = "${pkgs.tgc.wleave}/share/wleave/icons/reboot.svg"; - action = "systemctl reboot"; - text = "Reboot"; - keybind = "r"; - } + config = lib.mkIf config.zaphyra.programs.wleave.enable { + home.packages = [ + pkgs.tgc.wleave ]; - }; - home.file."${config.xdg.configHome}/wleave/style.css".text = '' - * { - font-family: "Adwaita Sans", "Symbols Nerd Font"; - outline: none; - color: white; - } + xdg.configFile = { + "wleave/layout.json".text = builtins.toJSON { + no-version-info = true; + css = "${config.xdg.configHome}/wleave/style.css"; + close-on-lost-focus = true; + buttons-per-row = "1/1"; + margin-top = 380; + margin-bottom = 380; + buttons = [ + { + label = "lock"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/lock.svg"; + action = "loginctl lock-session"; + text = "Lock"; + keybind = "l"; + } + { + label = "suspend"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/suspend.svg"; + action = "systemctl suspend"; + text = "Suspend"; + keybind = "u"; + } + { + label = "logout"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/logout.svg"; + action = "loginctl terminate-user $USER"; + text = "Logout"; + keybind = "e"; + } + { + label = "shutdown"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/shutdown.svg"; + action = "systemctl poweroff"; + text = "Shutdown"; + keybind = "s"; + } + { + label = "reboot"; + icon = "${pkgs.tgc.wleave}/share/wleave/icons/reboot.svg"; + action = "systemctl reboot"; + text = "Reboot"; + keybind = "r"; + } + ]; + }; + + "wleave/style.css".text = '' + * { + font-family: "Adwaita Sans", "Symbols Nerd Font"; + outline: none; + color: white; + } - window { - background-color: @background-color; - } + window { + background-color: @background-color; + } - button { - color: rgb(190, 190, 190); - background: @button-color; - border: 1px solid @border-color; - border-radius: 10px; - padding: 10px; - margin: 10px; - } + button { + color: rgb(190, 190, 190); + background: @button-color; + border: 1px solid @border-color; + border-radius: 10px; + padding: 10px; + margin: 10px; + } - button:hover { - border-color: @border-color; - background: @button-hover-color; - } + button:hover { + border-color: @border-color; + background: @button-hover-color; + } - button:focus { - border: 2px solid @accent-border-color; - background: @button-hover-color; - } + button:focus { + border: 2px solid @accent-border-color; + background: @button-hover-color; + } - button label.action-name { - margin-top: 20px; - font-size: 18pt; - font-weight: 300; - } - ''; + button label.action-name { + margin-top: 20px; + font-size: 18pt; + font-weight: 300; + } + ''; + }; + }; }
diff --git a/config/home/zaphyra/programs/yazi.nix b/config/home/zaphyra/programs/yazi.nix @@ -1,37 +1,43 @@ -_: +{ + config, + lib, + ... +}: { - programs.yazi = { - enable = true; - settings = { - mgr = { - show_hidden = false; - sort_by = "natural"; - sort_dir_first = true; - sort_reverse = true; - linemode = "size_and_mtime"; + options.zaphyra.programs.yazi.enable = lib.mkEnableOption "Enable yazi file-browser"; + + config = lib.mkIf config.zaphyra.programs.yazi.enable { + programs.yazi = { + enable = true; + settings = { + mgr = { + show_hidden = false; + sort_by = "natural"; + sort_dir_first = true; + sort_reverse = true; + linemode = "size_and_mtime"; + }; }; - }; - initLua = '' - -- ~/.config/yazi/init.lua - function Linemode:size_and_mtime() - local time = math.floor(self._file.cha.mtime or 0) - if time == 0 then - time = "" - elseif os.date("%Y", time) == os.date("%Y") then - time = os.date("%b %d %H:%M", time) - else - time = os.date("%b %d %Y", time) - end + initLua = '' + -- ~/.config/yazi/init.lua + function Linemode:size_and_mtime() + local time = math.floor(self._file.cha.mtime or 0) + if time == 0 then + time = "" + elseif os.date("%Y", time) == os.date("%Y") then + time = os.date("%b %d %H:%M", time) + else + time = os.date("%b %d %Y", time) + end - local size = self._file:size() - return string.format("%s %s", size and ya.readable_size(size) or "-", time) - end - ''; + local size = self._file:size() + return string.format("%s %s", size and ya.readable_size(size) or "-", time) + end + ''; + }; }; - # programs.sherlock.settings.ignore = "Yazi"; - }
diff --git a/config/home/zaphyra/programs/yt-dlp.nix b/config/home/zaphyra/programs/yt-dlp.nix @@ -1,17 +1,27 @@ { + config, + systemConfig, + lib, pkgs, ... }: { - home.shellAliases.yt-dlp-audio = "yt-dlp --format bestaudio -x --audio-format opus --add-metadata --embed-thumbnail"; + options.zaphyra.programs.yt-dlp.enable = lib.mkOption { + type = lib.types.bool; + default = systemConfig.modules.presets.graphical.enable; + }; - home.packages = with pkgs; [ - yt-dlp - (pkgs.writeShellScriptBin "youtube-dl" '' - exec ${pkgs.yt-dlp}/bin/yt-dlp --compat-options youtube-dl "$@" - '') - ]; + config = lib.mkIf config.zaphyra.programs.yt-dlp.enable { + home.packages = with pkgs; [ + yt-dlp + (pkgs.writeShellScriptBin "youtube-dl" '' + exec ${pkgs.yt-dlp}/bin/yt-dlp --compat-options youtube-dl "$@" + '') + ]; + + home.shellAliases.yt-dlp-audio = "yt-dlp --format bestaudio -x --audio-format opus --add-metadata --embed-thumbnail"; + }; }
diff --git a/config/home/zaphyra/programs/zathura.nix b/config/home/zaphyra/programs/zathura.nix @@ -1,10 +1,16 @@ { + config, + lib, pkgs, ... }: { - home.packages = [ pkgs.zathura ]; + options.zaphyra.programs.zathura.enable = lib.mkEnableOption "zathura pdf-viewer"; + + config = lib.mkIf config.zaphyra.programs.zathura.enable { + home.packages = [ pkgs.zathura ]; + }; }
diff --git a/config/home/zaphyra/programs/zoxide.nix b/config/home/zaphyra/programs/zoxide.nix @@ -1,23 +1,31 @@ { config, + lib, ... }: { - home.persistence."/nix/persist/home/${config.home.username}".directories = [ - "zoxide/.local/share/zoxide" - ]; - - programs.zoxide = { - enable = true; - enableFishIntegration = true; - enableZshIntegration = true; + options.zaphyra.programs.zoxide.enable = lib.mkOption { + type = lib.types.bool; + default = true; }; - home.shellAliases = { - "cd" = "z"; - "cdi" = "zi"; + config = lib.mkIf config.zaphyra.programs.zoxide.enable { + programs.zoxide = { + enable = true; + enableFishIntegration = true; + enableZshIntegration = true; + }; + + home.shellAliases = { + "cd" = "z"; + "cdi" = "zi"; + }; + + home.persistence."/nix/persist/home/${config.home.username}".directories = [ + "zoxide/.local/share/zoxide" + ]; }; }
diff --git a/config/home/zaphyra/programs/zsh.nix b/config/home/zaphyra/programs/zsh.nix @@ -1,44 +1,48 @@ { config, - pkgs, lib, + pkgs, ... }: { - home.packages = [ - pkgs.zsh - (lib.lowPrio pkgs.zsh-completions) - ]; - - programs.zsh = { - enable = true; - enableCompletion = true; - enableVteIntegration = true; - - dotDir = ".config/zsh"; - - history = { - path = "${config.xdg.dataHome}/zsh/zsh_history"; - save = 100000000; - size = 1000000000; - expireDuplicatesFirst = true; - ignoreDups = true; - share = true; - }; + options.zaphyra.programs.zsh.enable = lib.mkEnableOption "zsh shell"; + + config = lib.mkIf config.zaphyra.programs.zsh.enable { + home.packages = [ + pkgs.zsh + (lib.lowPrio pkgs.zsh-completions) + ]; - oh-my-zsh = { + programs.zsh = { enable = true; - plugins = [ - "git" - "gitfast" - "sudo" - "systemd" - ]; - extraConfig = '' - zstyle ':completion:*' menu select - ''; + enableCompletion = true; + enableVteIntegration = true; + + dotDir = ".config/zsh"; + + history = { + path = "${config.xdg.dataHome}/zsh/zsh_history"; + save = 100000000; + size = 1000000000; + expireDuplicatesFirst = true; + ignoreDups = true; + share = true; + }; + + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "gitfast" + "sudo" + "systemd" + ]; + extraConfig = '' + zstyle ':completion:*' menu select + ''; + }; }; };
diff --git a/config/home/zaphyra/services/swaync.nix b/config/home/zaphyra/services/swaync.nix @@ -2,15 +2,12 @@ config, lib, pkgs, - homeManagerModules, ... }: { - imports = [ - homeManagerModules.zaphyra.programs.wleave - ]; + zaphyra.programs.wleave.enable = true; services.swaync = { enable = true;
diff --git a/config/home/zaphyra/services/waybar.nix b/config/home/zaphyra/services/waybar.nix @@ -1,6 +1,5 @@ { config, - homeManagerModules, pkgs, lib, ... @@ -8,10 +7,10 @@ { - imports = with homeManagerModules.zaphyra; [ - programs.networkManagerDmenu - programs.nmgui - ]; + zaphyra.programs = { + networkManagerDmenu.enable = true; + nmgui.enable = true; + }; programs.waybar = { enable = true;
diff --git a/config/home/zaphyra/services/wpaperd.nix b/config/home/zaphyra/services/wpaperd.nix @@ -21,23 +21,31 @@ transition.bounce = { }; }; - any.path = pkgs.buildEnv { - name = "nixos-artwork"; - paths = lib.pipe pkgs.nixos-artwork.wallpapers [ - lib.attrNames - (lib.remove "override") - (lib.remove "overrideDerivation") - # removed because too bright - (lib.remove "binary-white") - (lib.remove "catppuccin-latte") - (lib.remove "moonscape") - (lib.remove "nineish-catppuccin-latte") - (lib.remove "nineish-catppuccin-latte-alt") - (lib.remove "nineish-solarized-light") - (lib.remove "nineish") - (lib.remove "simple-light-gray") - (map (name: "${pkgs.nixos-artwork.wallpapers.${name}}/share/backgrounds/nixos")) + any.path = pkgs.symlinkJoin { + name = "backgrounds"; + paths = with pkgs.nixos-artwork.wallpapers; [ + binary-black + binary-blue + binary-red + + nineish + nineish-solarized-dark + nineish-dark-gray + nineish-catppuccin-mocha-alt + nineish-catppuccin-mocha + nineish-catppuccin-frappe-alt + nineish-catppuccin-frappe + nineish-catppuccin-macchiato-alt + nineish-catppuccin-macchiato + + simple-red + simple-dark-gray + simple-blue + + dracula + gradient-grey ]; + stripPrefix = "/share/backgrounds/nixos"; }; }; };
diff --git a/config/nixos/modules/gnomeMinimal.nix b/config/nixos/modules/gnomeMinimal.nix @@ -307,7 +307,7 @@ in "accounts-daemon.service" ]; conflicts = [ - "getty@${pkgs.gdm.initialVT}.service" + "getty@1.service" "plymouth-quit.service" ]; onFailure = [ "plymouth-quit.service" ]; @@ -316,7 +316,7 @@ in "systemd-logind.service" "systemd-user-sessions.service" "systemd-machined.service" - "getty@${pkgs.gdm.initialVT}.service" + "getty@1.service" "acpid.service" "plymouth-quit.service" "plymouth-start.service"
diff --git a/config/nixos/modules/hardware/video/intel.nix b/config/nixos/modules/hardware/video/intel.nix @@ -1,4 +1,5 @@ { + hostConfig, povSelf, config, lib, @@ -18,21 +19,24 @@ in }; config = lib.mkIf cfg.enable { - hardware.intelgpu.driver = "xe"; + hardware = { + #intelgpu.driver = "xe"; + graphics = { + enable = true; + enable32Bit = true; + extraPackages = with pkgs; [ + libvdpau-va-gl + vpl-gpu-rt + libva + intel-media-driver + ]; + }; + }; services.xserver.videoDrivers = [ "intel" ]; environment.systemPackages = [ pkgs.vulkan-validation-layers ]; - hardware.graphics = { - enable = true; - enable32Bit = true; - extraPackages = with pkgs; [ - libvdpau-va-gl - vpl-gpu-rt - libva - ]; - }; }; }
diff --git a/config/nixos/modules/presets/graphical/typeNiri.nix b/config/nixos/modules/presets/graphical/typeNiri.nix @@ -32,7 +32,9 @@ in }; }; - security.polkit.enable = true; + services.gnome.gnome-keyring.enable = false; + + security.soteria.enable = true; programs = { dconf.enable = true;
diff --git a/config/nixos/modules/presets/zaphyra/dnsServer.nix b/config/nixos/modules/presets/zaphyra/dnsServer.nix @@ -52,6 +52,20 @@ in in { + "fc9f.de" = { + NS = [ + "ns1.fc9f.de." + ]; + SOA = { + nameServer = "ns1.fc9f.de."; + adminEmail = "dns@zaphyra.eu"; # Email address with a real `@`! + serial = 0; + }; + subdomains = { + ns1 = host inputs.self.hosts.morio.networking.ip4Address inputs.self.hosts.morio.networking.ip6Address; + ns2 = host inputs.self.hosts.novus.networking.ip4Address inputs.self.hosts.novus.networking.ip6Address; + }; + }; "zaphyra.eu" = { inherit SOA
diff --git a/config/nixos/modules/presets/zaphyra/enable.nix b/config/nixos/modules/presets/zaphyra/enable.nix @@ -112,7 +112,7 @@ in journald.extraConfig = "SystemMaxUse=2.5G"; - logind.killUserProcesses = lib.mkDefault true; + logind.settings.Login.KillUserProcesses = lib.mkDefault true; nginx = { enable = lib.mkDefault true;
diff --git a/config/nixos/modules/presets/zaphyra/mailServer.nix b/config/nixos/modules/presets/zaphyra/mailServer.nix @@ -139,7 +139,7 @@ in }; }) cfg.extraDomains); - systemd.services.dovecot2.after = [ "sops-install-secrets.service" ]; + systemd.services.dovecot.after = [ "sops-install-secrets.service" ]; sops.secrets = { "mailPasswords/katja@zaphyra.eu" = { }; @@ -196,7 +196,7 @@ in security.acme.certs."${cfg.hostName}".reloadServices = [ "postfix.service" - "dovecot2.service" + "dovecot.service" ]; services = { @@ -215,6 +215,7 @@ in mailserver = { enable = true; + stateVersion = 3; fqdn = cfg.hostName; openFirewall = true;
diff --git a/config/nixos/modules/programs/AusweisApp.nix b/config/nixos/modules/programs/AusweisApp.nix @@ -20,7 +20,7 @@ in config = lib.mkIf cfg.enable { networking.firewall.allowedUDPPorts = [ 24727 ]; - environment.systemPackages = [ pkgs.AusweisApp2 ]; + environment.systemPackages = [ pkgs.ausweisapp ]; }; }
diff --git a/config/nixos/modules/services/greetd.nix b/config/nixos/modules/services/greetd.nix @@ -148,7 +148,7 @@ in services.greetd.settings = { default_session = { command = lib.concatStringsSep " " [ - (lib.getExe pkgs.greetd.tuigreet) + (lib.getExe pkgs.tuigreet) "--no-xsession-wrapper" "--remember" "--remember-session"
diff --git a/config/nixos/modules/services/keyd.nix b/config/nixos/modules/services/keyd.nix @@ -31,8 +31,10 @@ in "leftcontrol" = "leftalt"; "leftalt" = "leftcontrol"; "rightalt" = "rightcontrol"; - "sysrq" = "rightalt"; - "rightcontrol" = "sysrq"; + "rightcontrol" = "rightalt"; + #"rightalt" = "rightcontrol"; + #"sysrq" = "rightalt"; + #"rightcontrol" = "sysrq"; "s+d" = "oneshot(shift)"; "f+j" = "space"; "j+k" = "backspace"; @@ -54,7 +56,10 @@ in }; }; BlackShark = { - ids = [ "0c45:8006:d510c59d" ]; + ids = [ + "0c45:8006:d510c59d" + "04d9:a131:ae490786" + ]; settings.main = { "leftcontrol" = "leftalt"; "leftalt" = "leftcontrol";
diff --git a/config/nixos/modules/users/zaphyra.nix b/config/nixos/modules/users/zaphyra.nix @@ -45,91 +45,51 @@ in } (lib.mkIf config.modules.homeManager.enable { - home-manager.users.zaphyra.imports = lib.concatLists [ - [ - homeManagerModules.common.home - homeManagerModules.zaphyra.home - ] - - (lib.optionals config.modules.filesystem.impermanence.home.enable [ - homeManagerModules.zaphyra.impermanence - ]) - - (lib.optionals config.modules.presets.graphical.enable ( - with homeManagerModules.zaphyra; + home-manager.users.zaphyra = { + imports = lib.concatLists [ [ - configure.xdg - - services.owntone - - programs.ghostty - programs.ssh - programs.git - programs.gpg - homeManagerModules.common.programs.gpg - - programs.languages.nix - programs.languages.nimlang - programs.languages.golang - programs.languages.javascript - - programs.yt-dlp - programs.bitwarden-cli - programs.chaosctl - - programs.pipewire - - programs.firefox - programs.thunderbird - - programs.errands - programs.gnome-calendar - - programs.fractal - programs.dino - programs.gajim - programs.tuba - programs.profanity - - programs.nautilus - - programs.typst - programs.ocrmypdf - programs.papers - programs.pdfarranger - programs.libreoffice - programs.apostrophe - programs.gnome-text-editor - - programs.plattenalbum - programs.celluloid - programs.loupe - programs.gnome-obfuscate - ] - )) - - (lib.optionals (config.modules.presets.graphical.type == "gnomeMinimal") ( - with homeManagerModules.zaphyra; - [ - configure.gnome - - gnomeExtensions.dash-to-dock - gnomeExtensions.just-perfection - gnomeExtensions.space-bar - gnomeExtensions.search-light - gnomeExtensions.emoji-copy - gnomeExtensions.pip-on-top - gnomeExtensions.bluetoothBatteryMeter + homeManagerModules.common.home + homeManagerModules.zaphyra.home ] - )) - (lib.optionals (config.modules.presets.graphical.type == "niri") ( - with homeManagerModules.zaphyra; - [ - configure.niri - ] - )) - ]; + (lib.optionals config.modules.filesystem.impermanence.home.enable [ + homeManagerModules.zaphyra.impermanence + ]) + + (lib.optionals config.modules.presets.graphical.enable ( + with homeManagerModules.zaphyra; + [ + configure.xdg + + services.owntone + + homeManagerModules.common.programs.gpg + ] + )) + + (lib.optionals (config.modules.presets.graphical.type == "gnomeMinimal") ( + with homeManagerModules.zaphyra; + [ + configure.gnome + + gnomeExtensions.dash-to-dock + gnomeExtensions.just-perfection + gnomeExtensions.space-bar + gnomeExtensions.search-light + gnomeExtensions.emoji-copy + gnomeExtensions.pip-on-top + gnomeExtensions.bluetoothBatteryMeter + ] + )) + + (lib.optionals (config.modules.presets.graphical.type == "niri") ( + with homeManagerModules.zaphyra; + [ + configure.niri + ] + )) + ]; + }; }) ] );
diff --git a/config/nixos/modules/websites/continuwuity.zaphyra.eu.nix b/config/nixos/modules/websites/continuwuity.zaphyra.eu.nix @@ -4,6 +4,8 @@ config, lib, pkgs, + inputs, + hostConfig, ... }: @@ -50,6 +52,7 @@ in services.matrix-continuwuity = { enable = true; + package = inputs.continuwuity.packages.${hostConfig.system}.default; settings = { global = { address = [ "::1" ]; @@ -73,6 +76,12 @@ in }; matrixClientConfig = { "m.homeserver".base_url = "https://${cfg.subdomain}.${cfg.domain}/"; + "org.matrix.msc4143.rtc_foci" = [ + { + type = "livekit"; + livekit_service_url = "https://livekit.rtc.matrix.nwex.de"; + } + ]; }; in {
diff --git a/config/nixos/modules/websites/ente.zaphyra.eu.nix b/config/nixos/modules/websites/ente.zaphyra.eu.nix @@ -74,7 +74,6 @@ in services.ente = { web = { enable = true; - package = pkgs.unstable.ente-web; domains = lib.genAttrs subdomains ( name: lib.concatStringsSep "." [ @@ -86,7 +85,6 @@ in }; api = { enable = true; - package = pkgs.unstable.museum; enableLocalDB = true; nginx.enable = true; domain = "api.${cfg.subdomain}.${cfg.domain}"; @@ -106,9 +104,10 @@ in services.nginx = { enable = true; virtualHosts = - (lib.genAttrs' subdomains ( + (lib.genAttrs' (lib.filter (name: name != "albums") subdomains) ( name: lib.nameValuePair "${name}.${cfg.subdomain}.${cfg.domain}" { + serverAliases = lib.mkIf (name == "photos") [ "albums.${cfg.subdomain}.${cfg.domain}" ]; useACMEHost = config.networking.fqdn; forceSSL = true; kTLS = true;
diff --git a/config/nixos/modules/websites/music.zaphyra.dn42.nix b/config/nixos/modules/websites/music.zaphyra.dn42.nix @@ -66,7 +66,6 @@ in FFmpegPath = lib.getExe pkgs.ffmpeg; }; }; - security.acme.certs."${cfg.subdomain}.${cfg.domain}" = { server = "https://acme.burble.dn42/v1/dn42/acme/directory"; validMinDays = 20;
diff --git a/config/nixos/modules/websites/photos.zaphyra.eu.nix b/config/nixos/modules/websites/photos.zaphyra.eu.nix @@ -0,0 +1,143 @@ +{ + povSelf, + hostConfig, + config, + pkgs, + lib, + dnsNix, + ... +}: + +let + inherit (lib) types; + cfg = lib.getAttrFromPath povSelf config; + +in +{ + + options = { + enable = { + type = types.bool; + default = false; + }; + subdomain = { + type = types.str; + default = "photos"; + }; + domain = { + type = types.str; + default = "zaphyra.eu"; + }; + }; + + config = lib.mkIf cfg.enable ( + let + galleryConfig = { + globalSection = { + SourceDir = "/mnt/photos.zaphyra.eu"; + TargetDir = "/var/lib/gallery"; + MogrifyCmd = "${pkgs.imagemagick}/bin/mogrify"; + }; + + sections = { + Thumbnails = { + SmallHeight = "200"; + SmallQuality = "90"; + }; + + Site = { + Author = "zaphyra"; + Name = "zaphyra.photos"; + Description = "photos that i made"; + Tags = "zaphyra, zaphyra bahnbilder"; + ShowOriginalsButton = "true"; + SymlinkOriginals = "true"; + EnableJS = "true"; + }; + }; + }; + + galleryConfigFile = pkgs.writeText "gallery.ini" ( + lib.generators.toINIWithGlobalSection { } galleryConfig + ); + + in + { + dns.zones."${cfg.domain}".subdomains."${cfg.subdomain}".CNAME = [ "${config.networking.fqdn}." ]; + + modules.filesystem.impermanence.system.dirs = [ "/var/lib/private/gallery" ]; + + fileSystems."/mnt/photos.zaphyra.eu" = { + device = "/home/zaphyra/Pictures/photos.zaphyra.eu"; + fsType = "fuse.bindfs"; + options = [ + "ro" + "perms=0000:a+rX" + ]; + }; + fileSystems."/mnt/photos.zaphyra.eu-webdir" = { + device = "/var/lib/private/gallery"; + fsType = "fuse.bindfs"; + options = [ + "ro" + "perms=0000:a+rX" + ]; + }; + + systemd.services.gallery = { + #startAt = "*-*-* *:0/10:00"; + wantedBy = [ "multi-user.target" ]; + requires = [ "local-fs.target" ]; + path = [ pkgs.imagemagick ]; + + serviceConfig = { + Type = "oneshot"; + DynamicUser = true; + + ExecStart = "${pkgs.gallery}/bin/gallery ${galleryConfigFile}"; + + User = "gallery"; + Group = "gallery"; + + StateDirectory = "gallery"; + StateDirectoryMode = "755"; + + NoNewPrivileges = true; + PrivateTmp = true; + PrivateDevices = true; + + RestrictNamespaces = true; + RestrictRealtime = true; + + ProtectSystem = "full"; + ProtectControlGroups = true; + ProtectKernelModules = true; + ProtectKernelTunables = true; + + DevicePolicy = "closed"; + LockPersonality = true; + }; + }; + + systemd.services.nginx.serviceConfig.BindReadOnlyPaths = [ ]; + + services.nginx = { + enable = true; + virtualHosts."${cfg.subdomain}.${cfg.domain}" = { + useACMEHost = "${config.networking.fqdn}"; + forceSSL = true; + kTLS = true; + root = "/mnt/photos.zaphyra.eu-webdir"; + locations."~* \.html$".extraConfig = '' + add_header Last-Modified $date_gmt; + add_header Cache-Control 'private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; + if_modified_since off; + expires off; + etag off; + ''; + }; + }; + } + ); + +}
diff --git a/flake.lock b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "advisory-db": { + "flake": false, + "locked": { + "lastModified": 1761112158, + "narHash": "sha256-RIXu/7eyKpQHjsPuAUODO81I4ni8f+WYSb7K4mTG6+0=", + "owner": "rustsec", + "repo": "advisory-db", + "rev": "58f3aaec0e1776f4a900737be8cd7cb00972210d", + "type": "github" + }, + "original": { + "owner": "rustsec", + "repo": "advisory-db", + "type": "github" + } + }, "airpodsctl": { "inputs": { "nixpkgs": [ @@ -20,6 +36,142 @@ "url": "https://git.zaphyra.eu/airpodsctl" } }, + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + } + }, + "base16-fish_2": { + "flake": false, + "locked": { + "lastModified": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1752979451, + "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-helix_2": { + "flake": false, + "locked": { + "lastModified": 1752979451, + "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "base16-vim_2": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "base16_2": { + "inputs": { + "fromYaml": "fromYaml_2" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, "blobs": { "flake": false, "locked": { @@ -52,8 +204,49 @@ "type": "gitlab" } }, + "continuwuity": { + "inputs": { + "advisory-db": "advisory-db", + "crane": "crane", + "fenix": "fenix", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1766314730, + "narHash": "sha256-HIajaptQe3pTE+c5lDr2yQO5FG4NyZ2GU88d8AWJ0Eg=", + "ref": "refs/heads/main", + "rev": "7fa4fa98628593c1a963f5aa8dbc3657d604b047", + "revCount": 5806, + "type": "git", + "url": "https://forgejo.ellis.link/continuwuation/continuwuity" + }, + "original": { + "type": "git", + "url": "https://forgejo.ellis.link/continuwuation/continuwuity" + } + }, "crane": { "locked": { + "lastModified": 1760924934, + "narHash": "sha256-tuuqY5aU7cUkR71sO2TraVKK2boYrdW3gCSXUkF4i44=", + "owner": "ipetkov", + "repo": "crane", + "rev": "c6b4d5308293d0d04fcfeee92705017537cad02f", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "crane_2": { + "locked": { "lastModified": 1731098351, "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", "owner": "ipetkov", @@ -67,7 +260,7 @@ "type": "github" } }, - "crane_2": { + "crane_3": { "locked": { "lastModified": 1754269165, "narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=", @@ -95,11 +288,11 @@ ] }, "locked": { - "lastModified": 1756719547, - "narHash": "sha256-N9gBKUmjwRKPxAafXEk1EGadfk2qDZPBQp4vXWPHINQ=", + "lastModified": 1762286984, + "narHash": "sha256-9I2H9x5We6Pl+DBYHjR1s3UT8wgwcpAH03kn9CqtdQc=", "owner": "serokell", "repo": "deploy-rs", - "rev": "125ae9e3ecf62fb2c0fd4f2d894eb971f1ecaed2", + "rev": "9c870f63e28ec1e83305f7f6cb73c941e699f74f", "type": "github" }, "original": { @@ -115,11 +308,11 @@ ] }, "locked": { - "lastModified": 1758287904, - "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", + "lastModified": 1764350888, + "narHash": "sha256-6Rp18zavTlnlZzcoLoBTJMBahL2FycVkw2rAEs3cQvo=", "owner": "nix-community", "repo": "disko", - "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", + "rev": "2055a08fd0e2fd41318279a5355eb8a161accf26", "type": "github" }, "original": { @@ -135,11 +328,11 @@ ] }, "locked": { - "lastModified": 1758287904, - "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", + "lastModified": 1764350888, + "narHash": "sha256-6Rp18zavTlnlZzcoLoBTJMBahL2FycVkw2rAEs3cQvo=", "owner": "nix-community", "repo": "disko", - "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", + "rev": "2055a08fd0e2fd41318279a5355eb8a161accf26", "type": "github" }, "original": { @@ -190,6 +383,60 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "continuwuity", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1761115517, + "narHash": "sha256-Fev/ag/c3Fp3JBwHfup3lpA5FlNXfkoshnQ7dssBgJ0=", + "owner": "nix-community", + "repo": "fenix", + "rev": "320433651636186ea32b387cff05d6bbfa30cea7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1758112371, + "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "firefox-gnome-theme_2": { + "flake": false, + "locked": { + "lastModified": 1758112371, + "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, "firefoxGnomeTheme": { "flake": false, "locked": { @@ -207,7 +454,8 @@ "type": "github" } }, - "flakeCompat": { + "flake-compat": { + "flake": false, "locked": { "lastModified": 1747046372, "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", @@ -218,6 +466,99 @@ }, "original": { "owner": "edolstra", + "ref": "master", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1760948891, + "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "4524271976b625a4a605beefd893f270620fd751", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "stylixUnstable", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "4524271976b625a4a605beefd893f270620fd751", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flakeCompat": { + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -229,11 +570,11 @@ ] }, "locked": { - "lastModified": 1759362264, - "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", + "lastModified": 1763759067, + "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", + "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", "type": "github" }, "original": { @@ -297,6 +638,58 @@ "url": "https://git.zaphyra.eu/flauschehorn.sexy" } }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "fromYaml_2": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gallery": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748253770, + "narHash": "sha256-/X42Pj/eDJx/a/Ws80WIew2N4VeiYzmQUHPrNFax/LM=", + "ref": "refs/heads/main", + "rev": "16e272e436a7343fa9a7e3b69ce58999cd868ec5", + "revCount": 42, + "type": "git", + "url": "https://git.zaphyra.eu/gallery" + }, + "original": { + "type": "git", + "url": "https://git.zaphyra.eu/gallery" + } + }, "git-hooks": { "inputs": { "flake-compat": [ @@ -310,11 +703,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1763319842, + "narHash": "sha256-YG19IyrTdnVn0l3DvcUYm85u3PaqBt6tI6VvolcuHnA=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "7275fa67fbbb75891c16d9dee7d88e58aea2d761", "type": "github" }, "original": { @@ -336,11 +729,11 @@ ] }, "locked": { - "lastModified": 1758108966, - "narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=", + "lastModified": 1763988335, + "narHash": "sha256-QlcnByMc8KBjpU37rbq5iP7Cp97HvjRP0ucfdh+M4Qc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b", + "rev": "50b9238891e388c9fdc6a5c49e49c42533a1b5ce", "type": "github" }, "original": { @@ -415,6 +808,44 @@ "type": "github" } }, + "gnome-shell": { + "flake": false, + "locked": { + "host": "gitlab.gnome.org", + "lastModified": 1762869044, + "narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, + "gnome-shell_2": { + "flake": false, + "locked": { + "host": "gitlab.gnome.org", + "lastModified": 1762869044, + "narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, "gpxMap": { "inputs": { "nixpkgs": [ @@ -483,16 +914,16 @@ ] }, "locked": { - "lastModified": 1758463745, - "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", + "lastModified": 1764398914, + "narHash": "sha256-YPrpwlVQidzQlMh0OnquaJR+58rKe9YNnuRis293Ilo=", "owner": "nix-community", "repo": "home-manager", - "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", + "rev": "d0c5fdc48db6f19471b8adc954eca09194e68036", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.05", + "ref": "release-25.11", "repo": "home-manager", "type": "github" } @@ -504,11 +935,11 @@ ] }, "locked": { - "lastModified": 1760312644, - "narHash": "sha256-U9SkK45314urw9P7MmjhEgiQwwD/BTj+T3HTuz1JU1Q=", + "lastModified": 1764361670, + "narHash": "sha256-jgWzgpIaHbL3USIq0gihZeuy1lLf2YSfwvWEwnfAJUw=", "owner": "nix-community", "repo": "home-manager", - "rev": "e121f3773fa596ecaba5b22e518936a632d72a90", + "rev": "780be8ef503a28939cf9dc7996b48ffb1a3e04c6", "type": "github" }, "original": { @@ -520,17 +951,17 @@ }, "iio-niri": { "inputs": { - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1762776966, - "narHash": "sha256-VX1pdkF+GuC80CiX/Xqaa7QRzn9vhKwNr7rDLxuNi5o=", + "lastModified": 1764340398, + "narHash": "sha256-Sl/JqcKN7Mnc7aAeMQQbSjFyUHhvkg+Yx/scr9DB4M8=", "owner": "Zhaith-Izaliel", "repo": "iio-niri", - "rev": "d120e334939934ad24ddebf81a74a16ea0d515e3", + "rev": "6b287806c44830a9c517817c9cf9f6d07a953aea", "type": "github" }, "original": { @@ -556,7 +987,7 @@ }, "lanzaboote": { "inputs": { - "crane": "crane", + "crane": "crane_2", "flake-compat": [ "flakeCompat" ], @@ -666,11 +1097,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1759395653, - "narHash": "sha256-sv9J1z6CrTPf9lRJLyCN90fZVdQz7LFeX7pIlInH8BQ=", + "lastModified": 1764399944, + "narHash": "sha256-FC9eYtSmplgxllCX4/3hJq5J3sXWKLSc7at8ZUxycVw=", "owner": "YaLTeR", "repo": "niri", - "rev": "ba6e5e082a79901dc89b0d49c5da1b769d652aec", + "rev": "b35bcae35b3f9665043c335e55ed5828af77db85", "type": "github" }, "original": { @@ -693,11 +1124,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1760328462, - "narHash": "sha256-LAmGgkv25DFSmYyIbcAMGGqKb8ZpFIpsoD5HqtpFPFo=", + "lastModified": 1764405884, + "narHash": "sha256-TnvBRPmcpcyinvLgsitHS7w5soSa6yNBfRYEI2TK1Ts=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "d8ed6b75d4ff881bf04c805964fd6362c2282ecb", + "rev": "10aae4855ee275f7d80d85f4328c24265fb20f1f", "type": "github" }, "original": { @@ -738,11 +1169,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1760106635, - "narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=", + "lastModified": 1764328224, + "narHash": "sha256-hFyF1XQd+XrRx7WZCrGJp544dykexD8Q5SrJJZpEQYg=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903", + "rev": "d62603a997438e19182af69d3ce7be07565ecad4", "type": "github" }, "original": { @@ -753,20 +1184,50 @@ }, "nixpkgs": { "locked": { - "lastModified": 1760139962, - "narHash": "sha256-4xggC56Rub3WInz5eD7EZWXuLXpNvJiUPahGtMkwtuc=", + "lastModified": 1764338033, + "narHash": "sha256-1LNGcU+aTbATD3BPCf7U1KsP1CjCH+ZWqM6JH0sZ6Q0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7e297ddff44a3cc93673bb38d0374df8d0ad73e4", + "rev": "ba9b83e5fb4b552a423d24dabe5ccb47a9c89901", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-25.05", + "ref": "nixos-25.11", "repo": "nixpkgs", "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1743296961, + "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1730741070, @@ -801,11 +1262,11 @@ }, "nixpkgsUnstable": { "locked": { - "lastModified": 1760256791, - "narHash": "sha256-uTpzDHRASEDeFUuToWSQ46Re8beXyG9dx4W36FQa0/c=", + "lastModified": 1764384123, + "narHash": "sha256-UoliURDJFaOolycBZYrjzd9Cc66zULEyHqGFH3QHEq0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "832e3b6db48508ae436c2c7bfc0cf914eac6938e", + "rev": "59b6c96beacc898566c9be1052ae806f3835f87d", "type": "github" }, "original": { @@ -815,6 +1276,56 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758998580, + "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", + "owner": "nix-community", + "repo": "NUR", + "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nur_2": { + "inputs": { + "flake-parts": [ + "stylixUnstable", + "flake-parts" + ], + "nixpkgs": [ + "stylixUnstable", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758998580, + "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", + "owner": "nix-community", + "repo": "NUR", + "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "oeffisearch": { "inputs": { "nixpkgs": [ @@ -822,11 +1333,11 @@ ] }, "locked": { - "lastModified": 1761067929, - "narHash": "sha256-OqVNtf2+cD9hvyjOaVUfMd3KvjknSXSAP0Z9Vp3c0zM=", + "lastModified": 1764603204, + "narHash": "sha256-VlCvPIdNGTwKJUCZdbVLct4dooGGfvDyzWjDeMwii7s=", "ref": "refs/heads/main", - "rev": "522a1f16f969c9c2457f6fc97374d8e47759470f", - "revCount": 295, + "rev": "6448693a2f30a9f5fa5423737c4cff05122daa53", + "revCount": 306, "type": "git", "url": "https://git.zaphyra.eu/oeffisearch" }, @@ -865,6 +1376,7 @@ "root": { "inputs": { "airpodsctl": "airpodsctl", + "continuwuity": "continuwuity", "deploy-rs": "deploy-rs", "disko": "disko", "diskoUnstable": "diskoUnstable", @@ -875,6 +1387,7 @@ "flakeUtils": "flakeUtils", "flakeyProfile": "flakeyProfile", "flauschehornSexy": "flauschehornSexy", + "gallery": "gallery", "gpxMap": "gpxMap", "haumea": "haumea", "homeManager": "homeManager", @@ -896,11 +1409,30 @@ "simpleNixosMailserverUnstable": "simpleNixosMailserverUnstable", "sopsNix": "sopsNix", "stagit": "stagit", + "stylix": "stylix", + "stylixUnstable": "stylixUnstable", "tgcNUR": "tgcNUR", "things": "things", "zaphyraWebsite": "zaphyraWebsite" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1761077270, + "narHash": "sha256-O1uTuvI/rUlubJ8AXKyzh1WSWV3qCZX0huTFUvWLN4E=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "39990a923c8bca38f5bd29dc4c96e20ee7808d5d", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "rust-overlay": { "inputs": { "nixpkgs": [ @@ -945,7 +1477,7 @@ }, "sherlock": { "inputs": { - "crane": "crane_2", + "crane": "crane_3", "flake-parts": [ "flakeParts" ], @@ -978,23 +1510,20 @@ ], "git-hooks": "git-hooks", "nixpkgs": [ - "nixpkgsUnstable" - ], - "nixpkgs-25_05": [ "nixpkgs" ] }, "locked": { - "lastModified": 1755110674, - "narHash": "sha256-PigqTAGkdBYXVFWsJnqcirrLeFqRFN4PFigLA8FzxeI=", + "lastModified": 1764185122, + "narHash": "sha256-+HUOwSIFLoyett2cvRjuFIbhobpHallfP9J2cia1apo=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "f5936247dbdb8501221978562ab0b302dd75456c", + "rev": "a14fe3b293ec2720e5b7fc72ad136d22967e12ba", "type": "gitlab" }, "original": { "owner": "simple-nixos-mailserver", - "ref": "nixos-25.05", + "ref": "nixos-25.11", "repo": "nixos-mailserver", "type": "gitlab" } @@ -1008,17 +1537,14 @@ "git-hooks": "git-hooks_2", "nixpkgs": [ "nixpkgsUnstable" - ], - "nixpkgs-25_05": [ - "nixpkgs" ] }, "locked": { - "lastModified": 1759489698, - "narHash": "sha256-2lT2i5ha23I2vrolEaBaAS/63ChgZPh181Awt6q1bDY=", + "lastModified": 1764381008, + "narHash": "sha256-s+/BuhPPSJHpPRcylqfW+3UFyYsHjAhKdtPSxusYn0U=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "6005d88bed7a5418f9772b4058a73cd0fd1e69a1", + "rev": "76bd7a85e78a9b8295782a9cf719ec3489d8eb55", "type": "gitlab" }, "original": { @@ -1034,11 +1560,11 @@ ] }, "locked": { - "lastModified": 1760240450, - "narHash": "sha256-sa9bS9jSyc4vH0jSWrUsPGdqtMvDwmkLg971ntWOo2U=", + "lastModified": 1764021963, + "narHash": "sha256-1m84V2ROwNEbqeS9t37/mkry23GBhfMt8qb6aHHmjuc=", "owner": "Mic92", "repo": "sops-nix", - "rev": "41fd1f7570c89f645ee0ada0be4e2d3c4b169549", + "rev": "c482a1c1bbe030be6688ed7dc84f7213f304f1ec", "type": "github" }, "original": { @@ -1067,6 +1593,105 @@ "url": "https://git.zaphyra.eu/stagit" } }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-parts": "flake-parts_3", + "gnome-shell": "gnome-shell", + "nixpkgs": [ + "nixpkgs" + ], + "nur": "nur", + "systems": "systems", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1764193603, + "narHash": "sha256-guX30TWe8HRG2qPFiM9893F2uTw4B8D/xkE6Mq7MiYg=", + "owner": "nix-community", + "repo": "stylix", + "rev": "9bf8725a3d65b3ff0ba68ce13779657f5095e36b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.11", + "repo": "stylix", + "type": "github" + } + }, + "stylixUnstable": { + "inputs": { + "base16": "base16_2", + "base16-fish": "base16-fish_2", + "base16-helix": "base16-helix_2", + "base16-vim": "base16-vim_2", + "firefox-gnome-theme": "firefox-gnome-theme_2", + "flake-parts": "flake-parts_4", + "gnome-shell": "gnome-shell_2", + "nixpkgs": [ + "nixpkgsUnstable" + ], + "nur": "nur_2", + "systems": "systems_2", + "tinted-foot": "tinted-foot_2", + "tinted-kitty": "tinted-kitty_2", + "tinted-schemes": "tinted-schemes_2", + "tinted-tmux": "tinted-tmux_2", + "tinted-zed": "tinted-zed_2" + }, + "locked": { + "lastModified": 1764254063, + "narHash": "sha256-V22JzkaTLF/GAL2LgqvOsJhAr8JbJsKaD8hnHjGwXfE=", + "owner": "nix-community", + "repo": "stylix", + "rev": "a1451bc40413870f0c7b576b751c1ca92055e323", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tgcNUR": { "inputs": { "emacs-overlay": "emacs-overlay", @@ -1078,16 +1703,17 @@ ] }, "locked": { - "dirtyRev": "6f0863f22b74ea5207a90879a98331632ad33437-dirty", - "dirtyShortRev": "6f0863f-dirty", - "lastModified": 1757583366, - "narHash": "sha256-7kcjri4H6o8NPt2NDUkZ7rqi5qCQ2H0gpX+spn+xQtA=", + "lastModified": 1762640116, + "narHash": "sha256-OlvxMNUVVLTGENgxulk2gp16Lq92dXfwYitOB6skuzk=", + "ref": "refs/heads/main", + "rev": "3c5fbbb5cb9c4cc4698216a566bc4db62d0ecdfc", + "revCount": 71, "type": "git", - "url": "file:///home/zaphyra/proj/tgc-nix-user-repository" + "url": "https://git.transgirl.cafe/zaphyra/tgc-nix-user-repository" }, "original": { "type": "git", - "url": "file:///home/zaphyra/proj/tgc-nix-user-repository" + "url": "https://git.transgirl.cafe/zaphyra/tgc-nix-user-repository" } }, "things": { @@ -1110,6 +1736,189 @@ "url": "https://git.zaphyra.eu/things" } }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-foot_2": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-kitty_2": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1757716333, + "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-schemes_2": { + "flake": false, + "locked": { + "lastModified": 1757716333, + "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1757811970, + "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-tmux_2": { + "flake": false, + "locked": { + "lastModified": 1757811970, + "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1757811247, + "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "tinted-zed_2": { + "flake": false, + "locked": { + "lastModified": 1757811247, + "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "continuwuity", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1760945191, + "narHash": "sha256-ZRVs8UqikBa4Ki3X4KCnMBtBW0ux1DaT35tgsnB1jM4=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "f56b1934f5f8fcab8deb5d38d42fd692632b47c2", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { @@ -1130,11 +1939,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1759707084, - "narHash": "sha256-0pkftKs6/LReNvxw7DVTN2AJEheZVgyeK0Aarbagi70=", + "lastModified": 1764366786, + "narHash": "sha256-yVCJ4Qe/JkdKDu0DddFdAQgDQVeF12nxH7zv3jtooV4=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "a9188e70bd748118b4d56a529871b9de5adb9988", + "rev": "b362a3873710a42f7ac2d8ba03772d8290733934", "type": "github" }, "original": {
diff --git a/flake.nix b/flake.nix @@ -2,15 +2,6 @@ description = "A flake for building our infra"; - # nixConfig = { - # extra-substituters = [ - # "http://lucorum.int.eukaryote.eu:5000" - # ]; - # extra-trusted-public-keys = [ - # "1.hydra.neverstable.net:WgtNg0z0FB7wuWp9nU4gKZpbkW0ug59NlhNp81X7GX0=" - # ]; - # }; - outputs = inputs: let @@ -59,6 +50,7 @@ inputs.things.overlays.default inputs.mqttWebUI.overlays.default inputs.airpodsctl.overlays.default + inputs.gallery.overlays.default inputs.iio-niri.overlays.default inputs.tgcNUR.overlays.default inputs.tgcNUR.overlays.nixpkgsUnstable @@ -227,7 +219,7 @@ flakeParts.inputs.nixpkgs-lib.follows = "nixpkgs"; # nixpkgs - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgsUnstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; nixos-hardware.url = "github:NixOS/nixos-hardware"; @@ -244,7 +236,7 @@ sopsNix.url = "github:Mic92/sops-nix"; sopsNix.inputs.nixpkgs.follows = "nixpkgs"; - stylix.url = "github:nix-community/stylix/release-25.05"; + stylix.url = "github:nix-community/stylix/release-25.11"; stylix.inputs.nixpkgs.follows = "nixpkgs"; stylixUnstable.url = "github:nix-community/stylix"; @@ -256,21 +248,19 @@ diskoUnstable.url = "github:nix-community/disko"; diskoUnstable.inputs.nixpkgs.follows = "nixpkgsUnstable"; - simpleNixosMailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05"; + simpleNixosMailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.11"; simpleNixosMailserver.inputs = { - nixpkgs.follows = "nixpkgsUnstable"; - nixpkgs-25_05.follows = "nixpkgs"; + nixpkgs.follows = "nixpkgs"; flake-compat.follows = "flakeCompat"; }; simpleNixosMailserverUnstable.url = "gitlab:simple-nixos-mailserver/nixos-mailserver"; simpleNixosMailserverUnstable.inputs = { nixpkgs.follows = "nixpkgsUnstable"; - nixpkgs-25_05.follows = "nixpkgs"; flake-compat.follows = "flakeCompat"; }; - homeManager.url = "github:nix-community/home-manager/release-25.05"; + homeManager.url = "github:nix-community/home-manager/release-25.11"; homeManager.inputs.nixpkgs.follows = "nixpkgs"; homeManagerUnstable.url = "github:nix-community/home-manager/master"; @@ -300,6 +290,9 @@ iio-niri.url = "github:Zhaith-Izaliel/iio-niri"; iio-niri.inputs.nixpkgs.follows = "nixpkgs"; + continuwuity.url = "git+https://forgejo.ellis.link/continuwuation/continuwuity"; + continuwuity.inputs.nixpkgs.follows = "nixpkgs"; + sherlock.url = "github:Skxxtz/sherlock/8485f8720352c8ba48a4d74d3d33c882f9c0b35b"; sherlock.inputs = { nixpkgs.follows = "nixpkgs"; @@ -307,6 +300,7 @@ }; tgcNUR.url = "git+https://git.transgirl.cafe/zaphyra/tgc-nix-user-repository"; + #tgcNUR.url = "git+file:///home/zaphyra/proj/tgc-nix-user-repository"; tgcNUR.inputs = { nixpkgs.follows = "nixpkgs"; nixpkgsUnstable.follows = "nixpkgsUnstable"; @@ -318,6 +312,9 @@ stagit.url = "git+https://git.zaphyra.eu/stagit"; stagit.inputs.nixpkgs.follows = "nixpkgs"; + gallery.url = "git+https://git.zaphyra.eu/gallery"; + gallery.inputs.nixpkgs.follows = "nixpkgs"; + flauschehornSexy.url = "git+https://git.zaphyra.eu/flauschehorn.sexy"; flauschehornSexy.inputs.nixpkgs.follows = "nixpkgs";
diff --git a/hosts/haueri/default.nix b/hosts/haueri/default.nix @@ -1,5 +1,4 @@ { - system = "x86_64-linux"; nixpkgsStable = true; @@ -26,16 +25,20 @@ }: { - specialisation.gnome.configuration = { - modules.presets.graphical.type = lib.mkForce "gnomeMinimal"; - }; + # specialisation.gnome.configuration = { + # modules.presets.graphical.type = lib.mkForce "gnomeMinimal"; + # }; boot.initrd.systemd.emergencyAccess = true; - # boot.loader.efi.canTouchEfiVariables = true; + boot.kernelParams = [ + "i915.force_probe=!7dd5" + "xe.force_probe=7dd5" + ]; sops.secrets."environments/networkManagerProfiles/cccdaWifi" = { }; modules = { + boot.secureboot = false; filesystem = { impermanence.system.enable = true; impermanence.home.enable = true;
diff --git a/hosts/huntii/default.nix b/hosts/huntii/default.nix @@ -26,12 +26,21 @@ }: { + imports = [ ./thinkmorse.nix ]; + + services.thinkmorse = { + enable = true; + message = "the void is cute!"; + devices = [ "tpacpi::lid_logo_dot" ]; + speed = "0.3"; + }; + specialisation.gnome.configuration = { modules.presets.graphical.type = lib.mkForce "gnomeMinimal"; }; boot.initrd.systemd.emergencyAccess = true; - boot.kernel.sysctl."power.pm_async" = false; + # boot.kernel.sysctl."power.pm_async" = false; sops.secrets."environments/networkManagerProfiles/cccdaWifi" = { }; @@ -133,6 +142,27 @@ publish.enable = true; publish.userServices = true; }; + keyd.keyboards.huntii = { + ids = [ + "0001:0001:70533846" + "099a:0500:44f31567" + ]; + settings = { + main = { + "leftcontrol" = "leftalt"; + "leftalt" = "leftcontrol"; + "rightalt" = "rightcontrol"; + "rightcontrol" = "rightalt"; + #"rightalt" = "rightcontrol"; + #"sysrq" = "rightalt"; + #"rightcontrol" = "sysrq"; + "s+d" = "oneshot(shift)"; + "f+j" = "space"; + "j+k" = "backspace"; + "k+l" = "enter"; + }; + }; + }; gnome.at-spi2-core.enable = false; pipewire.raopOpenFirewall = true; };
diff --git a/hosts/pratorum/default.nix b/hosts/pratorum/default.nix @@ -178,6 +178,7 @@ "music.zaphyra.dn42".enable = true; "continuwuity-migration.zaphyra.eu".enable = true; + "photos.zaphyra.eu".enable = true; "ente.zaphyra.eu".enable = true; #old fedi-instance
diff --git a/secrets/morio.yaml b/secrets/morio.yaml @@ -15,7 +15,7 @@ resticPasswords: vaultwarden: ENC[AES256_GCM,data:MmXXWit37MC4dpJG1654IpxfRdw0b+2mpfu7K80ZTRQ=,iv:4wRi3ovrLrzCkUjiGpEpWWPSDkHUdpI82joofhoIP8U=,tag:zgTTK+h/vqLmxCNNtfrxwg==,type:str] things: ENC[AES256_GCM,data:9jjtqiUHwtCJKF1Mfg5bNZQhGHDFNZlAm04umn0SqnM=,iv:5sx+9tOTX/GHk7KwEZo1r4vJVX8LTe7clNsjxIhRAYw=,tag:D5b7/H4CWCCnAmTPPyCMyg==,type:str] knotKeys: ENC[AES256_GCM,data:jilIpC4cs1Dl738Nh4QM9kwzPz14Pof17vnOVf3Vsp+oFjXIQWRPBz28LtsLPfkMSOvM4DAucbsyWF900J3fWbA2XoxS1Py+AdRkfmzno8k5tJfdZU+hogWokvbfhKgRGk6UBSFFuCAvuV5r3lLXtmSuDWO/wRBQHskiK/j3ZnjlenardP9rH2vIDHqwuEdtzEfaU8Ax3GxAZRpDj0pZVoC6Gp3+F1U1rDLTlBeCJLFIosxz6BoTWOXv6GMyMTsSb6gJYa3cIsuO2DmSCoI5wKyk4cJDONA1jh5I/BljKu/y9KmAqmlXqGS1h5XDR2Za+GUQzVmLBqSuTt7yL0ISG6TvrYIlwAn1iTQSv6VnE06bZZWDnv1HRyR8cIpot9wjowDz2T1hnRfhS+YOzGf72JKYLvRIw1xrReSA2L3aIo9iZWjsryVZV/EdAFu0AA0JdSAn17D4uLsr8UTOHcATtefePRr1rcYusI13nPME0jgsfzWiTaNJ+P/DDiyR+p0CsW3w8rU8WoeYn07GRpusNmc0xtyRUyZIqcPhu9FEmYFElUHzXuKFva3J+x1jDukqR9Fr0EjNL/SBffZUt+5ODDjgFS3GQIPm2nq/98bnWFJnvNbCijtQDxZtu+mxO4EKiboO2orJyJFJ9GxoV6zv0BOiOkPnWAELUelESsXZDfsdmE2VxfTtkg9DTkhiEANY1W/kaeMD+EhbEGpAvxr66BZMuhkQtO9D1/chKbrU4JHtuICSnXuJ6EhxJ+Orfn6oFfK/CTUvKIfyEBxXOhqyJc07w7rwcI8aJy4F5VFIY2MzMrm1Ha3cQbHapoUk3iBO6fUxSs7oAH0Cy+//PEycgsthn4tfNuINX8t0VLGw1cRCcKvSQVT5L8Xd6BF8VWvY3Cs294hZVxv1hoV4c4vAc0aYH/OXsUVmTAY1U1qzejnk+GxBg4b3zopLqtk0lIfRuB2hbUFeFvCRYCwpyhSuOjiBAtXEoo3jpbhI1u8BSCZ9R7xNVRimV9FixnLEvTyqJzNCid2e6uZJPiPvFwzSU8C6KQZAlTCD2XAiFXA/SifhOcoXzFISdkTd98LLmuBMqU9ZYppQUY/eMzYYj2ciWqVQXl4h5zx3Ou33Se8J3p7JnOgvFnE0dl4ST9fyAOxjVUXO57w1NnSHA06Go/HlySrBc5pZSsjOUUo9ov4C+c9E55V99qp5Tfi/G5HdxY5Y06We7rKkfpeO6yhNZsadm9n2phr7ROQF53lqMdyZVOcmdMa/SjkHi7eluoRvKtzTQbXs9Uf9HY331c0FM9iW+LzM6MlPP+Npvkb5KBzhGpZjG09fSDYVo2bRRyL4MpdglTW+dALCFNd7TmZ2MjPuA/Ee/Ik6Y6Wjdk/Dtt036NnOFDfeBww4PnVCF09Pijid6iQn2LfH9UI78UP3xY6m9drhbKIy6hDqNKhTzDD/ooLpr8ofScs6H/fzWs+sKXtaLmdEfhI1QG5C2y7HuCmrVh0JUpf6pXg694LyBCqwR3Q25Mk0Ve9lDZHpn55BYff+bfwhaknOq3IcdP7/mh5JftBAbKbN0GFjrAtlEISY3HnEQewr1Bn6jF32/F+iks/8rSC0f42xpyPEoceu6urnfbQVc2P87p5v1jYFwjKC1RRaEFg9I3U+b4o7/mmLuIblFnMIULG4mirOrw/S+8FqHAM3osuD0hNQL5WORwRU352i12jOKNRIiERBmk8fE00OR5x0Y3ywdvmnAIpbw20MXLO2wbU1JBIj+dnmrHMWL82DkM/irqN4fk2zir6yrftgZJU4Ja3NBa/ro3MPRsvONfeWT8hbjyReKvrrPV1x9TOPmRtwc1BbQfa60P2DEecVMwbc+kOMSTWgC990rfFsvQyFSLcCK42tDibchX0ZUwx1WLBA2onZ+L2epiiH2ChX8NEMqsBsabPPk/P568V7EQTOUi3lMsMMR1y4fQ/vMS1BJDb4rVjVgkdyY33G4d4TZk9l8xbsQNrF17s+ltY=,iv:QunWkACa8csdZYKevo+jjIK24kHdXRBVH3cS4LMiyZE=,tag:6s2YOd9P/YYP6NlkYVIXBA==,type:str] -radicaleUsers: ENC[AES256_GCM,data:lsVr2x3jZJY8nqJnIEXcd9qNyQsVF4OvcFUwUa+hdlXyACafN7wtDYuc6lvNp7eD6eMz3AD7BO9A6X5SVLQ6bMxUQ8hJYpm0+VeBQSTFFMDdXcVRbad5ymtS3D5sG3v20rlzrLC6tQCkrY7uyKdSKSBCEVcY1BDQMea9uRDi3bRRpiQC8Vz/frxhDnAiVGWtWTOb12KBJPs83STF+IOdZoEZuoKFzuzuhIUekuyEl/l+k/SbXAYA15q+4xK59lbMrJE=,iv:exwd7GdQrYCOFBIi6urDBC3xERo7I1YATN1e/38BIa0=,tag:CtkpxDz5kuU/6/nWEYB23A==,type:str] +radicaleUsers: ENC[AES256_GCM,data:leYVthpb+8z8ecqZPWeE5N2vqKFOjbo06dBWxY1HYU4Oo6Nhvykh4cauhqwyA2MmZAQ6Zv5CKKd5DXjKUjjy4zY7zdYqmLBuqEXWQWc2r6+nuQQhW+xzvD2x3uCMUR2NExDljK37wii+lKc2abpysMa0ppbLvSUlIhrpkbQi5TtTbe7zygLDgsxlCVuw7FK3yoljRJENDxyPPtUnUljILAOB2UIFYrehU7IGmVOZQHNXqL/GE29BeRy0NMb1VzlVpBNkNTAohpNSqxHljflPlu45y3AzPKPzwHhvBcQiwcWXO4ftfYGL5g7If30c8bbMxbLNgejKTyM95mTzUwlthJNx8jnKpq91iC9hby5YEOeK3uutjAM2Frtwgw==,iv:4+R2IFdub3v1qktHFPYZT7skCZ7m7lKPuWcXtH5tl48=,tag:scIpgzsaCJR9feivF/MCtQ==,type:str] gotosocialEnv: ENC[AES256_GCM,data:5hvURqX+EqN8zpjirBmh5TIWWgaCga9QxnAfyW1rwOXELnM9ZBJAmqwLdxUa2j2DGrXsqw==,iv:nhVyiAoOJY0HtjB13FnmnQyLB+BWSRwDVrwUiFHBrE4=,tag:P207zPou7yXJKJBf+pxlHg==,type:str] environments: vaultwarden: ENC[AES256_GCM,data:uKc/1bnfXcxcUyBrvi5eYXpikmJna6hav0P0x4mopMY4VE6vGp/pSyqWXDzdjBYgV69/O2vqbfS4o61B+OjAS/ssYVyLvVHR3CJ+FCZmgA0zjO52C+TcVFYggxKUtcCVgBuNIzIqZ4lRE5T4I8V8WO6czQtmnBqvu27GY94sjyRUdG7hIySRVRbyhyCPFEYh9PKWUBEcdQf3P9dk9O3KKEG7TrngSm6yJtG0H7hc2M+4/xu8r7+j05AI5y2gs1oFN7QZqqSZ4Es4bUUn/SUXaeHnNCG/fr718fBKmvQuwrHjIfHwnxADA6HfklASKwRYm5EfWSW4RcCLKekFFfdR5O3mhQJR/mis46MdFUlhXvMJWQk=,iv:LnxnMS+xqlQuUQ88h9Etzk5IfpZenW/nOfWLYzABl0E=,tag:t10UUaatvmvZD/WEB0eL6g==,type:str] @@ -36,8 +36,8 @@ sops: Ym5kdER1cTdYM09ydEgwUUlhQ3lXUEEKVjdcjjDXUhmpszI5i3NsjrsF6XRHf1a6 qzqyN7FQTuwy23N9PBdJMTe7aAcw12vbvuY2v7UfmNzxkvggaDXJ0Q== -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-10-22T15:59:42Z" - mac: ENC[AES256_GCM,data:bvzk8vqZe4KJm5Pzwx2ojWl2ciU0EWFLvYDxniqoHpUovQz/Jwl9CE6jBNsAlA9pj86w35WaR6HDkPQQiMIssiQLKbEA5LYDs9YMndk2UpPKYJgj97RITf26sUL5F1q/zlNdisDsIzArVzsey7hlhK/UKhJJ4bIV+Ch4Atch/EI=,iv:7pUqMVDcy/cae8fJzZBCzzgllIwiBSEVHe2O9aA4vDs=,tag:f8X/yBzNckrxnIoWEZj2Mg==,type:str] + lastmodified: "2025-12-01T16:25:34Z" + mac: ENC[AES256_GCM,data:2gURtNypBWVjb/c4KmdJeLScMl6YYPZHymNnGYRn8n7+3klgZCZeaYBJA/jSdi5vVglZYj2u4zAZX4DkR5th2R+falOxrxHhtMKqSKePBi2EOlo6RpsRzBEKSYQZfev8vib7WyJ/9cPYCKxwQZU0QAIq2BeV2OSUmpBE9+2U5OA=,iv:kQr+t8EGlPqWyoqDp6idntFSldXzHp/43a+vK9oDa0I=,tag:7KwUNlqqmmHTXsjSyWtQ+Q==,type:str] pgp: - created_at: "2025-06-16T13:06:52Z" enc: |- @@ -51,4 +51,4 @@ sops: -----END PGP MESSAGE----- fp: BFE6386C8D66BCD4DAE14FC895F0FE7CD7E6A022 unencrypted_suffix: _unencrypted - version: 3.10.2 + version: 3.11.0