diff --git a/nixos/boxes/home/palace/vms/river.nix b/nixos/boxes/home/palace/vms/river.nix index 31c13d6..890bed1 100644 --- a/nixos/boxes/home/palace/vms/river.nix +++ b/nixos/boxes/home/palace/vms/river.nix @@ -145,6 +145,15 @@ }; }; + # networkd's wait-online knows nothing about the pppd-owned `wan` interface, so + # network-online.target is reached long before there's a route off-site. Gate the + # installer fetch on the WAN instead, and retry it whenever the link returns. + systemd.services.netboot-update = { + after = [ "wan-online.target" ]; + wantedBy = mkForce [ "wan-online.target" ]; + partOf = [ "wan-online.target" ]; + }; + systemd.network = { netdevs = mkMerge [ (mkVLAN "wan-pon-ont" vlans.wan-pon-ont) diff --git a/nixos/modules/netboot/default.nix b/nixos/modules/netboot/default.nix index e2dd699..d4d2fea 100644 --- a/nixos/modules/netboot/default.nix +++ b/nixos/modules/netboot/default.nix @@ -129,7 +129,8 @@ in services = { netboot-update = { description = "Update netboot images"; - after = [ "systemd-networkd-wait-online.service" ]; + wants = [ "network-online.target" ]; + after = [ "network-online.target" ]; serviceConfig.Type = "oneshot"; path = with pkgs; [ coreutils curl jq zstd gnutar @@ -138,6 +139,10 @@ in update_nixos() { latestShort="$(curl -s https://git.nul.ie/api/v1/repos/dev/nixfiles/tags/installer \ | jq -r .commit.sha | cut -c -7)" + if [ -z "$latestShort" ] || [ "$latestShort" = "null" ]; then + echo "Couldn't resolve the installer tag to a commit" >&2 + return 1 + fi if [ -f nixos-installer/tag.txt ] && [ "$(< nixos-installer/tag.txt)" = "$latestShort" ]; then echo "NixOS installer is up to date" return @@ -148,6 +153,10 @@ in fname="jackos-installer-netboot-$latestShort.tar.zst" downloadUrl="$(curl -s https://git.nul.ie/api/v1/repos/dev/nixfiles/releases/tags/installer | \ jq -r ".assets[] | select(.name == \"$fname\").browser_download_url")" + if [ -z "$downloadUrl" ]; then + echo "No release asset $fname; did the installer build succeed?" >&2 + return 1 + fi curl -Lo /tmp/nixos-installer-netboot.tar.zst "$downloadUrl" tar -C nixos-installer --zstd -xf /tmp/nixos-installer-netboot.tar.zst truncate -s "${cfg.server.installer.storeSize}" nixos-installer/rootfs.ext4 @@ -163,7 +172,7 @@ in update_nixos ''; startAt = "06:00"; - wantedBy = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; }; nbd-server = {