services: nix: Add more configuration fields.

* gnu/services/nix.scm (<nix-configuration>)[build-directory]: New field.
(nix-service-etc, nix-shepherd-service): Take them into account.
* doc/guix.texi (Nix): Update it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Petr Hodina 2022-10-31 16:12:38 +01:00 committed by Ludovic Courtès
parent bbcd06e56c
commit 22acc0b029
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 17 additions and 3 deletions

View file

@ -37209,6 +37209,15 @@ The Nix package to use.
@item @code{sandbox} (default: @code{#t})
Specifies whether builds are sandboxed by default.
@item @code{build-directory} (default: @code{"/tmp"})
The directory where build directory are stored during builds.
This is useful to change if, for example, the default location does not
have enough space to hold build trees for big packages.
This is similar to setting the @env{TMPDIR} environment variable for
@command{guix-daemon}. @ref{Build Environment Setup, @env{TMPDIR}},
for more info.
@item @code{build-sandbox-items} (default: @code{'()})
This is a list of strings or objects appended to the
@code{build-sandbox-items} field of the configuration file.

View file

@ -54,6 +54,8 @@ (define-record-type* <nix-configuration>
(default nix))
(sandbox nix-configuration-sandbox ;boolean
(default #t))
(build-directory nix-configuration-build-directory ;string
(default "/tmp"))
(build-sandbox-items nix-configuration-build-sandbox-items ;list of strings
(default '()))
(extra-config nix-configuration-extra-config ;list of strings
@ -106,7 +108,7 @@ (define (nix-activation _)
(define nix-service-etc
(match-lambda
(($ <nix-configuration> package sandbox build-sandbox-items extra-config)
(($ <nix-configuration> package sandbox build-directory build-sandbox-items extra-config)
(let ((ref-file (references-file package)))
`(("nix/nix.conf"
,(computed-file
@ -130,7 +132,7 @@ (define internal-sandbox-paths
(define nix-shepherd-service
;; Return a <shepherd-service> for Nix.
(match-lambda
(($ <nix-configuration> package _ _ _ extra-options)
(($ <nix-configuration> package _ build-directory _ _ extra-options)
(list
(shepherd-service
(provision '(nix-daemon))
@ -138,7 +140,10 @@ (define nix-shepherd-service
(requirement '())
(start #~(make-forkexec-constructor
(list (string-append #$package "/bin/nix-daemon")
#$@extra-options)))
#$@extra-options)
#:environment-variables
(list (string-append "TMPDIR=" build-directory)
"PATH=/run/current-system/profile/bin")))
(respawn? #f)
(stop #~(make-kill-destructor)))))))