Flakes/zh: Difference between revisions

Ardenet (talk | contribs)
No edit summary
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(8 intermediate revisions by one other user not shown)
Line 17: Line 17:
   description = "A very basic flake";
   description = "A very basic flake";


inputs = {
  inputs = {
     nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
     nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
   };
   };


outputs = { self, nixpkgs }: {
  outputs = { self, nixpkgs }: {
 
    packages.x86_64-linux = {
packages.x86_64-linux.hello = nixpkgs.legacyPackages.x86_64-linux.hello;
      default = self.packages.x86_64-linux.hello;
 
      hello = nixpkgs.legacyPackages.x86_64-linux.hello;
packages.x86_64-linux.default = self.packages.x86_64-linux.hello;
    };
 
   };
   };
}</nowiki>|name=flake.nix|lang=nix}}
}</nowiki>|name=flake.nix|lang=nix}}
Line 32: Line 31:
在上述示例中,您可以看到对该 flake 的'''描述'''、指定为某 Github 仓库特定分支的'''输入'''(此为 <code>nixos/nixpkgs</code> 仓库的 <code>nixos-unstable</code> 分支)以及一个使用该输入的'''输出'''。该输出简单地指定了该 flake 包含一个用于 x86_64 架构名为 <code>hello</code> 的包。即使您的 flake 输出不使用其输入(尽管这在实践中极不可能),其输出仍需要是一个 Nix 函数。
在上述示例中,您可以看到对该 flake 的'''描述'''、指定为某 Github 仓库特定分支的'''输入'''(此为 <code>nixos/nixpkgs</code> 仓库的 <code>nixos-unstable</code> 分支)以及一个使用该输入的'''输出'''。该输出简单地指定了该 flake 包含一个用于 x86_64 架构名为 <code>hello</code> 的包。即使您的 flake 输出不使用其输入(尽管这在实践中极不可能),其输出仍需要是一个 Nix 函数。


<div lang="en" dir="ltr" class="mw-content-ltr">
{{Note|Flakes require you to specify its outputs for each architecture separately. For more information, read the related section below.}}
{{Note|Flakes require you to specify its outputs for each architecture separately. For more information, read the related section below.}}
</div>


<span id="Nix_configuration"></span>
<span id="Nix_configuration"></span>
<div class="mw-translate-fuzzy">
=== Nix 配置 ===
=== Nix 配置 ===
为了推导 flake,您可以覆盖 <code>nix.conf</code> 文件中设置的全局 Nix 配置。例如,这可用于设置特定项目的二进制缓存源,同时保持全局配置不变。Flake 文件中可包含一个 nixConfig 属性,并在其中设置相关配置。例如,启用 nix-community 二进制缓存可以通过以下方式实现:
为了推导 flake,您可以覆盖 <code>nix.conf</code> 文件中设置的全局 Nix 配置。例如,这可用于设置特定项目的二进制缓存源,同时保持全局配置不变。Flake 文件中可包含一个 nixConfig 属性,并在其中设置相关配置。例如,启用 nix-community 二进制缓存可以通过以下方式实现:
{{File|3=<nowiki>{
  ...
  nixConfig = {
    extra-substituters = [
      "https://nix-community.cachix.org"
    ];
    extra-trusted-public-keys = [
      "nix-community.cachix.org-1:...="
    ];
  }
}</nowiki>|name=flake.nix|lang=nix}}{{Note|如果您习惯通过 NixOS 配置来设置 Nix 配置,则这些选项位于 <code>nix.settings</code> 下,而不是 <code>nix</code> 下。例如,您无法在 <code>nix.optimization.enable</code> 下指定自动存储优化。}}
</div>
<div lang="en" dir="ltr" class="mw-content-ltr">
It is possible to override the global Nix configuration set in your <code>nix.conf</code> file for the purposes of evaluating a flake. This can be useful, for example, for setting up binary caches specific to certain projects, while keeping the global configuration untouched. The flake file can contain a nixConfig attribute with any relevant configuration settings supplied. For example, enabling the nix-community binary cache would be achieved by:
</div>


{{File|3=<nowiki>{
{{File|3=<nowiki>{
Line 69: Line 50:
}</nowiki>|name=flake.nix|lang=nix}}
}</nowiki>|name=flake.nix|lang=nix}}


<div lang="en" dir="ltr" class="mw-content-ltr">
{{Note|如果您习惯通过 NixOS 配置来设置 Nix 配置,则这些选项位于 <code>nix.settings</code> 下,而不是 <code>nix</code> 下。例如,您无法在 <code>nix.optimization.enable</code> 下指定自动存储优化。}}
{{Note|If you are used to configuring your Nix settings via the NixOS configuration, these options are under <code>nix.settings</code> and not <code>nix</code>. For example, you cannot specify the automatic storage optimisation under <code>nix.optimisation.enable</code>.}}
</div>


<span id="Setup"></span>
<span id="Setup"></span>
Line 125: Line 104:


<span id="The_nix_flakes_command"></span>
<span id="The_nix_flakes_command"></span>
<div class="mw-translate-fuzzy">
=== Nix Flakes 命令 ===
=== Nix Flakes 命令 ===
{{Main|Nix (command)}}
</div>


{{Main|Nix (command)}}
{{Main|Nix (command)}}
Line 220: Line 196:
<code>inputs.nixpkgs.url = "github:NixOS/nixpkgs/<branch name>";</code>
<code>inputs.nixpkgs.url = "github:NixOS/nixpkgs/<branch name>";</code>


<div lang="en" dir="ltr" class="mw-content-ltr">
Nixpkgs 也可以指向一个由 NixOS 组织缓存的 URL:
Nixpkgs can alternatively also point to an url cached by the NixOS organization:
</div>


<code>inputs.nixpkgs.url = "<nowiki>https://nixos.org/channels/nixpkgs-unstable/nixexprs.tar.xz</nowiki>";</code>
<code>inputs.nixpkgs.url = "<nowiki>https://nixos.org/channels/nixpkgs-unstable/nixexprs.tar.xz</nowiki>";</code>


<div lang="en" dir="ltr" class="mw-content-ltr">
在此示例中,输入将指向 <code>nixpkgs-unstable</code> 频道(channel)。
In this example the input would point to the `nixpkgs-unstable` channel.
</div>


对于任何包含 flake.nix 文件的仓库,其所属网站也必须被定义。Nix 知道 nixpkgs 仓库的位置,因此没有必要声明它在 GitHub 上。
对于任何包含 flake.nix 文件的仓库,其所属网站也必须被定义。Nix 知道 nixpkgs 仓库的位置,因此没有必要声明它在 GitHub 上。
Line 532: Line 504:
{{references}}
{{references}}


<div class="mw-translate-fuzzy">
[[Category:Software|软件]]
{{references}}
[[Category:Nix|Nix]]
</div>
[[Category:Nix Language|Nix 语言]]
[[Category:Flakes|Flakes]]