profiles: Implicitly set GUIX_EXTENSIONS_PATH.
author(unmatched-parenthesis <paren@disroot.org>
Sun, 21 Aug 2022 15:43:48 +0000 (16:43 +0100)
committerEfraim Flashner <efraim@flashner.co.il>
Wed, 7 Sep 2022 08:30:31 +0000 (11:30 +0300)
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths):
Always return a search path for GUIX_EXTENSIONS_PATH.
* guix/search-paths.scm ($GUIX_EXTENSIONS_PATH): New variable.

This allows Guix to find extensions without any need for users to
set GUIX_EXTENSIONS_PATH manually.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
guix/build/profiles.scm
guix/search-paths.scm

index 0c92f22..b19d93f 100644 (file)
@@ -179,9 +179,10 @@ search path specifications."
          (()
           (values (reverse inputs)
                   (delete-duplicates
-                   (cons $PATH
-                         (map sexp->search-path-specification
-                              (reverse search-paths)))))))))))
+                   (cons* $PATH
+                          $GUIX_EXTENSIONS_PATH
+                          (map sexp->search-path-specification
+                               (reverse search-paths)))))))))))
 
 (define* (build-profile output manifest
                         #:key (extra-inputs '()) (symlink symlink))
index 6b13a98..5a0cdda 100644 (file)
@@ -33,6 +33,7 @@
             search-path-specification-file-pattern
 
             $PATH
+            $GUIX_EXTENSIONS_PATH
             $SSL_CERT_DIR
             $SSL_CERT_FILE
 
    (variable "PATH")
    (files '("bin" "sbin"))))
 
+(define-public $GUIX_EXTENSIONS_PATH
+  ;; 'GUIX_EXTENSIONS_PATH' is used by Guix to locate extension commands.
+  ;; Like 'PATH', it's not attached to any package, so that users don't have
+  ;; to install the 'guix' package (which is not supposed to be installed,
+  ;; as it will mess up the 'guix pull' installation) or set the variable
+  ;; manually.
+  (search-path-specification
+   (variable "GUIX_EXTENSIONS_PATH")
+   (files '("share/guix/extensions"))))
+
 ;; Two variables for certificates (see (guix)X.509 Certificates),
 ;; respected by 'openssl', possibly GnuTLS in the future
 ;; (https://gitlab.com/gnutls/gnutls/-/merge_requests/1541)