#! /usr/bin/env sh # This is the remote side of `update_hosts.sh`, it will be copied to the remote host # and is responsible for performing the update. set -e PATH_add() { nix_expr="$1" what="$(nix build "nixpkgs#$nix_expr.out" --print-out-paths --no-link)" printf "Adding '%s' (%s/bin) to PATH..\n" "$nix_expr" "$what" PATH="$what/bin:$PATH" export PATH } branch="$1" flake_path="${2-""}" # We don't have access to git by default, so evaluate it here PATH_add git # By-default these systems use cppnix, which can't build our config. So let's switch to # lix. PATH_add lixPackageSets.latest.lix # We might or might not have python, and we need it, because we use the unwrapped # `nixos-update`. PATH_add python3 PATH_add nixos-rebuild if [ -z "$flake_path" ]; then set -x cd /etc/nixos sudo git fetch --all --prune sudo git switch "$branch" sudo git pull --rebase flake_path="git+file:/etc/nixos/" fi # we use the unwrapped one, to make sure that we are really using lix (otherwise it might # be wrapped with cppnix). PYTHONNOUSERSITE='true' sudo --preserve-env=PATH --preserve-env=PYTHONNOUSERSITE ".nixos-rebuild-wrapped" --flake "$flake_path" --no-reexec boot sudo reboot