Installs Nix on Gitea Actions
Go to file
2021-08-25 11:55:50 +02:00
__tests__ Initial commit 2019-10-02 11:52:32 +02:00
.github Merge branch 'master' into flakes-github-token 2021-06-24 18:24:52 +02:00
lib Only use nix-daemon when systemd is supported 2021-08-25 11:55:50 +02: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 be able to pass installer options 2021-02-21 13:18:52 +00: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 branch 'master' into flakes-github-token 2021-06-24 18:24:52 +02: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 path-parse from 1.0.6 to 1.0.7 2021-08-11 12:59:59 +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@v13
      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.3.4
    - uses: cachix/install-nix-action@v13
      with:
        install_url: https://nixos-nix-install-tests.cachix.org/serve/i6laym9jw3wg9mw6ncyrk6gjx4l34vvx/install
        install_options: '--tarball-url-prefix https://nixos-nix-install-tests.cachix.org/serve'
        extra_nix_config: |
          experimental-features = nix-command flakes
          access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}          
    - run: nix build
    - run: nix flake check

To install Nix from any commit, go to the corresponding installer_test action and click on "Run cachix/install-nix-action@XX" step and expand the first line.

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

How do I print nixpkgs version I have configured?

- name: Print nixpkgs version
  run: 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>'

How do I add a binary cache?

If the binary cache you want to add is hosted on Cachix and you are using cachix-action, you should use their extraPullNames input like this:

- uses: cachix/cachix-action@vXX
   with:
     name: mycache
     authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
     extraPullNames: nix-community

Otherwise, you can add any binary cache to nix.conf using install-nix-action's own extra_nix_config input:

- uses: cachix/install-nix-action@vXX
  with:
    extra_nix_config: |
      trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
      substituters = https://hydra.iohk.io https://cache.nixos.org/      

Hacking

Install the dependencies

$ yarn install

Build the typescript

$ yarn build

Run the tests ✔️

$ yarn test