feat: Add nix-setup composite action

Reusable action for Nix CI with caching:
- DeterminateSystems/nix-installer-action for Nix installation
- actions/cache@v4 for Nix store caching
- Cache key based on flake.lock for per-repo isolation
This commit is contained in:
2026-01-13 15:50:23 -08:00
parent edd0261110
commit 55a7a69d64
2 changed files with 64 additions and 1 deletions

View File

@@ -1,3 +1,41 @@
# gitea-actions
Reusable Gitea Actions for CI workflows
Reusable Gitea Actions for CI workflows.
## Actions
### nix-setup
Installs Nix and sets up Nix store caching for Gitea Actions workflows.
**Features:**
- Uses DeterminateSystems/nix-installer-action for reliable Nix installation
- Caches `/nix/store`, `/nix/var/nix`, and `~/.cache/nix`
- Cache key based on `flake.lock` hash for automatic invalidation
- Each repo gets isolated cache (different flake.lock = different cache)
**Usage:**
```yaml
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: johno/gitea-actions/nix-setup@main
- run: nix flake check
```
**With custom cache prefix:**
```yaml
- uses: johno/gitea-actions/nix-setup@main
with:
cache-name: 'my-project-'
```
**Inputs:**
| Input | Description | Required | Default |
|-------|-------------|----------|---------|
| `cache-name` | Optional cache name prefix for disambiguation | No | `''` |

25
nix-setup/action.yml Normal file
View File

@@ -0,0 +1,25 @@
name: 'Nix Setup with Cache'
description: 'Install Nix and set up store caching'
inputs:
cache-name:
description: 'Optional cache name prefix for disambiguation'
required: false
default: ''
runs:
using: 'composite'
steps:
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Cache Nix store
uses: actions/cache@v4
with:
path: |
/nix/store
/nix/var/nix
~/.cache/nix
key: nix-${{ inputs.cache-name }}${{ runner.os }}-${{ hashFiles('flake.lock') }}
restore-keys: |
nix-${{ inputs.cache-name }}${{ runner.os }}-