nix-darwinのlinux-builderでNixOSを動かす
Table of Contents
背景・動機
元々OrbStack VMでNixOSを動かしていたのだが、k8sを動かす時にOrbStackだと動かずDocker for Macだと動くという事象が発生した。
調査をした所、nix-darwinがlinux-builderというものをサポートしてることがわかったのでメモしておく。
https://scrapbox.io/kanna/nix_linux-builder
試したこと・やったこと
1. linux-builderについて調査
このあたりに纏まっている。
nix-darwinには modules/nix/linux-builder.nix が提供されており、 enable=true するだけで launchd.daemons に登録されるようだ。
2. nix-darwinを導入してみる
現状の設定は以下。
{ lib, ... }:
{
nix.linux-builder = {
enable = true;
ephemeral = false;
systems = [ "aarch64-linux" "x86_64-linux" ];
config = {
boot.binfmt.emulatedSystems = [ "x86_64-linux" ];
virtualisation = {
cores = 6;
memorySize = lib.mkForce (1024 * 16);
diskSize = lib.mkForce (1024 * 200);
};
nix.settings = {
experimental-features = [
"nix-command"
"flakes"
];
};
security.sudo.extraRules = [
{
users = [ "builder" ];
commands = [
{
command = "ALL";
options = [ "NOPASSWD" ];
}
];
}
];
};
};
}
3. 動いてることを確認する
take 部分はwhoamiに読み替えてください。
$ sudo chmod 644 /etc/nix/builder_ed25519.pub
$ sudo chmod 600 /etc/nix/builder_ed25519
$ sudo chown take:staff /etc/nix/builder_ed25519
あとはsshするだけ。
$ ssh linux-builder
得られた結果・所感
sshしてsudoできるようになった。

今後の展開・検討事項
deploy-rsと組み合わせてnixos-container運用を固めきりたい。 現状だととりあえず動いただけなのでlinux-builder自体の深堀もしたい。