home: environment-variables: Return support for file-likes and gexps.

* gnu/home/services.scm (environment-variable-shell-definitions): Add support
for file-likes and gexps.
* tests/guix-home.sh: Add SHELL environment variable and test its value.  Add
BUILDHOSTTIME environment variable.
This commit is contained in:
Andrew Tropin 2023-01-09 11:46:57 +04:00
parent d0044216c9
commit 2acce55a00
No known key found for this signature in database
GPG key ID: 2208D20958C1DEB0
2 changed files with 12 additions and 3 deletions

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021-2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2022-2023 Ludovic Courtès <ludo@gnu.org>
;;;
@ -212,7 +212,9 @@ (define (environment-variable-shell-definitions variables)
"")
((key . #t)
#~(string-append "export " #$key "\n"))
((key . (? string? value))
((key . (or (? string? value)
(? file-like? value)
(? gexp? value)))
#~(string-append "export " #$key "="
(shell-double-quote #$value)
"\n"))

View file

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
# Copyright © 2021-2023 Andrew Tropin <andrew@trop.in>
# Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
#
@ -62,6 +62,7 @@ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
(gnu home)
(gnu home services)
(gnu home services shells)
(gnu packages bash)
(gnu services))
(home-environment
@ -82,6 +83,9 @@ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
(simple-service 'add-environment-variable
home-environment-variables-service-type
`(("TODAY" . "26 messidor")
("SHELL" . ,(file-append bash "/bin/bash"))
("BUILDHOSTTIME" . ,#~(strftime "%c"
(localtime (current-time))))
("LITERAL" . ,(literal-string "${abc}"))))
(simple-service 'home-bash-service-extension-test
@ -149,8 +153,11 @@ EOF
# the content of bashrc-test-config.sh"
grep -q "the content of ~/.config/test.conf" "${HOME}/.config/test.conf"
grep '^export PS1="\$GUIX_ENVIRONMENT λ "$' "${HOME}/.bash_profile"
( . "${HOME}/.guix-home/setup-environment"; test "$TODAY" = "26 messidor" )
( . "${HOME}/.guix-home/setup-environment"; test "$LITERAL" = '${abc}' )
( . "${HOME}/.guix-home/setup-environment";
echo "$SHELL" | grep "/gnu/store/.*/bin/bash" )
# This one should still be here.
grep "stay around" "$HOME/.config/random-file"