This repository has no description
1.8 kB
62 lines
1name: CI
2
3on:
4 push:
5 pull_request:
6
7# nix flake check evaluates every host in one process (~19 GB peak), more than
8# the 16 GB RAM of ubuntu-latest. One job per check keeps the peak at the
9# largest single host and shows failing hosts in the run overview.
10jobs:
11 list:
12 runs-on: ubuntu-latest
13 outputs:
14 checks: ${{ steps.list.outputs.checks }}
15 steps:
16 - uses: actions/checkout@v4
17 with:
18 # Fetch all history for git-based operations
19 fetch-depth: 0
20
21 - uses: cachix/install-nix-action@v31
22
23 - id: list
24 run: |
25 checks=$(nix eval --json .#checks.x86_64-linux --apply builtins.attrNames)
26 echo "checks=$checks" >> "$GITHUB_OUTPUT"
27
28 check:
29 needs: list
30 name: ${{ matrix.check }}
31 runs-on: ubuntu-latest
32 strategy:
33 fail-fast: false
34 matrix:
35 check: ${{ fromJSON(needs.list.outputs.checks) }}
36 steps:
37 - uses: actions/checkout@v4
38 with:
39 # Fetch all history for git-based operations
40 fetch-depth: 0
41
42 - uses: cachix/install-nix-action@v31
43
44 - run: nix build -L --no-link '.#checks.x86_64-linux.${{ matrix.check }}'
45
46 outputs:
47 name: packages and devShells
48 runs-on: ubuntu-latest
49 steps:
50 - uses: actions/checkout@v4
51 with:
52 # Fetch all history for git-based operations
53 fetch-depth: 0
54
55 - uses: cachix/install-nix-action@v31
56
57 - run: |
58 for output in packages devShells; do
59 echo "$output:"
60 # shellcheck disable=SC2016 # ${...} is Nix interpolation
61 nix eval --raw ".#$output.x86_64-linux" --apply 'xs: builtins.deepSeq (builtins.mapAttrs (_: x: x.drvPath) xs) "${toString (builtins.length (builtins.attrNames xs))} evaluated\n"'
62 done