Files
2026-09-03 15:12:11 +09:00

2.8 KiB

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

この手順は、SOPSによるシークレット管理とLUKSによるディスク暗号化を 使用するホスト向けである。

どちらも使用しない場合は、 SOPSなし・ディスク暗号化なしの手順を参照。

事前準備

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

ネットワーク接続

有線LAN

DHCPで自動設定される。

WiFi(有線が使えない場合)

nmcli device wifi connect <SSID> --ask

SSH接続

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

ssh root@<ip-address>

インストール手順

1. dotfilesのクローン

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

2. SSHホストキーの生成

新しいホスト用のSSHホストキーを生成:

ssh-keygen -t ed25519 -f /tmp/ssh_host_ed25519_key -N ""

3. age公開鍵の取得

SSHホストキーからage公開鍵を取得:

ssh-to-age -i /tmp/ssh_host_ed25519_key.pub

出力されたage公開鍵をコピー。

4. .sops.yamlの編集

cd ~/dotfiles
vim .sops.yaml

以下を追加:

keys:
  - &host_<hostname> <age公開鍵>

creation_rules:
  - path_regex: ^secrets/hosts/<hostname>/[^/]+\.ya?ml$
    key_groups:
      - age:
          - *admin_yubikey1
          - *host_<hostname>

5. シークレットの再暗号化

sops updatekeys secrets/common/system.yaml
sops updatekeys secrets/hosts/<hostname>/*.yaml

6. disko設定の作成

新しいホスト用のhosts/<hostname>/disko.nixを作成。

LUKS暗号化とbtrfsの構成はhosts/x1g13/disko.nixを参照。

7. ディスクのパーティション

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

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

対象マシンのハードウェア設定を生成し、新しいホストのディレクトリへ直接保存:

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

hosts/<hostname>/nixos.nixから生成した設定とDisko設定を読み込む:

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

9. ホストキーのコピー

mkdir -p /mnt/etc/ssh
cp /tmp/ssh_host_ed25519_key* /mnt/etc/ssh/
chmod 600 /mnt/etc/ssh/ssh_host_ed25519_key

10. NixOSインストール

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

11. 再起動

reboot

インストール後の確認

  • SSHでログインできるか
  • sopsシークレットが復号できるか
  • diskoでパーティションが正しく設定されているか