70 lines
1.3 KiB
Nix
70 lines
1.3 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
cfg = config.custom.kernel.vfio;
|
|
in
|
|
{
|
|
options.custom.kernel.vfio = {
|
|
enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
};
|
|
};
|
|
config = lib.mkIf cfg.enable {
|
|
hardware.nvidia = lib.mkForce {
|
|
modesetting.enable = false;
|
|
};
|
|
services.xserver.videoDrivers = [
|
|
"amdgpu"
|
|
];
|
|
boot = {
|
|
extraModulePackages = [ config.boot.kernelPackages.kvmfr ];
|
|
extraModprobeConfig = ''
|
|
options kvmfr static_size_mb=128
|
|
'';
|
|
kernelParams = [
|
|
"vfio-pci.ids=10de:2204,10de:1aef"
|
|
];
|
|
kernelModules = [ "kvmfr" ];
|
|
initrd.availableKernelModules = [
|
|
"nvme"
|
|
"xhci_pci"
|
|
"ahci"
|
|
"usbhid"
|
|
"sd_mod"
|
|
"uas"
|
|
"usbcore"
|
|
"usb_storage"
|
|
"vfat"
|
|
"nls_cp437"
|
|
"nls_iso8859_1"
|
|
"virtio_pci"
|
|
"virtio_blk"
|
|
"virtio_net"
|
|
"virtio_ring"
|
|
];
|
|
initrd.kernelModules = [
|
|
"vfio_pci"
|
|
"vfio_iommu_type1"
|
|
"vfio"
|
|
|
|
"amdgpu"
|
|
"kvmfr"
|
|
"kvm-amd"
|
|
];
|
|
};
|
|
services = {
|
|
udev.extraRules = ''
|
|
SUBSYSTEM=="kvmfr", OWNER="user", GROUP="kvm", MODE="0660"
|
|
'';
|
|
};
|
|
|
|
environment.systemPackages = [
|
|
pkgs.looking-glass-client
|
|
];
|
|
};
|
|
}
|