chore: source the PureScript toolchain from purescript-overlay (#54)#113
Merged
Conversation
Swap the dev-shell toolchain provider from easy-purescript-nix (lightly maintained, legacy-spago-only) to purescript-overlay, without changing the build: same purs 0.15.16, same legacy spago 0.21.0, same Dhall-based test project. - flake.nix: add purescript-overlay input (nixpkgs follows ours) + its overlays.default; remove easy-purescript-nix entirely. Pin the toolchain explicitly as purs-bin.purs-0_15_16 / spago-bin.spago-0_21_0 (the overlay's plain `spago` now resolves to the new 1.x; explicit pins also stop `nix flake update` from silently bumping purs and churning goldens). - flake.lock: regenerated (easy-purescript-nix dropped, purescript-overlay added, its nixpkgs deduped via follows). - CLAUDE.md: refresh the toolchain + dependency-update prose. Verified: `purs --version` 0.15.16, `spago --version` 0.21.0; CoreFn regenerates byte-identically (no golden churn); full suite 314/0. Prerequisite for #55 (migrate to the new spago), which becomes a one-attribute pin swap once the overlay is in place. Closes #54
There was a problem hiding this comment.
Pull request overview
This PR switches the Nix dev-shell PureScript toolchain source from easy-purescript-nix to purescript-overlay while keeping the effective toolchain versions and build behavior unchanged (still purs 0.15.16 + legacy spago 0.21.0 for the Dhall-based test/ps project). This lays the groundwork for the follow-up migration to the new Spago.
Changes:
- Replace
easy-purescript-nixwithpurescript-overlayinflake.nix, and explicitly pinpurs-bin.purs-0_15_16andspago-bin.spago-0_21_0. - Regenerate
flake.lockto dropeasy-purescript-nixand addpurescript-overlay(withnixpkgsdeduped viafollows). - Update
CLAUDE.mddocumentation to reflect the new toolchain source and explicit*-binpins.
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| flake.nix | Swaps dev-shell toolchain provider to purescript-overlay and pins legacy tool versions via purs-bin.* / spago-bin.*. |
| flake.lock | Updates lockfile inputs to remove easy-purescript-nix and add purescript-overlay (+ its transitive inputs). |
| CLAUDE.md | Updates toolchain and dependency-update guidance to match the overlay-based, explicitly pinned setup. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Swap the dev-shell toolchain provider from
easy-purescript-nix(lightly maintained, only packages legacy spago 0.21.0) topurescript-overlay— without changing the build: samepurs0.15.16, same legacy spago 0.21.0, same Dhall-basedtest/psproject.This is the verified-safe prerequisite that unblocks #55 (migrate to the new spago), which becomes a one-attribute pin swap once the overlay is in place.
Changes
flake.nix: addpurescript-overlayas an input (itsnixpkgsfollows ours) pluspurescript-overlay.overlays.default; removeeasy-purescript-nixentirely. Pin the toolchain explicitly aspurs-bin.purs-0_15_16/spago-bin.spago-0_21_0.flake.lock: regenerated —easy-purescript-nixdropped,purescript-overlayadded (itsnixpkgsdeduped viafollows).CLAUDE.md: refresh the Toolchain and Updating-Dependencies prose.Why explicit
*-bin.*pins (not plainpurs/spago)The overlay's stable
spagonow resolves to the new PureScript spago 1.0.4, so plainspagowould not be the legacy 0.21 we want — thespago-bin.spago-0_21_0pin is mandatory. For consistencypursis pinned the same way (purs-bin.purs-0_15_16): the top-levelpurs/spago"stable" aliases are mutable across overlay versions, so an explicit pin stops a futurenix flake updatefrom silently bumping the compiler and churning goldens. Matches the repo's stated philosophy ("pinned by the flake; update them there, not locally").Verification
nix develop:purs --version→ 0.15.16,spago --version→ 0.21.0.cd test/ps && spago build -u '-g corefn'→ CoreFn regenerates byte-identically (nocorefn.jsondiff), confirming the overlay's purs build matches easy-ps's.cabal test all→ 314 examples, 0 failures; no golden churn.git difftouches onlyflake.nix,flake.lock,CLAUDE.md.Out of scope (→ #55)
No
spago.yaml, registry, package-set, or build-command changes; no new tools (purs-tidy/purs-backend-es) added to the shell.Closes #54