Install Nix - works on GitHub-hosted runners, self-hosted runners, and inside containers.
- ✅ 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
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: singularity-ng/nix-installer@v1
- run: nix buildjobs:
build:
runs-on: self-hosted
container: nixos/nix:latest
steps:
- uses: actions/checkout@v4
- uses: singularity-ng/nix-installer@v1
- run: nix buildjobs:
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: singularity-ng/nix-installer@v1
- run: nix build- uses: singularity-ng/nix-installer@v1
with:
extra-conf: |
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=| Input | Description | Default |
|---|---|---|
extra-conf |
Extra lines to add to nix.conf | '' |
nix-version |
Nix version to install (ignored in containers) | latest |
| Output | Description |
|---|---|
nix-path |
Path to the Nix binary |
already-installed |
true if Nix was already installed (container mode) |
- 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 and experimental features
- Adds any extra configuration you provide
MIT