+++ /dev/null
-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"
+++ /dev/null
-name: Nix CI
-
-on:
- workflow_dispatch: # allows manual triggering
- push:
- branches:
- - master
- paths: ['.github/workflows/nix-ci.yml', '**/flake.nix', '**/flake.lock', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal']
- pull_request:
- types: [opened, synchronize, reopened]
- paths: ['.github/workflows/nix-ci.yml', '**/flake.nix', '**/flake.lock', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal']
-
-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-eval:
- strategy:
- fail-fast: false
- matrix:
- os: [ ubuntu-latest, macos-latest ]
- runs-on: ${{ matrix.os }}
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@v9
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- extra-conf: |
- 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: List all flake outputs
- run: nix flake show --all-systems
- - name: Show all output paths
- run: >
- nix run github:nix-community/nix-eval-jobs
- -- --gc-roots-dir gcroot
- --flake
- ".#packages.$(nix eval --raw --impure --expr builtins.currentSystem)"
- nix-build:
- strategy:
- fail-fast: false
- matrix:
- os: [ ubuntu-latest, macos-latest ]
- runs-on: ${{ matrix.os }}
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@v9
- with:
- github-token: ${{ secrets.GITHUB_TOKEN }}
- extra-conf: |
- 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: Build
- run: >
- nix run github:Mic92/nix-fast-build
- -- --skip-cached --no-nom
- --flake
- ".#checks.$(nix eval --raw --impure --expr builtins.currentSystem)"
+++ /dev/null
-name: update-flake-lock
-on:
- workflow_dispatch:
- schedule:
- - cron: '0 0 * * 0' # runs weekly on Sunday at 00:00
-
-jobs:
- lockfile:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4
- - name: Install Nix
- uses: DeterminateSystems/nix-installer-action@main
- - name: Update flake.lock
- uses: DeterminateSystems/update-flake-lock@main
- with:
- pr-title: "nix: update flake.lock"
- pr-labels: |
- nix
- pr-reviewers: philiptaron,SomeoneSerge
- token: ${{ secrets.FLAKE_TOKEN }}
+++ /dev/null
-# Make the flake discoverable on https://flakestry.dev and https://flakehub.com/flakes
-name: "Publish a flake to flakestry & flakehub"
-on:
- push:
- tags:
- - "*"
- workflow_dispatch:
- inputs:
- tag:
- description: "The existing tag to publish"
- type: "string"
- required: true
-jobs:
- flakestry-publish:
- runs-on: ubuntu-latest
- permissions:
- id-token: "write"
- contents: "read"
- steps:
- - uses: flakestry/flakestry-publish@main
- with:
- version: "${{ inputs.tag || github.ref_name }}"
- flakehub-publish:
- runs-on: "ubuntu-latest"
- permissions:
- id-token: "write"
- contents: "read"
- steps:
- - uses: "actions/checkout@v4"
- with:
- ref: "${{ (inputs.tag != null) && format('refs/tags/{0}', inputs.tag) || '' }}"
- - uses: "DeterminateSystems/nix-installer-action@main"
- - uses: "DeterminateSystems/flakehub-push@main"
- with:
- visibility: "public"
- tag: "${{ inputs.tag }}"