---
name: Check

on:
  push:
    branches:
      - master
      - release-**
  pull_request:

permissions:
  contents: read

defaults:
  run:
    shell: bash

jobs:
  check:
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.runs-on }}

    # https://docs.github.com/en/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job#choosing-github-hosted-runners
    strategy:
      matrix:
        include:
          - name: aarch64-linux
            runs-on: ubuntu-24.04-arm
          - name: aarch64-darwin
            runs-on: macos-15
          - name: x86_64-linux
            runs-on: ubuntu-24.04
          - name: x86_64-darwin
            runs-on: macos-15-intel

    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false

      # TODO: Lock this Action to a release tag once commit [1] ("fix: relocate
      # TMPDIR to /mnt to improve Nix installer compatibility") is part of a
      # release, resolving [2] ("does not work with cachix install nix action").
      #
      # [1]: https://github.com/wimpysworld/nothing-but-nix/pull/25
      # [2]: https://github.com/wimpysworld/nothing-but-nix/issues/24
      - uses: wimpysworld/nothing-but-nix@10c936d9e46521bf923f75458e0cbd4fa309300d  # yamllint disable-line rule:line-length
        if: runner.os == 'Linux'
        with:
          hatchet-protocol: rampage

      - uses: cachix/install-nix-action@v31

      - uses: cachix/cachix-action@v16
        with:
          name: nix-community
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
        continue-on-error: true

      - run: nix develop --command stylix-check --no-nom
