name: "CI"
on:
  pull_request:
  push:
jobs:
  tests-linux:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - uses: cachix/install-nix-action@v22
      with:
        extra_nix_config: |
          system-features = nixos-test recursive-nix benchmark big-parallel kvm
          extra-experimental-features = recursive-nix nix-command flakes
    - run: nix build
    - run: nix build .#doc
    - run: nix fmt . -- --check
    - run: nix flake check
  tests-darwin:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v3
    - uses: cachix/install-nix-action@v30
      with:
        extra_nix_config: |
          system-features = nixos-test recursive-nix benchmark big-parallel kvm
          extra-experimental-features = recursive-nix nix-command flakes
    - run: nix build
    - run: nix build .#doc
    - run: nix fmt . -- --check
    - run: nix flake check
    - name: "Install nix-darwin module"
      run: |
        # Determine architecture of GitHub runner
        ARCH=x86_64
        if [ "$(arch)" = arm64 ]; then
          ARCH=aarch64
        fi
        # https://github.com/ryantm/agenix/pull/230#issuecomment-1867025385

        sudo mv /etc/nix/nix.conf{,.bak}
        nix \
          --extra-experimental-features 'nix-command flakes' \
          build .#checks."${ARCH}"-darwin.integration

        ./result/activate-user
        sudo ./result/activate
    - name: "Test nix-darwin module"
      run: |
        sudo /run/current-system/sw/bin/agenix-integration
    - name: "Test home-manager module"
      run: |
        # Do the job of `home-manager switch` in-line to avoid rate limiting
        nix build .#homeConfigurations.integration-darwin.activationPackage
        ./result/activate
        ~/agenix-home-integration/bin/agenix-home-integration