This commit is contained in:
4DBug
2026-02-03 15:05:17 -06:00
parent bac01b58e4
commit d25f508b25
3 changed files with 421 additions and 6 deletions

314
vms/win10.nix Normal file
View File

@@ -0,0 +1,314 @@
{
nvramPath,
pkgs,
uuid,
}:
{
inherit uuid;
type = "kvm";
title = "Windows 10";
name = "win10";
description = "A Windows 10 vm define in nix";
sysinfo = {
type = "smbios";
bios.entry = [
{
name = "vendor";
value = "INSYDE Corp.";
}
{
name = "version";
value = "03.02";
}
{
name = "date";
value = "01/23/2024";
}
];
system.entry = [
{
name = "manufacturer";
value = "Framework";
}
{
name = "product";
value = "Laptop 16 (AMD Ryzen 7040 Series)";
}
{
name = "version";
value = "AG";
}
{
name = "serial";
value = "FRAGADDPAG4096006K";
}
{
name = "uuid";
value = uuid;
}
{
name = "sku";
value = "FRAGACCP0G";
}
{
name = "family";
value = "16in";
}
];
};
vcpu = {
count = 4;
placement = "static";
};
memory = {
count = 16;
unit = "GiB";
};
cputune = {
vcpupin = [
{
vcpu = 0;
cpuset = "4";
}
{
vcpu = 1;
cpuset = "5";
}
{
vcpu = 2;
cpuset = "6";
}
{
vcpu = 3;
cpuset = "7";
}
];
};
cpu = {
mode = "host-passthrough";
check = "none";
migratable = true;
cache = {
level = 3;
mode = "emulate";
};
feature = [
{
policy = "disable";
name = "hypervisor";
}
{
policy = "require";
name = "svm";
}
{
policy = "require";
name = "topoext";
}
];
topology = {
sockets = 1;
dies = 1;
cores = 2;
threads = 2;
};
};
# OS
os = {
type = "hvm";
arch = "x86_64";
machine = "pc-q35-8.2";
loader = {
readonly = true;
type = "pflash";
path = "${pkgs.OVMFFull.fd}/FV/OVMF_CODE.ms.fd";
};
nvram = {
template = "${pkgs.OVMFFull.fd}/FV/OVMF_VARS.ms.fd";
path = "${nvramPath}/win10gpu.nvram";
};
smbios.mode = "sysinfo";
};
features = {
acpi = { };
apic = { };
hyperv = {
mode = "custom";
relaxed = {
state = true;
};
vapic = {
state = true;
};
spinlocks = {
state = true;
retries = 8191;
};
vendor_id = {
state = true;
value = "1234567890ab";
};
};
kvm.hidden = {
state = true;
};
vmport.state = false;
};
clock = {
offset = "localtime";
timer = [
{
name = "rtc";
tickpolicy = "catchup";
}
{
name = "pit";
tickpolicy = "delay";
}
{
name = "hpet";
present = false;
}
{
name = "hypervclock";
present = true;
}
];
};
pm = {
suspend-to-mem = {
enabled = false;
};
suspend-to-disk = {
enabled = false;
};
};
devices = {
emulator = "${pkgs.qemu}/bin/qemu-system-x86_64";
# Disks
hostdev = [];
# Input
input = [
{
type = "keyboard";
bus = "virtio";
}
{
type = "mouse";
bus = "virtio";
}
];
# Video + Audio
graphics = {
type = "spice";
autoport = true;
listen = {
type = "address";
};
image = {
compression = false;
};
};
video = {
model = {
type = "vga";
vram = 65536;
heads = 1;
primary = true;
};
};
sound = {
model = "ich9";
};
audio = {
id = 1;
type = "spice";
};
# Interfaces
controller = [
{
type = "usb";
index = 0;
model = "qemu-xhci";
ports = 15;
}
{
type = "pci";
index = 0;
model = "pcie-root";
}
{
type = "virtio-serial";
index = 0;
}
];
serial = [
{
type = "pty";
target = {
type = "isa-serial";
port = 0;
model.name = "isa-serial";
};
}
];
console = [
{
type = "pty";
target = {
type = "serial";
port = 0;
};
}
];
channel = [
{
type = "spicevmc";
target = {
type = "virtio";
name = "com.redhat.spice.0";
};
}
];
# Other
watchdog = {
model = "itco";
action = "reset";
};
memballoon.model = "none";
};
qemu-commandline = {
arg = [
{ value = "-cpu"; }
{ value = "host,kvm=off,hv_time,hv_vendor_id=null,-hypervisor"; }
{ value = "-machine"; }
{ value = "q35"; }
{ value = "-device"; }
{ value = "{\"driver\":\"ivshmem-plain\",\"id\":\"shmem0\",\"memdev\":\"looking-glass\"}"; }
{ value = "-object"; }
{
value = "{\"qom-type\":\"memory-backend-file\",\"id\":\"looking-glass\",\"mem-path\":\"/dev/kvmfr0\",\"size\":134217728,\"share\":true}";
}
];
};
}