name: Nix CI on: workflow_dispatch: # allows manual triggering push: branches: - master paths: ['.github/workflows/**', '**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.swift', '**/*.m', '**/*.sh', '**/*.py', '**/*.nix'] pull_request: types: [opened, synchronize, reopened] paths: ['**/CMakeLists.txt', '**/Makefile', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.swift', '**/*.m', '**/*.sh', '**/*.py', '**/*.nix'] 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://${{ vars.CACHIX_NAME }}.cachix.org https://cuda-maintainers.cachix.org extra-trusted-public-keys = ${{ vars.CACHIX_PUBLIC_KEY }} 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: if: ${{ vars.CACHIX_NAME != '' }} 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://${{ vars.CACHIX_NAME }}.cachix.org https://cuda-maintainers.cachix.org extra-trusted-public-keys = ${{ vars.CACHIX_PUBLIC_KEY }} 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: ${{ vars.CACHIX_NAME }} - name: Build run: > nix run github:Mic92/nix-fast-build -- --skip-cached --no-nom --flake ".#checks.$(nix eval --raw --impure --expr builtins.currentSystem)" nix-build-aarch64: if: ${{ vars.CACHIX_NAME != '' }} 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 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://${{ vars.CACHIX_NAME }}.cachix.org https://cuda-maintainers.cachix.org extra-trusted-public-keys = ${{ vars.CACHIX_PUBLIC_KEY }} 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: ${{ vars.CACHIX_NAME }} - 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"