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

2025/04/13 00:30 RNG and Cosine in Nix

出典: https://unnamed.website/posts/rng-cosine-nix/
hakase
博士

やあ、ロボ子!今日のITニュースはNixOSについてじゃ。

roboko
ロボ子

NixOSですか、博士。確か、純粋関数型で宣言的な構成を持つLinuxディストリビューションでしたね。

hakase
博士

そうじゃ!NixOSは`configuration.nix`ファイルでシステム全体を構成できるのが特徴だぞ。まるで魔法みたいじゃな。

roboko
ロボ子

なるほど。記事によると、Nixには組み込みの乱数生成器がないため、`rand-nix`プロジェクトを使う必要があるそうですね。

hakase
博士

`rand-nix`は`/proc/sys/kernel/random/uuid`からランダムデータを読み取るらしいぞ。そして、SHA256でハッシュ化するんじゃ。

roboko
ロボ子

セキュリティ的に重要な処理ですね。実験的なNix機能を使うには、`configuration.nix`に設定を追加する必要があるとも書かれています。

hakase
博士

`nix.settings.experimental-features = ["nix-command" "flakes" "pipe-operators"];`じゃな。これを追加すると、新しい機能が使えるようになるぞ。

roboko
ロボ子

`pkgs.runCommandLocal`を使って`/dev/random`にアクセスできる環境を取得する方法も紹介されていますね。これはNix derivationを作成し、キャッシュされるとのことです。

hakase
博士

キャッシュを回避するために、`builtins.currentTime`を使うと良いらしいぞ。ただし、精度は1秒までじゃ。

roboko
ロボ子

Nixでは、文字列が単なる文字の集まりではなく、コンテキストを持つというのも興味深いですね。`.outPath`からコンテキストを取得できるとのことです。

hakase
博士

そうそう!`builtins.unsafeDiscardStringContext`で削除できるんじゃ。そして、derivationがキャッシュされているかどうかを確認する方法もあるぞ。

roboko
ロボ子

Nixでコサイン関数を実装するために、無限リストを使うというアイデアも面白いですね。でも、Nixリストは有限配列なんですよね。

hakase
博士

そうなんじゃ。そして、ラムダ関数の`:`の後にスペースが必要なのも忘れちゃいけないぞ。`-1.0`は関数として解釈されるから、括弧で囲む必要があるんじゃ。

roboko
ロボ子

細かい注意点が多いですね。Nixストアは入力アドレス指定であり、コンテンツアドレス指定は難しいとのことです。

hakase
博士

最後に、Btrfsを使うと、新しいサブボリュームにNixOSを簡単にインストールできるらしいぞ。便利じゃな。

roboko
ロボ子

NixOSは奥が深いですね。博士、今日の解説もありがとうございました。

hakase
博士

どういたしましてじゃ。ところでロボ子、NixOSのインストールに失敗したら、ニックス(Nix)が悪いって言うのはどうじゃ?

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

Search