Revert "nixos-rebuild: Add option for building and/or deploying on a remote host"
This reverts commit ca0c460406
.
All the installer tests are failing due to this change. cc @rickynils
This commit is contained in:
parent
313fa2ebc6
commit
78be7f5a53
@ -19,8 +19,6 @@ rollback=
|
|||||||
upgrade=
|
upgrade=
|
||||||
repair=
|
repair=
|
||||||
profile=/nix/var/nix/profiles/system
|
profile=/nix/var/nix/profiles/system
|
||||||
buildHost=
|
|
||||||
targetHost=
|
|
||||||
|
|
||||||
while [ "$#" -gt 0 ]; do
|
while [ "$#" -gt 0 ]; do
|
||||||
i="$1"; shift 1
|
i="$1"; shift 1
|
||||||
@ -75,14 +73,6 @@ while [ "$#" -gt 0 ]; do
|
|||||||
fi
|
fi
|
||||||
shift 1
|
shift 1
|
||||||
;;
|
;;
|
||||||
--build-host|h)
|
|
||||||
buildHost="$1"
|
|
||||||
shift 1
|
|
||||||
;;
|
|
||||||
--target-host|t)
|
|
||||||
targetHost="$1"
|
|
||||||
shift 1
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
echo "$0: unknown option \`$i'"
|
echo "$0: unknown option \`$i'"
|
||||||
exit 1
|
exit 1
|
||||||
@ -90,90 +80,6 @@ while [ "$#" -gt 0 ]; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
if [ -z "$buildHost" -a -n "$targetHost" ]; then
|
|
||||||
buildHost="$targetHost"
|
|
||||||
fi
|
|
||||||
if [ "$targetHost" = localhost ]; then
|
|
||||||
targetHost=
|
|
||||||
fi
|
|
||||||
if [ "$buildHost" = localhost ]; then
|
|
||||||
buildHost=
|
|
||||||
fi
|
|
||||||
|
|
||||||
buildHostCmd() {
|
|
||||||
if [ -z "$buildHost" ]; then
|
|
||||||
"$@"
|
|
||||||
elif [ -n "$remoteNix" ]; then
|
|
||||||
ssh $SSHOPTS "$buildHost" PATH="$remoteNix:$PATH" "$@"
|
|
||||||
else
|
|
||||||
ssh $SSHOPTS "$buildHost" "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
targetHostCmd() {
|
|
||||||
if [ -z "$targetHost" ]; then
|
|
||||||
"$@"
|
|
||||||
else
|
|
||||||
ssh $SSHOPTS "$targetHost" "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
copyToTarget() {
|
|
||||||
if ! [ "$targetHost" = "$buildHost" ]; then
|
|
||||||
if [ -z "$targetHost" ]; then
|
|
||||||
NIX_SSHOPTS=$SSH_OPTS nix-copy-closure --from "$buildHost" "$1"
|
|
||||||
elif [ -z "$buildHost" ]; then
|
|
||||||
NIX_SSHOPTS=$SSH_OPTS nix-copy-closure --to "$targetHost" "$1"
|
|
||||||
else
|
|
||||||
buildHostCmd nix-copy-closure --to "$targetHost" "$1"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
nixBuild() {
|
|
||||||
if [ -z "$buildHost" ]; then
|
|
||||||
nix-build "$@"
|
|
||||||
else
|
|
||||||
local instArgs=()
|
|
||||||
local buildArgs=()
|
|
||||||
|
|
||||||
while [ "$#" -gt 0 ]; do
|
|
||||||
local i="$1"; shift 1
|
|
||||||
case "$i" in
|
|
||||||
-o)
|
|
||||||
local out="$1"; shift 1
|
|
||||||
buildArgs+=("--add-root" "$out" "--indirect")
|
|
||||||
;;
|
|
||||||
-A)
|
|
||||||
local j="$1"; shift 1
|
|
||||||
instArgs+=("$i" "$j")
|
|
||||||
;;
|
|
||||||
-I)
|
|
||||||
# We don't want this in buildArgs
|
|
||||||
shift 1
|
|
||||||
;;
|
|
||||||
"<"*) # nix paths
|
|
||||||
instArgs+=("$i")
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
buildArgs+=("$i")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
local drv="$(nix-instantiate "${instArgs[@]}" "${extraBuildFlags[@]}")"
|
|
||||||
if [ -a "$drv" ]; then
|
|
||||||
NIX_SSHOPTS=$SSH_OPTS nix-copy-closure --to "$buildHost" "$drv"
|
|
||||||
buildHostCmd nix-store -r "$drv" "${buildArgs[@]}"
|
|
||||||
else
|
|
||||||
echo "nix-instantiate failed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if [ -z "$action" ]; then showSyntax; fi
|
if [ -z "$action" ]; then showSyntax; fi
|
||||||
|
|
||||||
# Only run shell scripts from the Nixpkgs tree if the action is
|
# Only run shell scripts from the Nixpkgs tree if the action is
|
||||||
@ -222,16 +128,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
tmpDir=$(mktemp -t -d nixos-rebuild.XXXXXX)
|
tmpDir=$(mktemp -t -d nixos-rebuild.XXXXXX)
|
||||||
SSHOPTS="$NIX_SSHOPTS -o ControlMaster=auto -o ControlPath=$tmpDir/ssh-%n -o ControlPersist=60"
|
trap 'rm -rf "$tmpDir"' EXIT
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
for ctrl in "$tmpDir"/ssh-*; do
|
|
||||||
ssh -o ControlPath="$ctrl" -O exit dummyhost 2>/dev/null || true
|
|
||||||
done
|
|
||||||
rm -rf "$tmpDir"
|
|
||||||
}
|
|
||||||
trap cleanup EXIT
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# If the Nix daemon is running, then use it. This allows us to use
|
# If the Nix daemon is running, then use it. This allows us to use
|
||||||
@ -253,56 +150,30 @@ if [ -n "$rollback" -o "$action" = dry-build ]; then
|
|||||||
buildNix=
|
buildNix=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
prebuiltNix() {
|
|
||||||
machine="$1"
|
|
||||||
if [ "$machine" = x86_64 ]; then
|
|
||||||
return /nix/store/xryr9g56h8yjddp89d6dw12anyb4ch7c-nix-1.10
|
|
||||||
elif [[ "$machine" =~ i.86 ]]; then
|
|
||||||
return /nix/store/2w92k5wlpspf0q2k9mnf2z42prx3bwmv-nix-1.10
|
|
||||||
else
|
|
||||||
echo "$0: unsupported platform"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
remotePATH=
|
|
||||||
|
|
||||||
if [ -n "$buildNix" ]; then
|
if [ -n "$buildNix" ]; then
|
||||||
echo "building Nix..." >&2
|
echo "building Nix..." >&2
|
||||||
nixDrv=
|
if ! nix-build '<nixpkgs/nixos>' -A config.nix.package -o $tmpDir/nix "${extraBuildFlags[@]}" > /dev/null; then
|
||||||
if ! nixDrv="$(nix-instantiate '<nixpkgs/nixos>' --add-root $tmpDir/nixdrv --indirect -A config.nix.package "${extraBuildFlags[@]}")"; then
|
if ! nix-build '<nixpkgs/nixos>' -A nixFallback -o $tmpDir/nix "${extraBuildFlags[@]}" > /dev/null; then
|
||||||
if ! nixDrv="$(nix-instantiate '<nixpkgs/nixos>' --add-root $tmpDir/nixdrv --indirect -A nixFallback "${extraBuildFlags[@]}")"; then
|
if ! nix-build '<nixpkgs>' -A nix -o $tmpDir/nix "${extraBuildFlags[@]}" > /dev/null; then
|
||||||
if ! nixDrv="$(nix-instantiate '<nixpkgs>' --add-root $tmpDir/nixdrv --indirect -A nix "${extraBuildFlags[@]}")"; then
|
machine="$(uname -m)"
|
||||||
nixStorePath="$(prebuiltNix "$(uname -m)")"
|
if [ "$machine" = x86_64 ]; then
|
||||||
|
nixStorePath=/nix/store/xryr9g56h8yjddp89d6dw12anyb4ch7c-nix-1.10
|
||||||
|
elif [[ "$machine" =~ i.86 ]]; then
|
||||||
|
nixStorePath=/nix/store/2w92k5wlpspf0q2k9mnf2z42prx3bwmv-nix-1.10
|
||||||
|
else
|
||||||
|
echo "$0: unsupported platform"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
if ! nix-store -r $nixStorePath --add-root $tmpDir/nix --indirect \
|
if ! nix-store -r $nixStorePath --add-root $tmpDir/nix --indirect \
|
||||||
--option extra-binary-caches https://cache.nixos.org/; then
|
--option extra-binary-caches https://cache.nixos.org/; then
|
||||||
echo "warning: don't know how to get latest Nix" >&2
|
echo "warning: don't know how to get latest Nix" >&2
|
||||||
fi
|
fi
|
||||||
# Older version of nix-store -r don't support --add-root.
|
# Older version of nix-store -r don't support --add-root.
|
||||||
[ -e $tmpDir/nix ] || ln -sf $nixStorePath $tmpDir/nix
|
[ -e $tmpDir/nix ] || ln -sf $nixStorePath $tmpDir/nix
|
||||||
if [ -n "$buildHost" ]; then
|
|
||||||
remoteNixStorePath="$(prebuiltNix "$(buildHostCmd uname -m)")"
|
|
||||||
remoteNix="$remoteNixStorePath/bin"
|
|
||||||
if ! buildHostCmd nix-store -r $remoteNixStorePath \
|
|
||||||
--option extra-binary-caches https://cache.nixos.org/ >/dev/null; then
|
|
||||||
remoteNix=
|
|
||||||
echo "warning: don't know how to get latest Nix" >&2
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -a "$nixDrv" ]; then
|
PATH=$tmpDir/nix/bin:$PATH
|
||||||
nix-store -r "$nixDrv" --add-root $tmpDir/nix --indirect >/dev/null
|
|
||||||
if [ -n "$buildHost" ]; then
|
|
||||||
nix-copy-closure --to "$buildHost" "$nixDrv"
|
|
||||||
# The nix build produces multiple outputs, we add them all to the remote path
|
|
||||||
for p in $(buildHostCmd nix-store -r "$(readlink "$nixDrv")" "${buildArgs[@]}"); do
|
|
||||||
remoteNix="$remoteNix${remoteNix:+:}$p/bin"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
PATH="$tmpDir/nix/bin:$PATH"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@ -329,35 +200,31 @@ fi
|
|||||||
if [ -z "$rollback" ]; then
|
if [ -z "$rollback" ]; then
|
||||||
echo "building the system configuration..." >&2
|
echo "building the system configuration..." >&2
|
||||||
if [ "$action" = switch -o "$action" = boot ]; then
|
if [ "$action" = switch -o "$action" = boot ]; then
|
||||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A system "${extraBuildFlags[@]}")"
|
nix-env "${extraBuildFlags[@]}" -p "$profile" -f '<nixpkgs/nixos>' --set -A system
|
||||||
copyToTarget "$pathToConfig"
|
pathToConfig="$profile"
|
||||||
targetHostCmd nix-env -p "$profile" --set "$pathToConfig"
|
|
||||||
elif [ "$action" = test -o "$action" = build -o "$action" = dry-build -o "$action" = dry-activate ]; then
|
elif [ "$action" = test -o "$action" = build -o "$action" = dry-build -o "$action" = dry-activate ]; then
|
||||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A system -k "${extraBuildFlags[@]}")"
|
nix-build '<nixpkgs/nixos>' -A system -k "${extraBuildFlags[@]}" > /dev/null
|
||||||
|
pathToConfig=./result
|
||||||
elif [ "$action" = build-vm ]; then
|
elif [ "$action" = build-vm ]; then
|
||||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vm -k "${extraBuildFlags[@]}")"
|
nix-build '<nixpkgs/nixos>' -A vm -k "${extraBuildFlags[@]}" > /dev/null
|
||||||
|
pathToConfig=./result
|
||||||
elif [ "$action" = build-vm-with-bootloader ]; then
|
elif [ "$action" = build-vm-with-bootloader ]; then
|
||||||
pathToConfig="$(nixBuild '<nixpkgs/nixos>' -A vmWithBootLoader -k "${extraBuildFlags[@]}")"
|
nix-build '<nixpkgs/nixos>' -A vmWithBootLoader -k "${extraBuildFlags[@]}" > /dev/null
|
||||||
|
pathToConfig=./result
|
||||||
else
|
else
|
||||||
showSyntax
|
showSyntax
|
||||||
fi
|
fi
|
||||||
# Copy build to target host if we haven't already done it
|
|
||||||
if ! [ "$action" = switch -o "$action" = boot ]; then
|
|
||||||
copyToTarget "$pathToConfig"
|
|
||||||
fi
|
|
||||||
else # [ -n "$rollback" ]
|
else # [ -n "$rollback" ]
|
||||||
if [ "$action" = switch -o "$action" = boot ]; then
|
if [ "$action" = switch -o "$action" = boot ]; then
|
||||||
targetHostCmd nix-env --rollback -p "$profile"
|
nix-env --rollback -p "$profile"
|
||||||
pathToConfig="$profile"
|
pathToConfig="$profile"
|
||||||
elif [ "$action" = test -o "$action" = build ]; then
|
elif [ "$action" = test -o "$action" = build ]; then
|
||||||
systemNumber=$(
|
systemNumber=$(
|
||||||
targetHostCmd nix-env -p "$profile" --list-generations |
|
nix-env -p "$profile" --list-generations |
|
||||||
sed -n '/current/ {g; p;}; s/ *\([0-9]*\).*/\1/; h'
|
sed -n '/current/ {g; p;}; s/ *\([0-9]*\).*/\1/; h'
|
||||||
)
|
)
|
||||||
pathToConfig="$profile"-${systemNumber}-link
|
ln -sT "$profile"-${systemNumber}-link ./result
|
||||||
if [ -z "$targetHost" ]; then
|
pathToConfig=./result
|
||||||
ln -sT "$pathToConfig" ./result
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
showSyntax
|
showSyntax
|
||||||
fi
|
fi
|
||||||
@ -367,7 +234,7 @@ fi
|
|||||||
# If we're not just building, then make the new configuration the boot
|
# If we're not just building, then make the new configuration the boot
|
||||||
# default and/or activate it now.
|
# default and/or activate it now.
|
||||||
if [ "$action" = switch -o "$action" = boot -o "$action" = test -o "$action" = dry-activate ]; then
|
if [ "$action" = switch -o "$action" = boot -o "$action" = test -o "$action" = dry-activate ]; then
|
||||||
if ! targetHostCmd $pathToConfig/bin/switch-to-configuration "$action"; then
|
if ! $pathToConfig/bin/switch-to-configuration "$action"; then
|
||||||
echo "warning: error(s) occurred while switching to the new configuration" >&2
|
echo "warning: error(s) occurred while switching to the new configuration" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user