mirror of
https://codeberg.org/guix/guix.git
synced 2025-10-02 02:15:12 +00:00
This fixes issue for rootless guix daemon where store being remounted read-only by gnu-store.mount is propagated to the guix daemon making guix daemon not able to modify it. * etc/guix-daemon.service.in: Disable host filesystem mount propagation. Change-Id: Ib1abc387ee15d2b04d6f70c121244943cd0ad8c6 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Modified-by: Ludovic Courtès <ludo@gnu.org>
50 lines
1.8 KiB
SYSTEMD
50 lines
1.8 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@
|
||
# Disable host file system mount propagation to keep service view of the
|
||
# store read-write after 'gnu-store.mount' makes it read-only system-wide.
|
||
MountFlags=private
|
||
|
||
# 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
|