📖

NixOSを使ってみる(インストール~SSHまで)

2024/08/19に公開

docker debugを使うのにサブスクリプションが必要なことが分かりガッカリ。。。。

で、そのdocker debugがNixを使っているとのことで、NixOSを知り使ってみた次第。

インストールから簡単なカスタマイズまでしか記載していません。
とりあえず使ってみるってところまでです。

NixOSって?

Linuxのディストリビューションの1種。Nixというパッケージマネージャを使っているのが特徴で、設定変更をバージョン管理してくれるのも他にはあまり見ないかな。

詳細は以下ページに非常に詳しく書いてくれるので、そちらを一読頂くのがよいかと思います。

https://zenn.dev/asa1984/articles/nixos-is-the-best

インストール

今回はVMにOSとしてインストール。DockerでNixを入れたコンテナを起動することも可能。

自分はCLI好きなので、以下に従ってインストール。

https://nixos.org/manual/nixos/stable/#ch-installation

以下にコマンドをまとめたものがあるので、何も考えずにインストールするなら、そちらを写経すればインストールできます。

https://nixos.org/manual/nixos/stable/#sec-installation-manual-summary

カスタマイズのやり方について

端的に書くと以下の流れ

  1. 追加したい設定を/etc/nixos配下にファイルとして追加
  2. /etc/nixos/configuration.nix のimportに追加したファイルを追加
  3. 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

そのほかのカスタマイズ

https://nixos.org/manual/nixos/stable/#ch-configuration

上記にいろいろ記載されているので、参照しつつ実施してみてください。

まずは、使えるようになるところまでと思い記載しました。
参考になれば。

Discussion