This uses the remote builder as nix store, so the build dependencies for the new system do not have to be present locally. Therefore, if hydra built the system it should be possible to just download the output derivation.
39 lines
1.3 KiB
Nix
39 lines
1.3 KiB
Nix
{
|
|
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
# as well as the libraries available from your flake's inputs.
|
|
lib,
|
|
# You also have access to your flake's inputs.
|
|
inputs,
|
|
|
|
# All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers
|
|
# programmatically or you may add the named attributes as arguments here.
|
|
pkgs,
|
|
stdenv,
|
|
...
|
|
}:
|
|
|
|
pkgs.writeShellApplication {
|
|
name = "sos";
|
|
|
|
runtimeInputs = with pkgs; [
|
|
nix-output-monitor
|
|
jq
|
|
];
|
|
|
|
# TODO: somehow avoid --no-check-sigs??
|
|
text = ''
|
|
#!/usr/bin/env sh
|
|
# This script performs a nixos system update using the remote builder as remote store.
|
|
# This should improve the system update performance drastically
|
|
|
|
echo "########## building... ##########"
|
|
OUT=$(nom build "$FLAKE#nixosConfigurations.$(hostname).config.system.build.toplevel" --store ssh-ng://nix@builder.julian-mutter.de --eval-store auto --json | jq -r '.[0].outputs.out')
|
|
echo "########## output is: $OUT ##########"
|
|
echo "########## downloading... ##########"
|
|
nix copy --no-check-sigs --from ssh-ng://nix@builder.julian-mutter.de "$OUT"
|
|
|
|
echo "########## activating... ##########"
|
|
sudo "$OUT"/bin/switch-to-configuration switch
|
|
'';
|
|
}
|