diff options
Diffstat (limited to 'infra/modules/base')
| -rw-r--r-- | infra/modules/base/user.nix | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/infra/modules/base/user.nix b/infra/modules/base/user.nix new file mode 100644 index 0000000..be1aeea --- /dev/null +++ b/infra/modules/base/user.nix @@ -0,0 +1,36 @@ +{ + flake.modules.nixos.base = + { + config, + lib, + pkgs, + ... + }: + { + options.infra.user = lib.mkOption { + type = lib.types.str; + default = "vkcku"; + description = "The name of the main user."; + }; + + config = + let + username = config.infra.user; + passwordKey = "hosts/${config.networking.hostName}/users/${username}"; + in + { + sops.secrets."${passwordKey}".neededForUsers = true; + + users.mutableUsers = false; + + users.users."${username}" = { + isNormalUser = true; + createHome = true; + home = "/home/${username}"; + extraGroups = [ "wheel" ]; + shell = pkgs.nushell; + hashedPasswordFile = config.sops.secrets."${passwordKey}".path; + }; + }; + }; +} |
