VFIO - GPU Passthrough and looking-glass
This commit is contained in:
parent
fed8eb6e7c
commit
86837d211a
5 changed files with 57 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./vm.nix
|
./vm.nix
|
||||||
|
./vfio.nix
|
||||||
./steam.nix
|
./steam.nix
|
||||||
./polkit.nix
|
./polkit.nix
|
||||||
./appimage.nix
|
./appimage.nix
|
||||||
|
|
51
hosts/common/services/vfio.nix
Normal file
51
hosts/common/services/vfio.nix
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
{ config
|
||||||
|
, lib
|
||||||
|
, pkgs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.common.services.appimage;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.common.services.vfio.enable = mkEnableOption "enable GPU Passthrough with looking-glass";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
looking-glass-client
|
||||||
|
scream
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "vfio-pci" "nvidia" ];
|
||||||
|
boot.initrd.preDeviceCommands = ''
|
||||||
|
DEVS="0000:01:00.0" # Set your GPU here
|
||||||
|
for DEV in $DEVS; do
|
||||||
|
echo "vfio-pci" > /sys/bus/pci/devices/$DEV/driver_override
|
||||||
|
done
|
||||||
|
modprobe -i vfio-pci
|
||||||
|
'';
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
boot.kernelParams = [ "intel_iommu=on" "pcie_aspm=off" ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ]; #kvm-amd if AMD
|
||||||
|
boot.blacklistedKernelModules = [ "nouveau" "nvidia" "nvidiafb" "nvidia_drm" ];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"f /dev/shm/scream 0660 nomad qemu-libvirtd -" # your username
|
||||||
|
"f /dev/shm/looking-glass 0660 nomad qemu-libvirtd -" # your username
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.user.services.scream-ivshmem = {
|
||||||
|
enable = true;
|
||||||
|
description = "Scream IVSHMEM";
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.scream}/bin/scream-ivshmem-pulse /dev/shm/scream";
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
requires = [ "pulseaudio.service" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -24,6 +24,7 @@ in
|
||||||
win-virtio
|
win-virtio
|
||||||
win-spice
|
win-spice
|
||||||
adwaita-icon-theme
|
adwaita-icon-theme
|
||||||
|
virtiofsd
|
||||||
#bridge-utils
|
#bridge-utils
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,9 @@
|
||||||
common.services.xdgportal.enable = true;
|
common.services.xdgportal.enable = true;
|
||||||
# Filemanager
|
# Filemanager
|
||||||
common.services.nautilus.enable = true;
|
common.services.nautilus.enable = true;
|
||||||
# Virtual Box (Virt-Manager)
|
# Virtual Box (Virt-Manager) and GPU Passthru. you have to configure hosts/services/vfio.nix for passthrough to work!
|
||||||
common.services.vm.enable = false;
|
common.services.vm.enable = true;
|
||||||
|
common.services.vfio.enable = false;
|
||||||
# AppStores
|
# AppStores
|
||||||
common.services.appimage.enable = true;
|
common.services.appimage.enable = true;
|
||||||
common.services.steam.enable = true;
|
common.services.steam.enable = true;
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" ];
|
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" ];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ "nvidia" ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue