Installs Nix on Gitea Actions
Go to file
zimbatm 2e278dead1
fix shellcheck warnings
It's unlikely that those env vars will contain whitespaces, but it's
good to keep the script clean.
2020-12-22 20:11:31 +01:00
__tests__ Initial commit 2019-10-02 11:52:32 +02:00
.github Fix flakes example and add a test 2020-12-22 11:45:56 +01:00
lib fix shellcheck warnings 2020-12-22 20:11:31 +01:00
src Prepare for Nix 2.3.5 2020-05-26 18:08:30 +02:00
.gitignore Initial commit 2019-10-02 11:52:32 +02:00
action.yml Support self-hosted runners and always skip adding a channel 2020-09-21 14:16:30 +02:00
jest.config.js Initial commit 2019-10-02 11:52:32 +02:00
LICENSE Initial commit 2019-10-02 11:52:32 +02:00
package.json Bump @actions/core from 1.1.1 to 1.2.6 2020-10-01 17:21:05 +00:00
README.md Merge pull request #57 from cachix/flakes-fix 2020-12-22 10:53:55 +00:00
shell.nix add shell.nix for easier development 2019-11-07 10:19:07 +01:00
test.nix add failing test 2020-08-25 18:17:09 +02:00
tsconfig.json Initial commit 2019-10-02 11:52:32 +02:00
yarn.lock Bump ini from 1.3.5 to 1.3.8 2020-12-11 22:00:42 +00:00

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 (see also pinning tutorial).

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
  • Share /nix/store between builds using cachix-action for simple binary cache setup to speed up your builds and share binaries with your team

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.3.4
    - uses: cachix/install-nix-action@v12
      with:
        nix_path: nixpkgs=channel:nixos-unstable
    - run: nix-build

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@v12
      with:
        install_url: https://github.com/numtide/nix-flakes-installer/releases/download/nix-3.0pre20201007_5257a25/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 or pinning Nix for example https://releases.nixos.org/nix/nix-2.3.7/install)

  • 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 I have configured?

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

How can I run NixOS tests?

With the following inputs:

    - uses: cachix/install-nix-action@vXX
      with:
        extra_nix_config: "system-features = nixos-test benchmark big-parallel kvm"

Note that there's no hardware acceleration on GitHub Actions.

How can I install packages via nix-env from the specified nix_path?

nix-env -i mypackage -f '<nixpkgs>'

Hacking

Install the dependencies

$ yarn install

Build the typescript

$ yarn build

Run the tests ✔️

$ yarn test