65 lines
1.4 KiB
Nix
65 lines
1.4 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";
|
|
qemu = {
|
|
package = pkgs.qemu_kvm;
|
|
runAsRoot = true;
|
|
swtpm.enable = true;
|
|
};
|
|
};
|
|
|
|
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;
|
|
};
|
|
}
|