Install Nix - works on GitHub-hosted runners, self-hosted runners, and inside containers.
With FlakeCache binary cache enabled by default for faster builds!
- ✅ Smart detection - Skips install if Nix already present (container mode)
- ✅ Flakes enabled -
nix-commandandflakesenabled by default - ✅ Universal - Works on ubuntu-latest, self-hosted, and nixos/nix containers
- ✅ Fast - No install needed when using containers
- 🚀 FlakeCache - Binary cache enabled by default for faster builds
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: FlakeCache/nix-installer@v1
- run: nix buildjobs:
build:
runs-on: self-hosted
container: nixos/nix:latest
steps:
- uses: actions/checkout@v4
- uses: FlakeCache/nix-installer@v1
- run: nix build- uses: FlakeCache/nix-installer@v1
with:
flakecache: 'false'- uses: FlakeCache/nix-installer@v1
with:
extra-substituters: 'https://nix-community.cachix.org'
extra-trusted-keys: 'nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs='jobs:
build:
strategy:
matrix:
include:
- runner: self-hosted
container: nixos/nix:latest
- runner: ubuntu-latest
container: nixos/nix:latest
- runner: ubuntu-latest
container: ''
runs-on: ${{ matrix.runner }}
container: ${{ matrix.container || null }}
steps:
- uses: actions/checkout@v4
- uses: FlakeCache/nix-installer@v1
- run: nix build| Input | Description | Default |
|---|---|---|
flakecache |
Enable FlakeCache binary cache | true |
install-cli |
Install FlakeCache CLI for push/pull | false |
cli-version |
FlakeCache CLI version | latest |
extra-substituters |
Additional binary cache URLs (space-separated) | '' |
extra-trusted-keys |
Additional trusted public keys (space-separated) | '' |
extra-conf |
Extra lines to add to nix.conf | '' |
| Output | Description |
|---|---|
nix-path |
Path to the Nix binary |
already-installed |
true if Nix was already installed (container mode) |
cli-path |
Path to FlakeCache CLI (if installed) |
By default, this action configures:
| Cache | URL | Priority |
|---|---|---|
| FlakeCache | https://c.flakecache.com |
1st (fastest) |
| NixOS | https://cache.nixos.org |
2nd (fallback) |
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: FlakeCache/nix-installer@v1
with:
install-cli: 'true'
- run: nix build
- name: Push to FlakeCache
run: flakecache push ./result
env:
FLAKECACHE_TOKEN: ${{ secrets.FLAKECACHE_TOKEN }}- Detects if Nix is already installed (e.g., in
nixos/nixcontainer) - Skips installation if already present
- Installs Nix if not found (using official installer)
- Configures flakes, FlakeCache, and experimental features
- Adds any extra caches/configuration you provide
MIT