From 4bb3f44a37ebd1b2d2e2391171d779ad750cbe77 Mon Sep 17 00:00:00 2001 From: Jelle Spreeuwenberg Date: Tue, 21 Apr 2026 01:57:14 +0200 Subject: [PATCH] refactor: extract shared user-base home-manager module --- modules/features/user-base.nix | 19 +++++++++++ modules/users.nix | 62 +++++++++++++--------------------- 2 files changed, 43 insertions(+), 38 deletions(-) create mode 100644 modules/features/user-base.nix diff --git a/modules/features/user-base.nix b/modules/features/user-base.nix new file mode 100644 index 0000000..9074c34 --- /dev/null +++ b/modules/features/user-base.nix @@ -0,0 +1,19 @@ +{ config, ... }: +let + homeModules = config.flake.modules.homeManager; +in +{ + flake.modules.homeManager.userBase = { + imports = with homeModules; [ + terminal + shell + neovim + sshClient + sopsAdmin + git + devTools + podman + gemini + ]; + }; +} diff --git a/modules/users.nix b/modules/users.nix index 837e848..2449752 100644 --- a/modules/users.nix +++ b/modules/users.nix @@ -4,24 +4,24 @@ let realName = "Jelle Spreeuwenberg"; - accounts = { - kiri = { - homeDirectory = "/home/kiri"; - gitEmail = "mail@jelles.net"; - vaultEmail = "mail@jelles.net"; - extraHomeImports = with homeModules; [ syncthing ]; - }; + kiri = { + name = "kiri"; + homeDirectory = "/home/kiri"; + gitEmail = "mail@jelles.net"; + vaultEmail = "mail@jelles.net"; + extraHomeImports = with homeModules; [ syncthing ]; + }; - ergon = { - homeDirectory = "/home/ergon"; - gitEmail = "jelle.spreeuwenberg@yookr.org"; - vaultEmail = "jelle.spreeuwenberg@yookr.org"; - extraHomeImports = with homeModules; [ nix ]; - }; + ergon = { + name = "ergon"; + homeDirectory = "/home/ergon"; + gitEmail = "jelle.spreeuwenberg@yookr.org"; + vaultEmail = "jelle.spreeuwenberg@yookr.org"; + extraHomeImports = with homeModules; [ nix ]; }; mkUser = - { accountName }: + account: { config, hostType ? "desktop", @@ -30,18 +30,18 @@ let ... }: let - account = accounts.${accountName}; + username = account.name; isServer = hostType == "server"; in { sops.secrets = lib.optionalAttrs (!isServer) { - "hashed-password-${accountName}".neededForUsers = true; + "hashed-password-${username}".neededForUsers = true; }; programs.zsh.enable = true; - users.users.${accountName} = { - name = accountName; + users.users.${username} = { + name = username; home = account.homeDirectory; isNormalUser = true; shell = pkgs.zsh; @@ -51,30 +51,17 @@ let ]; } // lib.optionalAttrs (!isServer) { - hashedPasswordFile = config.sops.secrets."hashed-password-${accountName}".path; + hashedPasswordFile = config.sops.secrets."hashed-password-${username}".path; }; - home-manager.users.${accountName} = { + home-manager.users.${username} = { home = { - username = accountName; + inherit username; homeDirectory = account.homeDirectory; stateVersion = "24.05"; }; - imports = - with homeModules; - [ - terminal - shell - neovim - sshClient - sopsAdmin - git - devTools - podman - gemini - ] - ++ account.extraHomeImports; + imports = [ homeModules.userBase ] ++ account.extraHomeImports; programs.git.settings.user = { name = realName; @@ -86,7 +73,6 @@ let }; in { - flake.modules.nixos.kiri = mkUser { accountName = "kiri"; }; - - flake.modules.nixos.ergon = mkUser { accountName = "ergon"; }; + flake.modules.nixos.kiri = mkUser kiri; + flake.modules.nixos.ergon = mkUser ergon; }