From 9145227afbb19eb7d886688a708df94b0045c3a0 Mon Sep 17 00:00:00 2001 From: mintaka Date: Wed, 9 Sep 2026 15:11:35 -0400 Subject: [PATCH] feat(renovate): track the agent-image nixpkgs channel pin (RIG-3365) The agent base image's devenv scope pins both a devenv-nixpkgs channel rev and a RigelBuild/devenv fork rev, but only the fork was tracked. Three of the four devenv pins in the tree moved on a Renovate cadence; agent-image's channel rev only ever moved when someone relocked it by hand. Add the fourth pin: a customManager over agent-image/devenv.lock's nixpkgs node under its own depName, a solo-branched packageRule, and a scope-correct refresher that relocks via the devenv CLI the lock itself pins. The refresher is separate from refresh-devenv-nixpkgs.ts rather than a widened scope on it. That script's tail is root-only: it mirrors the channel's biome into the catalog and locksteps the repo-root flake.nix. agent-image bakes nothing into a shell and has no flake, so widening would put the whole tail behind a conditional on a path two live rules already depend on. Co-authored-by: Matt Wilkinson --- tools/renovate/bot-config.json5 | 18 +- tools/renovate/config.json5 | 137 ++++++- tools/renovate/config.test.ts | 268 ++++++++++-- .../refresh-agent-image-nixpkgs.core.ts | 81 ++++ .../refresh-agent-image-nixpkgs.test.ts | 381 ++++++++++++++++++ tools/renovate/refresh-agent-image-nixpkgs.ts | 278 +++++++++++++ tools/renovate/refresh-fod-hashes.ts | 68 +++- 7 files changed, 1180 insertions(+), 51 deletions(-) create mode 100644 tools/renovate/refresh-agent-image-nixpkgs.core.ts create mode 100644 tools/renovate/refresh-agent-image-nixpkgs.test.ts create mode 100644 tools/renovate/refresh-agent-image-nixpkgs.ts diff --git a/tools/renovate/bot-config.json5 b/tools/renovate/bot-config.json5 index 27213769..e19bda76 100644 --- a/tools/renovate/bot-config.json5 +++ b/tools/renovate/bot-config.json5 @@ -82,7 +82,7 @@ // addon, so the workflow sets RENOVATE_X_IGNORE_RE2=true to take the RegExp path // quietly.) // - // Six entries, all load-bearing: + // Seven entries, all load-bearing: // 1. the toolchain-hash refresh, which re-prefetches the vendored-binary // sha256 pins a tools/toolchain/versions/*.nix bump invalidates; // 2. the catalog lockfile regeneration. Renovate's custom.regex manager exports @@ -121,9 +121,18 @@ // regex-bumped rev beside a stale hash. Both devenv-fork packageRules // declare this ONE command — the script self-gates on WHICH lock // changed — so one entry covers both (RIG-2815). - // (1), (3), (4), (5), and (6) are `bun