zaphyra's git: nixfiles

zaphyra and void's nixfiles

commit b22a53521ad12884e9792e6b3ab04e5569e746ec
parent 59023f566d2469360268a9e3c9bc9199cc0cfbc6
Author: Katja (zaphyra) <git@ctu.cx>
Date: Wed, 11 Jun 2025 21:10:39 +0200

config/nixos/modules/users: fix infinite-recursion when home-manager is not enabled
2 files changed, 132 insertions(+), 119 deletions(-)
M
config/nixos/modules/users/void.nix
|
74
++++++++++++++++++++++++++++++++++++++++----------------------------------
M
config/nixos/modules/users/zaphyra.nix
|
177
+++++++++++++++++++++++++++++++++++++++++--------------------------------------
diff --git a/config/nixos/modules/users/void.nix b/config/nixos/modules/users/void.nix
@@ -18,42 +18,48 @@ in
     default = false;
   };
 
-  config = lib.mkIf cfg.enable {
-    sops.secrets.voidPassword = {
-      neededForUsers = true;
-      sopsFile = inputs.self.sopsSecrets.common;
-    };
+  config = lib.mkIf cfg.enable (lib.mkMerge [
+    {
+      sops.secrets.voidPassword = {
+        neededForUsers = true;
+        sopsFile = inputs.self.sopsSecrets.common;
+      };
 
-    users.users.void = {
-      uid = 1000;
-      description = "Hannah";
-      hashedPasswordFile = config.sops.secrets.voidPassword.path;
-      isNormalUser = true;
-      extraGroups = [
-        "audio"
-        "dialout"
-        "docker"
-        "input"
-        "networkmanager"
-        "ssh"
-        "tss"
-        "video"
-        "wheel"
-      ];
-      openssh.authorizedKeys.keys = [
-        "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOFsnTwRtKRrn2KqbkTvXgwZniD1p90A7iqvQduhoDL6 openpgp:0x03F32AB3"
-      ];
-    };
+      users.users.void = {
+        uid = 1000;
+        description = "Hannah";
+        hashedPasswordFile = config.sops.secrets.voidPassword.path;
+        isNormalUser = true;
+        extraGroups = [
+          "audio"
+          "dialout"
+          "docker"
+          "input"
+          "networkmanager"
+          "ssh"
+          "tss"
+          "video"
+          "wheel"
+        ];
+        openssh.authorizedKeys.keys = [
+          "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOFsnTwRtKRrn2KqbkTvXgwZniD1p90A7iqvQduhoDL6 openpgp:0x03F32AB3"
+        ];
+      };
+    }
 
-    home-manager.users.void.imports = lib.concatLists [
-      [
-        homeManagerModules.void.home
-      ]
+    (
+      lib.mkIf config.modules.homeManager.enable {
+        home-manager.users.void.imports = lib.concatLists [
+          [
+            homeManagerModules.void.home
+          ]
 
-      (lib.optionals config.modules.filesystem.impermanence.home.enable [
-        #homeManagerModules.void.impermanence # FIXME: implement impermanence
-      ])
-    ];
-  };
+          (lib.optionals config.modules.filesystem.impermanence.home.enable [
+            #homeManagerModules.void.impermanence # FIXME: implement impermanence
+          ])
+        ];
+      }
+    )
+  ]);
 
 }
diff --git a/config/nixos/modules/users/zaphyra.nix b/config/nixos/modules/users/zaphyra.nix
@@ -19,91 +19,98 @@ in
     default = false;
   };
 
-  config = lib.mkIf cfg.enable {
-    sops.secrets.zaphyraPassword = {
-      neededForUsers = true;
-      sopsFile = inputs.self.sopsSecrets.common;
-    };
-
-    users.users.zaphyra = {
-      uid = 1001;
-      description = "Katja";
-      hashedPasswordFile = config.sops.secrets.zaphyraPassword.path;
-      isNormalUser = true;
-      extraGroups =
-        [
-          "ssh"
-          "wheel"
-        ]
-        ++ lib.optionals config.networking.networkmanager.enable [
-          "networkmanager"
+  config = lib.mkIf cfg.enable (lib.mkMerge [
+    {
+      sops.secrets.zaphyraPassword = {
+        neededForUsers = true;
+        sopsFile = inputs.self.sopsSecrets.common;
+      };
+
+      users.users.zaphyra = {
+        uid = 1001;
+        description = "Katja";
+        hashedPasswordFile = config.sops.secrets.zaphyraPassword.path;
+        isNormalUser = true;
+        extraGroups =
+          [
+            "ssh"
+            "wheel"
+          ]
+          ++ lib.optionals config.networking.networkmanager.enable [
+            "networkmanager"
+          ];
+        openssh.authorizedKeys.keys = [
+          (builtins.readFile "${pkgs.zaphyra-website}/ssh_pubkey.asc")
+          "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPnNyOCX+PopTHuNrfBwEmPM7FC6oM7nFgW/2tvW7ddT"
         ];
-      openssh.authorizedKeys.keys = [
-        (builtins.readFile "${pkgs.zaphyra-website}/ssh_pubkey.asc")
-        "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPnNyOCX+PopTHuNrfBwEmPM7FC6oM7nFgW/2tvW7ddT"
-      ];
-    };
-
-    home-manager.users.zaphyra.imports = lib.concatLists [
-      [
-        homeManagerModules.zaphyra.home
-      ]
-
-      (lib.optionals config.modules.filesystem.impermanence.home.enable [
-        homeManagerModules.zaphyra.impermanence
-      ])
-
-      (lib.optionals config.modules.presets.graphical.enable (
-        with homeManagerModules.zaphyra;
-        [
-          configure.xdg
-
-          programs.ghostty
-          programs.ssh
-          programs.git
-          programs.gpg
-
-          programs.yt-dlp
-          programs.phockup
-          programs.bitwarden-cli
-
-          programs.nautilus
-
-          programs.firefox
-          programs.thunderbird
-          programs.errands
-
-          programs.fractal
-          programs.tuba
-
-          programs.typst
-          programs.ocrmypdf
-          programs.papers
-          programs.pdfarranger
-          programs.libreoffice
-          programs.apostrophe
-
-          programs.celluloid
-
-          programs.javascript
-        ]
-      ))
-
-      (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.mkIf config.modules.homeManager.enable {
+        home-manager.users.zaphyra.imports = lib.concatLists [
+          [
+            homeManagerModules.zaphyra.home
+          ]
+
+          (lib.optionals config.modules.filesystem.impermanence.home.enable [
+            homeManagerModules.zaphyra.impermanence
+          ])
+
+          (lib.optionals config.modules.presets.graphical.enable (
+            with homeManagerModules.zaphyra;
+            [
+              configure.xdg
+
+              programs.ghostty
+              programs.ssh
+              programs.git
+              programs.gpg
+              homeManagerModules.common.programs.gpg
+
+              programs.yt-dlp
+              programs.phockup
+              programs.bitwarden-cli
+
+              programs.nautilus
+
+              programs.firefox
+              programs.thunderbird
+              programs.errands
+
+              programs.fractal
+              programs.tuba
+
+              programs.typst
+              programs.ocrmypdf
+              programs.papers
+              programs.pdfarranger
+              programs.libreoffice
+              programs.apostrophe
+
+              programs.celluloid
+
+              programs.javascript
+            ]
+          ))
+
+          (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
+            ]
+          ))
+        ];        
+      }
+    )
+  ]);
 
 }