{ description = "Shared Quixos protobuf protocol definitions"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; nodejs = pkgs.nodejs_24; quixos-protocol = (pkgs.callPackage ./yarn-project.nix { inherit nodejs; }) { src = pkgs.lib.cleanSource ./.; overrideAttrs = old: { nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.esbuild pkgs.protobuf ]; buildPhase = '' runHook preBuild export QUIXOS_PROTO_PATH="${pkgs.protobuf}/include:$PWD/proto''${QUIXOS_PROTO_PATH:+:$QUIXOS_PROTO_PATH}" patchShebangs node_modules/.bin node_modules/@bufbuild/protoc-gen-es/bin yarn build esbuild dist/src/descriptor-check.js \ --bundle --platform=node --target=node24 --format=esm \ --outfile=quixos-descriptor-check.mjs esbuild dist/src/capability-language/cli.js \ --bundle --platform=node --target=node24 --format=esm \ --outfile=quixos-capability-compile.mjs esbuild dist/src/resource-lock/cli.js \ --bundle --platform=node --target=node24 --format=esm \ --outfile=quixos-lock-check.mjs runHook postBuild ''; doCheck = true; checkPhase = '' runHook preCheck yarn test runHook postCheck ''; installPhase = '' runHook preInstall mkdir -p "$out" cp --reflink=auto --recursive grammar "$out/grammar" cp --reflink=auto --recursive proto "$out/proto" cp --reflink=auto --recursive dist "$out/dist" cp package.json "$out/package.json" mkdir -p "$out/bin" cat > "$out/bin/quixos-descriptor-check" < "$out/bin/quixos-capability-compile" < "$out/bin/quixos-lock-check" <