feat(ops/auto-deploy): Support auto-deploy

Automatically rebuild the current system's NixOS config from the latest checkout
of depot.

Change-Id: I23aa7af50e16e985ac34df214e0905e770316e5e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4390
Reviewed-by: wpcarro <wpcarro@gmail.com>
Reviewed-by: zseri <zseri.devel@ytrizja.de>
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: wpcarro <wpcarro@gmail.com>
Tested-by: BuildkiteCI
This commit is contained in:
William Carroll 2021-12-16 19:49:23 -05:00 committed by clbot
parent 1d10adb67c
commit 80ef71e995
4 changed files with 103 additions and 3 deletions

View file

@ -32,7 +32,9 @@ in rec {
(throw "${hostname} is not a known NixOS host")
(map nixosFor depot.ops.machines.all-systems));
rebuild-system = pkgs.writeShellScriptBin "rebuild-system" ''
rebuild-system = rebuildSystemWith depot.path;
rebuildSystemWith = depotPath: pkgs.writeShellScriptBin "rebuild-system" ''
set -ue
if [[ $EUID -ne 0 ]]; then
echo "Oh no! Only root is allowed to rebuild the system!" >&2
@ -40,9 +42,9 @@ in rec {
fi
echo "Rebuilding NixOS for $HOSTNAME"
system=$(nix-build -E "((import ${toString depot.path} {}).ops.nixos.findSystem \"$HOSTNAME\").system" --no-out-link --show-trace)
system=$(${pkgs.nix}/bin/nix-build -E "((import ${depotPath} {}).ops.nixos.findSystem \"$HOSTNAME\").system" --no-out-link --show-trace)
nix-env -p /nix/var/nix/profiles/system --set $system
${pkgs.nix}/bin/nix-env -p /nix/var/nix/profiles/system --set $system
$system/bin/switch-to-configuration switch
'';