2024-11-25 21:04:18 +00:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
...
|
2025-03-06 20:45:49 +00:00
|
|
|
}:
|
|
|
|
let
|
2025-03-06 01:07:54 +00:00
|
|
|
inherit (lib.options) mkEnableOption mkOption;
|
2025-03-06 20:45:49 +00:00
|
|
|
inherit (lib.types)
|
|
|
|
attrsOf
|
|
|
|
listOf
|
|
|
|
submodule
|
|
|
|
str
|
|
|
|
package
|
|
|
|
;
|
2025-02-06 01:51:42 +00:00
|
|
|
users = config.alqueva.users;
|
2025-03-06 20:45:49 +00:00
|
|
|
in
|
|
|
|
{
|
2024-11-25 21:04:18 +00:00
|
|
|
options.alqueva.users = mkOption {
|
2025-03-06 01:07:54 +00:00
|
|
|
type = attrsOf (submodule {
|
2024-11-25 21:04:18 +00:00
|
|
|
options = {
|
|
|
|
tmpfiles = mkOption {
|
|
|
|
description = "tmpfiles";
|
2025-03-06 01:07:54 +00:00
|
|
|
type = listOf str;
|
2025-03-06 20:45:49 +00:00
|
|
|
default = [ ];
|
2024-11-25 21:04:18 +00:00
|
|
|
};
|
|
|
|
packages = mkOption {
|
2025-03-06 01:07:54 +00:00
|
|
|
type = listOf package;
|
2025-03-06 20:45:49 +00:00
|
|
|
default = [ ];
|
2024-11-25 21:04:18 +00:00
|
|
|
description = "Packages installed to the the defined user.";
|
|
|
|
};
|
|
|
|
groups = mkOption {
|
2025-03-06 01:07:54 +00:00
|
|
|
type = listOf str;
|
2025-03-06 20:45:49 +00:00
|
|
|
default = [ ];
|
2024-11-25 21:04:18 +00:00
|
|
|
description = "Groups to add the defined user to.";
|
|
|
|
};
|
2024-12-14 11:14:51 +00:00
|
|
|
shell = mkOption {
|
2025-03-06 01:07:54 +00:00
|
|
|
type = package;
|
2024-12-14 11:14:51 +00:00
|
|
|
default = config.programs.bash.package;
|
|
|
|
description = "Shell the user wants to use.";
|
|
|
|
};
|
2025-03-06 20:45:49 +00:00
|
|
|
enable = (mkEnableOption "this user.") // {
|
|
|
|
default = true;
|
|
|
|
};
|
2024-11-25 21:04:18 +00:00
|
|
|
};
|
|
|
|
});
|
2025-02-06 01:51:42 +00:00
|
|
|
description = "Users to have on the system.";
|
2025-03-06 20:45:49 +00:00
|
|
|
default = { };
|
2024-11-25 21:04:18 +00:00
|
|
|
};
|
|
|
|
|
2025-03-06 20:45:49 +00:00
|
|
|
config =
|
|
|
|
let
|
|
|
|
enabledUsers = lib.filterAttrs (_: user: user.enable == true) users;
|
|
|
|
in
|
|
|
|
{
|
|
|
|
users.users = builtins.mapAttrs (un: uc: {
|
2025-02-06 01:51:42 +00:00
|
|
|
description = un;
|
2024-11-25 21:04:18 +00:00
|
|
|
isNormalUser = true;
|
2025-02-06 01:51:42 +00:00
|
|
|
extraGroups = uc.groups;
|
|
|
|
inherit (uc) packages shell;
|
2024-12-10 23:03:51 +00:00
|
|
|
initialPassword = "password";
|
2025-03-06 20:45:49 +00:00
|
|
|
}) enabledUsers;
|
2024-11-25 21:04:18 +00:00
|
|
|
|
2025-03-06 20:45:49 +00:00
|
|
|
systemd.user.tmpfiles.users = builtins.mapAttrs (_: uc: {
|
2025-03-06 01:07:54 +00:00
|
|
|
rules = uc.tmpfiles;
|
2025-03-06 20:45:49 +00:00
|
|
|
}) enabledUsers;
|
|
|
|
};
|
2024-11-25 21:04:18 +00:00
|
|
|
}
|