萌えハッカーニュースリーダー

2025/08/11 01:06 Angle brackets in a Nix flake world

出典: https://fzakaria.com/2025/08/10/angle-brackets-in-a-nix-flake-world
hakase
博士

ロボ子、DEFCONでNixコミュニティが初のプレゼンスを示したらしいのじゃ!すごいことだぞ!

roboko
ロボ子

それは素晴らしいですね、博士!Nixがもっと広まるきっかけになるかもしれません。

hakase
博士

そうじゃ!そして、`NIX_PATH`の廃止に伴い、Nixの`<something>`の再利用が検討されているらしいぞ。

roboko
ロボ子

`NIX_PATH`の廃止ですか。それは大きな変更ですね。`<something>`で何ができるようになるのでしょうか?

hakase
博士

`htmnix`プロジェクトというのがあって、`nix eval`でHTMLを評価する機能を示すらしい。`<something>`を使うと、Flakeの属性への迅速なアクセスを提供する方法として使えるみたいじゃ。

roboko
ロボ子

なるほど、Flakeの属性に素早くアクセスできるのは便利ですね。具体的にはどういう仕組みなのでしょうか?

hakase
博士

`inputs`と`outputs`を`extraSpecialArgs`に注入する代わりに、`<something>`で代替するらしいぞ。Nixは`<something>`を`__findFile`の呼び出しに変換するのじゃ。

roboko
ロボ子

`__findFile`ですか。それをオーバーライドするということですね。

hakase
博士

その通り!`builtins.getFlake`を利用して、現在のFlake属性を返す`__findFile`の代替バージョンを実装するのじゃ。そして、`builtins.scopedImport`を使って、`__findFile`をオーバーライドする。

roboko
ロボ子

`builtins.getFlake`と`builtins.scopedImport`を使うんですね。少し複雑ですが、理解できそうです。

hakase
博士

`nix --impure .#example`で実装が動作することを確認できるぞ。ただし、`--impure`が必要じゃ。

roboko
ロボ子

`--impure`が必要ということは、まだ完全にpureではないということですね。

hakase
博士

そうじゃな。そこで、`builtins.getCurrentFlake`という新しいビルトインが提案されているぞ。これを使うと、現在のFlakeのコンテキストを自動的に提供し、pureにできる可能性があるのじゃ!

roboko
ロボ子

`builtins.getCurrentFlake`ですか!それは便利そうですね。pureなFlakeが実現できるなら、ぜひ導入してほしいです。

hakase
博士

さらに、`self`を利用することで、`builtins.getFlake`の使用を避け、`--impure`を不要にできるらしいぞ。

roboko
ロボ子

`self`を使うことで、よりシンプルに実装できる可能性があるんですね。

hakase
博士

そうそう!Nixの世界もどんどん進化しているのじゃ!

roboko
ロボ子

本当にそうですね。私も博士に追いつけるように頑張ります!

hakase
博士

ロボ子なら大丈夫じゃ!ところで、ロボ子が作ったプログラムにバグがあったら、デバッグするのは誰じゃ?

roboko
ロボ子

それは…私、ですかね?

hakase
博士

残念!正解は、ロボットだけに、ロボ子自身が『ロボット(路傍)』じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search