summaryrefslogtreecommitdiff
path: root/guix/profiles.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-05-06 17:08:00 +0200
committerLudovic Courtès <ludo@gnu.org>2015-05-06 18:26:54 +0200
commitd664f1b431d2a64ff58ddc4ccce40e187947b960 (patch)
tree81dbd7402d8dae149a4899b2734837cfee2eefd3 /guix/profiles.scm
parent611adb1ee5814907694abc9afa1bad984f0cbea0 (diff)
downloadgnu-guix-d664f1b431d2a64ff58ddc4ccce40e187947b960.tar
gnu-guix-d664f1b431d2a64ff58ddc4ccce40e187947b960.tar.gz
profiles: Generate an 'etc/profile' file.
Suggested by 宋文武 <iyzsong@gmail.com> in <http://bugs.gnu.org/20255>. * guix/build/profiles.scm (abstract-profile, write-environment-variable-definition): New procedures. (build-profile): Add #:search-paths parameter. Create OUTPUT/etc/profile. * guix/profiles.scm (profile-derivation)[builder]: Add 'search-paths' variable and pass it to 'build-profile'. Adjust #:modules argument. * tests/profiles.scm ("etc/profile"): New test. * doc/guix.texi (Invoking guix package): Mention etc/profile.
Diffstat (limited to 'guix/profiles.scm')
-rw-r--r--guix/profiles.scm21
1 files changed, 17 insertions, 4 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm
index afc22e118d..11d9bf0cd9 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -598,17 +598,30 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc."
(define builder
#~(begin
- (use-modules (guix build profiles))
+ (use-modules (guix build profiles)
+ (guix search-paths))
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)
+ (define search-paths
+ ;; Search paths of MANIFEST's packages, converted back to their
+ ;; record form.
+ (map sexp->search-path-specification
+ '#$(map search-path-specification->sexp
+ (append-map manifest-entry-search-paths
+ (manifest-entries manifest)))))
+
(build-profile #$output '#$inputs
- #:manifest '#$(manifest->gexp manifest))))
+ #:manifest '#$(manifest->gexp manifest)
+ #:search-paths search-paths)))
(gexp->derivation "profile" builder
- #:modules '((guix build union)
- (guix build profiles))
+ #:modules '((guix build profiles)
+ (guix build union)
+ (guix build utils)
+ (guix search-paths)
+ (guix records))
#:local-build? #t)))
(define (profile-regexp profile)