Skip to content
You're viewing an older version of this GitHub Action. Do you want to see the latest version instead?
sun

GitHub Action

Install Nix

v11

Install Nix

sun

Install Nix

Installs Nix on GitHub Actions for the supported platforms: Linux and macOS

Installation

Copy and paste the following snippet into your .yml file.

              

- name: Install Nix

uses: cachix/install-nix-action@v11

Learn more about this action in cachix/install-nix-action

Choose a version

install-nix-action

github actions badge

Installs Nix on GitHub Actions for the supported platforms: Linux and macOS.

By default it has no nixpkgs configured, you have to set nix_path by picking a channel or pin nixpkgs yourself.

Features

  • Quick installation (~4s on Linux, ~20s on macOS)
  • Multi-User installation (with sandboxing enabled only on Linux)
  • Self-hosted github runner support
  • Allows specifying Nix installation URL via install_url
  • Allows specifying extra Nix configration options via extra_nix_config
  • Allows specifying $NIX_PATH and channels via nix_path

Usage

Create .github/workflows/test.yml in your repo with the following contents:

name: "Test"
on:
  pull_request:
  push:
jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: cachix/install-nix-action@v11
      with:
        nix_path: nixpkgs=channel:nixos-unstable
    - run: nix-build

See also cachix-action for simple binary cache setup to speed up your builds and share binaries with developers.

Usage with Flakes

name: "Test"
on:
  pull_request:
  push:
jobs:
  tests:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
          # Nix Flakes doesn't work on shallow clones
          fetch-depth: 0
    - uses: cachix/install-nix-action@v11
      with:
        install_url: https://github.com/numtide/nix-flakes-installer/releases/download/nix-3.0pre20200820_4d77513/install
        extra_nix_config: |
          experimental-features = nix-command flakes
    - run: nix-build

Inputs (specify using with:)

  • install_url: specify URL to install Nix from (useful for testing non-stable releases)

  • nix_path: set NIX_PATH environment variable, for example nixpkgs=channel:nixos-unstable

  • extra_nix_config: append to /etc/nix/nix.conf


FAQ

Is it possible to run NixOS tests / Qemu+KVM with GitHub Actions?

Currently GitHub Actions are not running on Azure instance types that support nested virtualization.

How do I print nixpkgs version with the channel I have configured?

nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version'

Hacking

Install the dependencies

$ yarn install

Build the typescript

$ yarn build

Run the tests ✔️

$ yarn test