From 94fa0540fc84928bcf961cb4f17ba2db44e4aede Mon Sep 17 00:00:00 2001 From: Kopatz <7265381+Kropatz@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:41:54 +0200 Subject: [PATCH] add allow unfree environment var --- modules/hardware/nvidia.nix | 2 +- modules/misc/hook.sh | 15 +++++++++------ modules/nix/settings.nix | 5 ++++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/modules/hardware/nvidia.nix b/modules/hardware/nvidia.nix index cce8848..b69dd98 100644 --- a/modules/hardware/nvidia.nix +++ b/modules/hardware/nvidia.nix @@ -32,7 +32,7 @@ in # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # Only available from driver 515.43.04+ # Currently alpha-quality/buggy, so false is currently the recommended setting. - open = false; + open = true; # Enable the Nvidia settings menu, # accessible via `nvidia-settings`. nvidiaSettings = true; diff --git a/modules/misc/hook.sh b/modules/misc/hook.sh index 37bac3b..e062cf8 100644 --- a/modules/misc/hook.sh +++ b/modules/misc/hook.sh @@ -10,6 +10,7 @@ STATE_NAME="$3" GPU_PCI="pci_0000_2b_00_0" GPU_AUDIO_PCI="pci_0000_2b_00_1" #GPU_MODULES="nvidia_uvm nvidia_drm nvidia_modeset nvidia" +set -x if [[ ! "$GUEST_NAME" =~ ^gpu_passthrough ]]; then exit 0 @@ -22,12 +23,14 @@ if [ "$HOOK_NAME" == "prepare" ] && [ "$STATE_NAME" == "begin" ]; then echo 0 > /sys/class/vtconsole/vtcon0/bind echo 0 > /sys/class/vtconsole/vtcon1/bind echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind + + sleep 2 # Unload kernel module - modprobe -r nvidia_uvm - modprobe -r nvidia_drm - modprobe -r nvidia_modeset - modprobe -r nvidia + rmmod nvidia_uvm + rmmod nvidia_drm + rmmod nvidia_modeset + rmmod nvidia # Detach GPU from host virsh nodedev-detach $GPU_PCI @@ -37,13 +40,12 @@ if [ "$HOOK_NAME" == "prepare" ] && [ "$STATE_NAME" == "begin" ]; then modprobe vfio-pci elif [ "$HOOK_NAME" == "release" ] && [ "$STATE_NAME" == "end" ]; then # Unload VFIO kernel modules - modprobe -r vfio-pci + #modprobe -r vfio-pci # Reattach GPU TO host virsh nodedev-reattach $GPU_PCI virsh nodedev-reattach $GPU_AUDIO_PCI - echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind # Load NVIDIA kernel modules modprobe nvidia @@ -53,6 +55,7 @@ elif [ "$HOOK_NAME" == "release" ] && [ "$STATE_NAME" == "end" ]; then echo 1 > /sys/class/vtconsole/vtcon0/bind echo 1 > /sys/class/vtconsole/vtcon1/bind + echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind # Start DM systemctl start display-manager.service fi diff --git a/modules/nix/settings.nix b/modules/nix/settings.nix index 3e74292..91b057d 100644 --- a/modules/nix/settings.nix +++ b/modules/nix/settings.nix @@ -13,6 +13,9 @@ in nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.registry.nixpkgs.flake = pkgsVersion; nix.nixPath = ["nixpkgs=flake:nixpkgs"]; - home-manager.users.${config.mainUser.name}.home.sessionVariables.NIX_PATH = "nixpkgs=flake:nixpkgs$\{NIX_PATH:+:$NIX_PATH}"; + home-manager.users.${config.mainUser.name}.home.sessionVariables = { + NIX_PATH = "nixpkgs=flake:nixpkgs$\{NIX_PATH:+:$NIX_PATH}"; + NIXPKGS_ALLOW_UNFREE = "1"; + }; }; }