diff --git a/flake.nix b/flake.nix index cf26870e0..cf767ba9b 100644 --- a/flake.nix +++ b/flake.nix @@ -15,70 +15,79 @@ "aarch64-darwin" ]; - forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); + forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems f; + + pkgsFor = + system: + import nixpkgs { + inherit system; + overlays = [ self.overlays.default ]; + }; in { - packages = forAllSystems ( - system: - let - pkgs = nixpkgs.legacyPackages.${system}; - inherit (pkgs) lib; - in - { - default = pkgs.stdenv.mkDerivation (finalAttrs: { - pname = "openspec"; - version = (builtins.fromJSON (builtins.readFile ./package.json)).version; + overlays.default = final: _prev: { + openspec = final.stdenv.mkDerivation (finalAttrs: { + pname = "openspec"; + inherit ((builtins.fromJSON (builtins.readFile ./package.json))) version; - src = lib.fileset.toSource { - root = ./.; - fileset = lib.fileset.unions [ - ./src - ./bin - ./schemas - ./scripts - ./test - ./package.json - ./pnpm-lock.yaml - ./tsconfig.json - ./build.js - ./vitest.config.ts - ./vitest.setup.ts - ./eslint.config.js - ]; - }; - - pnpmDeps = pkgs.fetchPnpmDeps { - inherit (finalAttrs) pname version src; - pnpm = pkgs.pnpm_9; - fetcherVersion = 3; - hash = "sha256-82sVXXqj4mfe6n6BRagUiOQS0Gd+jbPOQiYzUhmrZGU="; - }; - - nativeBuildInputs = with pkgs; [ - nodejs_22 - npmHooks.npmInstallHook - pnpmConfigHook - pnpm_9 + src = final.lib.fileset.toSource { + root = ./.; + fileset = final.lib.fileset.unions [ + ./src + ./bin + ./schemas + ./scripts + ./test + ./package.json + ./pnpm-lock.yaml + ./tsconfig.json + ./build.js + ./vitest.config.ts + ./vitest.setup.ts + ./eslint.config.js ]; + }; + + pnpmDeps = final.fetchPnpmDeps { + inherit (finalAttrs) pname version src; + pnpm = final.pnpm_9; + fetcherVersion = 3; + hash = "sha256-82sVXXqj4mfe6n6BRagUiOQS0Gd+jbPOQiYzUhmrZGU="; + }; - buildPhase = '' - runHook preBuild + nativeBuildInputs = with final; [ + nodejs_22 + npmHooks.npmInstallHook + pnpmConfigHook + pnpm_9 + ]; - pnpm run build + buildPhase = '' + runHook preBuild + pnpm run build + runHook postBuild + ''; - runHook postBuild - ''; + dontNpmPrune = true; - dontNpmPrune = true; + meta = with final.lib; { + description = "AI-native system for spec-driven development"; + homepage = "https://github.com/Fission-AI/OpenSpec"; + license = licenses.mit; + maintainers = [ ]; + mainProgram = "openspec"; + }; + }); + }; - meta = with pkgs.lib; { - description = "AI-native system for spec-driven development"; - homepage = "https://github.com/Fission-AI/OpenSpec"; - license = licenses.mit; - maintainers = [ ]; - mainProgram = "openspec"; - }; - }); + packages = forAllSystems ( + system: + let + pkgs = pkgsFor system; + in + { + default = pkgs.openspec; + inherit (pkgs) openspec; } );