me
/
guix
Archived
1
0
Fork 0

guix home: import: Call ‘local-file’ with ‘name’

Set the name of the file to just the basename of the file passed to
‘local-file’.

* guix/scripts/home/import.scm (basename+remove-dots): New procedure.
(generate-bash-configuration+modules): Use it.
* tests/home-import.scm (match-home-environment-bash-service): Adjust
accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
master
Xinglu Chen 2021-10-30 12:42:44 +02:00 committed by Ludovic Courtès
parent 40acbaf078
commit ea19381bd9
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 18 additions and 5 deletions

View File

@ -39,7 +39,16 @@
;;; ;;;
;;; Code: ;;; Code:
(define (basename+remove-dots file-name)
"Remove the dot from the dotfile FILE-NAME; replace the other dots in
FILE-NAME with \"-\", and return the basename of it."
(string-map (match-lambda
(#\. #\-)
(c c))
(let ((base (basename file-name)))
(if (string-prefix? "." base)
(string-drop base 1)
base))))
(define (generate-bash-configuration+modules destination-directory) (define (generate-bash-configuration+modules destination-directory)
(define (destination-append path) (define (destination-append path)
@ -52,15 +61,18 @@
(home-bash-configuration (home-bash-configuration
,@(if (file-exists? rc) ,@(if (file-exists? rc)
`((bashrc `((bashrc
(list (local-file ,rc)))) (list (local-file ,rc
,(basename+remove-dots rc)))))
'()) '())
,@(if (file-exists? profile) ,@(if (file-exists? profile)
`((bash-profile `((bash-profile
(list (local-file ,profile)))) (list (local-file ,profile
,(basename+remove-dots profile)))))
'()) '())
,@(if (file-exists? logout) ,@(if (file-exists? logout)
`((bash-logout `((bash-logout
(list (local-file ,logout)))) (list (local-file ,logout
,(basename+remove-dots logout)))))
'()))) '())))
(guix gexp) (guix gexp)
(gnu home services shells)))) (gnu home services shells))))

View File

@ -156,7 +156,8 @@ corresponding file."
'home-bash-service-type 'home-bash-service-type
('home-bash-configuration ('home-bash-configuration
('bashrc ('bashrc
('list ('local-file "/tmp/guix-config/.bashrc")))))))))) ('list ('local-file "/tmp/guix-config/.bashrc"
"bashrc"))))))))))
(test-assert "manifest->code: No services" (test-assert "manifest->code: No services"
(eval-test-with-home-environment (eval-test-with-home-environment