name: CI on: pull_request: merge_group: concurrency: group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }} cancel-in-progress: true jobs: sort-build-systems: runs-on: ubuntu-22.04 steps: - uses: cachix/install-nix-action@v23 with: nix_path: nixpkgs=channel:nixos-unstable - uses: actions/checkout@v4 - name: Check format run: nix-shell --packages jq diffutils --run "diff --unified overrides/build-systems.json <(jq --from-file overrides/sort-build-systems.jq --raw-output --sort-keys < overrides/build-systems.json)" nix-matrix: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v23 - id: set-matrix name: Generate Nix Matrix run: | set -Eeu echo "matrix=$(nix eval --json '.#githubActions.matrix')" >> "$GITHUB_OUTPUT" nix-build: needs: nix-matrix runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: ${{ fromJSON(needs.nix-matrix.outputs.matrix) }} steps: - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v23 - uses: cachix/cachix-action@v12 with: name: poetry2nix signingKey: "VhaWuN3IyJVpWg+aZvTocVB+W8ziZKKRGLKR53Pkld3YRZxYOUfXZf0fvqF+LkqVW0eA60trVd5vsqNONpX9Hw==" - run: nix build -L ".#${{ matrix.attr }}" --keep-going test-template: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - macos-latest steps: - uses: actions/checkout@v4 - uses: cachix/install-nix-action@v23 - uses: cachix/cachix-action@v12 with: name: poetry2nix signingKey: "VhaWuN3IyJVpWg+aZvTocVB+W8ziZKKRGLKR53Pkld3YRZxYOUfXZf0fvqF+LkqVW0eA60trVd5vsqNONpX9Hw==" - name: create flake template test directory run: echo "TESTDIR=$(mktemp -d)" >> "$GITHUB_ENV" - name: initialize flake from poetry2nix template working-directory: ${{ env.TESTDIR }} run: nix flake init --template poetry2nix - name: generate pyproject.toml working-directory: ${{ env.TESTDIR }} run: nix develop -c poetry init --name=poetry2nix-template-test --quiet - name: generate poetry.lock working-directory: ${{ env.TESTDIR }} run: nix develop -c poetry lock --no-update - name: build the flake working-directory: ${{ env.TESTDIR }} run: nix build --keep-going -L --show-trace collect: runs-on: ubuntu-latest needs: - nix-build - sort-build-systems - test-template steps: - run: exit 0