mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
etc: systemd services: Run ‘guix-daemon’ as an unprivileged user.
* etc/guix-daemon.service.in (ExecStart): Remove ‘--build-users-group’. (Environment): Add ‘GUIX_STATE_DIRECTORY’. (Before, User, AmbientCapabilities, PrivateMounts, BindPaths): New fields. * etc/gnu-store.mount.in (Before): Remove. (WantedBy): Change to ‘multi-user.target’. Change-Id: Id826b8ab535844b6024d777f6bd15fd49db6d65e
This commit is contained in:
parent
2f65438eba
commit
107eb8ee8f
2 changed files with 21 additions and 4 deletions
|
@ -2,10 +2,9 @@
|
||||||
Description=Read-only @storedir@ for GNU Guix
|
Description=Read-only @storedir@ for GNU Guix
|
||||||
DefaultDependencies=no
|
DefaultDependencies=no
|
||||||
ConditionPathExists=@storedir@
|
ConditionPathExists=@storedir@
|
||||||
Before=guix-daemon.service
|
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=guix-daemon.service
|
WantedBy=multi-user.target
|
||||||
|
|
||||||
[Mount]
|
[Mount]
|
||||||
What=@storedir@
|
What=@storedir@
|
||||||
|
|
|
@ -5,11 +5,29 @@
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Build daemon for GNU Guix
|
Description=Build daemon for GNU Guix
|
||||||
|
|
||||||
|
# Start before 'gnu-store.mount' to get a writable view of the store.
|
||||||
|
Before=gnu-store.mount
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
|
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
|
||||||
--build-users-group=guixbuild --discover=no \
|
--discover=no \
|
||||||
--substitute-urls='@GUIX_SUBSTITUTE_URLS@'
|
--substitute-urls='@GUIX_SUBSTITUTE_URLS@'
|
||||||
Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
|
Environment='GUIX_STATE_DIRECTORY=@localstatedir@/guix' 'GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
|
||||||
|
|
||||||
|
# Run under a dedicated unprivileged user account.
|
||||||
|
User=guix-daemon
|
||||||
|
|
||||||
|
# Bind-mount the store read-write in a private namespace, to counter the
|
||||||
|
# effect of 'gnu-store.mount'.
|
||||||
|
PrivateMounts=true
|
||||||
|
BindPaths=@storedir@
|
||||||
|
|
||||||
|
# Provide the CAP_CHOWN capability so that guix-daemon can create and chown
|
||||||
|
# /var/guix/profiles/per-user/$USER and also chown failed build directories
|
||||||
|
# when using '--keep-failed'. Note that guix-daemon explicitly drops ambient
|
||||||
|
# capabilities before executing build processes so they don't inherit them.
|
||||||
|
AmbientCapabilities=CAP_CHOWN
|
||||||
|
|
||||||
StandardOutput=journal
|
StandardOutput=journal
|
||||||
StandardError=journal
|
StandardError=journal
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue