diff options
author | Sergey Trofimov <sarg@sarg.org.ru> | 2025-05-19 11:50:10 +0200 |
---|---|---|
committer | Maxim Cournoyer <maxim.cournoyer@gmail.com> | 2025-05-21 08:05:27 +0900 |
commit | 11bc17c409d77cd1af91e30b5b9f6a73f873a152 (patch) | |
tree | 6e10a22bc4f6d97c886e1ad3de07e678d6fd6918 | |
parent | b989e503acc2e03a9be715da147046dd007c1ec3 (diff) | |
download | guix-11bc17c409d77cd1af91e30b5b9f6a73f873a152.tar.gz guix-11bc17c409d77cd1af91e30b5b9f6a73f873a152.zip |
home: services: Build "files" union allowing dangling symlinks.
* gnu/home/services.scm (files->files-directory): Build file union
without checking for existence of included items.
* tests/guix-home.sh: Verify symlinking files out of store works.
Change-Id: I94054003f4a6be944252ce7a397cf56f0b979554
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
-rw-r--r-- | gnu/home/services.scm | 3 | ||||
-rw-r--r-- | tests/guix-home.sh | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gnu/home/services.scm b/gnu/home/services.scm index 2342dc5e07..d194d02fd4 100644 --- a/gnu/home/services.scm +++ b/gnu/home/services.scm @@ -343,7 +343,8 @@ unset GUIX_PROFILE PROFILE_FILE ;; leading to a build failure of "files.drv". (assert-no-duplicates files) - (file-union "files" files)) + ;; Allow symlinks to locations outside the store. + (file-union "files" files #:dangling-symlinks? #t)) ;; Used by symlink-manager (define home-files-directory "files") diff --git a/tests/guix-home.sh b/tests/guix-home.sh index dbfe7dbd48..b8d90196f1 100644 --- a/tests/guix-home.sh +++ b/tests/guix-home.sh @@ -73,7 +73,9 @@ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT (list `(".config/test.conf" ,(plain-file "tmp-file.txt" - "the content of ~/.config/test.conf")))) + "the content of ~/.config/test.conf")) + + `("symlink" ,(symlink-to "<test_directory>")))) (service home-bash-service-type (home-bash-configuration @@ -104,6 +106,7 @@ trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT "# the content of bashrc-test-config.sh")))))))) EOF + sed -i "s,<test_directory>,$test_directory," home.scm echo -n "# dot-bashrc test file for guix home" > "dot-bashrc" # Check whether the graph commands work as expected. @@ -126,6 +129,7 @@ EOF guix home container home.scm -- cat '~/.config/test.conf' | \ grep "the content of" guix home container home.scm -- test -h '~/.bashrc' + guix home container home.scm -- test -h '~/symlink' test "$(guix home container home.scm -- id -u)" = 1000 guix home container home.scm -- test -f '$HOME/sample/home.scm' && false guix home container home.scm --expose="$PWD=$HOME/sample" -- \ @@ -153,6 +157,8 @@ EOF test -d "${HOME}/.guix-home" test -h "${HOME}/.bash_profile" test -h "${HOME}/.bashrc" + test -h "${HOME}/symlink" + test "$(readlink -f $HOME/symlink)" == "$test_directory" grep 'alias run="guix shell"' "$HOME/.bashrc" grep "alias path='echo \$PATH'" "$HOME/.bashrc" test "$(tail -n 2 "${HOME}/.bashrc")" == "\ |