May 11, 11-12 AM (19)
May 12, 12-1 AM (2)
May 12, 1-2 AM (2)
May 12, 2-3 AM (3)
May 12, 3-4 AM (4)
May 12, 4-5 AM (8)
May 12, 5-6 AM (11)
May 12, 6-7 AM (17)
May 12, 7-8 AM (25)
May 12, 8-9 AM (26)
May 12, 9-10 AM (35)
May 12, 10-11 AM (82)
May 12, 11-12 PM (98)
May 12, 12-1 PM (38)
May 12, 1-2 PM (69)
May 12, 2-3 PM (54)
May 12, 3-4 PM (41)
May 12, 4-5 PM (57)
May 12, 5-6 PM (40)
May 12, 6-7 PM (24)
May 12, 7-8 PM (24)
May 12, 8-9 PM (18)
May 12, 9-10 PM (8)
May 12, 10-11 PM (40)
May 12, 11-12 AM (19)
May 13, 12-1 AM (10)
May 13, 1-2 AM (2)
May 13, 2-3 AM (5)
May 13, 3-4 AM (2)
May 13, 4-5 AM (5)
May 13, 5-6 AM (29)
May 13, 6-7 AM (52)
May 13, 7-8 AM (43)
May 13, 8-9 AM (44)
May 13, 9-10 AM (21)
May 13, 10-11 AM (22)
May 13, 11-12 PM (47)
May 13, 12-1 PM (25)
May 13, 1-2 PM (44)
May 13, 2-3 PM (57)
May 13, 3-4 PM (42)
May 13, 4-5 PM (33)
May 13, 5-6 PM (30)
May 13, 6-7 PM (51)
May 13, 7-8 PM (33)
May 13, 8-9 PM (9)
May 13, 9-10 PM (24)
May 13, 10-11 PM (30)
May 13, 11-12 AM (11)
May 14, 12-1 AM (18)
May 14, 1-2 AM (3)
May 14, 2-3 AM (4)
May 14, 3-4 AM (21)
May 14, 4-5 AM (11)
May 14, 5-6 AM (18)
May 14, 6-7 AM (18)
May 14, 7-8 AM (47)
May 14, 8-9 AM (53)
May 14, 9-10 AM (35)
May 14, 10-11 AM (20)
May 14, 11-12 PM (114)
May 14, 12-1 PM (54)
May 14, 1-2 PM (151)
May 14, 2-3 PM (32)
May 14, 3-4 PM (17)
May 14, 4-5 PM (14)
May 14, 5-6 PM (38)
May 14, 6-7 PM (12)
May 14, 7-8 PM (22)
May 14, 8-9 PM (37)
May 14, 9-10 PM (35)
May 14, 10-11 PM (27)
May 14, 11-12 AM (14)
May 15, 12-1 AM (18)
May 15, 1-2 AM (15)
May 15, 2-3 AM (5)
May 15, 3-4 AM (3)
May 15, 4-5 AM (13)
May 15, 5-6 AM (14)
May 15, 6-7 AM (10)
May 15, 7-8 AM (31)
May 15, 8-9 AM (23)
May 15, 9-10 AM (52)
May 15, 10-11 AM (71)
May 15, 11-12 PM (70)
May 15, 12-1 PM (73)
May 15, 1-2 PM (73)
May 15, 2-3 PM (66)
May 15, 3-4 PM (26)
May 15, 4-5 PM (13)
May 15, 5-6 PM (30)
May 15, 6-7 PM (29)
May 15, 7-8 PM (25)
May 15, 8-9 PM (8)
May 15, 9-10 PM (34)
May 15, 10-11 PM (34)
May 15, 11-12 AM (25)
May 16, 12-1 AM (2)
May 16, 1-2 AM (2)
May 16, 2-3 AM (3)
May 16, 3-4 AM (3)
May 16, 4-5 AM (0)
May 16, 5-6 AM (6)
May 16, 6-7 AM (2)
May 16, 7-8 AM (10)
May 16, 8-9 AM (1)
May 16, 9-10 AM (2)
May 16, 10-11 AM (1)
May 16, 11-12 PM (13)
May 16, 12-1 PM (11)
May 16, 1-2 PM (8)
May 16, 2-3 PM (15)
May 16, 3-4 PM (10)
May 16, 4-5 PM (2)
May 16, 5-6 PM (2)
May 16, 6-7 PM (2)
May 16, 7-8 PM (10)
May 16, 8-9 PM (6)
May 16, 9-10 PM (9)
May 16, 10-11 PM (29)
May 16, 11-12 AM (42)
May 17, 12-1 AM (9)
May 17, 1-2 AM (1)
May 17, 2-3 AM (0)
May 17, 3-4 AM (1)
May 17, 4-5 AM (0)
May 17, 5-6 AM (3)
May 17, 6-7 AM (2)
May 17, 7-8 AM (1)
May 17, 8-9 AM (1)
May 17, 9-10 AM (1)
May 17, 10-11 AM (6)
May 17, 11-12 PM (6)
May 17, 12-1 PM (4)
May 17, 1-2 PM (5)
May 17, 2-3 PM (9)
May 17, 3-4 PM (4)
May 17, 4-5 PM (8)
May 17, 5-6 PM (14)
May 17, 6-7 PM (10)
May 17, 7-8 PM (2)
May 17, 8-9 PM (4)
May 17, 9-10 PM (2)
May 17, 10-11 PM (20)
May 17, 11-12 AM (13)
May 18, 12-1 AM (10)
May 18, 1-2 AM (4)
May 18, 2-3 AM (5)
May 18, 3-4 AM (9)
May 18, 4-5 AM (14)
May 18, 5-6 AM (2)
May 18, 6-7 AM (37)
May 18, 7-8 AM (28)
May 18, 8-9 AM (32)
May 18, 9-10 AM (41)
May 18, 10-11 AM (41)
May 18, 11-12 PM (27)
May 18, 12-1 PM (134)
May 18, 1-2 PM (33)
May 18, 2-3 PM (83)
May 18, 3-4 PM (33)
May 18, 4-5 PM (44)
May 18, 5-6 PM (21)
May 18, 6-7 PM (16)
May 18, 7-8 PM (10)
May 18, 8-9 PM (22)
May 18, 9-10 PM (4)
May 18, 10-11 PM (25)
May 18, 11-12 AM (2)
3,991 commits this week May 12, 2026 - May 19, 2026
v2 shell: auto-write project's cabalProjectLocal at shell startup
Move the platform-specific cabal.project pragmas back into
`modules/cabal-project.nix`'s `cabalProjectLocal` mkIfs (so
plan-nix's elaboration records the matching configure-args) and
expose them to the v2 shell so users get them in their
`cabal.project.local` automatically — no more hand-maintained
`shared: True` / `library-for-ghci: True` / `executable-static: True`
blocks duplicated between the shell and the slice.

