name: CI

on:
  push:
    branches: [master]

jobs:
  check:
    name: Check, build and cache Nix flake
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - uses: cachix/install-nix-action@v23
        with:
          # Gitea will supply a token in GITHUB_TOKEN, which this action will
          # try to pass to Nix when downloading from GitHub
          github_access_token: ${{ secrets.GH_PULL_TOKEN }}
          extra_nix_config: |
            # Make sure we're using sandbox
            sandbox-fallback = false

            extra-substituters = https://nix-cache.nul.ie/main
            extra-trusted-public-keys = main:mMChkG8LwXrFirVfudqjSHasK1jV31OVElYD3eImYl8=
      - name: Set up attic
        run: |
          nix run .#nixpkgs.mine.x86_64-linux.attic-client -- \
            login --set-default colony https://nix-cache.nul.ie "${{ secrets.NIX_CACHE_TOKEN }}"

      - name: Check flake
        run: nix flake check
      - name: Build the world
        id: build
        run: |
          path=$(nix build --no-link .#ci.x86_64-linux --json | jq -r .[0].outputs.out)
          echo "path=$path" >> "$GITHUB_OUTPUT"
      - name: Push to cache
        run: |
          nix run .#nixpkgs.mine.x86_64-linux.attic-client -- \
            push main ${{ steps.build.outputs.path }}