name: Nix aarch64 builds on: workflow_dispatch: # allows manual triggering schedule: # Rebuild daily rather than on every push because QEMU is expensive (e.g. # 1.5h instead of minutes with the cold cache). # # randint(0, 59), randint(0, 23) - cron: '26 12 * * *' # But also rebuild if we touched any of the Nix expressions: push: branches: - master paths: ['**/*.nix', 'flake.lock'] pull_request: types: [opened, synchronize, reopened] paths: ['**/*.nix', 'flake.lock'] concurrency: group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} cancel-in-progress: true # Fine-grant permission # https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token permissions: # https://github.com/DeterminateSystems/nix-installer-action?tab=readme-ov-file#with-flakehub id-token: write contents: read jobs: nix-build-aarch64: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install QEMU # Copy-paste from https://github.com/orgs/community/discussions/8305#discussioncomment-5888654 run: | sudo apt-get update sudo apt-get install -y qemu-user-static qemu-system-aarch64 sudo usermod -a -G kvm $USER - name: Install Nix uses: DeterminateSystems/nix-installer-action@v9 with: github-token: ${{ secrets.GITHUB_TOKEN }} extra-conf: | extra-platforms = aarch64-linux extra-system-features = nixos-test kvm extra-substituters = https://llama-cpp.cachix.org https://cuda-maintainers.cachix.org extra-trusted-public-keys = llama-cpp.cachix.org-1:H75X+w83wUKTIPSO1KWy9ADUrzThyGs8P5tmAbkWhQc= cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E= - uses: DeterminateSystems/magic-nix-cache-action@v2 with: upstream-cache: https://${{ matrix.cachixName }}.cachix.org - name: Set-up cachix to push the results to uses: cachix/cachix-action@v13 with: authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' name: llama-cpp - name: Show all output paths run: > nix run github:nix-community/nix-eval-jobs -- --gc-roots-dir gcroot --flake ".#packages.aarch64-linux" - name: Build run: > nix run github:Mic92/nix-fast-build -- --skip-cached --no-nom --systems aarch64-linux --flake ".#checks.aarch64-linux"