{ config, pkgs, lib, ... }: with lib; { options = { cpu.cores = mkOption { type = types.int; default = 2; description = "Number of CPU cores."; }; cpu.model = mkOption { type = types.str; default = "host"; description = "CPU model."; }; kvm = mkOption { type = types.bool; default = true; description = "Enable KVM."; }; arch = mkOption { type = types.str; default = "x86_64"; description = "Architecture of the VM."; }; pc.type = mkOption { type = types.str; default = "q35"; description = "PC type."; }; bios.efi = mkOption { type = types.bool; default = true; description = "Enable EFI BIOS."; }; bios.tpm = mkOption { type = types.bool; default = false; description = "Enable TPM BIOS."; }; mem.size = mkOption { type = types.int; default = 1024; description = "Memory size in MB."; }; mem.balloon = mkOption { type = types.bool; default = false; description = "Enable memory ballooning."; }; disks.os.file = mkOption { type = types.path; description = "Path to the OS disk image."; }; disks.os.persist = mkOption { type = types.bool; default = false; description = "Persist OS disk changes."; }; disks.iso.file = mkOption { type = types.nullOr types.path; description = "Path to the ISO file."; default = null; }; disks.add = mkOption { default = {}; type = types.attrsOf (types.submodule { options = { file = mkOption { type = types.path; description = "Path to the additional disk."; }; mounts = mkOption { type = types.attrsOf types.str; description = "Mount points for the additional disk."; }; opts = mkOption { type = types.str; description = "additional options in QEMU args for this disk"; }; }; }); description = "Additional disks."; }; shares = mkOption { default = {}; type = types.attrsOf (types.submodule { options = { source = mkOption { type = types.path; description = "Source path for the shared directory."; }; target = mkOption { type = types.str; description = "Target path inside the VM for the shared directory."; }; }; }); description = "Shared directories."; }; disks.bus = mkOption { type = types.str; default = "virtio"; description = "Bus type for the disks."; }; boot.order = mkOption { type = types.listOf types.str; description = "Boot order."; default = [ "os" "iso" ]; }; boot.menu = mkOption { type = types.bool; default = false; description = "Enable boot menu."; }; network.user.enable = mkOption { type = types.bool; default = false; description = "enable qemu user networking"; }; network.vmix = mkOption { default = {}; type = types.attrsOf (types.submodule { options = { lans = mkOption { default = {}; type = types.attrsOf (types.submodule { options = { enable = mkOption { type = types.bool; default = false; description = "Enable the LAN interface."; }; mac = mkOption { type = types.str; description = "MAC address for the LAN interface."; }; }; }); description = "LAN interfaces."; }; macvtaps = mkOption { default = {}; type = types.attrsOf (types.submodule { options = { enable = mkOption { type = types.bool; default = false; description = "Enable the MACVTap interface."; }; mac = mkOption { type = types.nullOr types.str; default = null; description = "MAC address for the MACVTap interface."; }; }; }); description = "MACVTap interfaces."; }; }; }); description = "Network interfaces."; }; }; }