nixos: define the primary group of users where needed

+21 -21
nixos/modules/misc/ids.nix
···
#fourstore = 42; # dropped in 20.03
#fourstorehttp = 43; # dropped in 20.03
virtuoso = 44;
-
rtkit = 45;
+
#rtkit = 45; # dynamically allocated 2021-09-03
dovecot2 = 46;
dovenull2 = 47;
prayer = 49;
mpd = 50;
clamav = 51;
fprot = 52;
-
bind = 53;
+
# bind = 53; #dynamically allocated as of 2021-09-03
wwwrun = 54;
#adm = 55; # unused
spamd = 56;
···
firebird = 95;
#keys = 96; # unused
#haproxy = 97; # dynamically allocated as of 2020-03-11
-
mongodb = 98;
+
#mongodb = 98; #dynamically allocated as of 2021-09-03
#openldap = 99; # dynamically allocated as of PR#94610
#users = 100; # unused
cgminer = 101;
munin = 102;
logcheck = 103;
-
nix-ssh = 104;
+
#nix-ssh = 104; #dynamically allocated as of 2021-09-03
dictd = 105;
couchdb = 106;
#searx = 107; # dynamically allocated as of 2020-10-27
···
systemd-journal-gateway = 110;
#notbit = 111; # unused
aerospike = 111;
-
ngircd = 112;
+
#ngircd = 112; #dynamically allocated as of 2021-09-03
#btsync = 113; # unused
-
minecraft = 114;
+
#minecraft = 114; #dynamically allocated as of 2021-09-03
vault = 115;
rippled = 116;
murmur = 117;
···
mopidy = 130;
#docker = 131; # unused
gdm = 132;
-
dhcpd = 133;
+
#dhcpd = 133; # dynamically allocated as of 2021-09-03
siproxd = 134;
mlmmj = 135;
-
neo4j = 136;
+
#neo4j = 136;# dynamically allocated as of 2021-09-03
riemann = 137;
riemanndash = 138;
-
radvd = 139;
-
zookeeper = 140;
-
dnsmasq = 141;
+
#radvd = 139;# dynamically allocated as of 2021-09-03
+
#zookeeper = 140;# dynamically allocated as of 2021-09-03
+
#dnsmasq = 141;# dynamically allocated as of 2021-09-03
#uhub = 142; # unused
yandexdisk = 143;
mxisd = 144; # was once collectd
-
consul = 145;
+
#consul = 145;# dynamically allocated as of 2021-09-03
mailpile = 146;
redmine = 147;
#seeks = 148; # removed 2020-06-21
···
systemd-resolve = 153;
systemd-timesync = 154;
liquidsoap = 155;
-
etcd = 156;
+
#etcd = 156;# dynamically allocated as of 2021-09-03
hbase = 158;
opentsdb = 159;
scollector = 160;
···
tox-bootstrapd = 166;
cadvisor = 167;
nylon = 168;
-
apache-kafka = 169;
+
#apache-kafka = 169;# dynamically allocated as of 2021-09-03
#panamax = 170; # unused
exim = 172;
#fleet = 173; # unused
···
gateone = 207;
namecoin = 208;
#lxd = 210; # unused
-
kibana = 211;
+
#kibana = 211;# dynamically allocated as of 2021-09-03
xtreemfs = 212;
calibre-server = 213;
heapster = 214;
···
avahi-autoipd = 231;
nntp-proxy = 232;
mjpg-streamer = 233;
-
radicale = 234;
+
#radicale = 234;# dynamically allocated as of 2021-09-03
hydra-queue-runner = 235;
hydra-www = 236;
syncthing = 237;
···
taskd = 240;
# factorio = 241; # DynamicUser = true
# emby = 242; # unusued, removed 2019-05-01
-
graylog = 243;
+
#graylog = 243;# dynamically allocated as of 2021-09-03
sniproxy = 244;
nzbget = 245;
mosquitto = 246;
toxvpn = 247;
# squeezelite = 248; # DynamicUser = true
turnserver = 249;
-
smokeping = 250;
+
#smokeping = 250;# dynamically allocated as of 2021-09-03
gocd-agent = 251;
gocd-server = 252;
terraria = 253;
···
#shout = 206; #unused
gateone = 207;
namecoin = 208;
-
lxd = 210; # unused
+
#lxd = 210; # unused
#kibana = 211;
xtreemfs = 212;
calibre-server = 213;
···
cfdyndns = 227;
pdnsd = 229;
octoprint = 230;
-
radicale = 234;
+
#radicale = 234;# dynamically allocated as of 2021-09-03
syncthing = 237;
caddy = 239;
taskd = 240;
···
#toxvpn = 247; # unused
#squeezelite = 248; #unused
turnserver = 249;
-
smokeping = 250;
+
#smokeping = 250;# dynamically allocated as of 2021-09-03
gocd-agent = 251;
gocd-server = 252;
terraria = 253;
+4 -1
nixos/modules/security/rtkit.nix
···
services.dbus.packages = [ pkgs.rtkit ];
users.users.rtkit =
-
{ uid = config.ids.uids.rtkit;
+
{
+
isSystemUser = true;
+
group = "rtkit";
description = "RealtimeKit daemon";
};
+
users.groups.rtkit = {};
};
+1
nixos/modules/services/backup/borgbackup.nix
···
(map (mkAuthorizedKey cfg false) cfg.authorizedKeys
++ map (mkAuthorizedKey cfg true) cfg.authorizedKeysAppendOnly);
useDefaultShell = true;
+
group = cfg.group;
isSystemUser = true;
};
groups.${cfg.group} = { };
+1
nixos/modules/services/databases/influxdb.nix
···
users.users = optionalAttrs (cfg.user == "influxdb") {
influxdb = {
uid = config.ids.uids.influxdb;
+
group = "influxdb";
description = "Influxdb daemon user";
};
};
+2
nixos/modules/services/databases/memcached.nix
···
users.users = optionalAttrs (cfg.user == "memcached") {
memcached.description = "Memcached server user";
memcached.isSystemUser = true;
+
memcached.group = "memcached";
};
+
users.groups = optionalAttrs (cfg.user == "memcached") { memcached = {}; };
environment.systemPackages = [ memcached ];
+3 -1
nixos/modules/services/databases/mongodb.nix
···
users.users.mongodb = mkIf (cfg.user == "mongodb")
{ name = "mongodb";
-
uid = config.ids.uids.mongodb;
+
isSystemUser = true;
+
group = "mongodb";
description = "MongoDB server user";
};
+
users.groups.mongodb = mkIf (cfg.user == "mongodb") {};
environment.systemPackages = [ mongodb ];
+3 -1
nixos/modules/services/databases/neo4j.nix
···
environment.systemPackages = [ cfg.package ];
users.users.neo4j = {
-
uid = config.ids.uids.neo4j;
+
isSystemUser = true;
+
group = "neo4j";
description = "Neo4j daemon user";
home = cfg.directories.home;
};
+
users.groups.neo4j = {};
};
meta = {
+1
nixos/modules/services/databases/redis.nix
···
users.users.redis = {
description = "Redis database user";
+
group = "redis";
isSystemUser = true;
};
users.groups.redis = {};
+3 -1
nixos/modules/services/games/minecraft-server.nix
···
description = "Minecraft server service user";
home = cfg.dataDir;
createHome = true;
-
uid = config.ids.uids.minecraft;
+
isSystemUser = true;
+
group = "minecraft";
};
+
users.groups.minecraft = {};
systemd.services.minecraft-server = {
description = "Minecraft Server Service";
+3 -1
nixos/modules/services/logging/graylog.nix
···
users.users = mkIf (cfg.user == "graylog") {
graylog = {
-
uid = config.ids.uids.graylog;
+
isSystemUser = true;
+
group = "graylog";
description = "Graylog server daemon user";
};
};
+
users.groups = mkIf (cfg.user == "graylog") {};
systemd.tmpfiles.rules = [
"d '${cfg.messageJournalDir}' - ${cfg.user} - - -"
+2
nixos/modules/services/misc/airsonic.nix
···
users.users.airsonic = {
description = "Airsonic service user";
+
group = "airsonic";
name = cfg.user;
home = cfg.home;
createHome = true;
isSystemUser = true;
};
+
users.groups.airsonic = {};
};
}
+3 -1
nixos/modules/services/misc/apache-kafka.nix
···
environment.systemPackages = [cfg.package];
users.users.apache-kafka = {
-
uid = config.ids.uids.apache-kafka;
+
isSystemUser = true;
+
group = "apache-kafka";
description = "Apache Kafka daemon user";
home = head cfg.logDirs;
};
+
users.groups.apache-kafka = {};
systemd.tmpfiles.rules = map (logDir: "d '${logDir}' 0700 apache-kafka - - -") cfg.logDirs;
+2
nixos/modules/services/misc/docker-registry.nix
···
home = cfg.storagePath;
}
else {}) // {
+
group = "docker-registry";
isSystemUser = true;
};
+
users.groups.docker-registry = {};
};
}
+3 -1
nixos/modules/services/misc/etcd.nix
···
environment.systemPackages = [ pkgs.etcd ];
users.users.etcd = {
-
uid = config.ids.uids.etcd;
+
isSystemUser = true;
+
group = "etcd";
description = "Etcd daemon user";
home = cfg.dataDir;
};
+
users.groups.etcd = {};
};
}
+3 -1
nixos/modules/services/misc/nix-ssh-serve.nix
···
users.users.nix-ssh = {
description = "Nix SSH store user";
-
uid = config.ids.uids.nix-ssh;
+
isSystemUser = true;
+
group = "nix-ssh";
useDefaultShell = true;
};
+
users.groups.nix-ssh = {};
services.openssh.enable = true;
+3 -1
nixos/modules/services/misc/zookeeper.nix
···
};
users.users.zookeeper = {
-
uid = config.ids.uids.zookeeper;
+
isSystemUser = true;
+
group = "zookeeper";
description = "Zookeeper daemon user";
home = cfg.dataDir;
};
+
users.groups.zookeeper = {};
};
}
+1
nixos/modules/services/monitoring/graphite.nix
···
) {
users.users.graphite = {
uid = config.ids.uids.graphite;
+
group = "graphite";
description = "Graphite daemon user";
home = dataDir;
};
+1
nixos/modules/services/monitoring/netdata.nix
···
users.users = optionalAttrs (cfg.user == defaultUser) {
${defaultUser} = {
+
group = defaultUser;
isSystemUser = true;
};
};
+1
nixos/modules/services/monitoring/tuptime.nix
···
groups._tuptime.members = [ "_tuptime" ];
users._tuptime = {
isSystemUser = true;
+
group = "_tuptime";
description = "tuptime database owner";
};
};
+4 -1
nixos/modules/services/network-filesystems/orangefs/server.nix
···
environment.systemPackages = [ pkgs.orangefs ];
# orangefs daemon will run as user
-
users.users.orangefs.isSystemUser = true;
+
users.users.orangefs = {
+
isSystemUser = true;
+
group = "orangfs";
+
};
users.groups.orangefs = {};
# To format the file system the config file is needed.
+3 -1
nixos/modules/services/networking/bind.nix
···
users.users.${bindUser} =
{
-
uid = config.ids.uids.bind;
+
group = bindUser;
description = "BIND daemon user";
+
isSystemUser = true;
};
+
users.groups.${bindUser} = {};
systemd.services.bind = {
description = "BIND Domain Name Server";
+3 -1
nixos/modules/services/networking/consul.nix
···
users.users.consul = {
description = "Consul agent daemon user";
-
uid = config.ids.uids.consul;
+
isSystemUser = true;
+
group = "consul";
# The shell is needed for health checks
shell = "/run/current-system/sw/bin/bash";
};
+
users.groups.consul = {};
environment = {
etc."consul.json".text = builtins.toJSON configOptions;
+1
nixos/modules/services/networking/coturn.nix
···
{
users.users.turnserver =
{ uid = config.ids.uids.turnserver;
+
group = "turnserver";
description = "coturn TURN server user";
};
users.groups.turnserver =
+3 -1
nixos/modules/services/networking/dhcpd.nix
···
users = {
users.dhcpd = {
-
uid = config.ids.uids.dhcpd;
+
isSystemUser = true;
+
group = "dhcpd";
description = "DHCP daemon user";
};
+
groups.dhcpd = {};
};
systemd.services = dhcpdService "4" cfg4 // dhcpdService "6" cfg6;
+3 -1
nixos/modules/services/networking/dnsmasq.nix
···
services.dbus.packages = [ dnsmasq ];
users.users.dnsmasq = {
-
uid = config.ids.uids.dnsmasq;
+
isSystemUser = true;
+
group = "dnsmasq";
description = "Dnsmasq daemon user";
};
+
users.groups.dnsmasq = {};
networking.resolvconf = mkIf cfg.resolveLocalQueries {
useLocalResolver = mkDefault true;
+1
nixos/modules/services/networking/git-daemon.nix
···
users.users = optionalAttrs (cfg.user == "git") {
git = {
uid = config.ids.uids.git;
+
group = "git";
description = "Git daemon user";
};
};
+1
nixos/modules/services/networking/iodine.nix
···
users.users.${iodinedUser} = {
uid = config.ids.uids.iodined;
+
group = "iodined";
description = "Iodine daemon user";
};
users.groups.iodined.gid = config.ids.gids.iodined;
+2
nixos/modules/services/networking/morty.nix
···
createHome = true;
home = "/var/lib/morty";
isSystemUser = true;
+
group = "morty";
};
+
users.groups.morty = {};
systemd.services.morty =
{
+2
nixos/modules/services/networking/ncdns.nix
···
users.users.ncdns = {
isSystemUser = true;
+
group = "ncdns";
description = "ncdns daemon user";
};
+
users.groups.ncdns = {};
systemd.services.ncdns = {
description = "ncdns daemon";
+1
nixos/modules/services/networking/networkmanager.nix
···
users.users = {
nm-openvpn = {
uid = config.ids.uids.nm-openvpn;
+
group = "nm-openvpn";
extraGroups = [ "networkmanager" ];
};
nm-iodine = {
+4 -1
nixos/modules/services/networking/ngircd.nix
···
};
users.users.ngircd = {
-
uid = config.ids.uids.ngircd;
+
isSystemUser = true;
+
group = "ngircd";
description = "ngircd user.";
};
+
users.groups.ngircd = {};
+
};
}
+1 -1
nixos/modules/services/networking/pleroma.nix
···
users."${cfg.user}" = {
description = "Pleroma user";
home = cfg.stateDir;
-
extraGroups = [ cfg.group ];
+
group = cfg.group;
isSystemUser = true;
};
groups."${cfg.group}" = {};
+5 -2
nixos/modules/services/networking/radicale.nix
···
environment.systemPackages = [ pkg ];
-
users.users.radicale.uid = config.ids.uids.radicale;
+
users.users.radicale = {
+
isSystemUser = true;
+
group = "radicale";
+
};
-
users.groups.radicale.gid = config.ids.gids.radicale;
+
users.groups.radicale = {};
systemd.services.radicale = {
description = "A Simple Calendar and Contact Server";
+4 -1
nixos/modules/services/networking/radvd.nix
···
config = mkIf cfg.enable {
users.users.radvd =
-
{ uid = config.ids.uids.radvd;
+
{
+
isSystemUser = true;
+
group = "radvd";
description = "Router Advertisement Daemon User";
};
+
users.groups.radvd = {};
systemd.services.radvd =
{ description = "IPv6 Router Advertisement Daemon";
+3 -2
nixos/modules/services/networking/smokeping.nix
···
user = mkOption {
type = types.str;
default = "smokeping";
-
description = "User that runs smokeping and (optionally) thttpd";
+
description = "User that runs smokeping and (optionally) thttpd. A group of the same name will be created as well.";
};
webService = mkOption {
type = types.bool;
···
users.users.${cfg.user} = {
isNormalUser = false;
isSystemUser = true;
-
uid = config.ids.uids.smokeping;
+
group = cfg.user;
description = "smokeping daemon user";
home = smokepingHome;
createHome = true;
};
+
users.groups.${cfg.user} = {};
systemd.services.smokeping = {
wantedBy = [ "multi-user.target"];
serviceConfig = {
+4 -1
nixos/modules/services/networking/ssh/sshd.nix
···
config = mkIf cfg.enable {
users.users.sshd =
-
{ isSystemUser = true;
+
{
+
isSystemUser = true;
+
group = "sshd";
description = "SSH privilege separation user";
};
+
users.groups.sshd = {};
services.openssh.moduliFile = mkDefault "${cfgc.package}/etc/ssh/moduli";
services.openssh.sftpServerExecutable = mkDefault "${cfgc.package}/libexec/sftp-server";
+5 -1
nixos/modules/services/networking/tinydns.nix
···
config = mkIf config.services.tinydns.enable {
environment.systemPackages = [ pkgs.djbdns ];
-
users.users.tinydns.isSystemUser = true;
+
users.users.tinydns = {
+
isSystemUser = true;
+
group = "tinydns";
+
};
+
users.groups.tinydns = {};
systemd.services.tinydns = {
description = "djbdns tinydns server";
+3 -1
nixos/modules/services/scheduling/atd.nix
···
security.pam.services.atd = {};
users.users.atd =
-
{ uid = config.ids.uids.atd;
+
{
+
uid = config.ids.uids.atd;
+
group = "atd";
description = "atd user";
home = "/var/empty";
};
+3 -1
nixos/modules/services/search/kibana.nix
···
environment.systemPackages = [ cfg.package ];
users.users.kibana = {
-
uid = config.ids.uids.kibana;
+
isSystemUser = true;
description = "Kibana service user";
home = cfg.dataDir;
createHome = true;
+
group = "kibana";
};
+
users.groups.kibana = {};
};
}
+2
nixos/modules/services/security/hockeypuck.nix
···
users.users.hockeypuck = {
isSystemUser = true;
+
group = "hockeypuck";
description = "Hockeypuck user";
};
+
users.groups.hockeypuck = {};
systemd.services.hockeypuck = {
description = "Hockeypuck OpenPGP Key Server";
+2
nixos/modules/services/torrent/magnetico.nix
···
users.users.magnetico = {
description = "Magnetico daemons user";
+
group = "magnetico";
isSystemUser = true;
};
+
users.groups.magnetico = {};
systemd.services.magneticod = {
description = "Magnetico DHT crawler";
+5 -1
nixos/modules/services/torrent/peerflix.nix
···
};
};
-
users.users.peerflix.uid = config.ids.uids.peerflix;
+
users.users.peerflix = {
+
isSystemUser = true;
+
group = "peerflix";
+
};
+
users.groups.peerflix = {};
};
}
+1
nixos/modules/services/web-apps/node-red.nix
···
users.users = optionalAttrs (cfg.user == defaultUser) {
${defaultUser} = {
isSystemUser = true;
+
group = defaultUser;
};
};
+12 -3
nixos/modules/system/boot/systemd.nix
···
services.dbus.enable = true;
-
users.users.systemd-coredump.uid = config.ids.uids.systemd-coredump;
-
users.users.systemd-network.uid = config.ids.uids.systemd-network;
+
users.users.systemd-coredump = {
+
uid = config.ids.uids.systemd-coredump;
+
group = "systemd-coredump";
+
};
+
users.users.systemd-network = {
+
uid = config.ids.uids.systemd-network;
+
group = "systemd-network";
+
};
users.groups.systemd-network.gid = config.ids.gids.systemd-network;
-
users.users.systemd-resolve.uid = config.ids.uids.systemd-resolve;
+
users.users.systemd-resolve = {
+
uid = config.ids.uids.systemd-resolve;
+
group = "systemd-resolve";
+
};
users.groups.systemd-resolve.gid = config.ids.gids.systemd-resolve;
# Target for ‘charon send-keys’ to hook into.
+1 -1
nixos/modules/virtualisation/lxd.nix
···
};
};
-
users.groups.lxd.gid = config.ids.gids.lxd;
+
users.groups.lxd = {};
users.users.root = {
subUidRanges = [ { startUid = 1000000; count = 65536; } ];
+10 -1
nixos/tests/unbound.nix
···
# user that is permitted to access the unix socket
someuser = {
isSystemUser = true;
+
group = "someuser";
extraGroups = [
config.users.users.unbound.group
];
};
# user that is not permitted to access the unix socket
-
unauthorizeduser = { isSystemUser = true; };
+
unauthorizeduser = {
+
isSystemUser = true;
+
group = "unauthorizeduser";
+
};
+
+
};
+
users.groups = {
+
someuser = {};
+
unauthorizeduser = {};
};
# Used for testing configuration reloading