diff options
author | Chris Hodapp <108633+clhodapp@users.noreply.github.com> | 2020-02-23 02:37:03 -0800 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2020-02-24 23:51:36 +0100 |
commit | 9ab59dd6ac4422d99093b56dc3b9ab1044c4d12d (patch) | |
tree | 031f8dded2ae23698650a2823db557a0960762fa | |
parent | 9ab4e70d179796485de1d77ed7ae12ea7200f645 (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-manager | 10 |
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" |