mirror of
https://github.com/nix-community/home-manager.git
synced 2026-01-11 17:39:37 +08:00
home-environment: fail if a home.file is outside $HOME
(cherry picked from commit 6ecf9e091c)
This commit is contained in:
@@ -416,11 +416,19 @@ in
|
||||
concatStringsSep "\n" (
|
||||
mapAttrsToList (n: v:
|
||||
''
|
||||
target="$(realpath -m "$out/${v.target}")"
|
||||
|
||||
# Target file must be within $HOME.
|
||||
if [[ ! "$target" =~ "$out" ]] ; then
|
||||
echo "Error installing file '${v.target}' outside \$HOME" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d "${v.source}" ]; then
|
||||
mkdir -pv "$(dirname "$out/${v.target}")"
|
||||
ln -sv "${v.source}" "$out/${v.target}"
|
||||
ln -sv "${v.source}" "$target"
|
||||
else
|
||||
install -D -m${v.mode} "${v.source}" "$out/${v.target}"
|
||||
install -D -m${v.mode} "${v.source}" "$target"
|
||||
fi
|
||||
''
|
||||
) cfg.file
|
||||
|
||||
Reference in New Issue
Block a user