Skip to content
This repository was archived by the owner on Jul 17, 2026. It is now read-only.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

nix-installer

Install Nix - works on GitHub-hosted runners, self-hosted runners, and inside containers.

With FlakeCache binary cache enabled by default for faster builds!

Features

  • Smart detection - Skips install if Nix already present (container mode)
  • Flakes enabled - nix-command and flakes enabled 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

Usage

Basic (with FlakeCache)

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: FlakeCache/nix-installer@v1
      - run: nix build

With Container (Fastest on self-hosted)

jobs:
  build:
    runs-on: self-hosted
    container: nixos/nix:latest
    steps:
      - uses: actions/checkout@v4
      - uses: FlakeCache/nix-installer@v1
      - run: nix build

Disable FlakeCache

- uses: FlakeCache/nix-installer@v1
  with:
    flakecache: 'false'

Add Extra Binary Caches

- uses: FlakeCache/nix-installer@v1
  with:
    extra-substituters: 'https://nix-community.cachix.org'
    extra-trusted-keys: 'nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs='

Universal Matrix (Same workflow for all runner types)

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

Inputs

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 ''

Outputs

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)

Binary Caches

By default, this action configures:

Cache URL Priority
FlakeCache https://c.flakecache.com 1st (fastest)
NixOS https://cache.nixos.org 2nd (fallback)

Push to Cache (with CLI)

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 }}

How It Works

  1. Detects if Nix is already installed (e.g., in nixos/nix container)
  2. Skips installation if already present
  3. Installs Nix if not found (using official installer)
  4. Configures flakes, FlakeCache, and experimental features
  5. Adds any extra caches/configuration you provide

License

MIT

About

Install Nix - works on GitHub-hosted, self-hosted, and inside containers

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors