Files
nix-config/modules/nixos/desktop/virtualisation.nix
2024-02-17 04:36:41 +08:00

65 lines
2.3 KiB
Nix

{pkgs, ...}: {
###################################################################################
#
# Virtualisation - Libvirt(QEMU/KVM) / Docker / LXD / WayDroid
#
###################################################################################
# Enable nested virsualization, required by security containers and nested vm.
# This should be set per host in /hosts, not here.
#
## For AMD CPU, add "kvm-amd" to kernelModules.
# boot.kernelModules = ["kvm-amd"];
# boot.extraModprobeConfig = "options kvm_amd nested=1"; # for amd cpu
#
## For Intel CPU, add "kvm-intel" to kernelModules.
# boot.kernelModules = ["kvm-intel"];
# boot.extraModprobeConfig = "options kvm_intel nested=1"; # for intel cpu
boot.kernelModules = ["vfio-pci"];
virtualisation = {
docker = {
enable = true;
daemon.settings = {
# enables pulling using containerd, which supports restarting from a partial pull
# https://docs.docker.com/storage/containerd/
"features" = {"containerd-snapshotter" = true;};
};
# start dockerd on boot.
# This is required for containers which are created with the `--restart=always` flag to work.
enableOnBoot = true;
};
libvirtd = {
enable = true;
# hanging this option to false may cause file permission issues for existing guests.
# To fix these, manually change ownership of affected files in /var/lib/libvirt/qemu to qemu-libvirtd.
qemu.runAsRoot = true;
};
waydroid.enable = true;
lxd.enable = true;
};
environment.systemPackages = with pkgs; [
# Need to add [File (in the menu bar) -> Add connection] when start for the first time
virt-manager
# QEMU/KVM(HostCpuOnly), provides:
# qemu-storage-daemon qemu-edid qemu-ga
# qemu-pr-helper qemu-nbd elf2dmp qemu-img qemu-io
# qemu-kvm qemu-system-x86_64 qemu-system-aarch64 qemu-system-i386
qemu_kvm
# Install QEMU(other architectures), provides:
# ......
# qemu-loongarch64 qemu-system-loongarch64
# qemu-riscv64 qemu-system-riscv64 qemu-riscv32 qemu-system-riscv32
# qemu-system-arm qemu-arm qemu-armeb qemu-system-aarch64 qemu-aarch64 qemu-aarch64_be
# qemu-system-xtensa qemu-xtensa qemu-system-xtensaeb qemu-xtensaeb
# ......
qemu
];
}