Flakes/zh: Difference between revisions
No edit summary |
No edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 160: | Line 160: | ||
==== 在 flake 仓库中构建特定属性 ==== | ==== 在 flake 仓库中构建特定属性 ==== | ||
运行 <code>nix build</code> 将在 <code>legacyPackages</code> 和 <code>packages</code> 输出属性中查找相应的 [[derivations|derivation]],然后基于您的系统架构构建默认输出项。如果您想在 flake 仓库中指定构建属性,可以运行 <code>nix build .#<attr></code>。在上面的示例中,如果您想构建 <code>packages.x86_64-linux.hello</code> 属性,请运行: | |||
运行 <code>nix build</code> 将在 <code>legacyPackages</code> 和 <code>packages</code> 输出属性中查找相应的 [[ | |||
<syntaxHighlight lang=console> | <syntaxHighlight lang=console> | ||
| Line 235: | Line 233: | ||
=== 输出规范 === | === 输出规范 === | ||
[https://nix.dev/manual/nix/2.33/command-ref/new-cli/nix3-flake-check.html#evaluation-checks Nix flake check 手册页]中对输出规范进行了描述。 | |||
一旦 Inputs 被解析,它们就会与 <code>self</code> 一起传递给函数 <code>outputs</code>,<code>self</code> 是此 flake 在 Store 中的目录。<code>outputs</code> 根据以下规范返回 flake 的输出。 | 一旦 Inputs 被解析,它们就会与 <code>self</code> 一起传递给函数 <code>outputs</code>,<code>self</code> 是此 flake 在 Store 中的目录。<code>outputs</code> 根据以下规范返回 flake 的输出。 | ||
| Line 312: | Line 308: | ||
* {{Nixpkgs Manual|name=fetchurl|anchor=#sec-pkgs-fetchers-fetchurl-inputs}} 和 {{Nixpkgs Manual|name=fetchzip|anchor=#sec-pkgs-fetchers-fetchzip-inputs}} 需要传入 <code>sha256</code> 参数才会被视为纯函数。 | * {{Nixpkgs Manual|name=fetchurl|anchor=#sec-pkgs-fetchers-fetchurl-inputs}} 和 {{Nixpkgs Manual|name=fetchzip|anchor=#sec-pkgs-fetchers-fetchzip-inputs}} 需要传入 <code>sha256</code> 参数才会被视为纯函数。 | ||
* <code>builtins.currentSystem</code> 函数是非确定且不纯的,因为它返回的是执行推导的主机系统。通常可以通过将系统类型(例如 x86_64-linux)显式传递给需要它的 Derivations 来避免使用。 | |||
* <code>builtins.currentSystem</code> 函数是非确定且不纯的,因为它 | |||
* <code>builtins.getEnv</code> 函数也是不纯的。请避免从环境变量中读取数据,同样,也不要引用 flake 目录之外的文件。 | * <code>builtins.getEnv</code> 函数也是不纯的。请避免从环境变量中读取数据,同样,也不要引用 flake 目录之外的文件。 | ||