{ config, lib, pkgs, ... }: { options.szpont.virtualization = { enable = lib.mkOption { type = lib.types.bool; default = false; }; kvm = { enable = lib.mkOption { type = lib.types.bool; default = true; }; }; docker = { enable = lib.mkOption { type = lib.types.bool; default = false; }; }; }; config = lib.mkIf config.szpont.virtualization.enable (lib.mkMerge [ (lib.mkIf config.szpont.virtualization.kvm.enable { virtualisation.libvirtd = { enable = true; qemu.package = pkgs.qemu_kvm; qemu.swtpm.enable = true; }; programs.virt-manager.enable = true; users.users.adam.extraGroups = [ "libvirtd" ]; boot.initrd.kernelModules = [ "kvm-amd" ]; }) (lib.mkIf config.szpont.virtualization.docker.enable { virtualisation.docker.enable = true; environment.systemPackages = [ pkgs.docker-compose ]; users.users.adam.extraGroups = [ "docker" ]; }) ]); }