nixos/users: Populate group members option

This change makes it so that accessing config.users.groups.*.members isn't
empty by default, but instead contains all the users whose `extraGroups`
includes that group, allowing fancy things like

  { config, ... }: {
    users.groups.libvirt.members = config.users.groups.wheel.members;
  }

to add all users in the wheel group to the libvirt group
This commit is contained in:
Silvan Mosberger 2021-08-06 01:20:09 +02:00
parent 88e451423f
commit ea00f991c0

View file

@ -324,7 +324,7 @@ let
}; };
groupOpts = { name, ... }: { groupOpts = { name, config, ... }: {
options = { options = {
@ -358,6 +358,10 @@ let
config = { config = {
name = mkDefault name; name = mkDefault name;
members = mapAttrsToList (n: u: u.name) (
filterAttrs (n: u: elem config.name u.extraGroups) cfg.users
);
}; };
}; };
@ -419,12 +423,7 @@ let
initialPassword initialHashedPassword; initialPassword initialHashedPassword;
shell = utils.toShellPath u.shell; shell = utils.toShellPath u.shell;
}) cfg.users; }) cfg.users;
groups = mapAttrsToList (n: g: groups = attrValues cfg.groups;
{ inherit (g) name gid;
members = g.members ++ (mapAttrsToList (n: u: u.name) (
filterAttrs (n: u: elem g.name u.extraGroups) cfg.users
));
}) cfg.groups;
}); });
systemShells = systemShells =