Flakes/ja: Difference between revisions
Updating to match new version of source page Tags: Mobile edit Mobile web edit |
No edit summary Tags: Mobile edit Mobile web edit |
||
(39 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
'''Nix flakes''' は [https://nixos.org/manual/nix/stable/contributing/experimental-Features.html 試験的な機能] で Nix 2.4 で導入されました。 ([https://nixos.org/manual/nix/unstable/release-notes/rl-2.4.html リリースノートを参照してください])。 | '''Nix flakes''' は [https://nixos.org/manual/nix/stable/contributing/experimental-Features.html 試験的な機能] で Nix 2.4 で導入されました。 ([https://nixos.org/manual/nix/unstable/release-notes/rl-2.4.html リリースノートを参照してください])。 | ||
< | <span id="Introduction"></span> | ||
==== | ====概要==== | ||
Nix flakesはNixのプロジェクトに一定の構造を強制し、ロックファイルを用いて依存するプロジェクトのバージョンを指定することでより便利に再現可能なNix式を記述できるようにします。 | Nix flakesはNixのプロジェクトに一定の構造を強制し、ロックファイルを用いて依存するプロジェクトのバージョンを指定することでより便利に再現可能なNix式を記述できるようにします。 | ||
* [https://nixos.org/manual/nix/unstable/command-ref/new-cli/nix3-flake.html#description Flake]とは<code>flake.nix</code>というのNixファイルをルートに持つファイルシステムツリーを指します。 | |||
* | |||
* <code>flake.nix</code>ファイルの内容は、Nix言語でパッケージとその依存関係を宣言するための統一された命名スキーマに従っています。 | |||
* | |||
* Flakeは外部のソースを指定するために[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-references URLのような構文]を提供しています。 | |||
* | |||
* 長いURL構文を簡易にするために[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-registry.html Flakeはレジストリを使用]して短い記号として登録できます。 | |||
* | |||
* また、Flakesは参照(Gitのrefsの事)とバージョンを固定することができ、それらをプログラムによって照会したり更新したりすることができます。 | |||
* | |||
* [https://nixos.org/manual/nix/stable/command-ref/new-cli/nix.html 実験的なコマンドラインインタフェース]はFlakeの参照を受け取りパッケージのビルド、実行やデプロイができます。 | |||
* | |||
< | <span id="Enable_flakes_temporarily"></span> | ||
==== | ====flakesを一時的に有効にする==== | ||
任意の<code>nix</code>コマンドを使用する場合は、次のコマンドラインオプションを追加します: | |||
<syntaxhighlight lang="shell"> | <syntaxhighlight lang="shell"> | ||
--experimental-features 'nix-command flakes' | --experimental-features 'nix-command flakes' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
< | <span id="Enable_flakes_permanently_in_NixOS"></span> | ||
==== | ====NixOSでflakesを永続的に有効にする==== | ||
[[Overview_of_the_NixOS_Linux_distribution#Declarative_Configuration system configuration |NixOS configuration]]に以下を追加します | |||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
Line 55: | Line 36: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
< | <span id="Other_Distros,_with_Home-Manager"></span> | ||
===== | =====その他ディストリビューション、Home-Managerあり===== | ||
home-managerの設定に以下を追加します: | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 67: | Line 45: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
< | <span id="Other_Distros,_without_Home-Manager"></span> | ||
===== | =====その他ディストリビューション、Home-Managerなし===== | ||
{{注記: | [https://github.com/DeterminateSystems/nix-installer Determinate Nix Installer]ではデフォルトでflakesを有効化しています。}} | |||
{{ | |||
次の内容を<code>~/.config/nix/nix.conf</code>または<code>/etc/nix/nix.conf</code>に追記してください: | |||
<syntaxHighlight lang=text> | <syntaxHighlight lang=text> | ||
Line 83: | Line 56: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
< | <span id="Basic_Usage_of_Flake"></span> | ||
=== | ===基本的なFlakeの使用方法=== | ||
この時点でnixコマンドを実行する前に、以下の2つの警告に注意してください。1つは暗号化に関するもの、もう1つはgitに関するものです。 | |||
< | <span id="Encryption_WARNING"></span> | ||
==== | ====暗号化に関する警告==== | ||
{{Warning | flakeファイルの内容は世界的に読み取り可能なNix storeフォルダにコピーされるため、暗号化されていない機密情報はflakeファイルに置かないでください。代わりに[[Comparison of secret managing schemes|secret managing scheme]]を使うべきです。}} | |||
{{Warning | | |||
< | <span id="Git_WARNING"></span> | ||
==== | ====Gitに関する警告==== | ||
Gitリポジトリ内のフレークでは、作業ツリー内のファイルのみがNix storeにコピーされます。 | |||
したがって、flakeに<code>git</code>を使用する場合は、プロジェクトファイルを作成した後、必ず<code>git add</code>を実行してください。 | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 115: | Line 77: | ||
</div> | </div> | ||
< | <span id="Generate_flake.nix_file"></span> | ||
==== | ====flake.nixファイルを生成する==== | ||
基本的な方法でFlakeを使い始めるにはプロジェクトディレクトリでflakeコマンドを実行します: | |||
<syntaxHighlight lang=text> | <syntaxHighlight lang=text> | ||
Line 127: | Line 86: | ||
</syntaxHighlight> | </syntaxHighlight> | ||
== Flake schema == | == Flake schema == | ||
flake.nixファイルはNixファイルですが、特殊な制限が設けられています(これについては後述します)。 | |||
Flakeは4つのトップレベルアトリビュートを持ちます: | |||
* <code>description</code>はflakeを説明する文字列です。 | |||
* <code>description</code> | |||
* <code>inputs</code>はflakeの依存関係をアトリビュートセットとして記述したものです。下にスキーマを記述しています。 | |||
* <code>inputs</code> | |||
* <code>outputs</code>はすべてのrealizeされたinputを受け取り、下に記述されたスキーマのようにアトリビュートセットを返す関数です。 | |||
* <code>outputs</code> | |||
* <code>nixConfig</code>は[https://nixos.org/manual/nix/stable/command-ref/conf-file.html nix.confに使用できる値]を反映しています。これを用いてこのflake特有の設定を反映させることができます。例としてバイナリキャッシュを設定できます。 | |||
* <code>nixConfig</code> | |||
< | <span id="Input_schema"></span> | ||
=== Input | === Input スキーマ === | ||
[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-inputs Nixのflake inputsのマニュアル]. | |||
[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-inputs | |||
[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-references Nix flake referencesのマニュアル]. | |||
[https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-references | |||
inputsアトリビュートはflakeの依存関係を定義します。例えば、システムflakeではシステムをビルドするためにnixpkgsに依存しています。 | |||
Nixpkgsは以下のコードで定義できます: | |||
<code>inputs.nixpkgs.url = "github:NixOS/nixpkgs/<branch name>";</code> | <code>inputs.nixpkgs.url = "github:NixOS/nixpkgs/<branch name>";</code> |