name: CI on: push: branches: [main] pull_request: workflow_dispatch: jobs: build: name: Build (${{ matrix.system }}) strategy: fail-fast: false matrix: include: - os: ubuntu-latest system: x86_64-linux - os: macos-latest system: aarch64-darwin - os: macos-13 system: x86_64-darwin - os: ubuntu-latest system: aarch64-linux runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup QEMU if: matrix.system == 'aarch64-linux' run: | sudo apt update sudo apt install -y qemu-user-static - name: Install Nix if: matrix.system != 'aarch64-linux' uses: DeterminateSystems/nix-installer-action@v14 - name: Install Nix (with aarch64) if: matrix.system == 'aarch64-linux' uses: DeterminateSystems/nix-installer-action@v14 with: extra-conf: "extra-platforms = aarch64-linux arm-linux" - name: Setup Cachix uses: cachix/cachix-action@v15 with: name: getchoo authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} - name: Run build run: | nix run \ github:Mic92/nix-fast-build -- \ --no-nom \ --skip-cached \ --systems '${{ matrix.system }}' \ --option accept-flake-config true \ --option allow-import-from-derivation false \ --flake '.#packages' build-gate: name: Build gate if: ${{ always() }} needs: build runs-on: ubuntu-latest steps: - name: Exit with error if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') run: exit 1 check: name: Check flake runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v14 - name: Run check run: | nix flake check \ --all-systems \ --print-build-logs \ --show-trace \ --accept-flake-config