Files
dotfiles/docs/install-simple.md
T
2026-09-03 15:12:11 +09:00

3.7 KiB

NixOSインストール手順(SOPSなし・ディスク暗号化なし)

この手順は、SOPSによるシークレット管理とLUKSによるディスク暗号化を 使用しないホスト向けの、独立したインストール手順である。

SOPSとディスク暗号化を使用する場合は、暗号化ありの手順を参照。

事前準備

  1. ISOビルドを参照してISOを作成
  2. USBに書き込んで対象マシンでブート

ネットワーク接続

有線LAN

DHCPで自動設定される。

Wi-Fi(有線が使えない場合)

nmcli device wifi connect <SSID> --ask

SSH接続

コンソールに表示されたIPアドレスに接続:

ssh root@<ip-address>

インストール手順

1. dotfilesのクローン

git clone [email protected]:moons-14/dotfiles.git ~/dotfiles
cd ~/dotfiles

2. ホスト設定の作成

hosts/<hostname>/nixos.nixを作成し、hosts/default.nixにホストと使用する プロファイルを登録する。ホスト固有の設定だけをホストディレクトリに置き、 再利用可能な設定は適切なunitまたはprofileに置く。

3. インストール先ディスクの確認

lsblk -o NAME,PATH,SIZE,MODEL,SERIAL,TYPE,FSTYPE,MOUNTPOINTS
ls -l /dev/disk/by-id/

以降の操作では指定したディスクの既存データが消去される。対象を必ず確認し、 可能であれば/dev/sdaや/dev/nvme0n1ではなく、安定した /dev/disk/by-id/...パスを使用する。

4. Disko設定の作成

hosts/<hostname>/disko.nixを作成する:

_:
{
  disko.enableConfig = true;

  disko.devices.disk.main = {
    type = "disk";
    device = "/dev/disk/by-id/<target-disk>";
    content = {
      type = "gpt";
      partitions = {
        ESP = {
          size = "512M";
          type = "EF00";
          content = {
            type = "filesystem";
            format = "vfat";
            mountpoint = "/boot";
          };
        };
        root = {
          size = "100%";
          content = {
            type = "filesystem";
            format = "ext4";
            mountpoint = "/";
          };
        };
      };
    };
  };
}

<target-disk>を手順3で確認した実際のディスクIDに置き換える。指定した ディスクの既存データは消去される。

5. パーティション作成とマウント

disko --mode destroy,format,mount hosts/<hostname>/disko.nix

Diskoの実行結果を確認する:

findmnt /mnt
findmnt /mnt/boot

6. ハードウェア設定の生成

nixos-generate-config --no-filesystems --root /mnt --show-hardware-config \
  > ~/dotfiles/hosts/<hostname>/hardware-configuration.nix

7. ホストモジュールから設定を読み込む

hosts/<hostname>/nixos.nixで、生成したハードウェア設定とDisko設定を読み込む:

{
  imports = [
    ./hardware-configuration.nix
    ./disko.nix
  ];
}

8. NixOSインストール

nixos-install --flake ~/dotfiles#<hostname>

SOPSを使用しないため、age鍵の登録、シークレットの再暗号化、SSHホストキーの 事前生成とコピーは不要である。OpenSSHを有効にしたホストでは、SSHホストキーは 通常の初回起動時に生成される。

9. 再起動

reboot

インストール後の確認

  • 正しいディスクから起動できるか
  • /と/bootが意図したファイルシステムからマウントされているか
  • ネットワークと、設定している場合はSSH接続が利用できるか