packages: let microvm-update-* bail out with elaborative exception
This commit is contained in:
parent
3d276740a2
commit
af7b75df9e
51
packages.nix
51
packages.nix
|
@ -160,38 +160,37 @@ lib.attrsets.mapAttrs
|
||||||
ssh ${target} "time nix-collect-garbage -d && time nix-store --optimise"
|
ssh ${target} "time nix-collect-garbage -d && time nix-store --optimise"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
"microvm-update-${name}" = pkgs.writeScriptBin "microvm-update-${name}" ''
|
"microvm-update-${name}" = pkgs.writeScriptBin "microvm-update-${name}" (
|
||||||
#!${pkgs.runtimeShell} -e
|
if builtins.elem (hostConfig.c3d2.deployment.server or null) [ "server9" "server10" ]
|
||||||
|
then ''
|
||||||
|
#!${pkgs.runtimeShell} -e
|
||||||
|
|
||||||
${lib.optionalString (! builtins.elem (hostConfig.c3d2.deployment.server or null) [ "server9" "server10" ]) ''
|
${hostConfig.system.build.copyToServer} ${inputPaths}
|
||||||
echo "MicroVM must be configured to proper server" >&2
|
|
||||||
exit 1
|
|
||||||
''}
|
|
||||||
|
|
||||||
${hostConfig.system.build.copyToServer} ${inputPaths}
|
${hostConfig.system.build.runOnServer} bash -e <<END
|
||||||
|
mkdir -p /var/lib/microvms/${name}
|
||||||
|
cd /var/lib/microvms/${name}
|
||||||
|
chown root:kvm .
|
||||||
|
chmod 0775 .
|
||||||
|
|
||||||
${hostConfig.system.build.runOnServer} bash -e <<END
|
rm -f old
|
||||||
mkdir -p /var/lib/microvms/${name}
|
[ -e current ] && cp --no-dereference current old
|
||||||
cd /var/lib/microvms/${name}
|
|
||||||
chown root:kvm .
|
|
||||||
chmod 0775 .
|
|
||||||
|
|
||||||
rm -f old
|
nix build -L \
|
||||||
[ -e current ] && cp --no-dereference current old
|
-o current \
|
||||||
|
${self}#nixosConfigurations.${name}.config.microvm.declaredRunner
|
||||||
|
echo '${selfRef}' > flake
|
||||||
|
|
||||||
nix build -L \
|
[ -e old ] && nix store diff-closures ./old ./current
|
||||||
-o current \
|
ln -sfT \$PWD/current /nix/var/nix/gcroots/microvm/${name}
|
||||||
${self}#nixosConfigurations.${name}.config.microvm.declaredRunner
|
ln -sfT \$PWD/booted /nix/var/nix/gcroots/microvm/booted-${name}
|
||||||
echo '${selfRef}' > flake
|
ln -sfT \$PWD/old /nix/var/nix/gcroots/microvm/old-${name}
|
||||||
|
|
||||||
[ -e old ] && nix store diff-closures ./old ./current
|
systemctl restart microvm@${name}.service
|
||||||
ln -sfT \$PWD/current /nix/var/nix/gcroots/microvm/${name}
|
END
|
||||||
ln -sfT \$PWD/booted /nix/var/nix/gcroots/microvm/booted-${name}
|
''
|
||||||
ln -sfT \$PWD/old /nix/var/nix/gcroots/microvm/old-${name}
|
else throw "${name} is not configured to run on microvm.nix. Is it a physical host or is it deployed in Skyflake?"
|
||||||
|
);
|
||||||
systemctl restart microvm@${name}.service
|
|
||||||
END
|
|
||||||
'';
|
|
||||||
|
|
||||||
"microvm-update-${name}-local" = pkgs.writeScriptBin "microvm-update-${name}" ''
|
"microvm-update-${name}-local" = pkgs.writeScriptBin "microvm-update-${name}" ''
|
||||||
#!${pkgs.runtimeShell} -e
|
#!${pkgs.runtimeShell} -e
|
||||||
|
|
Loading…
Reference in New Issue