Add signed updates from a bundle or a URL

router-release signs a release as a binary cache; router-update verifies
it against the router's update keys, migrates settings.json, and applies
it with commit-confirm. Includes the web UI page and a VM test.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeFqV9dZrK6nipHkPfyM4F
This commit is contained in:
2026-10-29 13:34:21 +01:00
co-authored by Claude Sonnet 5.5
parent 2a111d012b
commit b9c63273e4
21 changed files with 1500 additions and 21 deletions
+12
View File
@@ -29,6 +29,12 @@ let
text = ''
${confirmed}
echo "router: rolling back to $(readlink -f "$target")"
# A failing hook must not stop the rollback.
hook() {
:
${cfg.onRollback}
}
hook || echo "router: a rollback hook failed" >&2
exec "$target/bin/switch-to-configuration" test
'';
};
@@ -71,6 +77,12 @@ in
internal = true;
description = "Shell commands `router-confirm` runs once the current system is confirmed.";
};
onRollback = lib.mkOption {
type = lib.types.lines;
default = "";
internal = true;
description = "Shell commands `router-rollback` runs before it re-activates the confirmed system.";
};
timeout = lib.mkOption {
type = lib.types.str;
default = "5min";