cd46bde16a
* Test nix-installer-action on Namespace.so It is special in that it doesn't have systemd, and it'd be great to support Namespace.so. It is also a good test case for a variety of self-hosted GHA runner use cases. * Make correlation more confident * Borrow docker as a process supervisor on Linux GHA runners without systemd This change introduces a Docker container shim which spawns the Nix daemon after bind mounting all the relevant paths into the container. The image is actually completely empty, other than metadata about what to run. This is a cheap and cheerful way to get decent process supervision in environments that don't bring systemd, but do have docker ... which is most everywhere in the GHA ecosystem. * Ignore generated files * Run on arm64 why not * Load a pre-built image, don't build * Check the userInfo.username instead of an env var * Stop double-printing output to the console * can't rm and restart * what * Clean up the container at the end * Emit the fetch line in the 'installing nix' section * tweak output * delete what
121 lines
5.4 KiB
YAML
121 lines
5.4 KiB
YAML
name: The Determinate Nix Installer
|
|
branding:
|
|
icon: "box"
|
|
color: "purple"
|
|
description: "Install Nix with the Determinate Nix Installer. See: https://github.com/DeterminateSystems/nix-installer"
|
|
inputs:
|
|
backtrace:
|
|
description: The setting for `RUST_BACKTRACE` (see https://doc.rust-lang.org/std/backtrace/index.html#environment-variables)
|
|
required: false
|
|
extra-args:
|
|
description: Extra args to pass to the planner (prefer using structured `with:` arguments unless using a custom planner!)
|
|
required: false
|
|
extra-conf:
|
|
description: Extra configuration lines for `/etc/nix/nix.conf` (includes `access-tokens` with `secrets.GITHUB_TOKEN` automatically if `github-token` is set)
|
|
required: false
|
|
flakehub:
|
|
description: Automatically log in to your [FlakeHub](https://flakehub.com) account, for accessing private flakes.
|
|
required: false
|
|
default: false
|
|
force-docker-shim:
|
|
description: Force the use of Docker as a process supervisor. This setting is automatically enabled when necessary.
|
|
default: false
|
|
github-token:
|
|
description: A GitHub token for making authenticated requests (which have a higher rate-limit quota than unauthenticated requests)
|
|
default: ${{ github.token }}
|
|
github-server-url:
|
|
description: The URL for the GitHub server, to use with the `github-token` token. Defaults to the current GitHub server, supporting GitHub Enterprise Server automatically. Only change this value if the provided `github-token` is for a different GitHub server than the current server.
|
|
default: ${{ github.server_url }}
|
|
init:
|
|
description: "The init system to configure, requires `planner: linux-multi` (allowing the choice between `none` or `systemd`)"
|
|
required: false
|
|
kvm:
|
|
description: Automatically configure the GitHub Actions Runner for NixOS test supports, if the host supports it.
|
|
required: false
|
|
default: true
|
|
local-root:
|
|
description: A local `nix-installer` binary root, overrides any settings which change the `nix-installer` used (binaries should be named `nix-installer-$ARCH-$OS`, eg. `nix-installer-x86_64-linux`)
|
|
required: false
|
|
log-directives:
|
|
description: A list of Tracing directives, comma separated, `-`s replaced with `_` (eg. `nix_installer=trace`, see https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)
|
|
required: false
|
|
logger:
|
|
description: The logger to use for install (eg. `pretty`, `json`, `full`, `compact`)
|
|
required: false
|
|
ssl-cert-file:
|
|
description: "An SSL cert to use (if any), used for fetching Nix and sets `NIX_SSL_CERT_FILE` for Nix"
|
|
required: false
|
|
proxy:
|
|
description: "The proxy to use (if any), valid proxy bases are `https://$URL`, `http://$URL` and `socks5://$URL`"
|
|
required: false
|
|
mac-case-sensitive:
|
|
description: "Use a case sensitive volume (`planner: macos` only)"
|
|
required: false
|
|
mac-encrypt:
|
|
description: "Force encryption on the volume (`planner: macos` only)"
|
|
required: false
|
|
mac-root-disk:
|
|
description: "The root disk of the target (`planner: macos` only)"
|
|
required: false
|
|
mac-volume-label:
|
|
description: "The label for the created APFS volume (`planner: macos` only)"
|
|
required: false
|
|
modify-profile:
|
|
description: Modify the user profile to automatically load nix
|
|
required: false
|
|
default: true
|
|
nix-build-group-id:
|
|
description: The Nix build group GID
|
|
required: false
|
|
nix-build-group-name:
|
|
description: The Nix build group name
|
|
required: false
|
|
nix-build-user-base:
|
|
description: The Nix build user base UID (ascending)
|
|
required: false
|
|
nix-build-user-count:
|
|
description: Number of build users to create
|
|
required: false
|
|
nix-build-user-prefix:
|
|
description: The Nix build user prefix (user numbers will be postfixed)
|
|
required: false
|
|
nix-installer-branch:
|
|
description: The branch of `nix-installer` to use (conflicts with `nix-installer-tag`, `nix-installer-revision`, `nix-installer-pr`)
|
|
required: false
|
|
nix-installer-pr:
|
|
description: The PR of `nix-installer` to use (conflicts with `nix-installer-tag`, `nix-installer-revision`, `nix-installer-branch`)
|
|
required: false
|
|
nix-installer-revision:
|
|
description: The revision of `nix-installer` to use (conflicts with `nix-installer-tag`, `nix-installer-branch`, `nix-installer-pr`)
|
|
required: false
|
|
nix-installer-tag:
|
|
description: The tag of `nix-installer` to use (conflicts with `nix-installer-revision`, `nix-installer-branch`, `nix-installer-pr`)
|
|
required: false
|
|
nix-installer-url:
|
|
description: A URL pointing to a `nix-installer.sh` script
|
|
required: false
|
|
nix-package-url:
|
|
description: The Nix package URL
|
|
required: false
|
|
planner:
|
|
description: A planner to use
|
|
required: false
|
|
reinstall:
|
|
description: Force a reinstall if an existing installation is detected (consider backing up `/nix/store`)
|
|
required: false
|
|
default: false
|
|
start-daemon:
|
|
description: "If the daemon should be started, requires `planner: linux`"
|
|
required: false
|
|
default: true
|
|
diagnostic-endpoint:
|
|
description: "Diagnostic endpoint url where the installer sends data to. To disable set this to an empty string."
|
|
default: "https://install.determinate.systems/nix/diagnostic"
|
|
trust-runner-user:
|
|
description: Whether to make the runner user trusted by the Nix daemon
|
|
default: "true"
|
|
|
|
runs:
|
|
using: "node20"
|
|
main: 'dist/index.js'
|
|
post: 'dist/index.js' |