aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Hodapp <108633+clhodapp@users.noreply.github.com>2020-02-23 02:37:03 -0800
committerRobert Helgesson <robert@rycee.net>2020-02-24 23:51:36 +0100
commit9ab59dd6ac4422d99093b56dc3b9ab1044c4d12d (patch)
tree031f8dded2ae23698650a2823db557a0960762fa
parent9ab4e70d179796485de1d77ed7ae12ea7200f645 (diff)
home-manager: handle args with spaces to doBuildAttr
Presently, if you pass an argument with spaces in it to `doBuildAttr`, it will be split it into multiple arguments to `nix build` or `nix-build`. This situation arises, for example, on systems with spaces in `XDG_DATA_HOME`. Specifically, the `home-manager` script errors out in trying to address the `read-news` state file. With this change, argument separation should be preserved properly in `doBuildAttr`. PR #1044
-rw-r--r--home-manager/home-manager10
1 files changed, 5 insertions, 5 deletions
diff --git a/home-manager/home-manager b/home-manager/home-manager
index b0821dfacb6..7fa5c35c300 100644
--- a/home-manager/home-manager
+++ b/home-manager/home-manager
@@ -78,28 +78,28 @@ function doBuildAttr() {
setConfigFile
setHomeManagerNixPath
- local extraArgs="$*"
+ local extraArgs=("$@")
for p in "${EXTRA_NIX_PATH[@]}"; do
- extraArgs="$extraArgs -I $p"
+ extraArgs=("${extraArgs[@]}" "-I" "$p")
done
if [[ -v VERBOSE ]]; then
- extraArgs="$extraArgs --show-trace"
+ extraArgs=("${extraArgs[@]}" "--show-trace")
fi
# shellcheck disable=2086
if [[ -v USE_NIX2_COMMAND ]]; then
nix build \
-f "<home-manager/home-manager/home-manager.nix>" \
- $extraArgs \
+ "${extraArgs[@]}" \
"${PASSTHROUGH_OPTS[@]}" \
--argstr confPath "$HOME_MANAGER_CONFIG" \
--argstr confAttr "$HOME_MANAGER_CONFIG_ATTRIBUTE"
else
nix-build \
"<home-manager/home-manager/home-manager.nix>" \
- $extraArgs \
+ "${extraArgs[@]}" \
"${PASSTHROUGH_OPTS[@]}" \
--argstr confPath "$HOME_MANAGER_CONFIG" \
--argstr confAttr "$HOME_MANAGER_CONFIG_ATTRIBUTE"