Flakes/ja: Difference between revisions
Haruki7049 (talk | contribs) Created page with "* <code>flake.nix</code>ファイルの内容は、Nix言語でパッケージとその依存関係を宣言するための統一された命名スキーマに従っている。" |
No edit summary Tags: Mobile edit Mobile web edit |
||
(26 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
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> | * <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の事)とバージョンを固定することができ、それらをプログラムによって照会したり更新したりすることができます。 | * また、Flakesは参照(Gitのrefsの事)とバージョンを固定することができ、それらをプログラムによって照会したり更新したりすることができます。 | ||
* [https://nixos.org/manual/nix/stable/command-ref/new-cli/nix.html 実験的なコマンドラインインタフェース]はFlakeの参照を受け取りパッケージのビルド、実行やデプロイができます。 | |||
* | |||
<span id="Enable_flakes_temporarily"></span> | <span id="Enable_flakes_temporarily"></span> | ||
Line 67: | Line 59: | ||
===基本的なFlakeの使用方法=== | ===基本的な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 95: | Line 77: | ||
</div> | </div> | ||
< | <span id="Generate_flake.nix_file"></span> | ||
==== | ====flake.nixファイルを生成する==== | ||
基本的な方法でFlakeを使い始めるにはプロジェクトディレクトリでflakeコマンドを実行します: | |||
<syntaxHighlight lang=text> | <syntaxHighlight lang=text> | ||
Line 107: | 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> |