NixOSを使ってみる(インストール~SSHまで)
docker debugを使うのにサブスクリプションが必要なことが分かりガッカリ。。。。
で、そのdocker debugがNixを使っているとのことで、NixOSを知り使ってみた次第。
インストールから簡単なカスタマイズまでしか記載していません。
とりあえず使ってみるってところまでです。
NixOSって?
Linuxのディストリビューションの1種。Nixというパッケージマネージャを使っているのが特徴で、設定変更をバージョン管理してくれるのも他にはあまり見ないかな。
詳細は以下ページに非常に詳しく書いてくれるので、そちらを一読頂くのがよいかと思います。
インストール
今回はVMにOSとしてインストール。DockerでNixを入れたコンテナを起動することも可能。
自分はCLI好きなので、以下に従ってインストール。
以下にコマンドをまとめたものがあるので、何も考えずにインストールするなら、そちらを写経すればインストールできます。
カスタマイズのやり方について
端的に書くと以下の流れ
- 追加したい設定を/etc/nixos配下にファイルとして追加
- /etc/nixos/configuration.nix のimportに追加したファイルを追加
- nixos-rebuild switch実行
となります。この方法だとグローバルセッティングになるのでシステム全体への影響。
どうやら、ホームディレクトリに設定を置くやり方もあるっぽい。
が、今回はとりあえず使えればなので、/etc/nixosのやり方で
SSHを許可する設定を例に
設定ファイルを追加
以下内容で、/etc/nixos/ssh.nix ファイルを作成
{
services.openssh.enable = true;
}
importに追加
/etc/nixos/configuration.nix の importに先ほど追加したssh.nixを追加する
~(省略)
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./ssh.nix ← これを追加
];
~(省略)
nixos-rebuild switch実行
これは、このコマンドを実行すればOKです。
追加した設定に問題がなければ、反映されるはず。rebootが必要かどうかは追加した定義によるので、画面に表示された内容に従い、必要に応じて再起動
これを実行すると、定義のリビジョン(NixOSの世界では確かリビジョンって言い方はしないですが、、)が増えて起動する際に、どれを起動するか選べるようになります。以下は例(3回rebuildした後です)
インストール後のカスタマイズ
自分が実施したカスタマイズをいくつか。
キー配列をJP106に
コンソールのデフォルトはUS配列なので、以下コマンドを実行するとJP106になります。
$ sudo loadkeys jp106
上記は一時的に変更する場合。sshしちゃってるんで恒久的な変え方までは見てない。。。
NICにIPを振る
Hyper-VのDefault SwitchはDHCPなので、再起動のタイミングなどでIPが変わってしまい面倒なので、別途Internal Switchを追加してIPを固定化の設定を入れる方法。
以下内容で、/etc/nixos/network-configuration.nix ファイルを作成して、configuration.nixのimportに追加。
{
networking.interfaces.eth1.ipv4.addresses = [{
address = "192.168.137.13";
prefixLength = 24;
}];
}
その後、nixos-rebuild switch実行。実行後念のためreboot
SSH有効化
上でも書いたけど、ここにも。
{
services.openssh.enable = true;
}
configuration.nixのimportに追加してnixos-rebuild switch実行
rootのsshログインについてはこちら参照
nixコマンドの実行について
nix runコマンドなどを実行すると以下エラーが表示される。
error: experimental Nix feature 'nix-command' is disabled; add '--extra-experimental-features nix-command' to enable it
対処法
echo "experimental-features = nix-command flakes" > ~/.config/nix/nix.conf
再起動等も不要上記設定を入れたら、再度コマンド実行すればOK
そのほかのカスタマイズ
上記にいろいろ記載されているので、参照しつつ実施してみてください。
まずは、使えるようになるところまでと思い記載しました。
参考になれば。
Discussion