🙆
flake.nixで Hello, World!!
nix flakes の flake.nix
でHello,Worldをしてみよう。
以下のようなflake.nix
ファイルを用意する。
{
description = "hello";
outputs = { self }: {
hello = "hello, world";
value = 1;
};
}
実行してみる。
$ nix eval .#hello
"hello, world"
$ nix eval .#value
1
flake.nix
に記述した値を取り出すことができた。
nix eval
の引数に渡したカレントディレクトリのflake.nix
内のoutputs関数が評価されて
#以降に取り出す値を指定していると言ってよいだろう。
inputsを記述すると
outputs関数の引数が増やせるのがデフォルトとしてselfが渡されるようになっている。
inputs`を使う小さなサンプルは別記事に書きたいと思う。
replで使う
flake.nixのあるディレクトリで .#helloをとすることで値を取り出すことができる。
replで値を取り出してみる。
$ nix repl .
> hello
"hello, world"
> value
1
outputs関数を呼び出し結果がトップレベル変数として定義されている状態になるので、取り出すことができる。
この記事では、~/.config/nix.conf
に
experimental-features = nix-command flakes repl-flake
を記述している環境で試しました。
つづく
参考
Discussion