1# This module defines the global list of uids and gids. We keep a
2# central list to prevent id collisions.
3
4# IMPORTANT!
5#
6# https://github.com/NixOS/rfcs/blob/master/rfcs/0052-dynamic-ids.md
7#
8# Use of static ids is deprecated within NixOS. Dynamic allocation is
9# required, barring special circumstacnes. Please check if the service
10# is applicable for systemd's DynamicUser option and does not need a
11# uid/gid allocation at all. Systemd can also change ownership of
12# service directories using the RuntimeDirectory/StateDirectory
13# options.
14
15{ lib, ... }:
16
17let
18 inherit (lib) types;
19in
20{
21 options = {
22
23 ids.uids = lib.mkOption {
24 internal = true;
25 description = ''
26 The user IDs used in NixOS.
27 '';
28 type = types.attrsOf types.int;
29 };
30
31 ids.gids = lib.mkOption {
32 internal = true;
33 description = ''
34 The group IDs used in NixOS.
35 '';
36 type = types.attrsOf types.int;
37 };
38
39 };
40
41 config = {
42
43 ids.uids = {
44 root = 0;
45 #wheel = 1; # unused
46 #kmem = 2; # unused
47 #tty = 3; # unused
48 messagebus = 4; # D-Bus
49 haldaemon = 5;
50 #disk = 6; # unused
51 #vsftpd = 7; # dynamically allocated ass of 2021-09-14
52 ftp = 8;
53 # bitlbee = 9; # removed 2021-10-05 #139765
54 #avahi = 10; # removed 2019-05-22
55 nagios = 11;
56 atd = 12;
57 postfix = 13;
58 #postdrop = 14; # unused
59 dovecot = 15;
60 tomcat = 16;
61 #audio = 17; # unused
62 #floppy = 18; # unused
63 uucp = 19;
64 #lp = 20; # unused
65 #proc = 21; # unused
66 pulseaudio = 22; # must match `pulseaudio' GID
67 gpsd = 23;
68 #cdrom = 24; # unused
69 #tape = 25; # unused
70 #video = 26; # unused
71 #dialout = 27; # unused
72 polkituser = 28;
73 #utmp = 29; # unused
74 # ddclient = 30; # converted to DynamicUser = true
75 davfs2 = 31;
76 disnix = 33;
77 osgi = 34;
78 tor = 35;
79 cups = 36;
80 foldingathome = 37;
81 sabnzbd = 38;
82 #kdm = 39; # dropped in 17.03
83 #ghostone = 40; # dropped in 18.03
84 git = 41;
85 #fourstore = 42; # dropped in 20.03
86 #fourstorehttp = 43; # dropped in 20.03
87 #virtuoso = 44; dropped module
88 #rtkit = 45; # dynamically allocated 2021-09-03
89 dovecot2 = 46;
90 dovenull2 = 47;
91 # prayer = 49; # dropped in 23.11
92 mpd = 50;
93 clamav = 51;
94 #fprot = 52; # unused
95 # bind = 53; #dynamically allocated as of 2021-09-03
96 wwwrun = 54;
97 #adm = 55; # unused
98 spamd = 56;
99 #networkmanager = 57; # unused
100 nslcd = 58;
101 scanner = 59;
102 nginx = 60;
103 chrony = 61;
104 #systemd-journal = 62; # unused
105 smtpd = 63;
106 smtpq = 64;
107 supybot = 65;
108 iodined = 66;
109 #libvirtd = 67; # unused
110 graphite = 68;
111 #statsd = 69; # removed 2018-11-14
112 transmission = 70;
113 postgres = 71;
114 #vboxusers = 72; # unused
115 #vboxsf = 73; # unused
116 smbguest = 74; # unused
117 varnish = 75;
118 datadog = 76;
119 lighttpd = 77;
120 lightdm = 78;
121 freenet = 79;
122 ircd = 80;
123 bacula = 81;
124 #almir = 82; # removed 2018-03-25, the almir package was removed in 30291227f2411abaca097773eedb49b8f259e297 during 2017-08
125 deluge = 83;
126 mysql = 84;
127 rabbitmq = 85;
128 activemq = 86;
129 gnunet = 87;
130 oidentd = 88;
131 quassel = 89;
132 amule = 90;
133 minidlna = 91;
134 elasticsearch = 92;
135 tcpcryptd = 93; # tcpcryptd uses a hard-coded uid. We patch it in Nixpkgs to match this choice.
136 firebird = 95;
137 #keys = 96; # unused
138 #haproxy = 97; # dynamically allocated as of 2020-03-11
139 #mongodb = 98; #dynamically allocated as of 2021-09-03
140 #openldap = 99; # dynamically allocated as of PR#94610
141 #users = 100; # unused
142 # cgminer = 101; #dynamically allocated as of 2021-09-17
143 munin = 102;
144 #logcheck = 103; #dynamically allocated as of 2021-09-17
145 #nix-ssh = 104; #dynamically allocated as of 2021-09-03
146 dictd = 105;
147 couchdb = 106;
148 #searx = 107; # dynamically allocated as of 2020-10-27
149 #kippo = 108; # removed 2021-10-07, the kippo package was removed in 1b213f321cdbfcf868b96fd9959c24207ce1b66a during 2021-04
150 jenkins = 109;
151 systemd-journal-gateway = 110;
152 #notbit = 111; # unused
153 aerospike = 111;
154 #ngircd = 112; #dynamically allocated as of 2021-09-03
155 #btsync = 113; # unused
156 #minecraft = 114; #dynamically allocated as of 2021-09-03
157 vault = 115;
158 # rippled = 116; #dynamically allocated as of 2021-09-18
159 murmur = 117;
160 foundationdb = 118;
161 newrelic = 119;
162 starbound = 120;
163 hydra = 122;
164 spiped = 123;
165 teamspeak = 124;
166 influxdb = 125;
167 nsd = 126;
168 gitolite = 127;
169 znc = 128;
170 polipo = 129;
171 mopidy = 130;
172 #docker = 131; # unused
173 gdm = 132;
174 #dhcpd = 133; # dynamically allocated as of 2021-09-03
175 siproxd = 134;
176 mlmmj = 135;
177 #neo4j = 136;# dynamically allocated as of 2021-09-03
178 riemann = 137;
179 riemanndash = 138;
180 #radvd = 139;# dynamically allocated as of 2021-09-03
181 #zookeeper = 140;# dynamically allocated as of 2021-09-03
182 #dnsmasq = 141;# dynamically allocated as of 2021-09-03
183 #uhub = 142; # unused
184 yandexdisk = 143;
185 # mxisd = 144; # removed 2024-07-10
186 #consul = 145;# dynamically allocated as of 2021-09-03
187 #mailpile = 146; # removed 2022-01-12
188 redmine = 147;
189 #seeks = 148; # removed 2020-06-21
190 prosody = 149;
191 i2pd = 150;
192 systemd-coredump = 151;
193 systemd-network = 152;
194 systemd-resolve = 153;
195 systemd-timesync = 154;
196 liquidsoap = 155;
197 #etcd = 156;# dynamically allocated as of 2021-09-03
198 hbase = 158;
199 opentsdb = 159;
200 scollector = 160;
201 bosun = 161;
202 kubernetes = 162;
203 peerflix = 163;
204 #chronos = 164; # removed 2020-08-15
205 gitlab = 165;
206 # tox-bootstrapd = 166; removed 2021-09-15
207 cadvisor = 167;
208 nylon = 168;
209 #apache-kafka = 169;# dynamically allocated as of 2021-09-03
210 #panamax = 170; # unused
211 exim = 172;
212 #fleet = 173; # unused
213 #input = 174; # unused
214 sddm = 175;
215 #tss = 176; # dynamically allocated as of 2021-09-17
216 #memcached = 177; removed 2018-01-03
217 #ntp = 179; # dynamically allocated as of 2021-09-17
218 zabbix = 180;
219 #redis = 181; removed 2018-01-03
220 #unifi = 183; dynamically allocated as of 2021-09-17
221 uptimed = 184;
222 #zope2 = 185; # dynamically allocated as of 2021-09-18
223 #ripple-data-api = 186; dynamically allocated as of 2021-09-17
224 mediatomb = 187;
225 #rdnssd = 188; #dynamically allocated as of 2021-09-18
226 ihaskell = 189;
227 i2p = 190;
228 lambdabot = 191;
229 asterisk = 192;
230 plex = 193;
231 plexpy = 195;
232 grafana = 196;
233 skydns = 197;
234 # ripple-rest = 198; # unused, removed 2017-08-12
235 # nix-serve = 199; # unused, removed 2020-12-12
236 #tvheadend = 200; # dynamically allocated as of 2021-09-18
237 uwsgi = 201;
238 # gitit = 202; # unused, module was removed 2023-04-03
239 riemanntools = 203;
240 subsonic = 204;
241 # riak = 205; # unused, remove 2022-07-22
242 #shout = 206; # dynamically allocated as of 2021-09-18, module removed 2024-10-19
243 gateone = 207;
244 namecoin = 208;
245 #lxd = 210; # unused
246 #kibana = 211;# dynamically allocated as of 2021-09-03
247 xtreemfs = 212;
248 calibre-server = 213;
249 #heapster = 214; #dynamically allocated as of 2021-09-17
250 bepasty = 215;
251 # pumpio = 216; # unused, removed 2018-02-24
252 nm-openvpn = 217;
253 # mathics = 218; # unused, removed 2020-08-15
254 ejabberd = 219;
255 postsrsd = 220;
256 opendkim = 221;
257 dspam = 222;
258 # gale = 223; removed 2021-06-10
259 matrix-synapse = 224;
260 rspamd = 225;
261 # rmilter = 226; # unused, removed 2019-08-22
262 cfdyndns = 227;
263 # gammu-smsd = 228; #dynamically allocated as of 2021-09-17
264 pdnsd = 229;
265 octoprint = 230;
266 avahi-autoipd = 231;
267 # nntp-proxy = 232; #dynamically allocated as of 2021-09-17
268 mjpg-streamer = 233;
269 #radicale = 234;# dynamically allocated as of 2021-09-03
270 hydra-queue-runner = 235;
271 hydra-www = 236;
272 syncthing = 237;
273 caddy = 239;
274 taskd = 240;
275 # factorio = 241; # DynamicUser = true
276 # emby = 242; # unusued, removed 2019-05-01
277 #graylog = 243;# dynamically allocated as of 2021-09-03
278 sniproxy = 244;
279 nzbget = 245;
280 mosquitto = 246;
281 #toxvpn = 247; # dynamically allocated as of 2021-09-18
282 # squeezelite = 248; # DynamicUser = true
283 turnserver = 249;
284 #smokeping = 250;# dynamically allocated as of 2021-09-03
285 gocd-agent = 251;
286 gocd-server = 252;
287 terraria = 253;
288 mattermost = 254;
289 prometheus = 255;
290 telegraf = 256;
291 gitlab-runner = 257;
292 postgrey = 258;
293 # hound = 259; # unused, removed 2023-11-21
294 leaps = 260;
295 ipfs = 261;
296 # stanchion = 262; # unused, removed 2020-10-14
297 # riak-cs = 263; # unused, removed 2020-10-14
298 infinoted = 264;
299 sickbeard = 265;
300 headphones = 266;
301 # couchpotato = 267; # unused, removed 2022-01-01
302 # gogs = 268; # unused, removed in 2024-10-12
303 #pdns-recursor = 269; # dynamically allocated as of 2020-20-18
304 #kresd = 270; # switched to "knot-resolver" with dynamic ID
305 rpc = 271;
306 #geoip = 272; # new module uses DynamicUser
307 fcron = 273;
308 sonarr = 274;
309 radarr = 275;
310 jackett = 276;
311 aria2 = 277;
312 clickhouse = 278;
313 rslsync = 279;
314 minio = 280;
315 kanboard = 281;
316 # pykms = 282; # DynamicUser = true
317 kodi = 283;
318 # restya-board = 284; # removed 2024-01-22
319 mighttpd2 = 285;
320 hass = 286;
321 #monero = 287; # dynamically allocated as of 2021-05-08
322 ceph = 288;
323 duplicati = 289;
324 monetdb = 290;
325 restic = 291;
326 openvpn = 292;
327 # meguca = 293; # removed 2020-08-21
328 yarn = 294;
329 hdfs = 295;
330 mapred = 296;
331 hadoop = 297;
332 #hydron = 298; # removed 2024-08-03
333 cfssl = 299;
334 cassandra = 300;
335 qemu-libvirtd = 301;
336 # kvm = 302; # unused
337 # render = 303; # unused
338 # zeronet = 304; # removed 2019-01-03
339 lirc = 305;
340 lidarr = 306;
341 slurm = 307;
342 kapacitor = 308;
343 # solr = 309; removed 2023-03-16
344 alerta = 310;
345 minetest = 311;
346 rss2email = 312;
347 cockroachdb = 313;
348 zoneminder = 314;
349 paperless = 315;
350 #mailman = 316; # removed 2019-08-30
351 zigbee2mqtt = 317;
352 # shadow = 318; # unused
353 hqplayer = 319;
354 moonraker = 320;
355 distcc = 321;
356 webdav = 322;
357 pipewire = 323;
358 rstudio-server = 324;
359 localtimed = 325;
360 automatic-timezoned = 326;
361
362 # When adding a uid, make sure it doesn't match an existing gid.
363 #
364 # !!! Don't use uids above "399"! !!!
365 #
366 # The reason behind this restriction is that, NixOS by default allocates
367 # system user UIDs/GIDs in the range of `400..999`. System users/groups
368 # created using command like `useradd` will have UID and GID in this range[1].
369 #
370 # If a newly added ID goes beyond "399", it may conflict with existing
371 # system user or group of the same id in someone else's NixOS.
372 # This could break their system and make that person upset for a whole day.
373 #
374 # Sidenote: the default is defined in `shadow` module[2], and the relavent change
375 # was made way back in 2014[3].
376 #
377 # [1]: https://man7.org/linux/man-pages/man5/login.defs.5.html#:~:text=SYS_UID_MAX%20(number)%2C%20SYS_UID_MIN%20(number)
378 # [2]: <nixos/modules/programs/shadow.nix>
379 # [3]: https://github.com/NixOS/nixpkgs/commit/0e23a175de3687df8232fe118cbe87f04228ff28
380
381 nixbld = 30000; # start of range of uids
382 nobody = 65534;
383 };
384
385 ids.gids = {
386 root = 0;
387 wheel = 1;
388 kmem = 2;
389 tty = 3;
390 messagebus = 4; # D-Bus
391 haldaemon = 5;
392 disk = 6;
393 #vsftpd = 7; # dynamically allocated as of 2021-09-14
394 ftp = 8;
395 # bitlbee = 9; # removed 2021-10-05 #139765
396 #avahi = 10; # removed 2019-05-22
397 #nagios = 11; # unused
398 atd = 12;
399 postfix = 13;
400 postdrop = 14;
401 dovecot = 15;
402 tomcat = 16;
403 audio = 17;
404 floppy = 18;
405 uucp = 19;
406 lp = 20;
407 proc = 21;
408 pulseaudio = 22; # must match `pulseaudio' UID
409 gpsd = 23;
410 cdrom = 24;
411 tape = 25;
412 video = 26;
413 dialout = 27;
414 #polkituser = 28; # currently unused, polkitd doesn't need a group
415 utmp = 29;
416 # ddclient = 30; # converted to DynamicUser = true
417 davfs2 = 31;
418 disnix = 33;
419 osgi = 34;
420 tor = 35;
421 #cups = 36; # unused
422 #foldingathome = 37; # unused
423 #sabnzd = 38; # unused
424 #kdm = 39; # unused, even before 17.03
425 #ghostone = 40; # dropped in 18.03
426 git = 41;
427 fourstore = 42;
428 fourstorehttp = 43;
429 virtuoso = 44;
430 #rtkit = 45; # unused
431 dovecot2 = 46;
432 dovenull2 = 47;
433 # prayer = 49; # dropped in 23.11
434 mpd = 50;
435 clamav = 51;
436 #fprot = 52; # unused
437 #bind = 53; # unused
438 wwwrun = 54;
439 adm = 55;
440 spamd = 56;
441 networkmanager = 57;
442 nslcd = 58;
443 scanner = 59;
444 nginx = 60;
445 chrony = 61;
446 systemd-journal = 62;
447 smtpd = 63;
448 smtpq = 64;
449 supybot = 65;
450 iodined = 66;
451 libvirtd = 67;
452 graphite = 68;
453 #statsd = 69; # removed 2018-11-14
454 transmission = 70;
455 postgres = 71;
456 vboxusers = 72;
457 vboxsf = 73;
458 smbguest = 74; # unused
459 varnish = 75;
460 datadog = 76;
461 lighttpd = 77;
462 lightdm = 78;
463 freenet = 79;
464 ircd = 80;
465 bacula = 81;
466 #almir = 82; # removed 2018-03-25, the almir package was removed in 30291227f2411abaca097773eedb49b8f259e297 during 2017-08
467 deluge = 83;
468 mysql = 84;
469 rabbitmq = 85;
470 activemq = 86;
471 gnunet = 87;
472 oidentd = 88;
473 quassel = 89;
474 amule = 90;
475 minidlna = 91;
476 elasticsearch = 92;
477 #tcpcryptd = 93; # unused
478 firebird = 95;
479 keys = 96;
480 #haproxy = 97; # dynamically allocated as of 2020-03-11
481 #mongodb = 98; # unused
482 #openldap = 99; # dynamically allocated as of PR#94610
483 munin = 102;
484 #logcheck = 103; # unused
485 #nix-ssh = 104; # unused
486 dictd = 105;
487 couchdb = 106;
488 #searx = 107; # dynamically allocated as of 2020-10-27
489 #kippo = 108; # removed 2021-10-07, the kippo package was removed in 1b213f321cdbfcf868b96fd9959c24207ce1b66a during 2021-04
490 jenkins = 109;
491 systemd-journal-gateway = 110;
492 #notbit = 111; # unused
493 aerospike = 111;
494 #ngircd = 112; # unused
495 #btsync = 113; # unused
496 #minecraft = 114; # unused
497 vault = 115;
498 #ripped = 116; # unused
499 murmur = 117;
500 foundationdb = 118;
501 newrelic = 119;
502 starbound = 120;
503 hydra = 122;
504 spiped = 123;
505 teamspeak = 124;
506 influxdb = 125;
507 nsd = 126;
508 gitolite = 127;
509 znc = 128;
510 polipo = 129;
511 mopidy = 130;
512 docker = 131;
513 gdm = 132;
514 #dhcpcd = 133; # unused
515 siproxd = 134;
516 mlmmj = 135;
517 #neo4j = 136; # unused
518 riemann = 137;
519 riemanndash = 138;
520 #radvd = 139; # unused
521 #zookeeper = 140; # unused
522 #dnsmasq = 141; # unused
523 uhub = 142;
524 #yandexdisk = 143; # unused
525 # mxisd = 144; # removed 2024-07-10
526 #consul = 145; # unused
527 #mailpile = 146; # removed 2022-01-12
528 redmine = 147;
529 #seeks = 148; # removed 2020-06-21
530 prosody = 149;
531 i2pd = 150;
532 systemd-network = 152;
533 systemd-resolve = 153;
534 systemd-timesync = 154;
535 liquidsoap = 155;
536 #etcd = 156; # unused
537 hbase = 158;
538 opentsdb = 159;
539 scollector = 160;
540 bosun = 161;
541 kubernetes = 162;
542 #peerflix = 163; # unused
543 #chronos = 164; # unused
544 gitlab = 165;
545 nylon = 168;
546 #panamax = 170; # unused
547 exim = 172;
548 #fleet = 173; # unused
549 input = 174;
550 sddm = 175;
551 #tss = 176; #dynamically allocateda as of 2021-09-20
552 #memcached = 177; # unused, removed 2018-01-03
553 #ntp = 179; # unused
554 zabbix = 180;
555 #redis = 181; # unused, removed 2018-01-03
556 #unifi = 183; # unused
557 #uptimed = 184; # unused
558 #zope2 = 185; # unused
559 #ripple-data-api = 186; #unused
560 mediatomb = 187;
561 #rdnssd = 188; # unused
562 ihaskell = 189;
563 i2p = 190;
564 lambdabot = 191;
565 asterisk = 192;
566 plex = 193;
567 sabnzbd = 194;
568 #grafana = 196; #unused
569 #skydns = 197; #unused
570 # ripple-rest = 198; # unused, removed 2017-08-12
571 #nix-serve = 199; #unused
572 #tvheadend = 200; #unused
573 uwsgi = 201;
574 gitit = 202;
575 riemanntools = 203;
576 subsonic = 204;
577 # riak = 205;#unused, removed 2022-06-22
578 #shout = 206; #unused
579 gateone = 207;
580 namecoin = 208;
581 #lxd = 210; # unused
582 #kibana = 211;
583 xtreemfs = 212;
584 calibre-server = 213;
585 bepasty = 215;
586 # pumpio = 216; # unused, removed 2018-02-24
587 nm-openvpn = 217;
588 mathics = 218;
589 ejabberd = 219;
590 postsrsd = 220;
591 opendkim = 221;
592 dspam = 222;
593 # gale = 223; removed 2021-06-10
594 matrix-synapse = 224;
595 rspamd = 225;
596 # rmilter = 226; # unused, removed 2019-08-22
597 cfdyndns = 227;
598 pdnsd = 229;
599 octoprint = 230;
600 #radicale = 234;# dynamically allocated as of 2021-09-03
601 syncthing = 237;
602 caddy = 239;
603 taskd = 240;
604 # factorio = 241; # unused
605 # emby = 242; # unused, removed 2019-05-01
606 sniproxy = 244;
607 nzbget = 245;
608 mosquitto = 246;
609 #toxvpn = 247; # unused
610 #squeezelite = 248; #unused
611 turnserver = 249;
612 #smokeping = 250;# dynamically allocated as of 2021-09-03
613 gocd-agent = 251;
614 gocd-server = 252;
615 terraria = 253;
616 mattermost = 254;
617 prometheus = 255;
618 #telegraf = 256; # unused
619 gitlab-runner = 257;
620 postgrey = 258;
621 # hound = 259; # unused, removed 2023-11-21
622 leaps = 260;
623 ipfs = 261;
624 # stanchion = 262; # unused, removed 2020-10-14
625 # riak-cs = 263; # unused, removed 2020-10-14
626 infinoted = 264;
627 sickbeard = 265;
628 headphones = 266;
629 # couchpotato = 267; # unused, removed 2022-01-01
630 # gogs = 268; # unused, removed in 2024-10-12
631 #kresd = 270; # switched to "knot-resolver" with dynamic ID
632 #rpc = 271; # unused
633 #geoip = 272; # unused
634 fcron = 273;
635 sonarr = 274;
636 radarr = 275;
637 jackett = 276;
638 aria2 = 277;
639 clickhouse = 278;
640 rslsync = 279;
641 minio = 280;
642 kanboard = 281;
643 # pykms = 282; # DynamicUser = true
644 kodi = 283;
645 # restya-board = 284; # removed 2024-01-22
646 mighttpd2 = 285;
647 hass = 286;
648 # monero = 287; # dynamically allocated as of 2021-05-08
649 ceph = 288;
650 duplicati = 289;
651 monetdb = 290;
652 restic = 291;
653 openvpn = 292;
654 # meguca = 293; # removed 2020-08-21
655 yarn = 294;
656 hdfs = 295;
657 mapred = 296;
658 hadoop = 297;
659 #hydron = 298; # removed 2024-08-03
660 cfssl = 299;
661 cassandra = 300;
662 qemu-libvirtd = 301;
663 kvm = 302; # default udev rules from systemd requires these
664 render = 303; # default udev rules from systemd requires these
665 sgx = 304; # default udev rules from systemd requires these
666 lirc = 305;
667 lidarr = 306;
668 slurm = 307;
669 kapacitor = 308;
670 # solr = 309; removed 2023-03-16
671 alerta = 310;
672 minetest = 311;
673 rss2email = 312;
674 cockroachdb = 313;
675 zoneminder = 314;
676 paperless = 315;
677 #mailman = 316; # removed 2019-08-30
678 zigbee2mqtt = 317;
679 shadow = 318;
680 hqplayer = 319;
681 moonraker = 320;
682 distcc = 321;
683 webdav = 322;
684 pipewire = 323;
685 rstudio-server = 324;
686 localtimed = 325;
687 automatic-timezoned = 326;
688
689 # When adding a gid, make sure it doesn't match an existing
690 # uid. Users and groups with the same name should have equal
691 # uids and gids.
692 #
693 # !!! Don't use gids above "399"! !!!
694 #
695 # The reason behind this restriction is that, NixOS by default allocates
696 # system user UIDs/GIDs in the range of `400..999`. System users/groups
697 # created using command like `useradd` will have UID and GID in this range[1].
698 #
699 # If a newly added ID goes beyond "399", it may conflict with existing
700 # system user or group of the same id in someone else's NixOS.
701 # This could break their system and make that person upset for a whole day.
702 #
703 # Sidenote: the default is defined in `shadow` module[2], and the relavent change
704 # was made way back in 2014[3].
705 #
706 # [1]: https://man7.org/linux/man-pages/man5/login.defs.5.html#:~:text=SYS_UID_MAX%20(number)%2C%20SYS_UID_MIN%20(number)
707 # [2]: <nixos/modules/programs/shadow.nix>
708 # [3]: https://github.com/NixOS/nixpkgs/commit/0e23a175de3687df8232fe118cbe87f04228ff28
709
710 # For exceptional cases where you really need a gid above 399, leave a
711 # comment stating why.
712 #
713 # Also, avoid the following GID ranges:
714 #
715 # 1000 - 29999: user accounts (see ../config/update-users-groups.pl)
716 # 30000 - 31000: nixbld users (the upper limit is arbitrarily chosen)
717 # 61184 - 65519: systemd DynamicUser (see systemd.exec(5))
718 # 65535: the error return sentinel value when uid_t was 16 bits
719 #
720 # 100000 - 6653600: subgid allocated for user namespaces
721 # (see ../config/update-users-groups.pl)
722 # 4294967294: unauthenticated user in some NFS implementations
723 # 4294967295: error return sentinel value
724 #
725 # References:
726 # https://www.debian.org/doc/debian-policy/ch-opersys.html#uid-and-gid-classes
727
728 onepassword = 31001; # 1Password requires that its GID be larger than 1000
729 onepassword-cli = 31002; # 1Password requires that its GID be larger than 1000
730
731 users = 100;
732 nixbld = 30000;
733 nogroup = 65534;
734 };
735
736 };
737
738}