快速开始
安装
准备 Nix 与 nix-pins,选择 Flake 或 Cargo 安装方式。
nix-pins 是一个 Rust CLI。运行时需要可用的 Nix,以及配置使用的 Nixpkgs。使用 Git Checker 时还需要 git。
准备 Nix
安装方式见 Nix 官方安装指南。下面的 Flake 命令需要启用 nix-command 和 flakes。
CLI 的默认 evaluator 使用 <nixpkgs>。先确认它可以被解析:
nix eval --impure --raw --expr 'toString <nixpkgs>'
如果没有配置 Nixpkgs 路径,可为当前终端设置:
export NIX_PATH="nixpkgs=$(nix eval --raw nixpkgs#path)"
项目需要固定 Nixpkgs 时,将 NIX_PATH 指向该项目已经锁定的 Nixpkgs 源码。CLI 求值和下游 Reader 应使用兼容的 Nixpkgs,尤其是涉及依赖 Builder 时。
使用 Flake
当前仓库的 Flake 输出仅定义了 aarch64-darwin,即 Apple Silicon macOS。该平台可执行:
nix run github:ercao/nix-pins -- --help
nix profile install github:ercao/nix-pins
nix-pins --version
其他平台可从源码用 Cargo 构建;当前 Flake 没有为这些平台提供 package 或 app 输出。
从源码安装
准备 Rust 工具链和 Nix,克隆源码后安装:
git clone https://github.com/ercao/nix-pins.git
cd nix-pins
cargo install --path crates/cli --locked
nix-pins --help
将 Cargo 的安装目录(通常是 ~/.cargo/bin)加入 PATH。也可以在仓库内使用 cargo run -- status 或 cargo run -- update。
Reader 位于源码仓库的 nix/pins.nix。当前 Flake package 安装 CLI、evaluator 和 Reader;本教程从克隆的仓库导入 Reader。将 Reader 用于其他项目时,保留或固定对应的工具源码版本。
接下来完成第一个 Pin。