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/**'

permissions:
  contents: read

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@34e114876b0b11c390a56381ad16ebd13914f8d5  # v4
      - uses: DeterminateSystems/nix-installer-action@ef8a148080ab6020fd15196c2084a2eea5ff2d25  # v22
      - uses: DeterminateSystems/magic-nix-cache-action@565684385bcd71bad329742eefe8d12f2e765b39  # v13
      - 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
