Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 64 additions & 55 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
);

Expand Down
Loading