カラクリスタ・ノート

『輝かしい青春』なんて失かったヒトのノート。
主に不完全なメモ書き

NixOS

とは?

  • いわゆる Linux Kernel を使った Linux Distribution の一つ。Nix と言う関数型パッケージマネージャが特長
  • 通常の Linux Distro とは違い、 システムが Immutable になっている 。そのためファイル構造などが独特
  • なお、NixOS のシステムが Immutable な影響で VMware などのソフトウェアは動作が困難だったりします

NixOS の利点

  • システム全体の状態を Immutable に定義できる。Chef とか Puppet で出来ることがデフォルトで組込み済み
  • また、システム全体の状態を起動時にロールバック出来るので、設定を触って再起不能になることが少ない
  • そして過去にインストールしたが不要となったパッケージなどを一掃して GC することも可能。これがかなり便利

NixOS の欠点

  • システムのロールバックは システムファイルを全部残す ことで実現しているので、割とシステムリソースを食う
  • また、システムがImmutable なので、VMware などのシステムが Mutable 前提のソフトウェアを使うのは困難
  • そして、NixOS と言えどもファイルシステムや Static なファイルの障害、バグなどで再起不能になる場合もある

NixOS で VMware などを動かす方法

  • 基本的には Docker を使って Ubuntu などのコンテナに分離すれば割となんとかなる
  • ただし、Kernel Module などは NixOS 側で有効にしなければならないので、割と面倒
  • また Docker で動くとは言え、GUI App を Docker で動かすのは割とツラみが有ったりもする

NixOS でローリングリリース (要は Archlinux 風に使う)

  • 基本的には nixpkgsmaster ブランチを git checkout して使えばそれが出来る
  • なお nixpkgsmaster を追い掛ける場合には、git tag をこまめにした方が良い。時々壊れてる時もあるので
  • また nixpkgsGitHub 上で開発されている → https://github.com/NixOS/nixpkgs

nixpkgs を 他の OS などで使う

  • 実は nixpkgs は他の Linux Distro や macOS でも使えたりする。意外と便利
  • また、他のパッケージマネージャと共存も一応可能(Homebrewとか)。ただし混ぜると混乱の元
  • ただし NixOS とは違い、システム全体状態をロールバック出来るとかそういう機能は無い

NixOS で気を付けたいこと

  • システムの GC はシステムが動作するのを確認してからすること。これをサボると再起不能になるリスクが上がる
  • また iBus など nixos-rebuild が成功しても正常に動作しない場合もあるので、その辺りは GitHub Issue とかを見よ
  • あと NixOS の日本語情報はほぼない(というか数える事が出来る人数しか書かれてない)ので、英語は必須です