summaryrefslogtreecommitdiff
path: root/gnu/home/services
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-07-14 00:54:40 +0200
committerLudovic Courtès <ludo@gnu.org>2022-07-14 01:05:34 +0200
commitaf4c103595a725194318f40fc5aba110772ff417 (patch)
tree363e0a586973ccd006e22772ce6a45d19ce7eaa5 /gnu/home/services
parent8af749224fd69daee5b67295186c77becb1a4479 (diff)
home: services: environment-variables: Double-quote values.
Fixes <https://issues.guix.gnu.org/54469>. Reported by Maxime Devos <maximedevos@telenet.be>. * gnu/home/services.scm (environment-variable-shell-definitions): New procedure, with code formerly in 'serialize-posix-env-vars'. (environment-variables->setup-environment-script): Change "setup-environment" from 'mixed-text-file' to 'computed-file', and use 'environment-variable-shell-definitions'. * tests/guix-home.sh: Test it. * gnu/home/services/shells.scm (serialize-posix-env-vars): Delegate to 'environment-variable-shell-definitions'.
Diffstat (limited to 'gnu/home/services')
-rw-r--r--gnu/home/services/shells.scm25
1 files changed, 1 insertions, 24 deletions
diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm
index 28d717f03d..172e58a9ff 100644
--- a/gnu/home/services/shells.scm
+++ b/gnu/home/services/shells.scm
@@ -111,30 +111,7 @@ service type can be extended with a list of file-like objects.")))
(define (serialize-boolean field-name val) "")
(define (serialize-posix-env-vars field-name val)
- #~(let ((shell-quote
- (lambda (value)
- ;; Double-quote VALUE, leaving dollar sign as is.
- (let ((quoted (list->string
- (string-fold-right
- (lambda (chr lst)
- (case chr
- ((#\" #\\)
- (append (list chr #\\) lst))
- (else (cons chr lst))))
- '()
- value))))
- (string-append "\"" quoted "\"")))))
- (string-append
- #$@(map
- (match-lambda
- ((key . #f)
- "")
- ((key . #t)
- #~(string-append "export " #$key "\n"))
- ((key . value)
- #~(string-append "export " #$key "="
- (shell-quote #$value) "\n")))
- val))))
+ (environment-variable-shell-definitions val))
;;;