Mechanism:

* `lib/call-cabal-project-to-nix.nix`: drop `platformCabalProjectPragmas`
  (which injected the defaults directly into the rawCabalProject
  text); rewrite the `cabalProjectLocal != null` check to also
  skip `""`, so internal projects can switch from
  `cabalProjectLocal = null` to `cabalProjectLocal = ""` without
  changing the rawCabalProject hash.

* `modules/cabal-project.nix`: replace `platformCabalProjectPragmas`
  with four `mkIf` blocks targeting `cabalProjectLocal`:
  - musl                → `package * executable-static: True`
  - x86_64-darwin       → `package * library-for-ghci: True`
  - android             → `package * ghc-options: -optl-static
                                                   -optl-ldl
                                                   [-optl-no-pie]`
  - wasm 9.12+          → `package * shared: True`
  (The wasm case is new — previously handled only by
  `comp-v2-builder.nix`'s `forceShared` rewrite in the slice;
  surfacing it at the project level makes plan-nix's elaboration
  match without the slice having to paper over a `--disable-shared`
  mismatch.)

* `overlays/ghc-packages.nix`, `compiler/ghc/default.nix`: switch
  `cabalProjectLocal = null` to `cabalProjectLocal = ""` so the
  `nullOr lines` option's merge accepts the mkIf injections.  The
  rawCabalProject hash is preserved by the `!= ""` skip above.

* `modules/component-driver.nix`, `overlays/haskell.nix`,
  `builder/default.nix`: thread `cabalProjectLocal` from the
  project module through to `shellForV2`.

* `builder/shell-for-v2.nix`: add a `haskell-nix-cabal-project-local-sync`
  script (modeled after `haskell-nix-cabal-store-sync`).  If
  `cabal.project.<targetPrefix>local` is missing it writes it
  from a `/nix/store` `writeText` of the merged
  `cabalProjectLocal`; if present and equal it does nothing; if
  present and different it prints the diff plus a
  `haskell-nix-cabal-project-local-sync --force` invocation to
  replace it.  Invoked from the shell's shellHook and exposed on
  `env.passthru.cabalProjectLocalSync`.  For native shells the
  target file is `cabal.project.local` (auto-picked by cabal);
  for cross shells the filename has the target prefix and tests
  pull it in with `import: cabal.project.<targetPrefix>local`.

* `test/cabal-sublib-shell/default.nix`: drop the hand-rolled
  platform-conditional blocks from the inline `cabal.project`;
  instead call `haskell-nix-cabal-project-local-sync` from the
  test's buildCommand and, on cross targets, `import:` the
  prefixed file.  Also stop reading `../cabal.project.local` —
  this test doesn't actually need any of its content, and the
  `head.hackage` repository definition there triggered a
  bootstrap that the sandbox's unpatched cabal couldn't satisfy
  (`user error (https not supported)`).

Verified:
  x86_64-darwin.unstable.ghc9141.native.tests.cabal-sublib-shell.run
  x86_64-linux.unstable.ghc9141.musl64.tests.cabal-sublib-shell.run
  aarch64-darwin.unstable.ghc9141.wasi32.tests.cabal-sublib-shell.run
all reuse the shell's prebuilt provider unit-ids and pass.
chore(deps): bump ws in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the / directory: [ws](https://github.com/websockets/ws).


Updates `ws` from 8.19.0 to 8.20.1
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/8.19.0...8.20.1)

---
updated-dependencies:
- dependency-name: ws
  dependency-version: 8.20.1
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <[email protected]>