diff --git a/packages.nix b/packages.nix index cbd06fcf..e6601039 100644 --- a/packages.nix +++ b/packages.nix @@ -160,38 +160,37 @@ lib.attrsets.mapAttrs ssh ${target} "time nix-collect-garbage -d && time nix-store --optimise" ''; - "microvm-update-${name}" = pkgs.writeScriptBin "microvm-update-${name}" '' - #!${pkgs.runtimeShell} -e + "microvm-update-${name}" = pkgs.writeScriptBin "microvm-update-${name}" ( + 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" ]) '' - echo "MicroVM must be configured to proper server" >&2 - exit 1 - ''} + ${hostConfig.system.build.copyToServer} ${inputPaths} - ${hostConfig.system.build.copyToServer} ${inputPaths} + ${hostConfig.system.build.runOnServer} bash -e < flake - nix build -L \ - -o current \ - ${self}#nixosConfigurations.${name}.config.microvm.declaredRunner - echo '${selfRef}' > flake + [ -e old ] && nix store diff-closures ./old ./current + ln -sfT \$PWD/current /nix/var/nix/gcroots/microvm/${name} + ln -sfT \$PWD/booted /nix/var/nix/gcroots/microvm/booted-${name} + ln -sfT \$PWD/old /nix/var/nix/gcroots/microvm/old-${name} - [ -e old ] && nix store diff-closures ./old ./current - ln -sfT \$PWD/current /nix/var/nix/gcroots/microvm/${name} - ln -sfT \$PWD/booted /nix/var/nix/gcroots/microvm/booted-${name} - ln -sfT \$PWD/old /nix/var/nix/gcroots/microvm/old-${name} - - systemctl restart microvm@${name}.service - END - ''; + systemctl restart microvm@${name}.service + END + '' + else throw "${name} is not configured to run on microvm.nix. Is it a physical host or is it deployed in Skyflake?" + ); "microvm-update-${name}-local" = pkgs.writeScriptBin "microvm-update-${name}" '' #!${pkgs.runtimeShell} -e