Nix
何
パッケージマネージャー
特定のプログラミング言語専用ではなく、GNU/Linux中心に幅広いアプリケーションやライブラリを扱えるパッケージマネージャー
再現性 (reproducibility) は命より重い
犠牲にされるものの例
ストレージ容量
ネットワーク通信量
開発環境を構築することもできる
direnvと組み合わせればディレクトリに入って最初の1回 direnv allow を叩くだけで完璧な開発環境がセットアップされ、後はディレクトリを行き来するだけで自動的にPATHなどが切り替えられてしまう 依存関係はバージョン違い等別々に保存しパッケージごとに逐一使い分ける (ストレージで殴る) ことで互換性が崩壊することを防ぐ
「AとBがCに依存しててAをアップグレードしたらCに破壊的変更が入ってBが死ぬ」ということは起きない。AとBの依存するCは全く同じでない限り別々に管理される
パッケージはNix Storeに一意なディレクトリ名で保存される
Nix Storeはふつう /nix
依存関係をハッシュ関数にぶち込んだやつがディレクトリになる (したがって一意)
Dockerに押され気味かもしれないがNixでDockerコンテナも書けるらしい 言語既存のパッケージマネージャとどう共存していくのかが気になる
C言語 みたいにすべてをシステムに任せるみたいな言語はそうない コードが謎の呪文になりがち
どんな引数を取ってどんな型の値を返す関数なのかがわからない
ヒアドキュメントもない
開発者が全体的に腕力ありすぎてドキュメントをちゃんと書いてくれない