nixconf/modules/nixos/core/users.nix

47 lines
919 B
Nix

{
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (lib) types;
genUsers = users: f: builtins.listToAttrs (map (user: {
name = user;
value = (f user);
}) users);
in {
options.gg.users = {
admins = lib.mkOption {
type = (types.listOf types.str);
default = [ "mtxyz" "hive" ];
};
friend = lib.mkOption {
type = types.bool;
default = false;
};
};
config = {
# Users
programs.fish.enable = true;
users.defaultUserShell = pkgs.fish;
users.users = (genUsers config.gg.users.admins (name: {
isNormalUser = true;
extraGroups = [ "wheel" ];
openssh.authorizedKeys.keyFiles = [
"${inputs.self}/pubkeys/${name}.keys"
];
initialPassword = "";
linger = true;
})) // {
friends = lib.mkIf config.gg.users.friend {
isNormalUser = true;
hashedPassword = "";
};
};
};
}