{ config, pkgs, home-manager, ... }: { virtualisation = { libvirtd = { enable = true; qemu.ovmf.enable = true; qemu.swtpm.enable = true; qemu.ovmf.packages = [ pkgs.OVMFFull ]; }; spiceUSBRedirection.enable = true; }; services.spice-vdagentd.enable = true; environment.systemPackages = with pkgs; [ virt-manager virt-viewer spice spice-gtk spice-protocol win-virtio win-spice # quickemu spicy ]; users.extraGroups.vboxusers.members = [ "jsutter" ]; environment.sessionVariables.LIBVIRT_DEFAULT_URI = [ "qemu:///system" ]; boot.kernelModules = [ "kvm-intel" "kvm-amd" ]; # Enable network-online.target systemd.services.network-online = { enable = true; wantedBy = [ "network.target" ]; }; # Configure networkd-wait-online systemd.network.networkd-wait-online = { enable = true; requiredFor = [ "br0" ]; timeout = 30; }; # Define the bridge networking = { bridges.br0 = { interfaces = [ "eth0" "wlan0" ]; # Adjust as needed useDHCP = true; }; }; # Tie services to network-online.target systemd.services.libvirtd = { after = [ "network-online.target" ]; wants = [ "network-online.target" ]; }; # Optional: Add a debug hook systemd.services.network-debug = { description = "Log network status"; serviceConfig = { ExecStart = "/bin/bash -c 'ip a && journalctl -u network.target'"; Type = "oneshot"; }; wantedBy = [ "network-online.target" ]; }; virtualisation.libvirtd.allowedBridges = [ "br0" ]; }