2023-05-17 16:03:45 +02:00
|
|
|
#!/usr/bin/env bash
|
2024-09-07 23:59:29 +02:00
|
|
|
set -Eeuo pipefail
|
2023-05-17 16:03:45 +02:00
|
|
|
|
2023-05-17 23:49:10 +02:00
|
|
|
ssh_command=${SSH_COMMAND-ssh}
|
2024-03-28 22:36:48 +01:00
|
|
|
|
2024-03-29 00:45:10 +01:00
|
|
|
reboot="reboot"
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
"--no-reboot")
|
|
|
|
unset reboot
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
"--fast")
|
|
|
|
reboot="soft"
|
|
|
|
shift
|
|
|
|
;;
|
2024-09-07 23:59:29 +02:00
|
|
|
"--root")
|
|
|
|
root_prefix="$2"
|
|
|
|
shift
|
|
|
|
shift
|
|
|
|
;;
|
2024-03-29 00:45:10 +01:00
|
|
|
esac
|
2023-12-27 18:47:42 +01:00
|
|
|
|
2023-05-17 16:03:45 +02:00
|
|
|
target_host=$1
|
|
|
|
shift
|
|
|
|
|
|
|
|
if [ -z "$target_host" ] ; then
|
2024-09-07 23:59:29 +02:00
|
|
|
echo Usage: liminix-rebuild \[--no-reboot\] \[--fast\] target-host params
|
2023-05-17 16:03:45 +02:00
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2023-05-20 23:30:22 +02:00
|
|
|
if toplevel=$(nix-build "$@" -A outputs.systemConfiguration --no-out-link); then
|
|
|
|
echo systemConfiguration $toplevel
|
2024-09-07 23:59:29 +02:00
|
|
|
min-copy-closure --root "$root_prefix" $target_host $toplevel
|
2023-12-24 00:53:47 +01:00
|
|
|
$ssh_command $target_host $toplevel/bin/install
|
2024-03-29 00:45:10 +01:00
|
|
|
case "$reboot" in
|
|
|
|
reboot)
|
|
|
|
$ssh_command $target_host "sync; source /etc/profile; reboot"
|
|
|
|
;;
|
|
|
|
soft)
|
|
|
|
$ssh_command $target_host $toplevel/bin/restart-services
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
;;
|
|
|
|
esac
|
2023-05-20 23:30:22 +02:00
|
|
|
else
|
|
|
|
echo Rebuild failed
|
|
|
|
fi
|