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>
This commit is contained in:
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:
(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 (destination-append path)
@ -52,15 +61,18 @@
(home-bash-configuration
,@(if (file-exists? rc)
`((bashrc
(list (local-file ,rc))))
(list (local-file ,rc
,(basename+remove-dots rc)))))
'())
,@(if (file-exists? profile)
`((bash-profile
(list (local-file ,profile))))
(list (local-file ,profile
,(basename+remove-dots profile)))))
'())
,@(if (file-exists? logout)
`((bash-logout
(list (local-file ,logout))))
(list (local-file ,logout
,(basename+remove-dots logout)))))
'())))
(guix gexp)
(gnu home services shells))))

View File

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