install-nix-action 6大输入参数完全解析:Nix CI配置清单,一篇就够

install-nix-action 6大输入参数完全解析:Nix CI配置清单,一篇就够

【免费下载链接】install-nix-action Installs Nix on GitHub Actions for the supported platforms: Linux and macOS. 【免费下载链接】install-nix-action 项目地址: https://gitcode.com/gh_mirrors/in/install-nix-action

install-nix-action 是一个用于 CI 流水线的 GitHub Actions,一条命令即可在 Linux 和 macOS 上安装 Nix。本文带你逐个解析它的 6 大输入参数,帮你一次性搞定 Nix CI 配置,无需反复踩坑 🚀

为什么选 install-nix-action 做 Nix CI

在解析参数之前,先了解它的核心优势(来源:README):

  • 安装极快:Linux 上约 4 秒,macOS 上约 20 秒
  • 🛡️ 多用户安装:Linux 上默认启用沙箱(sandboxing)
  • 🖥️ 支持自托管 Runner:self-hosted GitHub runner 也能跑
  • 📦 配合 cachix-action:可共享 /nix/store 二进制缓存,构建更快、团队共享
  • 🐧 KVM 硬件加速:默认启用,方便运行 NixOS 测试和虚拟机

整个 Action 由三部分构成:

文件作用
action.yml声明 6 个输入参数,并以 composite 方式执行安装脚本
install-nix.sh核心安装逻辑:写 nix.conf、下载并执行官方安装脚本
test.nix项目自测用:批量生成派生项,验证构建性能

6 大输入参数配置清单一览

所有参数都在工作流中通过 with: 传入,均非必填

参数作用默认行为
extra_nix_config追加内容到 /etc/nix/nix.conf不追加
github_access_token用指定 token 从 GitHub 拉取,规避限流自动使用默认 GITHUB_TOKEN
install_url指定 Nix 安装脚本 URL(固定版本)官方最新发布版(2.25.2)
install_options传给安装脚本的额外参数
nix_path设置 NIX_PATH 环境变量不设置(需自行指定 nixpkgs)
enable_kvm在 Linux 上启用 KVM 硬件加速true(可用时自动开启)

参数一:extra_nix_config —— 追加 nix.conf 配置

对应 action.yml 中的 inputs.extra_nix_config,内容会被追加到 /etc/nix/nix.conf,是自定义 Nix 行为最灵活的参数。

典型用途:

  • 添加二进制缓存(substituters + trusted-public-keys
  • 声明 system-features,让 Runner 可以跑 NixOS 测试
- uses: cachix/install-nix-action@v27
  with:
    extra_nix_config: |
      system-features = nixos-test benchmark big-parallel kvm

📌 两个内置的 CI 优化(install-nix.sh 中实现):若你没有在 extra_nix_config 里显式覆盖,Action 会自动补上 experimental-features = nix-command flakesalways-allow-substitutes = true——也就是说 Flakes 开箱即用,且已缓存的派生项可直接替换、无需重新构建。

参数二:github_access_token —— 规避 GitHub 限流

Flakes 构建时需要从 GitHub 拉取仓库,匿名访问限流严格。传入 token 即可提速并避免 403 错误:

- uses: cachix/install-nix-action@v27
  with:
    github_access_token: ${{ secrets.GITHUB_TOKEN }}

工作机制(见 install-nix.sh):

  1. 若提供了 github_access_token,写入 access-tokens = github.com=<token>
  2. 否则在 GitHub.com 上自动回退到默认的 GITHUB_TOKEN(Enterprise 实例上不生效)
  3. 注意:如果你已在 extra_nix_config 里手动写了 access-tokens,则此参数不生效

参数三:install_url —— 固定 Nix 版本

默认安装的是官方最新发布版的安装脚本。为了构建可复现,建议固定版本:

- uses: cachix/install-nix-action@v27
  with:
    install_url: https://releases.nixos.org/nix/nix-2.3.7/install
  • 最低支持版本为 2.3.5
  • 也适合测试非稳定版(beta/rc)发布
  • 下载失败时 install-nix.sh 会自动重试最多 5 次,提升稳定性

参数四:install_options —— 额外安装脚本参数

把额外的命令行参数传给 Nix 官方安装脚本,空格分隔:

- uses: cachix/install-nix-action@v27
  with:
    install_options: --no-daemon

💡 背景知识:在 macOS 或带 systemd 的 Linux 上,Action 默认加 --daemon 参数走多用户守护进程模式,且构建用户数设为 2 倍 CPU 核心数;--no-daemon 则切换为单用户模式。你的 install_options 会被拼在安装参数最前面,优先级最高。

参数五:nix_path —— 设置 NIX_PATH 环境变量

⚠️ 最容易漏掉的一项:install-nix-action 默认不配置任何 nixpkgs,你需要告诉 Nix 从哪里取包。

两种方式:

# 方式 1:使用官方 channel(如 nixos-unstable)
- uses: cachix/install-nix-action@v27
  with:
    nix_path: nixpkgs=channel:nixos-unstable

# 方式 2(推荐):Flakes 模式,直接锁定仓库 commit,无需 nix_path
- uses: cachix/install-nix-action@v27
  with:
    github_access_token: ${{ secrets.GITHUB_TOKEN }}
- run: nix build
- run: nix flake check

该值会被写入 GITHUB_ENV,后续所有步骤都生效。验证 nixpkgs 版本可以跑:

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

参数六:enable_kvm —— KVM 硬件加速(默认开启)

enable_kvm 默认值为 true。在 Linux Runner 上,install-nix.sh 会写入一条 udev 规则,把 /dev/kvm 权限设为 0666,让 VM 和 NixOS 测试获得完整硬件加速;如果 Runner 不支持 KVM,则自动跳过并输出提示,不会导致失败。

需要关闭时(例如在云厂商不允许嵌套虚拟化的 Runner 上):

- uses: cachix/install-nix-action@v27
  with:
    enable_kvm: false

最小完整工作流示例

把上面串起来,一个开箱即用的 Nix CI 配置:

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

常见问题速查

  • 如何添加二进制缓存?extra_nix_config 写入 substituterstrusted-public-keys;如果用 Cachix 生态,则通过 cachix-actionextraPullNames 完成
  • nix develop 里拿不到环境变量? Nix 默认运行在 pure mode,用 --keep VAR 保留指定变量,或 --impure 彻底关闭纯净模式
  • 临时目录报问题? Action 已自动把 TMPDIR 指向 $RUNNER_TEMP,无需额外处理

总结

你的场景该用的参数
Flakes 拉 GitHub 限流github_access_token
固定 Nix 版本保证可复现install_url
找不到 nixpkgs / 指定渠道nix_path
加二进制缓存、system-featuresextra_nix_config
切换单用户安装模式install_options
跑 NixOS 测试要硬件加速enable_kvm(保持默认即可)

掌握这 6 个输入参数,你的 Nix CI 配置就完整了。源码层面想深入,直接读 action.yml 的参数声明和 install-nix.sh 的配置写入逻辑即可 🎯

【免费下载链接】install-nix-action Installs Nix on GitHub Actions for the supported platforms: Linux and macOS. 【免费下载链接】install-nix-action 项目地址: https://gitcode.com/gh_mirrors/in/install-nix-action

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值