参考文档
运行配置
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 参数 | 默认值或说明 |
|---|---|---|---|
config | NIX_PINS_CONFIG | --config PATH | ./pins-config.nix |
file | NIX_PINS_FILE | --pins PATH | ./pins.json |
download_jobs | NIX_PINS_DOWNLOAD_JOBS | --download-jobs N | 2 |
checker_jobs | NIX_PINS_CHECKER_JOBS | --checker-jobs N | 可用逻辑 CPU 数除以 2,向下取整且至少为 1 |
hash_jobs | NIX_PINS_HASH_JOBS | --hash-jobs N | 同上 |
github_api_base | NIX_PINS_GITHUB_API_BASE | --github-api-base URL | GitHub 官方 API |
crates_api_base | NIX_PINS_CRATES_API_BASE | --crates-api-base URL | crates.io 官方 API |
pypi_api_base | NIX_PINS_PYPI_API_BASE | --pypi-api-base URL | PyPI 官方 API |
npm_registry_base | NIX_PINS_NPM_REGISTRY_BASE | --npm-registry-base URL | npm 官方 registry |
github_token | NIX_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 的同时使用量。遇到限流或本地资源紧张时先降低对应并发值。