10 lines
493 B
Nix
10 lines
493 B
Nix
flake: { ... }@inputs: { group, ... }@imports: let
|
|
group' = name: snippets: { pkgs, lib, options, config, ... }@args: let
|
|
invoke = x: if builtins.isFunction x then x args else x;
|
|
in {
|
|
options.fbs42.group.${name} = lib.mkEnableOption name;
|
|
config.users.groups.${name} = lib.mkIf
|
|
(config.fbs42.group.${name} || builtins.any (usr: usr.group == name) (builtins.attrValues config.users.users))
|
|
(lib.mkMerge (map invoke snippets));
|
|
};
|
|
in builtins.mapAttrs group' group
|