diff --git a/modules/vms/homeassistant-vm-declarative.nix b/modules/vms/homeassistant-vm-declarative.nix new file mode 100644 index 0000000..0e15f07 --- /dev/null +++ b/modules/vms/homeassistant-vm-declarative.nix @@ -0,0 +1,86 @@ +{ config, pkgs, lib, ... }: + +let + # You would define these variables based on your actual configuration + # or pass them in from the homeassistant-vm.nix module if you keep it + haosImagePath = "/var/lib/libvirt/images/haos.qcow2"; + haosMemory = 4096; # MB + haosVcpus = 2; + haosBridge = "br0"; +in +{ + services = { + libvirtd = { + enable = true; + qemu = { + enable = true; + swtpm.enable = true; + }; + }; + }; + + virtualisation = { + libvirt = { + qemu = { + # This enables the QEMU driver for Libvirt + enable = true; + + # Define your Home Assistant VM here + machines.homeassistant = { + # Enable autostart for this VM + autostart = true; + + # Memory in MiB + memory = haosMemory; + + # Number of virtual CPUs + vcpu = haosVcpus; + + # Disk configuration + disks = [ + { + file = haosImagePath; + format = "qcow2"; + # Use virtio for better performance + driver = "qemu"; # Or "raw" if not qcow2 + device = "disk"; # Or "cdrom" for ISO + bus = "virtio"; + } + ]; + + # Network configuration + networks = [ + { + type = "bridge"; + source = haosBridge; + model = "virtio"; # Use virtio for better performance + } + ]; + + # OS type and variant (generic is often fine for appliances) + os = { + type = "hvm"; # Hardware Virtual Machine + variant = "generic"; + }; + + # No graphical output (headless VM) + graphics = { + type = "none"; + }; + + # Boot from UEFI + boot = { + uefi = true; + }; + + # Optional: Console for debugging + console = { + type = "pty"; + targetType = "serial"; + targetPort = 0; + }; + }; + }; + }; + }; +} \ No newline at end of file