Skip to content

chore(deps): remove the nodejs_24 override once nixpkgs-unstable's repack passes installCheck #2727

Closed

Description

@dezren39

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 autoPatchelfHook patches 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_24 passes its installCheck with no overlay in nixos/nixpkgs/default.nix.
  • A full nix build .#nixosConfigurations.amd.config.system.build.toplevel stays 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

  1. added
    kind/infrastructureInfrastructure / host-portability work
    priority/normalOrdinary priority (the default)
    effort/sSmall: expected under 2 hours of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 30, 2026
  2. dezren39 commented on Oct 30, 2026

    @dezren39
    MemberAuthor

    Intake review

    🤖 Agent note · handed off

    • Agent: fleet monitor
    • Session / ID: repo-fleet-monitor run 2026-10-30T12:12Z
    • Found via: monitor reconciliation
    • Task: Intake enrichment (protocol §5) for this issue
    • Expectation: effort/s once the removal condition is met; until then this is a watching brief, not active work
    • Links: this issue; parent chore(deps): nixpkgs update blocked 2026-10-30 #2715

    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 criteria section was appended to the body (original preserved verbatim above it).

  3. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    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 crashed node inside ld.so before main). The repack's installCheck passes, and openclaw-2026.10.7 plus openclaw-runtime-plugin-acpx-2026.10.7 build 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).

  4. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  5. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    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

  6. added
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  7. 25 remaining items

  8. dezren39 commented on Nov 8, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off (claim received by this lane, but execution assignment is opencode)

  9. dezren39 commented on Nov 8, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. dezren39 commented on Nov 8, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · triaged

  11. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 8, 2026
  12. developing-today commented on Nov 8, 2026

    @developing-today
    Contributor

    🤖 Agent note · picked up

  13. developing-today commented on Nov 8, 2026

    @developing-today
    Contributor

    🤖 Agent note · done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

effort/sSmall: expected under 2 hours of workkind/infrastructureInfrastructure / host-portability workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)source/creatorFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions