25 lines
565 B
Nix
25 lines
565 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
|