nix-fast-build 使用教程
项目介绍
nix-fast-build
是一个开源项目,旨在通过结合 nix-eval-jobs
和 nix-output-monitor
来加速 Nix 包的评估和构建过程。它支持并发评估和构建 Nix 包,从而显著减少构建时间。此外,nix-fast-build
还支持远程构建,通过上传当前的 flake 并在远程机器上执行评估和构建操作,然后将结果存储路径传输回本地。
项目快速启动
安装
首先,确保你已经安装了 Nix。然后,你可以通过以下命令安装 nix-fast-build
:
nix run github:Mic92/nix-fast-build
基本使用
以下是一些基本的使用示例:
-
本地构建:
nix run github:Mic92/nix-fast-build
-
远程构建:
nix run github:Mic92/nix-fast-build -- --remote youruser@yoursshhostname
请将
youruser@yoursshhostname
替换为你的 SSH 登录凭证。 -
限制构建系统:
nix run github:Mic92/nix-fast-build -- --skip-cached --no-nom --flake "#checks $(nix eval --raw --impure --expr builtins.currentSystem)"
Cachix 支持
你可以将构建结果上传到 Cachix:
nix-fast-build --cachix-cache mic92
确保你的机器已登录到 Cachix 或设置了环境变量 CACHIX_SIGNING_KEY
或 CACHIX_AUTH_TOKEN
。
应用案例和最佳实践
应用案例
假设你有一个包含多个 NixOS 机器的大型 flake,传统的构建方法可能需要很长时间。使用 nix-fast-build
,你可以显著减少构建时间。例如,在一个 AMD Ryzen 9 7950X3D 上,构建一个已经编译的 disko
集成测试套件需要 1:50 分钟,而使用 nix-fast-build
仅需 10 秒。
最佳实践
- 并发构建:利用
nix-fast-build
的并发构建功能,确保你的系统资源(如 CPU 和内存)充足。 - 远程构建:对于大型项目,使用远程构建可以进一步加速构建过程。
- Cachix 集成:将构建结果上传到 Cachix,以便在不同机器间共享构建结果,减少重复构建。
典型生态项目
nix-eval-jobs
nix-eval-jobs
是一个用于并发评估 Nix 包的工具,nix-fast-build
利用其输出进行并发构建。
nix-output-monitor
nix-output-monitor
(简称 nom
)是一个用于监控 Nix 构建进度的工具,nix-fast-build
默认集成了 nom
,以提供实时的构建进度更新。
通过结合这些工具,nix-fast-build
提供了一个高效、快速的 Nix 包构建解决方案。