summaryrefslogtreecommitdiff
path: root/lib/mkprofile.nix
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 ]);
}