Add sos script for faster nixos-updates

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.
This commit is contained in:
Julian Mutter 2025-03-14 09:16:50 +01:00
parent 4745b90cea
commit df00e58bd9
2 changed files with 39 additions and 0 deletions

View File

@ -74,6 +74,7 @@ in
## My scripts
frajul.edit-config
frajul.lntocp
frajul.sos
];
};
}

38
packages/sos/default.nix Normal file
View File

@ -0,0 +1,38 @@
{
# 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
'';
}