参考文档

运行配置

nix-pins.toml、环境变量、路径和并发设置。

运行设置的优先级为:默认值 → 当前目录的可选 nix-pins.toml → NIX_PINS_* 环境变量 → CLI 参数。配置字段、CLI 参数和环境变量只在 Settings 中声明,Clap 读取 CLI 和环境变量,config-rs 合并 TOML 与 ArgMatches 中明确提供的值,Serde 在字段缺失时补齐默认值。Pin 声明仍放在 pins-config.nix。

config = "./pins-config.nix"
file = "./pins.json"
download_jobs = 2
checker_jobs = 4
hash_jobs = 4

字段

设置环境变量CLI 参数默认值或说明
configNIX_PINS_CONFIG--config PATH./pins-config.nix
fileNIX_PINS_FILE--pins PATH./pins.json
download_jobsNIX_PINS_DOWNLOAD_JOBS--download-jobs N2
checker_jobsNIX_PINS_CHECKER_JOBS--checker-jobs N可用逻辑 CPU 数除以 2,向下取整且至少为 1
hash_jobsNIX_PINS_HASH_JOBS--hash-jobs N同上
github_api_baseNIX_PINS_GITHUB_API_BASE--github-api-base URLGitHub 官方 API
crates_api_baseNIX_PINS_CRATES_API_BASE--crates-api-base URLcrates.io 官方 API
pypi_api_baseNIX_PINS_PYPI_API_BASE--pypi-api-base URLPyPI 官方 API
npm_registry_baseNIX_PINS_NPM_REGISTRY_BASE--npm-registry-base URLnpm 官方 registry
github_tokenNIX_PINS_GITHUB_TOKEN--github-token TOKEN可选 GitHub token

并发值必须为正整数。非法配置在启动 Nix 前报错;空环境变量视为未设置。GITHUB_TOKEN 也可提供 token,其优先级低于配置文件和 NIX_PINS_GITHUB_TOKEN。不要把 token 写入会提交到版本控制的配置文件。

CLI 参数可以放在子命令之前或之后。nix-pins update --help 展示全部配置选项、对应环境变量与默认值说明;token 的环境变量值不会出现在 help 中。

并发队列

全部版本检查完成后,各 Pin 独立处理来源和依赖。源码下载受 download_jobs 限制,Nix 求值和依赖构建共享 hash_jobs 限制。某个 Pin 源码齐备后即可进入构建队列;同一 Pin 的多 Source 也共享这些队列。

成功 Pin 立即显示 ✔,失败 Pin 保留旧结果;同一 Pin 只有全部 Source 成功才会更新。最终统一原子写入 Pins File,取消时不写入。由于下载与构建可以同时发生,运行阶段统一显示 Processing pins,具体步骤由每个节点展示。

提高并发会增加网络、Nix store 和 CPU 的同时使用量。遇到限流或本地资源紧张时先降低对应并发值。