name: Installer

on:
  push:
    tags: [installer]

jobs:
  installer:
    name: Build installer
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - name: Set up Go
        uses: https://github.com/actions/setup-go@v4
        with:
          go-version: '>=1.20.1'
      - uses: cachix/install-nix-action@v27
        with:
          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
            extra-trusted-public-keys = nix-cache.nul.ie-1:BzH5yMfF4HbzY1C977XzOxoPhEc9Zbu39ftPkUbH+m4=

      - name: Set up vars
        id: setup
        run: |
          echo "short_rev=$(git rev-parse --short HEAD)" >> "$GITHUB_OUTPUT"
      - name: Build installer ISO
        run: |
          nix build .#nixfiles.config.nixos.systems.installer.configuration.config.my.buildAs.iso
          ln -s "$(readlink result)"/iso/jackos-installer.iso \
            jackos-installer-${{ steps.setup.outputs.short_rev }}.iso
      - name: Build installer netboot archive
        run: |
          nix build .#nixfiles.config.nixos.systems.installer.configuration.config.my.buildAs.netbootArchive
          ln -s "$(readlink result)" \
            jackos-installer-netboot-${{ steps.setup.outputs.short_rev }}.tar.zst

      - name: Create release
        uses: https://gitea.com/actions/release-action@main
        with:
          title: Latest installer
          api_key: '${{ secrets.RELEASE_TOKEN }}'
          files: |
            jackos-installer-${{ steps.setup.outputs.short_rev }}.iso
            jackos-installer-netboot-${{ steps.setup.outputs.short_rev }}.tar.zst
