#
# Qemu/KVM with virt-manager
#
{ config, pkgs, user, ... }:
{
users.groups.libvirtd.members = [ "root" "${user}" ];
users.groups.kvm.members = [ "root" "${user}" ];
virtualisation = {
libvirtd = {
enable = true; # Virtual drivers
#qemuPackage = pkgs.qemu_kvm; # Default
qemu = {
ovmf.enable = true;
ovmf.packages = [ pkgs.OVMFFull.fd ];
verbatimConfig = ''
nvram = [ "${pkgs.OVMF}/FV/OVMF.fd:${pkgs.OVMF}/FV/OVMF_VARS.fd" ]
'';
swtpm.enable = true;
};
};
spiceUSBRedirection.enable = true; # USB passthrough
};
environment = {
etc = {
"ovmf/edk2-x86_64-secure-code.fd" = {
source = config.virtualisation.libvirtd.qemu.package + "/share/qemu/edk2-x86_64-secure-code.fd";
};
"ovmf/edk2-i386-vars.fd" = {
source = config.virtualisation.libvirtd.qemu.package + "/share/qemu/edk2-i386-vars.fd";
};
};
systemPackages = with pkgs; [
virt-manager
virt-viewer
qemu
OVMF
gvfs # Used for shared folders between Linux and Windows
swtpm
];
};
services = { # Enable file sharing between OS
gvfs.enable = true;
};
}