name: Nix

on:
  push:
    branches:
      - main
  pull_request:
    types: [ labeled ]

# Setting the shell option, it will run 'bash --noprofile --norc -eo pipefail {0}'
defaults:
  run:
    shell: bash

jobs:
  # TODO: Figure out why it fails to build
  # 
  # build-static:
  #   name: Build static Linux binary
  #   if: ${{ github.ref == 'refs/heads/main' }} || ${{ github.event.label.name == 'nix' }}
  #   runs-on: ubuntu-latest
  #   steps:
  #     - uses: actions/checkout@v3
  #     - uses: cachix/install-nix-action@v20
  #     - uses: cachix/cachix-action@v12
  #       with:
  #         name: surrealdb
  #         authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
  #         extraPullNames: nix-community
  #     - run: nix build .#static-binary
  #     - run: ./result/bin/surreal help

  build-docker:
    name: Build Docker image
    if: ${{ github.ref == 'refs/heads/main' }} || ${{ github.event.label.name == 'nix' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: cachix/install-nix-action@v20
      - uses: cachix/cachix-action@v12
        with:
          name: surrealdb
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
          extraPullNames: nix-community
      - run: nix build .#docker-image
      - run: docker load --input ./result

  build-native-linux:
    name: Build native Linux binary
    if: ${{ github.ref == 'refs/heads/main' }} || ${{ github.event.label.name == 'nix' }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: cachix/install-nix-action@v20
      - uses: cachix/cachix-action@v12
        with:
          name: surrealdb
          authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
          extraPullNames: nix-community
      - run: nix build .#x86_64-unknown-linux-gnu
      - run: ./result/bin/surreal help