From 0ce51ec458b0f6ab47363fd603ff8974873f0ed0 Mon Sep 17 00:00:00 2001 From: js0ny Date: Mon, 10 Nov 2025 18:08:32 +0000 Subject: [PATCH] refractor(nvidia): Keep vfio config, rollback to disable-nvidia --- nixcfgs/hosts/zephyrus/default.nix | 2 +- .../modules/nixos/hardware/nvidia-vfio.nix | 24 ----------- .../hardware/{ => nvidia}/nvidia-disable.nix | 0 .../{nvidia.nix => nvidia/nvidia-enable.nix} | 0 .../nixos/hardware/nvidia/nvidia-vfio.nix | 42 +++++++++++++++++++ .../modules/nixos/hardware/udev/basys3.nix | 1 + 6 files changed, 44 insertions(+), 25 deletions(-) delete mode 100644 nixcfgs/modules/nixos/hardware/nvidia-vfio.nix rename nixcfgs/modules/nixos/hardware/{ => nvidia}/nvidia-disable.nix (100%) rename nixcfgs/modules/nixos/hardware/{nvidia.nix => nvidia/nvidia-enable.nix} (100%) create mode 100644 nixcfgs/modules/nixos/hardware/nvidia/nvidia-vfio.nix diff --git a/nixcfgs/hosts/zephyrus/default.nix b/nixcfgs/hosts/zephyrus/default.nix index 5f6923f..036250b 100644 --- a/nixcfgs/hosts/zephyrus/default.nix +++ b/nixcfgs/hosts/zephyrus/default.nix @@ -14,7 +14,7 @@ ../../modules/nixos/desktop/laptop.nix # hardware drivers - ../../modules/nixos/hardware/nvidia-vfio.nix + ../../modules/nixos/hardware/nvidia/nvidia-disable.nix # udev rules ../../modules/nixos/hardware/udev/basys3.nix diff --git a/nixcfgs/modules/nixos/hardware/nvidia-vfio.nix b/nixcfgs/modules/nixos/hardware/nvidia-vfio.nix deleted file mode 100644 index 397601c..0000000 --- a/nixcfgs/modules/nixos/hardware/nvidia-vfio.nix +++ /dev/null @@ -1,24 +0,0 @@ -# This is highly experimental and WIP. Do not use it. -{...}: { - boot.extraModprobeConfig = '' - blacklist nouveau - options nouveau modeset=0 - ''; - - services.xserver.videoDrivers = ["modesetting"]; - boot.blacklistedKernelModules = ["nouveau" "nvidia" "nvidia_drm" "nvidia_modeset"]; - hardware.nvidia = { - # enable = false; - modesetting.enable = false; - powerManagement.enable = false; - }; - # Enable ssh to solve issues temporarily - services.openssh = { - enable = true; - settings = { - UseDns = true; - PermitRootLogin = "no"; - PasswordAuthentication = true; - }; - }; -} diff --git a/nixcfgs/modules/nixos/hardware/nvidia-disable.nix b/nixcfgs/modules/nixos/hardware/nvidia/nvidia-disable.nix similarity index 100% rename from nixcfgs/modules/nixos/hardware/nvidia-disable.nix rename to nixcfgs/modules/nixos/hardware/nvidia/nvidia-disable.nix diff --git a/nixcfgs/modules/nixos/hardware/nvidia.nix b/nixcfgs/modules/nixos/hardware/nvidia/nvidia-enable.nix similarity index 100% rename from nixcfgs/modules/nixos/hardware/nvidia.nix rename to nixcfgs/modules/nixos/hardware/nvidia/nvidia-enable.nix diff --git a/nixcfgs/modules/nixos/hardware/nvidia/nvidia-vfio.nix b/nixcfgs/modules/nixos/hardware/nvidia/nvidia-vfio.nix new file mode 100644 index 0000000..484ae10 --- /dev/null +++ b/nixcfgs/modules/nixos/hardware/nvidia/nvidia-vfio.nix @@ -0,0 +1,42 @@ +# This is highly experimental and WIP. Do not use it. +# 2025-11-10 Update: +# ASUS ROG Zephyrus G14: can redirect GPU +# TODO: When installing windows, stuck at UEFI Shell +{...}: { + boot.extraModprobeConfig = '' + blacklist nouveau + options nouveau modeset=0 + options vfio-pci ids=10de:28e0,10de:22be + ''; + + boot.kernelParams = [ + "amd_iommu=on" + "iommu=pt" + # RTX 4060 Max-Q / Mobile: 10de:28e0 + # AD107 Audio Controller: 10de:22be + "vfio-pci.ids=10de:28e0,10de:22be" + ]; + + boot.initrd.kernelModules = [ + "vfio-pci" + "vfio" + "vfio_iommu_type1" + ]; + + services.xserver.videoDrivers = ["modesetting"]; + boot.blacklistedKernelModules = ["nouveau" "nvidiafb" "nvidia" "nvidia-uvm" "nvidia-drm" "nvidia-modeset"]; + hardware.nvidia = { + # enable = false; + modesetting.enable = false; + powerManagement.enable = false; + }; + # Enable ssh to solve issues temporarily + services.openssh = { + enable = true; + settings = { + UseDns = true; + PermitRootLogin = "no"; + PasswordAuthentication = true; + }; + }; +} diff --git a/nixcfgs/modules/nixos/hardware/udev/basys3.nix b/nixcfgs/modules/nixos/hardware/udev/basys3.nix index cf24c6e..5721d5b 100644 --- a/nixcfgs/modules/nixos/hardware/udev/basys3.nix +++ b/nixcfgs/modules/nixos/hardware/udev/basys3.nix @@ -1,5 +1,6 @@ {config, ...}: { # Xilinx Artix-7 Basys 3 + # See: https://www.devicekb.com/hardware/usb-vendors/vid_0403-pid_6010 services.udev.extraRules = '' ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010", MODE="0660", GROUP="dialout", SYMLINK+="basys3" '';