refactor(user): use configurable default roles

This commit is contained in:
Giulio De Pasquale 2025-08-13 10:39:08 +01:00
parent 639a43c7d4
commit 6a804dded9

View File

@ -5,10 +5,18 @@
, ...
}:
let
# Default roles that all NixOS users get
defaultSystemUserRoles = [ "common" "zsh" "aichat" ];
# Default roles for standalone home-manager configs
defaultHMUserRoles = [ "common" "aichat" ];
in
{
mkUser = { name, roles ? [ ] }:
mkUser = { name, roles ? [ ], defaultRoles ? defaultSystemUserRoles }:
let
roles_mod = (map (r: mkHomeRole r) roles);
defaults_mod = (map (r: mkHomeRole r) defaultRoles);
in
{
fileSystems."/home/${name}/Downloads" = pkgs.lib.mkIf stdenv.isLinux {
@ -27,16 +35,13 @@
programs.zsh.enable = true;
home-manager.users.${name}.imports = [
(mkHomeRole "common")
(mkHomeRole "zsh")
(mkHomeRole "aichat")
] ++ roles_mod;
home-manager.users.${name}.imports = defaults_mod ++ roles_mod;
};
mkHMUser = { name, roles ? [ ] }:
mkHMUser = { name, roles ? [ ], defaultRoles ? defaultHMUserRoles }:
let
roles_mod = (map (r: mkHomeRole r) roles);
defaults_mod = (map (r: mkHomeRole r) defaultRoles);
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
@ -48,8 +53,6 @@
if stdenv.isLinux then "/home/${name}" else "/Users/${name}";
};
}
(mkHomeRole "common")
(mkHomeRole "aichat")
] ++ roles_mod;
] ++ defaults_mod ++ roles_mod;
};
}