nixos-config/common/virtualization/libvirt.nix
2025-03-05 22:26:28 -05:00

60 lines
1.3 KiB
Nix

{
config,
pkgs,
user,
lib,
...
}:
{
options = {
libvirt.enable = lib.mkEnableOption "Enables Libvirt";
};
config = lib.mkIf config.libvirt.enable {
networking.firewall.trustedInterfaces = [ "virbr0" ];
boot.kernelModules = [ "kvm-amd" ];
environment.systemPackages = with pkgs; [
virt-manager
virtiofsd
# vagrant
];
users.users.${user} = {
extraGroups = [
"libvirtd"
"qemu-libvirtd"
"kvm"
];
};
# Allow VM to run as non-root without ulimit
security.pam.loginLimits = [
{
domain = "${user}";
type = "soft";
item = "memlock";
value = "20000000";
}
{
domain = "${user}";
type = "hard";
item = "memlock";
value = "20000000";
}
];
virtualisation.libvirtd = {
enable = true;
qemu.ovmf.enable = true;
qemu.runAsRoot = false;
onBoot = "ignore";
onShutdown = "shutdown";
};
users.extraGroups.libvirtd.members = [ "${user}" ];
# virtualisation.virtualbox.host.enable = true;
# users.extraGroups.vboxusers.members = [ "${user}" ];
# virtualisation.virtualbox.host.enableExtensionPack = true;
# virtualisation.virtualbox.guest.enable = true;
# virtualisation.virtualbox.guest.dragAndDrop = true;
};
}