From bc5a610cb7a08494d1dffd01c07e59833ce27d7b Mon Sep 17 00:00:00 2001 From: Anund Date: Wed, 3 Nov 2021 22:37:39 +1100 Subject: [PATCH] nixos-rebuild: fix --install-bootloader nixos-rebuild relies on setting an environment variable to change behaviour during nixos-rebuild boot/switch between calling update or install via systemd bootctl. Adding sudo -- as a prefix to various exec calls does not preserve the environment breaking this mechanism. This is a some what ugly fix that works. Closes https://github.com/NixOS/nixpkgs/pull/144429 --- pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh index 198a6eae6005..244e1c1d52b1 100755 --- a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh +++ b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh @@ -29,7 +29,9 @@ upgrade_all= profile=/nix/var/nix/profiles/system buildHost=localhost targetHost= -maybeSudo=() +remoteSudo= +# comma separated list of vars to preserve when using sudo +preservedSudoVars=NIXOS_INSTALL_BOOTLOADER while [ "$#" -gt 0 ]; do i="$1"; shift 1 @@ -100,7 +102,7 @@ while [ "$#" -gt 0 ]; do shift 1 ;; --use-remote-sudo) - maybeSudo=(sudo --) + remoteSudo=1 ;; --flake) flake="$1" @@ -126,8 +128,8 @@ while [ "$#" -gt 0 ]; do esac done -if [ -n "$SUDO_USER" ]; then - maybeSudo=(sudo --) +if [[ -n "$SUDO_USER" || -n $remoteSudo ]]; then + maybeSudo=(sudo --preserve-env="$preservedSudoVars" --) fi if [ -z "$buildHost" -a -n "$targetHost" ]; then