NixOS
読了まで:約7分
とは?
- いわゆる
[[Linux]] Kernel を 用いた Linux Distribution の 一つ - [[Nix]] と
いう 関数 型パッケージマネージャが 特長で、 System が Immutable に 定義できる - な
お System が Immutable なので、 VMware などの ソトウェアとは 相性が 悪い
[[NixOS]] の利点
- システム全体の
定義を Immutable に 定める ことが 出来る。 また ロールバックも 出来る - そのため Chef とか
Puppet とか Ansible とかが 不要。 その 辺り [[nixpkgs]] が 面倒見てくれる - また
過去に インストールしたが 不要になった パッケージなどを GC して 一括 削除が 可能
基本的に
- Nix Expression Language
を
そのため NixOS では
/etc/nixos/configuration.nix
と
また
パッケージが
壊れてて システムが 正常に 動かなくなった
と
また、
システムの
定義更新自体は 成功したけど、 なんか 上手い こと 動いてないぞ……?
と
[[NixOS]] の欠点
- システムの
ロールバックか 可能な 反面、 GC しないと 不要な ファイルが ストレージを 圧迫する - System が
Immutable なので Mutable な System を 想定する VMware などとの 相性が 非常に 悪い - また
NixOS と 言えども、 ファイル破損や ファイルシステム破損、 バグなどで boot しない 時も ある
これらの
またnixpkgs
のmaster
を
- Chromium や
Firefox - QtWebKit や
QtWebEngine - あとは
wine など
と
また、
パッケージ更新で
ビルドに 時間を 喰われる
と
とはnixpkgs
のmaster
を
Archlinux の
様に 常に 最新の パッケージを 使いたい!
と
[[NixOS]] の小ネタ
- VMware などを
使いたい 場合には Docker container を 使え - 他の
Distro の バイナリーを 使いたい? 実は 出来るんだな これが - Archlinux 風に
NixOS を 使うには (上級者向け)
1. VMware などを使いたい場合には Docker Container を使う
まぁ VMware で
な
の
- VMware Host の
Kernel Module を NixOS 側で ビルドして 有効に する - VMware Workstation Player を
Docker Container に インストールする - VMware 入りコンテナに
特権と 必要な 情報を 渡して Docker Container から 起動できる 様に する
と
またglibc
2. 他の Distro の実行バイナリは LD_LIBRARY_PATH
と patchelf
を使って利用可能にできる
LD_LIBRARY_PATH
とpatchelf
を例えば
またld-linux.so
も
patchelf
でExecutable Binary に patch を 当てる
と
まぁ具体的には、
などを
3. Archliux 風にローリングリリースで NixOS を使う
これはnixpkgs
の/etc/nixpkgs
にgit clone
しており、
nixos-rebuild -I nixpkgs=/etc/nixpkgs boot
とnixpkgs
の
とは
時間の
余裕が 有る ときに システムの 定義を 更新する
と
git tag YYYY-MM-DD
と
※ちな
その他
- Nix Package Manager は
他の Linux Distro や macOS でも 使える - ただしシステムの
Rollback などは 出来ない - また
一応は 他の パッケージマネージャと 共存可能 (例えば Homebrew とか) - とは
言え Nix Package Manager は NixOS で 使うのが 一番 強力では ある
- ただしシステムの
- システムの
Garbage Collection の 実行は、 システムが 動作するのを 確認してから 行う こと - これを
サボると Rollback 出来なくって 詰む 場合も ある (つまり 再インストール) - 特に
nixpkgs
のmaster
を追い かけてたりすると、 特に そうなり易い - とは
言え、 個人的には バグを 踏んだりした 時以外は そう 言う 場面に なった ことはないけど
- これを
- 日本語での
[[NixOS]] の 情報は ほぼ無い - と
言うか 私の 書いた 記事も 含め、 日本人の 方が 書いた 記事って ほぼ見かけない…… - あと、
私の 書いた割と どうでも 良い 記事が 引っ掛る ぐらいに NixOS の 日本語情報は ない - そのため、
問題が 起きた時は English を 読んで Troubleshooting できないと ツラい
- と
- NixOS には
Guix と いう 派生っぽい Distro が 有る - これは
Nix Expression Language の 変わりに Lisp 系言語を 使った GNU 系 Linux Distro - Guix は
NixOS で 行なっている 事を Lisp 系言語で 再現した Distro だと 思えば 良い - ただし
私は 使った 事が 無いため、 具体的な 中身が どこまで 似ているのかは 良く 知らない
- これは
ibus-skk
はworkaround 無しでは 動かない - ibus で
skk で 使おうとすると 一番ハマる 事案 - 自分でも
完全に 解決できた ワケではない - 一応
使う 方法が あるには あるが、 詳しい ことは 私の システム定義を 見てくれ〜
- ibus で