nixos/desktop/virtualization.nix
Julian Sutter fe10584683 working?
2024-12-21 21:00:34 -08:00

73 lines
1.6 KiB
Nix
Executable file

{ 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" ];
}