From 22acc0b0291cc067a6a3ce36c7ca8e5f68fe4db6 Mon Sep 17 00:00:00 2001 From: Petr Hodina Date: Mon, 31 Oct 2022 16:12:38 +0100 Subject: [PATCH] services: nix: Add more configuration fields. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/nix.scm ()[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 --- doc/guix.texi | 9 +++++++++ gnu/services/nix.scm | 11 ++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index aacf748838..b270964542 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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. diff --git a/gnu/services/nix.scm b/gnu/services/nix.scm index df04a85c22..dcf994b603 100644 --- a/gnu/services/nix.scm +++ b/gnu/services/nix.scm @@ -54,6 +54,8 @@ (define-record-type* (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 - (($ package sandbox build-sandbox-items extra-config) + (($ 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 for Nix. (match-lambda - (($ package _ _ _ extra-options) + (($ 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)))))))