diff options
| author | Rafael Kitover <rkitover@gmail.com> | 2023-12-22 14:40:13 +0000 |
|---|---|---|
| committer | Rafael Kitover <rkitover@gmail.com> | 2023-12-22 14:40:13 +0000 |
| commit | f81fbc2bf78af3384dc435fdfb2e87c3a01ca047 (patch) | |
| tree | dc7c12c6022433c29a81d948ce7a72fdf7fb4c45 | |
| parent | 4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d (diff) | |
darwin-rebuild: fix sudo invocation on High Sierra
The version of sudo on macOS 10.13 High Sierra does not support the
`--preserve-env=LIST` option syntax, which is used here to preserve
PATH.
Override sudo with a shell function that checks for the availability of
this option syntax, and do not pass PATH otherwise.
Also move the prefix env command in the sudo invocations into the new
sudo function.
Signed-off-by: Rafael Kitover <rkitover@gmail.com>
| -rw-r--r-- | pkgs/nix-tools/darwin-rebuild.sh | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/pkgs/nix-tools/darwin-rebuild.sh b/pkgs/nix-tools/darwin-rebuild.sh index 47c2e31..6422262 100644 --- a/pkgs/nix-tools/darwin-rebuild.sh +++ b/pkgs/nix-tools/darwin-rebuild.sh @@ -16,6 +16,14 @@ showSyntax() { exit 1 } +sudo() { + if command sudo --help | grep -- --preserve-env= >/dev/null; then + command sudo -H --preserve-env=PATH env "$@" + else + command sudo -H "$@" + fi +} + # Parse the command line. origArgs=("$@") extraMetadataFlags=() @@ -187,7 +195,7 @@ fi if [ "$action" = list ] || [ "$action" = rollback ]; then if [ "$USER" != root ] && [ ! -w $(dirname "$profile") ]; then - sudo -H --preserve-env=PATH env nix-env -p "$profile" "${extraProfileFlags[@]}" + sudo nix-env -p "$profile" "${extraProfileFlags[@]}" else nix-env -p "$profile" "${extraProfileFlags[@]}" fi @@ -205,7 +213,7 @@ if [ -z "$systemConfig" ]; then exit 0; fi if [ "$action" = switch ]; then if [ "$USER" != root ] && [ ! -w $(dirname "$profile") ]; then - sudo -H --preserve-env=PATH env nix-env -p "$profile" --set "$systemConfig" + sudo nix-env -p "$profile" --set "$systemConfig" else nix-env -p "$profile" --set "$systemConfig" fi @@ -215,7 +223,7 @@ if [ "$action" = switch ] || [ "$action" = activate ] || [ "$action" = rollback "$systemConfig/activate-user" if [ "$USER" != root ]; then - sudo -H --preserve-env=PATH "$systemConfig/activate" + sudo "$systemConfig/activate" else "$systemConfig/activate" fi |
