用途:Nix Flakes 是 Nix 的现代项目管理方式,通过 flake.lock 实现封闭性,将每个依赖锁定到特定修订版本以保证可复现性。适用于初始化 Nix 项目、锁定依赖、定义开发环境与构建软件包。
主要能力与用法: 项目初始化:nix flake init 在当前目录创建基础 flake;nix flake new hello -t templates#hello 从模板创建。 依赖管理:nix flake update 更新 flake.lock 中全部输入;nix flake update nixpkgs 仅更新指定输入;nix flake lock 锁定缺失条目而不更新。 构建与运行:本地路径需加 path: 前缀以包含未跟踪文件,如 nix build path:.、nix build path:.#packageName、nix run path:.、nix run path:.#appName;也可从远程 flake 运行,如 nix run github:numtide/treefmt。 开发环境:nix develop path:. --command make build 在 devShell 内执行命令;nix develop path:. --command env 检查环境。无头环境中必须使用 --command 以避免进入交互模式。 检查:nix flake show path:. 列出全部输出;nix flake metadata path:. 查看输入与修订;nix eval path:.#packages.x86_64-linux.default.name 求值特定输出。
基本结构:flake 由 description、inputs(如 nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable")和 outputs 组成,outputs 中可定义 packages.${system}.default 与 devShells.${system}.default(使用 pkgs.mkShell 与 buildInputs)。
最佳实践:始终提交 flake.lock 以保证可复现;构建本地 flake 时使用 path: 前缀以包含未跟踪文件;在脚本和无头环境中始终为 nix develop 加上 --command。
限制:资料未提供更多关于平台支持、版本要求或收费信息。