Working QEMU setup for hassos.
This commit is contained in:
@@ -22,24 +22,6 @@
|
|||||||
services.tailscaleAutoconnect.authkey = "tskey-auth-kRXS9oPyPm11CNTRL-BE6YnbP9J6ZZuV9dHkX17ZMnm1JGdu93";
|
services.tailscaleAutoconnect.authkey = "tskey-auth-kRXS9oPyPm11CNTRL-BE6YnbP9J6ZZuV9dHkX17ZMnm1JGdu93";
|
||||||
services.consul.interface.advertise = lib.mkForce "br0";
|
services.consul.interface.advertise = lib.mkForce "br0";
|
||||||
|
|
||||||
virtualisation.libvirtd = {
|
|
||||||
enable = true;
|
|
||||||
allowedBridges = [ "br0" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
unstable.qemu
|
|
||||||
usbutils
|
|
||||||
virt-manager
|
|
||||||
(pkgs.writeShellScriptBin "qemu-system-x86_64-uefi" ''
|
|
||||||
qemu-system-x86_64 \
|
|
||||||
-bios ${pkgs.OVMF.fd}/FV/OVMF.fd \
|
|
||||||
"$@"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.ppetru.extraGroups = [ "libvirtd" ];
|
|
||||||
|
|
||||||
networking.useNetworkd = true;
|
networking.useNetworkd = true;
|
||||||
systemd.network.enable = true;
|
systemd.network.enable = true;
|
||||||
# not useful and potentially a security loophole
|
# not useful and potentially a security loophole
|
||||||
@@ -69,4 +51,29 @@
|
|||||||
# DHCP = "yes";
|
# DHCP = "yes";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
virtualisation.libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
allowedBridges = [ "br0" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.hassos = {
|
||||||
|
description = "Home Assistant OS VM";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
script = ''
|
||||||
|
${pkgs.qemu}/bin/qemu-system-x86_64 -bios ${pkgs.OVMF.fd}/FV/OVMF.fd -name 'hassos' -enable-kvm -cpu host -m 16384 -smp 4 -drive 'if=virtio,file=/persist/hassos/disk-drive-sata0.raw,format=raw' -nic 'bridge,br=br0,mac=2E:DD:78:D5:78:9B' -device qemu-xhci,id=xhci -device usb-host,bus=xhci.0,vendorid=0x0658,productid=0x0200 -device usb-host,bus=xhci.0,vendorid=0x10c4,productid=0xea60 -nographic -serial telnet:localhost:4321,server=on,wait=off -monitor telnet:localhost:4322,server=on,wait=off
|
||||||
|
'';
|
||||||
|
preStop = ''
|
||||||
|
echo 'system_powerdown' | ${pkgs.netcat-gnu}/bin/nc localhost 4322
|
||||||
|
sleep 10
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
qemu
|
||||||
|
inetutils # for telnet to qemu
|
||||||
|
usbutils
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.ppetru.extraGroups = [ "libvirtd" ];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user