summary refs log tree commit diff
path: root/guix/self.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-08-09 12:28:17 +0200
committerLudovic Courtès <ludo@gnu.org>2021-08-09 18:14:33 +0200
commit27f00963d31636eb94bb7f331989827f4782de78 (patch)
tree0f0e273ce95f29042270f9a7ac30c1238d114b26 /guix/self.scm
parent30289f4d4638452520f52c1a36240220d0d940ff (diff)
downloadguix-27f00963d31636eb94bb7f331989827f4782de78.tar.gz
self: Use default config variable values for derivations.
The value of %localstatedir, %storedir, and %sysconfdir is known to have
no impact on the compilation of the Guix modules.  Thus, explicitly
build those modules against a (guix config) module that uses all the
default values.  That way, a Guix installation that uses different
config values can still benefit from substitutes.

Reported by Ricardo Wurmus.

* guix/self.scm (%default-config-variables): New variable.
(make-config.scm): Add #:config-variables and honor it.
(compiled-guix)[*core-modules*]: Pass #:config-variables to
'make-config.scm'.
Diffstat (limited to 'guix/self.scm')
-rw-r--r--guix/self.scm13
1 files changed, 11 insertions, 2 deletions
diff --git a/guix/self.scm b/guix/self.scm
index 130f5d3492..79d93357a2 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -872,7 +872,9 @@ itself."
                  ;; rebuilt when the version changes, which in turn means we
                  ;; can have substitutes for it.
                  #:extra-modules
-                 `(((guix config) => ,(make-config.scm)))
+                 `(((guix config)
+                    => ,(make-config.scm
+                         #:config-variables %default-config-variables)))
 
                  ;; (guix man-db) is needed at build-time by (guix profiles)
                  ;; but we don't need to compile it; not compiling it allows
@@ -1084,10 +1086,17 @@ itself."
                                       (variables rest ...))))))
     (variables %localstatedir %storedir %sysconfdir)))
 
+(define %default-config-variables
+  ;; Default values of the configuration variables above.
+  `((%localstatedir . "/var")
+    (%storedir . "/gnu/store")
+    (%sysconfdir . "/etc")))
+
 (define* (make-config.scm #:key gzip xz bzip2
                           (package-name "GNU Guix")
                           (package-version "0")
                           (channel-metadata #f)
+                          (config-variables %config-variables)
                           (bug-report-address "bug-guix@gnu.org")
                           (home-page-url "https://guix.gnu.org"))
 
@@ -1117,7 +1126,7 @@ itself."
                    #$@(map (match-lambda
                              ((name . value)
                               #~(define-public #$name #$value)))
-                           %config-variables)
+                           config-variables)
 
                    (define %store-directory
                      (or (and=> (getenv "NIX_STORE_DIR") canonicalize-path)