name: Nix Flake actions

on:
  pull_request:
  push:

jobs:
  nix-matrix:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
      - uses: actions/checkout@v4
      - uses: cachix/install-nix-action@v30
      - id: set-matrix
        name: Generate Nix Matrix
        run: |
          set -Eeu
          matrix="$(nix eval --json '.#githubActions.matrix')"
          echo "matrix=$matrix" >> "$GITHUB_OUTPUT"

  nix-build:
    name: ${{ matrix.name }} (${{ matrix.system }})
    needs: nix-matrix
    runs-on: ${{ matrix.os }}
    strategy:
      matrix: ${{fromJSON(needs.nix-matrix.outputs.matrix)}}
    steps:
      - uses: actions/checkout@v4
      - uses: cachix/install-nix-action@v30
      - run: nix build -L '.#${{ matrix.attr }}'