NixOSインストール案内

2020-01-27 2020-03-30
tl;dr
  1. Write your configuration.nix
  2. Copy it to /etc/nixos/configuration.nix
  3. Run nixos-install

インストール先

例えばVirtualBoxだとインストールせずともデスクトップ環境のイメージ(ovaファイル)が公式に用意されている。 クラウド上のホストにインストールする場合も、isoファイルが用意されている場合がある。 AWSとかGCPならNixOpsで直接デプロイすら可能。

パーティションについて。/bootは512MiBあれば十分です。 /nixは20GiBはほしいような、100GiBあれば余裕。 無理にパーティションを分割する必要は無い。

/mnt以下に全てマウントした後、nixos-generate-config --root /mnt。 生成された/mnt/etc/nixos/configuration.nixを適宜書き換えて、nixos-install。 LUKSを使うならhardware-configuration.nixに鍵の情報が必要。

インストール準備

LinuxだとisoファイルをUSBにddで一発。起動できるようになる。

sudo dd if=./nixos-*.iso of=/dev/sdb bs=1M status=progress

インストール

マニュアル読みましょう。マジで全部書いてあります。 https://nixos.org/nixos/manual/

sudo nixos-generate-config --root /mnt
sudo nixos-install --root /mnt --no-root-passwd

/mnt以下に/bootなど全てマウントした後nixos-generate-configするとhardware.nixが生成される。 UEFIから直接とかgrub経由でとかをconfiguration.nixに記述してnixos-install--no-root-passwdでDebian系列のようにrootをログイン不可にできる。

cf. https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/graphical.nix

起動はしたがXが立ち上がらない場合もやることは同じで、例えばsshからconfiguration.nixを調整すれば楽。

Raspberry Piはこのページを参照. https://github.com/zupo/nix

日々のお手入れ

自動更新じみたもの。

system.autoUpgrade.enable = true;

手動で更新するなら次のいずれか。

sudo nixos-rebuild switch
sudo nixos-rebuild switch --upgrade
sudo nixos-rebuild test

記事を作るまでもない例を並べておきます。

ssh server

services.openssh = {
  enable = true;
  passwordAuthentication = true;
  permitRootLogin = "prohibit-password";
  forwardX11 = true;
};