base/export/nixosGroup.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