mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-21 01:30:29 +02:00
* 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
48 lines
1.7 KiB
SYSTEMD
48 lines
1.7 KiB
SYSTEMD
# This is a "service unit file" for the systemd init system to launch
|
||
# 'guix-daemon'. Drop it in /etc/systemd/system or similar to have
|
||
# 'guix-daemon' automatically started.
|
||
|
||
[Unit]
|
||
Description=Build daemon for GNU Guix
|
||
|
||
# Start before 'gnu-store.mount' to get a writable view of the store.
|
||
Before=gnu-store.mount
|
||
|
||
[Service]
|
||
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
|
||
--discover=no \
|
||
--substitute-urls='@GUIX_SUBSTITUTE_URLS@'
|
||
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
|
||
StandardError=journal
|
||
|
||
# Work around a nasty systemd ‘feature’ that kills the entire process tree
|
||
# (including the daemon!) if any child, such as cc1plus, runs out of memory.
|
||
OOMPolicy=continue
|
||
|
||
# Despite the name, this is rate-limited: a broken daemon will eventually fail.
|
||
Restart=always
|
||
|
||
# See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>.
|
||
# Some package builds (for example, go@1.8.1) may require even more than
|
||
# 1024 tasks.
|
||
TasksMax=8192
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|