Repository navigation
Description
Follow-up to #2715 (nixpkgs update blocked 2026-10-30). The update lands with a temporary override in nixos/nixpkgs/default.nix: autoPatchelfHook additionally propagates a patchelf 0.15.2 built from the same package set, because patchelf 0.19.2 (current nixpkgs) corrupts the official Node.js 24.22.1 binary that nix-openclaw repacks for OpenClaw — the repacked node segfaults immediately, failing its installCheck and cascading openclaw → home-manager → toplevel.
Proven 2026-10-30 on the laptop, single-variable: pristine Node.js 24.22.1 binary patched with patchelf 0.15.2 runs (node --version → v24.22.1); the same binary patched with 0.19.2 segfaults (exit 139). gcc (16.2.0) and glibc (2.44) are identical across the old/new pins and are not involved. The override could not pin the patchelf attribute itself — patchelf is a nixpkgs bootstrap package and overriding it breaks stdenv bootstrap evaluation — so it pins the tool the hook resolves from PATH instead.
Removal condition: the stock autoPatchelfHook (no overlay) patches the Node.js repack cleanly again — i.e. either nixpkgs' patchelf moves to a version that no longer corrupts the binary, or nix-openclaw stops needing the private repack (its gate uses the consumer's nodejs_24 once that is ≥ 24.22.1).
Removal test (on the laptop): delete the overlay from nixos/nixpkgs/default.nix, then
nix build .#nixosConfigurations.amd.pkgs.openclawPackages.nodejs_24 — the installCheck must pass — and a full nix build .#nixosConfigurations.amd.config.system.build.toplevel must stay green.
Acceptance criteria
- Removal condition is met and evidenced on this issue: with the temporary overlay deleted, the stock
autoPatchelfHookpatches the Node.js 24.22.1 repack cleanly (or nix-openclaw no longer needs the private repack). - On the laptop:
nix build .#nixosConfigurations.amd.pkgs.openclawPackages.nodejs_24passes its installCheck with no overlay innixos/nixpkgs/default.nix. - A full
nix build .#nixosConfigurations.amd.config.system.build.toplevelstays green after the removal. - The override is removed in the same change that records the verification — no silent removal without the two builds above.
Activity
dezren39 commentedon Oct 30, 2026
Intake review
🤖 Agent note · handed off
Related: #2715 (the blocked nixpkgs update that introduced the temporary patchelf 0.15.2 override this issue removes). This issue does not resolve until #2715's update has landed with the override in place.
Still live? Yes, by construction — it is a follow-up whose removal condition (upstream patchelf no longer corrupting the Node.js repack, or nix-openclaw dropping the private repack) cannot be met on today's pins; the single-variable laptop proof in the body (0.15.2 clean, 0.19.2 segfaults, exit 139) is the evidence. Nothing merged since filing changes that.
Notes / risks: Do not let a future nixpkgs bump silently drop the overlay without running the removal test — that would re-break openclaw → home-manager → toplevel. Conversely, do not keep the overlay past its condition: it pins a tool version for the whole hook. The natural check point is each nixpkgs-update run.
Suggested approach: Leave queued as a conditional follow-up; whoever runs a nixpkgs update that moves patchelf or nix-openclaw re-runs the two laptop builds named in the acceptance criteria with the overlay deleted, and either lands the removal or records the still-failing evidence here.
Labels normalised this pass: kind/infrastructure, priority/normal, effort/s, status/needs-triage, meta/enriched. An
## Acceptance criteriasection was appended to the body (original preserved verbatim above it).developing-today commentedon Nov 3, 2026
Update from the fix work: PR #4910 (#4910) carries the cure for the nodejs_24 repack segfault, via upstream nix-openclaw's own fix: the private Node repack now sets
patchelfFlags = [ "--no-sort" ], so patchelf 0.19.2 no longer reorders the binary's program headers while setting interpreter + RPATH (the layout corruption that crashednodeinside ld.so before main). The repack's installCheck passes, andopenclaw-2026.10.7plusopenclaw-runtime-plugin-acpx-2026.10.7build again.The awscli half of the activation blockage (awscli 1.44.21's botocore/s3transfer pins vs the versions in the tree) is tracked separately under #4167 and is not part of that PR; the awscli derivation is byte-identical on unmodified main, so it is independent of this change.
One acceptance item named here is still outstanding: a full toplevel build has not yet been run. Verification so far covered nodejs_24 and the openclaw packages, plus the home-manager activation build getting past the patchelf blockers (its only remaining failure is the pre-existing awscli one above).
developing-today commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
25 remaining items
dezren39 commentedon Nov 8, 2026
🤖 Agent note · handed off (claim received by this lane, but execution assignment is opencode)
ec118cad-0fd3-4652-91c4-27432f2f2efdorigin/maindoes not. The queue binding isassigned_lane=opencode; this lane will not perform the bound triage in parallel.dezren39 commentedon Nov 8, 2026
🤖 Agent note · handed off
dezren39 commentedon Nov 8, 2026
🤖 Agent note · triaged
nixos/nixpkgs/default.nixon main carries no patchelf /autoPatchelfHookoverride — only the awscli (code#4167) and cutter (code#5269) overlays plus nix-openclaw.git log -S '0.15.2'and-S 'code#2727'on that file return nothing, so the temporary patchelf 0.15.2 override was never committed to main; it lives only on PR chore(deps): nixpkgs update 2026-10-30 #4519's branch (lines ~360–383 of its diff).26516d99(flake.lock) shipspatchelfFlags = [ "--no-sort" ](nix/packages/nodejs-24.nix:41) and itsnodejs_24attribute isif lib.versionAtLeast nodejs_24.version "24.22.1" then nodejs_24 else <private repack>— the repack is a version fallback, not a permanent private build, which is exactly the second removal path named in the body. PR fix(deps): bump nix-openclaw to 4b261b0 for the patchelf --no-sort Node repack fix #4910 already verified nodejs_24 + the openclaw packages build.repo-health:v1:fix:developing-today/code:issue:2727).developing-today commentedon Nov 8, 2026
🤖 Agent note · picked up
developing-today commentedon Nov 8, 2026
🤖 Agent note · done
df0e415c91):nixos/nixpkgs/default.nixatdf0e415c91contains no patchelf / 0.15.2 override (grep clean on origin/main).nix build .#nixosConfigurations.amd.pkgs.openclawPackages.nodejs_24PASSES — output/nix/store/ck8l349yzhds9zdrvfnbsgaicfi9bbx3-nodejs-24.22.1, installCheck green, version 24.22.1 satisfies the locked nix-openclaw>= 24.22.1consumer condition.nix build .#nixosConfigurations.amd.config.system.build.toplevelis NOT green, but the failure is pre-existing on clean main and unrelated to nodejs/patchelf: the fleet-0.1.0 package fails becausepkgs/atlas-search/schema/*.sqlis missing from thefleetSrcfileset inpkgs/fleet/default.nixwhileatlas-coreinclude_str!s those files (stage.rs:45,49). Filed as issue fix(fleet): nix build fails — atlas-search/schema missing from fleetSrc fileset (atlas-core include_str! .sql files absent) #7641 with the one-line fix; toplevel re-verification is owed once issue fix(fleet): nix build fails — atlas-search/schema missing from fleetSrc fileset (atlas-core include_str! .sql files absent) #7641 lands. Issue chore(deps): remove the nodejs_24 override once nixpkgs-unstable's repack passes installCheck #2727's own governing condition — the repack passing installCheck — is met and proven above.