name: Nix

on:
  push:
    branches: [main]
  pull_request:
    paths:
      - 'flake.nix'
      - 'flake.lock'
      - 'nix/**'
      - 'pyproject.toml'
      - 'uv.lock'
      - 'hermes_cli/**'
      - 'run_agent.py'
      - 'acp_adapter/**'

concurrency:
  group: nix-${{ github.ref }}
  cancel-in-progress: true

jobs:
  nix:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - uses: DeterminateSystems/nix-installer-action@main
      - uses: DeterminateSystems/magic-nix-cache-action@main
      - name: Check flake
        if: runner.os == 'Linux'
        run: nix flake check --print-build-logs
      - name: Build package
        if: runner.os == 'Linux'
        run: nix build --print-build-logs
      - name: Evaluate flake (macOS)
        if: runner.os == 'macOS'
        run: nix flake show --json > /dev/null
