Message ID | 20230107181938.14334-1-othacehe@gnu.org |
---|---|
State | New |
Headers | show |
Series | [bug#60632,1/1] services: base: Add extra-env support to guix-configuration. | expand |
Hi Mathieu, Mathieu Othacehe <othacehe@gnu.org> writes: > * gnu/services/base.scm (<guix-configuration>)[extra-env]: New field. > (guix-shepherd-service): Honor it. > * doc/guix.texi (Base Services): Document it. > --- > Hello, > > Here is a small patch to allow defining extra environment variables in the > guix-daemon context. > > I intend to use it to set the GUIX_SUBSTITUTE_DEBUG variable to debug > https://issues.guix.gnu.org/48468. LGTM. Side topic: I wonder if (with some changes to the daemon -- perhaps in DerivationGoal::startBuilder) in nix/libstore/build.cc we could leak the COLUMNS variable to be able to control the Guile builder backtrace width.
Hi! Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis: > Side topic: I wonder if (with some changes to the daemon -- perhaps in > DerivationGoal::startBuilder) in nix/libstore/build.cc we could leak the > COLUMNS variable to be able to control the Guile builder backtrace > width. As a rule of thumb, I think we should keep the build environment unchanged forever—no changes to the set of environment variables and files/directories present in the build environment. It’s important because the whole reproducibile-by-construction approach depends on that. Ludo’.
Hey, > As a rule of thumb, I think we should keep the build environment > unchanged forever—no changes to the set of environment variables and > files/directories present in the build environment. > > It’s important because the whole reproducibile-by-construction approach > depends on that. OK, closing then :) Thanks, Mathieu
diff --git a/doc/guix.texi b/doc/guix.texi index 293c3016aa..e337945ba7 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -18482,6 +18482,10 @@ herd set-http-proxy guix-daemon @item @code{tmpdir} (default: @code{#f}) A directory path where the @command{guix-daemon} will perform builds. +@item @code{extra-env} (default: @code{'()}) +Environment variables to be set before starting the daemon, as a list of +@code{key=value} strings. + @end table @end deftp diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 6993e1f174..f29657e86e 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -198,6 +198,7 @@ (define-module (gnu services base) guix-configuration-generate-substitute-key? guix-configuration-extra-options guix-configuration-log-file + guix-configuration-extra-env guix-extension guix-extension? @@ -1654,7 +1655,9 @@ (define-record-type* <guix-configuration> (http-proxy guix-http-proxy ;string | #f (default #f)) (tmpdir guix-tmpdir ;string | #f - (default #f))) + (default #f)) + (extra-env guix-configuration-extra-env ;list of strings + (default '()))) (define %default-guix-configuration (guix-configuration)) @@ -1710,7 +1713,7 @@ (define (guix-shepherd-service config) (guix build-group build-accounts authorize-key? authorized-keys use-substitutes? substitute-urls max-silent-time timeout log-compression discover? extra-options log-file - http-proxy tmpdir chroot-directories) + http-proxy tmpdir chroot-directories extra-env) (list (shepherd-service (documentation "Run the Guix daemon.") (provision '(guix-daemon)) @@ -1799,7 +1802,8 @@ (define discover? (if proxy (list (string-append "http_proxy=" proxy) (string-append "https_proxy=" proxy)) - '())) + '()) + extra-env) #:log-file #$log-file)))) (stop #~(make-kill-destructor))))))