Skip to content

chore(deps): remove the nixpkgs-25 regex-pcre pkg-config/pcre override once stock regex-pcre builds at the channel rev #5447

Open

Description

@dezren39

Context

The 2026-11-04 nixpkgs update (tracking: #2715) moves nixpkgs-25 e7439b6b -> 1d060086 (the Hydra-gated nixos-unstable channel revision). At the new revision, haskellPackages.regex-pcre (pulled into the amd system closure via haskellPackages.misfortune in nixos/environment/default.nix) is marked broken under nixpkgs' problems framework, and the marking is honest: with the broken flag warned through, its build fails deterministically in the configure phase --

Error: [Cabal-7620]
The program 'pkg-config' version >=0.9.0 is required but it could not be found.

nixpkgs' Haskell builder no longer adds the pkg-config wrapper (or the pkgconfig-depends libraries) to Haskell build environments -- the same mechanism the 2026-10-30 run hit on the master pin (that instance is tracked in #3906). Drew ruled on 2026-11-04 ("fix it or pin misfortune") to revive the #3906-class override for the nixpkgs-25 segment rather than keep the input frozen.

The temporary override

nixos/environment/default.nix extends the raw nixpkgs-25 legacyPackages segment with an overlay that overrides haskellPackages.regex-pcre to append pkg-config to its nativeBuildInputs and a minimal vendored pcre 8.45 (the version the old pins shipped; test suite disabled) to its buildInputs, restoring the old build environment for this one package. A problems handler scoped to regex-pcre warns the broken marking through so the overridden derivation can evaluate.

Removal condition

Remove the override when the stock (un-extended) nixpkgs-25 segment's haskellPackages.regex-pcre builds at the then-current channel pin -- i.e. it is no longer marked broken, or warned through it builds because nixpkgs' Haskell builder once again provides pkg-config in its build environment -- or when regex-pcre/misfortune leaves the amd closure (for example if the nixpkgs-25 pin exception from #3327 is retired entirely).

Removal test

Revert the segment in nixos/environment/default.nix to the raw inputs.nixpkgs-25.legacyPackages and remove the override binding, then build the segment's haskellPackages.misfortune (which realises regex-pcre) and the full amd toplevel; both must succeed.

Acceptance criteria

  • The removal condition is verified, not assumed: the stock nixpkgs-25 haskellPackages.regex-pcre at the current pin is not refused for broken problems and realises successfully, OR regex-pcre/misfortune has left the amd closure.
  • If the condition holds: the override in nixos/environment/default.nix is removed and both the segment's haskellPackages.misfortune and the full amd toplevel build succeed.
  • If the condition does not hold yet: the check result (date + nixpkgs-25 revision + what was observed) is recorded on this issue and the override stays.

Activity

  1. developing-today commented on Nov 4, 2026

    @developing-today
    Contributor
  2. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    Override landed 2026-11-04 with PR #5453 (merged, merge commit 44b2dd56e), under Drew's ruling on #2715. The nixpkgs-25-fixed binding is live on main in nixos/environment/default.nix; its comment names this issue, #2715, the removal condition, and the removal test stated here. Verified at landing: the toplevel closure carries the overridden regex-pcre drv (5xl002q8..., solo-realised, store-valid) and the full amd toplevel built from the committed tree (output jiz6p50b..., hash sha256:087qi62555v3155jdw59x50wyi5mk3kj8cwk5ap2brgrg28fzb9d). This issue stays open until the removal condition is verified at a future nixpkgs-25 pin.

  3. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    agent-note:v1

    • task: 10042
    • state: picked_up
    • lane: code-h (direct)
    • summary: Triage of the nixpkgs-25 regex-pcre override removal condition at current main. Override is live in nixos/environment/default.nix (nixpkgs-25-fixed binding) and the nixpkgs-25 pin is still 1d060086 — the same rev the override was created for. Verifying the stock segment's regex-pcre broken status at that pin before routing.
  4. added
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 5, 2026
  5. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    agent-note:v1

    • task: 10042
    • state: done (triaged)
    • lane: code-h (direct)

    Triage check 2026-11-05 (task 10042): removal condition does NOT hold yet — override stays.

    Evidence, verified at current main (laptop ~/git/code on main @ 04f7869, matching origin):

    • flake.lock nixpkgs-25 pin is still 1d060086d60cb76a40cf37109f979d88a5bd6396 — unchanged since the override landed with PR chore(deps): nixpkgs update 2026-11-04 #5453 on 2026-11-04.
    • Stock (un-extended) segment evaluated on the laptop: nixpkgs-25.legacyPackages.x86_64-linux.haskellPackages.regex-pcre.meta.broken = true (position: pkgs/development/haskell-modules/hackage-packages.nix in that pin). So the stock segment still refuses regex-pcre for broken problems, exactly the condition the override in nixos/environment/default.nix (the nixpkgs-25-fixed binding) works around.
    • regex-pcre/misfortune has not left the amd closure: nixpkgs-25-fixed.haskellPackages.misfortune is still in the environment package list.

    Ordering / next trigger: re-check this issue when the nixpkgs-25 pin next moves (tracking: #2715) or if misfortune/regex-pcre leaves the amd closure. At that point run the removal test from the issue body (revert to raw legacyPackages, build the segment's haskellPackages.misfortune and the full amd toplevel).

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

Metadata

Metadata

Assignees

Labels

task/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