forked from Gerschtli/nix-config
-
Notifications
You must be signed in to change notification settings - Fork 1
145 lines (130 loc) · 4.55 KB
/
ci_shells.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
name: Build and test flake devshells (using gh caches)
on:
push:
workflow_dispatch:
workflow_call:
inputs:
branch:
description: Branch name to build on
default: ""
required: false
type: string
secrets:
CACHIX_ACTIVATE_TOKEN:
CACHIX_AUTH_TOKEN:
required: true
jobs:
nix:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
system:
- aarch64
- x86_64
shell:
- jdk21
- jvmlanguages-devenv --impure
- deno
- flutter
- ocaml
- ruby
- rubyNix
- rubyShell
- rust
- rustwasm32
- haskell
- yaocaml
- rustyShell
- python
- agda
- commonlisp
- playwright
- playwright2
- ghcwasm
- haskell2
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ inputs.branch }}
- name: Free Disk Space (Ubuntu)
if: contains(matrix.shell, 'ruby')
env:
_system: ${{ matrix.system }}-linux
uses: jlumbroso/free-disk-space@main
continue-on-error: true
with:
tool-cache: true
- name: Set Swap Space
uses: actionhippie/swap-space@master
with:
size: 20G
- name: Install qemu-user-static (aarch64)
if: matrix.system == 'aarch64'
env:
_system: ${{ matrix.system }}-linux
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
sudo apt-get update --allow-releaseinfo-change
sudo apt-get update
sudo apt-get install -y qemu-user-static
- name: Quick install
env:
_system: ${{ matrix.system }}-linux
uses: cachix/install-nix-action@v29
with:
install_url: 'https://releases.nixos.org/nix/nix-2.24.8/install'
extra_nix_config: |
substituters = https://cache.nixos.org/ https://nix-community.cachix.org
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
keep-going = true
show-trace = true
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
keep-outputs = true
${{ matrix.system == 'aarch64' && 'system = aarch64-linux # enables binfmt on that machine, see https://nixos.wiki/wiki/NixOS_on_ARM#Compiling_through_binfmt_QEMU' || '' }}
- name: Restore and cache Nix store
env:
_system: ${{ matrix.system }}-linux
uses: nix-community/cache-nix-action@v5
with:
# save a new cache every time ci file changes
primary-key: cache-${{ matrix.os }}-${{ hashFiles('.github/workflows/ci.yaml') }}
restore-prefixes-first-match: cache-${{ matrix.os }}-
# do purge caches
purge: true
# purge all versions of the cache
purge-prefixes: cache-${{ matrix.os }}-
# created more than 0 seconds ago relative to the start of the `Post Restore` phase
purge-created: 0
# except the version with the `primary-key`, if it exists
purge-primary-key: never
# and collect garbage in the Nix store until it reaches this size in bytes
gc-max-store-size: 8000000000
- name: Setup cachix
env:
_system: ${{ matrix.system }}-linux
uses: cachix/cachix-action@v15
with:
name: 573-bc
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Eval
env:
_system: ${{ matrix.system }}-linux
run: |
echo "::group::Eval command"
cachix use 573-bc
cachix use nix-on-droid
${{ (matrix.system == 'aarch64') && 'cachix watch-exec 573-bc -- \' || '' }}
nix eval .#devShells.$_system.${{ matrix.shell }} ${{ matrix.impure && '--impure' || '' }}
- name: Deploy cachix-agent spec
if: github.ref == 'refs/heads/wsl2' && matrix.deploy-agent
env:
CACHIX_ACTIVATE_TOKEN: ${{ secrets.CACHIX_ACTIVATE_TOKEN }}
TEST: ${{ matrix.system == 'aarch64' && '--impure' || '' }}
run: |
echo "::group::Build spec"
spec="$(nix build --print-out-paths ".#cachix-deploy-spec-${{ matrix.deploy-agent }}" ${{ (matrix.system == 'aarch64' || contains(matrix.nix-command, 'develop')) && '--impure' || '' }})"
echo "::group::Upload spec"
cachix push 573-bc "$spec"
# vim: set sw=2: