name: build
on:
  workflow_dispatch: # allows manual triggering
  push:
    branches:
      - master
      - update_flake_lock_action

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - uses: cachix/install-nix-action@v17
        with:
          extra_nix_config: |
            max-jobs = 10

      - uses: cachix/cachix-action@v10
        with:
          name: aciceri-fleet
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'

      - run: nix --print-build-logs --verbose flake check --allow-import-from-derivation --keep-going

  build-thinkpad:
    if: ${{ always() }}
    needs: check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - uses: cachix/install-nix-action@v17
        with:
          extra_nix_config: |
            max-jobs = 10

      - uses: cachix/cachix-action@v10
        with:
          name: aciceri-fleet
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'

      - run: nix --print-build-logs --verbose build --allow-import-from-derivation .#nixosConfigurations.thinkpad.config.system.build.toplevel

  build-hs:
    if: ${{ always() }}
    needs: check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - uses: cachix/install-nix-action@v17
        with:
          extra_nix_config: |
            max-jobs = 10

      - uses: cachix/cachix-action@v10
        with:
          name: aciceri-fleet
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'

      - run: nix --print-build-logs --verbose build --allow-import-from-derivation .#nixosConfigurations.hs.config.system.build.toplevel

  build-beebox:
    if: ${{ always() }}
    needs: check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - uses: cachix/install-nix-action@v17
        with:
          extra_nix_config: |
            max-jobs = 10

      - uses: cachix/cachix-action@v10
        with:
          name: aciceri-fleet
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'

      - run: nix --print-build-logs --verbose build --allow-import-from-derivation .#nixosConfigurations.beebox.config.system.build.toplevel

  build-pbp:
    if: ${{ always() }}
    needs: check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - uses: cachix/install-nix-action@v17
        with:
          extra_nix_config: |
            max-jobs = 10

      - run: |
         DEBIAN_FRONTEND=noninteractive
         sudo apt-get update -q -y && sudo apt-get install -q -y qemu-system-aarch64 qemu-efi binfmt-support qemu-user-static
         mkdir -p ~/.config/nix
         sudo bash -c "echo system-features = aarch64-linux arm-linux >> /etc/nix/nix.conf"

      - uses: cachix/cachix-action@v10
        with:
          name: aciceri-fleet
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'

      - run: nix --print-build-logs --verbose build --allow-import-from-derivation --option system aarch64-linux --option sandbox false --extra-platforms aarch64-linux .#nixosConfigurations.pbp.config.system.build.toplevel

  # build-oneplus5t:
  #   if: ${{ always() }}
  #   needs: check
  #   runs-on: ubuntu-latest
  #   steps:
  #     - name: Checkout repository
  #       uses: actions/checkout@v3

  #     - uses: cachix/install-nix-action@v17
  #       with:
  #         extra_nix_config: |
  #           max-jobs = 10

  #     - uses: cachix/cachix-action@v10
  #       with:
  #         name: aciceri-fleet
  #         authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'

  #     - run: nix --print-build-logs --verbose build --allow-import-from-derivation .#oneplus5t
  #     - run: readlink result