sneeuwvlok/_modules/home/user.nix
2025-07-28 14:34:09 +02:00

48 lines
1.2 KiB
Nix

{ options, config, lib, pkgs, user, ... }:
let
inherit (lib.attrsets) attrValues;
inherit (lib.modules) mkIf mkMerge;
cfg = config.modules.${user}.user;
in
{
options.modules.${user}.user = let
inherit (lib.options) mkOption mkEnableOption;
inherit (lib.types) nullOr enum;
in with lib.types; {
full_name = mkOption {
type = nullOr str;
default = null;
example = "John Doe";
description = "Full name of the user, this is used as the kde plasma display name for example";
};
email = mkOption {
type = nullOr str;
default = null;
example = "name@domain.tld";
description = "user's email address";
};
is_trusted = mkOption {
type = bool;
default = false;
example = true;
description = "this is used to grant sudo priviledges for the user";
};
groups = mkOption {
type = listOf str;
default = [];
example = [ "some" "group" "names" ];
description = "groups to add the user to";
};
};
config = mkIf (user != "root") {
users.users.${user} = {
description = (cfg.full_name or user);
extraGroups = cfg.groups ++ (if cfg.is_trusted then [ "wheel" ] else []);
};
};
}