summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihai Fufezan <mihai@fufexan.net>2025-06-20 00:50:46 +0300
committerMihai Fufezan <mihai@fufexan.net>2025-06-20 01:37:59 +0300
commitff2f85641a6568c550e50a76b5fb81fa1a3ee51d (patch)
treee81d1309c183f19f9edcd51738ac1ca1d714aacb
parentb49d0ca20e4378db1e9abeb661d72f4c8c070db9 (diff)
CI/Nix: add cache-nix-action
Use nixbuild/nix-quick-install-action which pairs well with nix-community/cache-nix-action. Should help with build times by reducing the number of packages needing to be re-downloaded on each run. Parameters are taken from https://github.com/nix-community/cache-nix-action and may be tweaked later.
-rw-r--r--.github/workflows/nix-build.yml30
-rw-r--r--.github/workflows/nix-update-inputs.yml31
2 files changed, 59 insertions, 2 deletions
diff --git a/.github/workflows/nix-build.yml b/.github/workflows/nix-build.yml
index 5b2e81cf..55ac485e 100644
--- a/.github/workflows/nix-build.yml
+++ b/.github/workflows/nix-build.yml
@@ -18,7 +18,35 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: DeterminateSystems/nix-installer-action@main
+ - name: Install Nix
+ uses: nixbuild/nix-quick-install-action@v31
+ with:
+ nix_conf: |
+ keep-env-derivations = true
+ keep-outputs = true
+
+ - name: Restore and save Nix store
+ uses: nix-community/cache-nix-action@v6
+ with:
+ # restore and save a cache using this key
+ primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }}
+ # if there's no cache hit, restore a cache by this prefix
+ restore-prefixes-first-match: nix-${{ runner.os }}-
+ # collect garbage until the Nix store size (in bytes) is at most this number
+ # before trying to save a new cache
+ # 1G = 1073741824
+ gc-max-store-size-linux: 1G
+ # do purge caches
+ purge: true
+ # purge all versions of the cache
+ purge-prefixes: nix-${{ runner.os }}-
+ # created more than this number of seconds ago
+ purge-created: 0
+ # or, last accessed more than this number of seconds ago
+ # relative to the start of the `Post Restore and save Nix store` phase
+ purge-last-accessed: 0
+ # except any version with the key that is the same as the `primary-key`
+ purge-primary-key: never
- uses: cachix/cachix-action@v15
with:
diff --git a/.github/workflows/nix-update-inputs.yml b/.github/workflows/nix-update-inputs.yml
index c9a094a2..c83e9880 100644
--- a/.github/workflows/nix-update-inputs.yml
+++ b/.github/workflows/nix-update-inputs.yml
@@ -17,7 +17,36 @@ jobs:
with:
token: ${{ secrets.PAT }}
- - uses: DeterminateSystems/nix-installer-action@main
+ - name: Install Nix
+ uses: nixbuild/nix-quick-install-action@v31
+ with:
+ nix_conf: |
+ keep-env-derivations = true
+ keep-outputs = true
+
+ - name: Restore and save Nix store
+ uses: nix-community/cache-nix-action@v6
+ with:
+ # restore and save a cache using this key
+ primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }}
+ # if there's no cache hit, restore a cache by this prefix
+ restore-prefixes-first-match: nix-${{ runner.os }}-
+ # collect garbage until the Nix store size (in bytes) is at most this number
+ # before trying to save a new cache
+ # 1G = 1073741824
+ gc-max-store-size-linux: 1G
+ # do purge caches
+ purge: true
+ # purge all versions of the cache
+ purge-prefixes: nix-${{ runner.os }}-
+ # created more than this number of seconds ago
+ purge-created: 0
+ # or, last accessed more than this number of seconds ago
+ # relative to the start of the `Post Restore and save Nix store` phase
+ purge-last-accessed: 0
+ # except any version with the key that is the same as the `primary-key`
+ purge-primary-key: never
+
- name: Update inputs
run: nix/update-inputs.sh