From c583bee02db8b5d849bd272791c3d7581898df99 Mon Sep 17 00:00:00 2001 From: "Chris (wolcen) Thompson" Date: Mon, 2 Jun 2025 13:35:32 -0400 Subject: [PATCH 1/7] Ensure firewall is active ...it was, but there's still a rule I don't understand, despite nmap results looking good --- hosts/default/configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index c48d659..fce8bac 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -190,6 +190,7 @@ #networking.firewall.allowedTCPPorts = [ 9003 ]; networking.firewall = { + enable = true; allowedTCPPorts = [ 9003 ]; allowedUDPPorts = [ 51820 ]; # if packets are still dropped, they will show up in dmesg From 72c8b7993f89202adf5033ce49efdad939e3dc96 Mon Sep 17 00:00:00 2001 From: "Chris (wolcen) Thompson" Date: Mon, 2 Jun 2025 13:35:59 -0400 Subject: [PATCH 2/7] Clean up comments and yes, it existed --- hosts/default/configuration.nix | 7 ------- 1 file changed, 7 deletions(-) diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index fce8bac..98f13a3 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -250,7 +250,6 @@ libreoffice-qt # libreoffice - qt is best for KDE hunspell # spell checking hunspellDicts.en_US # spell check dictionary - #corectl # this doesn't exist???? magic-wormhole # transfer files with ease screen # terminal multiplexer...from GNU gnumake # build automation tool @@ -460,12 +459,6 @@ programs.steam.gamescopeSession.enable = true; - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave From 6dc683484ddcf85047d4c86a6ebe914c8429bca4 Mon Sep 17 00:00:00 2001 From: "Chris (wolcen) Thompson" Date: Sun, 8 Jun 2025 12:16:37 -0400 Subject: [PATCH 3/7] Add disable panel self-refresh to fix AMDGPU bug/hang and switch back to zen kernel --- hosts/default/configuration.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index 98f13a3..5633617 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -55,11 +55,14 @@ # Temporarily pin to 6.12 to fix llvm/rocm build # https://github.com/NixOS/nixpkgs/issues/368672#issuecomment-2608697421 # boot.kernelPackages = pkgs.linuxPackages_6_12; - # boot.kernelPackages = pkgs.linuxPackages_zen; + boot.kernelPackages = pkgs.linuxPackages_zen; # nct6775 - for monitoring functions on ASUS ROG STRIX B550-F GAMING WIFI II # kvm-amd - AMD virtualization support boot.kernelModules = [ "kvm-amd" "nct6775" ]; + # Problems with hangs on RX6700 + boot.kernelParams = [ "amdgpu.dcdebugmask=0x10" ]; + # Direct patching for enabling for async reprojection (for SteamVR) on AMD # boot.kernelPatches = [ # { From aa5e020a300a2ec0185b629a97f979febb8252fa Mon Sep 17 00:00:00 2001 From: "Chris (wolcen) Thompson" Date: Sun, 8 Jun 2025 12:16:54 -0400 Subject: [PATCH 4/7] Update firewall rules for Ollama server --- hosts/default/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index 5633617..10e4288 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -201,8 +201,8 @@ checkReversePath = "loose"; extraCommands = '' # Enable connections to Ollama for VPN users: + iptables -t filter -I INPUT --protocol TCP --source 10.40.4.0/24 --destination 10.40.4.2 --dport 8080 -j ACCEPT iptables -t filter -I INPUT --protocol TCP --source 10.40.4.2/32 --destination 10.40.4.2 --dport 11434 -j ACCEPT - iptables -t filter -I INPUT --protocol TCP --source 10.0.7.0/24 --destination 10.40.4.2 --dport 11434 -j ACCEPT ''; # wireguard trips rpfilter up #extraCommands = '' From 74f8e773118b9710ce18e3814f5d63394425484d Mon Sep 17 00:00:00 2001 From: "Chris (wolcen) Thompson" Date: Fri, 27 Jun 2025 20:45:52 -0400 Subject: [PATCH 5/7] Update flake.lock --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 18ba42e..40aeb2b 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1748737919, - "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", + "lastModified": 1750973805, + "narHash": "sha256-BZXgag7I0rnL/HMHAsBz3tQrfKAibpY2vovexl2lS+Y=", "owner": "nix-community", "repo": "home-manager", - "rev": "5675a9686851d9626560052a032c4e14e533c1fa", + "rev": "080e8b48b0318b38143d5865de9334f46d51fce3", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748460289, - "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "lastModified": 1750776420, + "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", "owner": "nixos", "repo": "nixpkgs", - "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", "type": "github" }, "original": { From cb97b90ca3b807f402f8f3ec0f18f3d2a8a1862f Mon Sep 17 00:00:00 2001 From: "Chris (wolcen) Thompson" Date: Fri, 27 Jun 2025 21:05:08 -0400 Subject: [PATCH 6/7] Attempt individual kernel module build --- hosts/default/amdgpu.nix | 38 +++++++++++++++++++ hosts/default/configuration.nix | 15 +++++++- .../default/patches/cap_sys_nice_begone.patch | 26 +++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 hosts/default/amdgpu.nix create mode 100644 hosts/default/patches/cap_sys_nice_begone.patch diff --git a/hosts/default/amdgpu.nix b/hosts/default/amdgpu.nix new file mode 100644 index 0000000..08d7dd4 --- /dev/null +++ b/hosts/default/amdgpu.nix @@ -0,0 +1,38 @@ +{ pkgs +, lib +, kernel ? pkgs.linuxPackages_latest.kernel +}: + +pkgs.stdenv.mkDerivation { + pname = "amdgpu-kernel-module"; + inherit (kernel) src version postPatch nativeBuildInputs; + + kernel_dev = kernel.dev; + kernelVersion = kernel.modDirVersion; + + modulePath = "drivers/gpu/drm/amd/amdgpu"; + + buildPhase = '' + BUILT_KERNEL=$kernel_dev/lib/modules/$kernelVersion/build + + cp $BUILT_KERNEL/Module.symvers . + cp $BUILT_KERNEL/.config . + cp $kernel_dev/vmlinux . + + make "-j$NIX_BUILD_CORES" modules_prepare + make "-j$NIX_BUILD_CORES" M=$modulePath modules + ''; + + installPhase = '' + make \ + INSTALL_MOD_PATH="$out" \ + XZ="xz -T$NIX_BUILD_CORES" \ + M="$modulePath" \ + modules_install + ''; + + meta = { + description = "AMD GPU kernel module"; + license = lib.licenses.gpl3; + }; +} diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index 10e4288..bfb9e8b 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -10,6 +10,13 @@ { config, pkgs, inputs, ... }: +# Direct patching to enable async reprojection (for SteamVR) on AMD +let + amdgpu-kernel-module = pkgs.callPackage ./amdgpu.nix { + # Make sure the module targets the same kernel as your system is using. + kernel = config.boot.kernelPackages.kernel; + }; +in { imports = [ # Include the results of the hardware scan. @@ -60,9 +67,15 @@ # kvm-amd - AMD virtualization support boot.kernelModules = [ "kvm-amd" "nct6775" ]; - # Problems with hangs on RX6700 + # Fix problems with hanging on RX6700 (disables PSR - Panel Self Refresh) boot.kernelParams = [ "amdgpu.dcdebugmask=0x10" ]; + boot.extraModulePackages = [ + (amdgpu-kernel-module.overrideAttrs (_: { + patches = [ ./patches/cap_sys_nice_begone.patch ]; + })) + ]; + # Direct patching for enabling for async reprojection (for SteamVR) on AMD # boot.kernelPatches = [ # { diff --git a/hosts/default/patches/cap_sys_nice_begone.patch b/hosts/default/patches/cap_sys_nice_begone.patch new file mode 100644 index 0000000..c1457fd --- /dev/null +++ b/hosts/default/patches/cap_sys_nice_begone.patch @@ -0,0 +1,26 @@ +From fe059b4c373639fc5d69067e62de3f2a0e44a037 Mon Sep 17 00:00:00 2001 +From: Sefa Eyeoglu +Date: Fri, 17 Mar 2023 16:50:57 +0100 +Subject: [PATCH] amdgpu: allow any ctx priority + +Signed-off-by: Sefa Eyeoglu +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +index d2139ac12159..c7f1d36329c8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +@@ -107,7 +107,7 @@ static int amdgpu_ctx_priority_permit(struct drm_file *filp, + if (drm_is_current_master(filp)) + return 0; + +- return -EACCES; ++ return 0; + } + + static enum amdgpu_gfx_pipe_priority amdgpu_ctx_prio_to_gfx_pipe_prio(int32_t prio) +-- +2.39.2 + From dcd50a4b96799b368747cc31abd96e268e57b657 Mon Sep 17 00:00:00 2001 From: "Chris (wolcen) Thompson" Date: Sat, 28 Jun 2025 01:00:21 -0400 Subject: [PATCH 7/7] Working VR holy heck...never thought this would happen --- hosts/default/configuration.nix | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index bfb9e8b..172a03f 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -460,13 +460,30 @@ in enable = true; defaultRuntime = true; # Register as default OpenXR runtime forceDefaultRuntime = true; # Register as default OpenXR runtime for each user (remove home-manager file) + highPriority = true; + package = (pkgs.monado.overrideAttrs { + pname = "monado-wmr-controllers"; # optional but helps distinguishing between packages + + src = pkgs.fetchFromGitLab { + domain = "gitlab.freedesktop.org"; + owner = "thaytan"; + repo = "monado"; + rev = "467166935eea0183a8c8f5884c4ecd20c0eeacfb"; + hash = "sha256-IKO/bhUsISmRb3k+wAEscuTUXDyrzyVYQG1eJkLCIUI="; + }; + + patches = []; + }); + }; + systemd.user.services.monado.environment = { + WMR_HANDTRACKING = "0"; # Enable for hand tracking + XRT_PRINT_OPTIONS = "1"; # Enable printing env vars set/available + VIT_SYSTEM_LIBRARY_PATH = "${pkgs.basalt-monado}/lib/libbasalt.so"; + XRT_COMPOSITOR_COMPUTE = "1"; + STEAMVR_LH_ENABLE = "0"; + U_PACING_COMP_MIN_TIME_MS = "5"; + XRT_COMPOSITOR_DESIRED_MODE = "1"; }; - #systemd.user.services.monado.environment = { - # WMR_HANDTRACKING = "0"; # Enable for hand tracking - # XRT_PRINT_OPTIONS = "1"; # Enable printing env vars set/available - # VIT_SYSTEM_LIBRARY_PATH = "${pkgs.basalt-monado}/lib/libbasalt.so"; - # #U_PACING_COMP_MIN_TIME_MS = "5"; # This is a tweak for something...I forgot - #}; # allow clock adjustments/priority change, etc (gamemoderun ./game) # https://wiki.nixos.org/wiki/GameMode programs.gamemode.enable = true; # for performance mode