blob: ec851de69cf681ffc2bfa6b7091913ab4fb0d226 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
profileName: nixosConfig: homeConfig: { config, lib, ... }: let
cfg = config._archetypes.profiles.${profileName};
enabledUsers = lib.filterAttrs (user: userCfg: userCfg.enable) cfg.home.users;
homeConfigs = {
home-manager.users = lib.mapAttrs (user: userCfg: homeConfig) enabledUsers;
};
in {
options._archetypes.profiles.${profileName} = {
enable = lib.mkEnableOption "enable nixos profile ${profileName}";
home.users = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule {
options = {
enable = lib.mkEnableOption "home-manager profile ${profileName} for user";
};
});
default = {};
description = "enable home-manager profile ${profileName} for user the specified user";
};
};
config = lib.mkIf cfg.enable (lib.mkMerge [ nixosConfig homeConfigs ]);
}
|