feat(nix): expose openspec as a consumable overlay#1439
Conversation
Refactor the flake so the package derivation is defined once, in
`overlays.default`, and every other output consumes it. Previously the
derivation lived inline in `packages.default`, so anyone who wanted
`openspec` in their own package set had to copy the derivation rather than
import it.
What changed:
- Add `overlays.default`, a standard `final: _prev:` overlay that exposes
`pkgs.openspec`. The derivation is written against `final`, so downstream
overlay composition and `overrideAttrs` behave as expected.
- Route `packages.{default,openspec}` through the overlay via a `pkgsFor`
helper (`import nixpkgs { overlays = [ self.overlays.default ]; }`), so the
flake's own package resolves exactly as a consumer's would. No more
duplicated build definition.
- Refresh the nixpkgs pin in `flake.lock`.
`apps` and `devShells` are unchanged in behaviour.
Usage — a downstream flake:
nixpkgs.overlays = [ openspec.overlays.default ];
# -> pkgs.openspec
or devenv, via `devenv.yaml`:
inputs:
openspec:
url: github:Fission-AI/OpenSpec
overlays:
- default
Assisted-by: Claude Opus 4.8 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThe flake refactors per-system package generation around a default overlay. ChangesFlake package wiring
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
flake.nix (1)
51-56: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick winPlan a pnpm/fetcher migration for this derivation.
pnpm_9is EOL and being phased out in Nixpkgs, while this flake is onnixos-unstableand still usespnpm_9plusfetchPnpmDepswithfetcherVersion = 3. Update the build/dev/dependency-fetching path to a supported pnpm version such aspnpm_11and usefetcherVersion = 4, regenerating thepnpmDepshash accordingly.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@flake.nix` around lines 51 - 56, Update the derivation’s pnpm dependency-fetching and build/development configuration from pnpm_9 to a supported version such as pnpm_11, change fetchPnpmDeps to fetcherVersion 4, and regenerate the pnpmDeps hash for the new fetcher output. Ensure all related pnpm references use the same supported version.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@flake.nix`:
- Around line 51-56: Update the derivation’s pnpm dependency-fetching and
build/development configuration from pnpm_9 to a supported version such as
pnpm_11, change fetchPnpmDeps to fetcherVersion 4, and regenerate the pnpmDeps
hash for the new fetcher output. Ensure all related pnpm references use the same
supported version.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 98cc6ee4-1eab-44dc-82a6-b6998b56fa17
📒 Files selected for processing (1)
flake.nix
Refactor the flake so the package derivation is defined once, in
overlays.default, and every other output consumes it. Previously the derivation lived inline inpackages.default, so anyone who wantedopenspecin their own package set had to copy the derivation rather than import it.What changed:
overlays.default, a standardfinal: _prev:overlay that exposespkgs.openspec. The derivation is written againstfinal, so downstream overlay composition andoverrideAttrsbehave as expected.packages.{default,openspec}through the overlay via apkgsForhelper (import nixpkgs { overlays = [ self.overlays.default ]; }), so the flake's own package resolves exactly as a consumer's would. No more duplicated build definition.flake.lock.appsanddevShellsare unchanged in behaviour.Usage — a downstream flake:
or devenv, via
devenv.yaml:Summary by CodeRabbit