Gentoo Archives: gentoo-dev

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-dev@l.g.o
Cc: Sergei Trofimovich <slyfox@g.o>
Subject: [gentoo-dev] [PATCH 0/6] nix and guix GID/UID assignments
Date: Sun, 24 Nov 2019 12:47:31
Message-Id: 20191124124616.691759-1-slyfox@gentoo.org
1 A bit of background:
2
3 nix and guix are both hermetic builders with precise dependency
4 management: all build inputs are explicit and build outputs should
5 ideally not change if build inputs don't change.
6
7 Every user in the system can trigger the build via IPC request
8 to the builder daemon (nix-daemon or guix-daemon).
9
10 For each IPC request builder daemon pick free user from user pool
11 dedicated specifically for building. In case of nix pool group
12 is 'nixbld' and users in that pool are 'nixbld1', 'nixbld2', and so
13 on. There is no fixed limit on a pool size. Nixos creates 32 users:
14 nixbld{1..32}.
15
16 That way different users can't interfere with one anothers' build.
17
18 Groups/users have a few properties:
19 - final build results are owned by root:root and never by
20 nixbld{1..10} users
21 - nixbld{1..10} own only temporary build directory while IPC
22 request is handled. Temporary directory is deleted when build
23 is finished.
24 - the more concurrent clients are there the more users should
25 be in the builder group.
26
27 There is a GID collision:
28 Both nix and guix use GID=30000 for their 'nixbld'
29 and 'guixbuild' groups. As Gentoo allows both to co-exist
30 one of them has to give. I've moved guix down to 31000.
31
32 I've effectively reserved space for 1000 users for each of them:
33 - 30000..30999
34 - 31000..31000
35 and using only 10 of each.
36
37 Sergei Trofimovich (6):
38 acct-group/nixbld: new group (GID 30000)
39 acct-group/guixbuild: new group (GID 31000)
40 acct-user/nixbld{1..10}: new user (UID {30001..30010)
41 acct-user/guixbuilder{1..10}: new user (UID {31001..31010)
42 sys-apps/nix: switch from user.eclass to acct-*/ depends
43 sys-apps/guix: switch from user.eclass to acct-*/ depends
44
45 acct-group/guixbuild/guixbuild-0.ebuild | 10 ++
46 acct-group/guixbuild/metadata.xml | 8 +
47 acct-group/nixbld/metadata.xml | 8 +
48 acct-group/nixbld/nixbld-0.ebuild | 9 +
49 acct-user/guixbuilder1/guixbuilder1-0.ebuild | 13 ++
50 acct-user/guixbuilder1/metadata.xml | 8 +
51 .../guixbuilder10/guixbuilder10-0.ebuild | 13 ++
52 acct-user/guixbuilder10/metadata.xml | 8 +
53 acct-user/guixbuilder2/guixbuilder2-0.ebuild | 13 ++
54 acct-user/guixbuilder2/metadata.xml | 8 +
55 acct-user/guixbuilder3/guixbuilder3-0.ebuild | 13 ++
56 acct-user/guixbuilder3/metadata.xml | 8 +
57 acct-user/guixbuilder4/guixbuilder4-0.ebuild | 13 ++
58 acct-user/guixbuilder4/metadata.xml | 8 +
59 acct-user/guixbuilder5/guixbuilder5-0.ebuild | 13 ++
60 acct-user/guixbuilder5/metadata.xml | 8 +
61 acct-user/guixbuilder6/guixbuilder6-0.ebuild | 13 ++
62 acct-user/guixbuilder6/metadata.xml | 8 +
63 acct-user/guixbuilder7/guixbuilder7-0.ebuild | 13 ++
64 acct-user/guixbuilder7/metadata.xml | 8 +
65 acct-user/guixbuilder8/guixbuilder8-0.ebuild | 13 ++
66 acct-user/guixbuilder8/metadata.xml | 8 +
67 acct-user/guixbuilder9/guixbuilder9-0.ebuild | 13 ++
68 acct-user/guixbuilder9/metadata.xml | 8 +
69 acct-user/nixbld1/metadata.xml | 8 +
70 acct-user/nixbld1/nixbld1-0.ebuild | 13 ++
71 acct-user/nixbld10/metadata.xml | 8 +
72 acct-user/nixbld10/nixbld10-0.ebuild | 13 ++
73 acct-user/nixbld2/metadata.xml | 8 +
74 acct-user/nixbld2/nixbld2-0.ebuild | 13 ++
75 acct-user/nixbld3/metadata.xml | 8 +
76 acct-user/nixbld3/nixbld3-0.ebuild | 13 ++
77 acct-user/nixbld4/metadata.xml | 8 +
78 acct-user/nixbld4/nixbld4-0.ebuild | 13 ++
79 acct-user/nixbld5/metadata.xml | 8 +
80 acct-user/nixbld5/nixbld5-0.ebuild | 13 ++
81 acct-user/nixbld6/metadata.xml | 8 +
82 acct-user/nixbld6/nixbld6-0.ebuild | 13 ++
83 acct-user/nixbld7/metadata.xml | 8 +
84 acct-user/nixbld7/nixbld7-0.ebuild | 13 ++
85 acct-user/nixbld8/metadata.xml | 8 +
86 acct-user/nixbld8/nixbld8-0.ebuild | 13 ++
87 acct-user/nixbld9/metadata.xml | 8 +
88 acct-user/nixbld9/nixbld9-0.ebuild | 13 ++
89 sys-apps/guix/guix-1.0.1-r2.ebuild | 165 ++++++++++++++++++
90 sys-apps/nix/nix-2.3.1-r1.ebuild | 145 +++++++++++++++
91 46 files changed, 765 insertions(+)
92 create mode 100644 acct-group/guixbuild/guixbuild-0.ebuild
93 create mode 100644 acct-group/guixbuild/metadata.xml
94 create mode 100644 acct-group/nixbld/metadata.xml
95 create mode 100644 acct-group/nixbld/nixbld-0.ebuild
96 create mode 100644 acct-user/guixbuilder1/guixbuilder1-0.ebuild
97 create mode 100644 acct-user/guixbuilder1/metadata.xml
98 create mode 100644 acct-user/guixbuilder10/guixbuilder10-0.ebuild
99 create mode 100644 acct-user/guixbuilder10/metadata.xml
100 create mode 100644 acct-user/guixbuilder2/guixbuilder2-0.ebuild
101 create mode 100644 acct-user/guixbuilder2/metadata.xml
102 create mode 100644 acct-user/guixbuilder3/guixbuilder3-0.ebuild
103 create mode 100644 acct-user/guixbuilder3/metadata.xml
104 create mode 100644 acct-user/guixbuilder4/guixbuilder4-0.ebuild
105 create mode 100644 acct-user/guixbuilder4/metadata.xml
106 create mode 100644 acct-user/guixbuilder5/guixbuilder5-0.ebuild
107 create mode 100644 acct-user/guixbuilder5/metadata.xml
108 create mode 100644 acct-user/guixbuilder6/guixbuilder6-0.ebuild
109 create mode 100644 acct-user/guixbuilder6/metadata.xml
110 create mode 100644 acct-user/guixbuilder7/guixbuilder7-0.ebuild
111 create mode 100644 acct-user/guixbuilder7/metadata.xml
112 create mode 100644 acct-user/guixbuilder8/guixbuilder8-0.ebuild
113 create mode 100644 acct-user/guixbuilder8/metadata.xml
114 create mode 100644 acct-user/guixbuilder9/guixbuilder9-0.ebuild
115 create mode 100644 acct-user/guixbuilder9/metadata.xml
116 create mode 100644 acct-user/nixbld1/metadata.xml
117 create mode 100644 acct-user/nixbld1/nixbld1-0.ebuild
118 create mode 100644 acct-user/nixbld10/metadata.xml
119 create mode 100644 acct-user/nixbld10/nixbld10-0.ebuild
120 create mode 100644 acct-user/nixbld2/metadata.xml
121 create mode 100644 acct-user/nixbld2/nixbld2-0.ebuild
122 create mode 100644 acct-user/nixbld3/metadata.xml
123 create mode 100644 acct-user/nixbld3/nixbld3-0.ebuild
124 create mode 100644 acct-user/nixbld4/metadata.xml
125 create mode 100644 acct-user/nixbld4/nixbld4-0.ebuild
126 create mode 100644 acct-user/nixbld5/metadata.xml
127 create mode 100644 acct-user/nixbld5/nixbld5-0.ebuild
128 create mode 100644 acct-user/nixbld6/metadata.xml
129 create mode 100644 acct-user/nixbld6/nixbld6-0.ebuild
130 create mode 100644 acct-user/nixbld7/metadata.xml
131 create mode 100644 acct-user/nixbld7/nixbld7-0.ebuild
132 create mode 100644 acct-user/nixbld8/metadata.xml
133 create mode 100644 acct-user/nixbld8/nixbld8-0.ebuild
134 create mode 100644 acct-user/nixbld9/metadata.xml
135 create mode 100644 acct-user/nixbld9/nixbld9-0.ebuild
136 create mode 100644 sys-apps/guix/guix-1.0.1-r2.ebuild
137 create mode 100644 sys-apps/nix/nix-2.3.1-r1.ebuild
138
139 --
140 2.24.0

Replies