diff mbox series

[bug#60632,1/1] services: base: Add extra-env support to guix-configuration.

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

Commit Message

Mathieu Othacehe Jan. 7, 2023, 6:19 p.m. UTC
* 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.

Thanks,

Mathieu

 doc/guix.texi         |  4 ++++
 gnu/services/base.scm | 10 +++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

Comments

Maxim Cournoyer Jan. 11, 2023, 7:38 p.m. UTC | #1
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.
Ludovic Courtès Jan. 31, 2023, 10:18 p.m. UTC | #2
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’.
Mathieu Othacehe Oct. 14, 2023, 7:54 p.m. UTC | #3
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 mbox series

Patch

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))))))