基本情報

NixOSについて

Nixパッケージマネージャ・ビルドシステムベースのLinux ディストリビューションです。

NixOSではOSの状態を設定ファイルに書き、その設定からシステムを構築するという設計になっています。

例えば

configuration.nix
flake.nix
flake.lock

などに設定をあらわに書くことで、何をインストールして、どのサービスを有効化したのかを明示できます。

そのため新しいPCでも同じ設定を使えば、かなり近い環境を再構築で来ます。

Nixの良いところはバージョンの管理と再構成が簡単だということだと思います。

例えば、NixOSは設定変更のたびに新しいGenerationを作るため、新しい設定で問題が起きても、以前のGenerationに戻すことができます。

これはArmalinuxでライブラリー入れたりしているときに何を変更したのかわからなくなってしまう私のような人間に取っては嬉しいです。

/nix/store について

Nixで入れたものは、/nix/storeに置かれます。

後述する設定ファイルを変更する事に上記のディレクトリに新たにパッケージを生成します。

例えば

/nix/store/<hash>-git-...
/nix/store/<hash>-gcc-...
/nix/store/<hash>-root-...

のように保存されます。

そのため異なるバージョンのソフトウェアを共存させやすく、依存関係の衝突も起こりにくい設計になっています。

NixOSでのシステム(環境)管理方法

設定を次の3階層に分けて管理できます。

OS
├── NixOS
│   └── configuration.nix
├── User
│   └── Home Manager
│       └── home.nix
└── Project
    └── flake.nix
        └── nix develop

NixOSはマシン全体、Home Managerはユーザー環境、flake.nix はプロジェクトごとの環境を設定します。