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
launchpad/nixpkgs/master
Silvan Mosberger 3 years ago
parent 88e451423f
commit ea00f991c0
  1. 13
      nixos/modules/config/users-groups.nix

@ -324,7 +324,7 @@ let
};
groupOpts = { name, ... }: {
groupOpts = { name, config, ... }: {
options = {
@ -358,6 +358,10 @@ let
config = {
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;
shell = utils.toShellPath u.shell;
}) cfg.users;
groups = mapAttrsToList (n: g:
{ inherit (g) name gid;
members = g.members ++ (mapAttrsToList (n: u: u.name) (
filterAttrs (n: u: elem g.name u.extraGroups) cfg.users
));
}) cfg.groups;
groups = attrValues cfg.groups;
});
systemShells =

Loading…
Cancel
Save