name: Nix Build on: push: branches: [main] paths: - 'nix/**' - 'flake.nix' - 'flake.lock' - 'package.json' - 'package-lock.json' - 'packages/highlight/**' - 'packages/server/**' - 'packages/relay/**' - 'packages/cli/**' pull_request: branches: [main] paths: - 'nix/**' - 'flake.nix' - 'flake.lock' - 'package.json' - 'package-lock.json' - 'packages/highlight/**' - 'packages/server/**' - 'packages/relay/**' - 'packages/cli/**' permissions: contents: read jobs: build: runs-on: ubuntu-latest continue-on-error: false steps: - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v31 with: nix_path: nixpkgs=channel:nixos-unstable - name: Build Nix package run: nix build .#default -o result - name: Verify lockfile is complete # npm silently omits resolved/integrity fields in workspace monorepos. # Nix needs them for offline builds. See https://github.com/npm/cli/issues/4460 run: | node scripts/fix-lockfile.mjs package-lock.json git diff --exit-code package-lock.json || { echo "ERROR: package-lock.json has missing resolved/integrity fields." echo "This is a known npm bug: https://github.com/npm/cli/issues/4460" echo "Run 'node scripts/fix-lockfile.mjs' and commit the result." exit 1 } - name: Check npmDepsHash is up to date run: ./scripts/update-nix.sh --check