diff --git a/flake.lock b/flake.lock index 40aeb2b..9d84693 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1750973805, - "narHash": "sha256-BZXgag7I0rnL/HMHAsBz3tQrfKAibpY2vovexl2lS+Y=", + "lastModified": 1755810213, + "narHash": "sha256-QdenO8f0PTg+tC6HuSvngKcbRZA5oZKmjUT+MXKOLQg=", "owner": "nix-community", "repo": "home-manager", - "rev": "080e8b48b0318b38143d5865de9334f46d51fce3", + "rev": "6911d3e7f475f7b3558b4f5a6aba90fa86099baa", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750776420, - "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", "type": "github" }, "original": { 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 f9b648e..28d673f 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. @@ -22,12 +29,12 @@ boot.initrd.luks.devices."altssd".device = "/dev/disk/by-partuuid/c0500656-1527-a84d-82f0-8ad764dddc92"; fileSystems."/mnt/arch" = - { device = "/dev/disk/by-uuid/72db20ba-4dbd-4fb7-891c-b457e2cf9648"; + { device = "/dev/disk/by-uuid/4eda05c2-d434-495d-97a0-8a81e8a533ec"; fsType = "btrfs"; #options = [ "subvolid=5" ]; }; fileSystems."/mnt/arch/home" = - { device = "/dev/disk/by-uuid/4eda05c2-d434-495d-97a0-8a81e8a533ec"; + { device = "/dev/disk/by-uuid/72db20ba-4dbd-4fb7-891c-b457e2cf9648"; fsType = "btrfs"; #options = [ "subvolid=5" ]; }; @@ -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 = [ # { @@ -177,7 +190,8 @@ "wolcen" = import ./home.nix; }; }; - + # Install kdeconnect (also opens firewall ports) + programs.kdeconnect.enable = true; # Install firefox. programs.firefox.enable = true; @@ -221,6 +235,10 @@ # $ nix search wget environment.systemPackages = with pkgs; [ binutils # gnu bin utils + # conda # python environment management + uv # alternative for python env management... + sqlite-interactive # sqlite cli + duckdb # wanted mostly as cli for SQL on csv files neovim # next gen vim w/lua wget # url fetcher/spider curl # url fetcher @@ -274,8 +292,8 @@ lutris # game launcher (EA/Humble/Ubi++) cruft # python-based template processor nmap # network mapping/scanning tool - # basalt-monado # tracking for VR - # opencomposite # compatibility layer for VR + basalt-monado # tracking for VR + opencomposite # compatibility layer for VR # why did these two disappear??? usbutils # provide lsusb, etc. pciutils # provide lspci, etc. @@ -443,17 +461,34 @@ }; # VR #Commmand: `renice -20 -p $(pgrep monado)` may help w/issues - # services.monado = { - # enable = true; - # defaultRuntime = true; # Register as default OpenXR runtime - # forceDefaultRuntime = true; # Register as default OpenXR runtime for each user (remove home-manager file) - # }; - #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 - #}; + services.monado = { + 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"; + }; # allow clock adjustments/priority change, etc (gamemoderun ./game) # https://wiki.nixos.org/wiki/GameMode programs.gamemode.enable = true; # for performance mode diff --git a/hosts/default/home.nix b/hosts/default/home.nix index 3d0f956..271a2a6 100644 --- a/hosts/default/home.nix +++ b/hosts/default/home.nix @@ -73,30 +73,30 @@ # EDITOR = "emacs"; }; # For Monado: - # xdg.configFile."openxr/1/active_runtime.json".source = "${pkgs.monado}/share/openxr/1/openxr_monado.json"; + xdg.configFile."openxr/1/active_runtime.json".source = "${pkgs.monado}/share/openxr/1/openxr_monado.json"; # For WiVRn: - # xdg.configFile."openxr/1/active_runtime.json".source = "${pkgs.wivrn}/share/openxr/1/openxr_wivrn.json"; + #xdg.configFile."openxr/1/active_runtime.json".source = "${pkgs.wivrn}/share/openxr/1/openxr_wivrn.json"; - # xdg.configFile."openvr/openvrpaths.vrpath".text = '' - # { - # "config" : - # [ - # "${config.xdg.dataHome}/Steam/config" - # ], - # "external_drivers" : null, - # "jsonid" : "vrpathreg", - # "log" : - # [ - # "${config.xdg.dataHome}/Steam/logs" - # ], - # "runtime" : - # [ - # "${pkgs.opencomposite}/lib/opencomposite" - # ], - # "version" : 1 - # } - # ''; + xdg.configFile."openvr/openvrpaths.vrpath".text = '' + { + "config" : + [ + "${config.xdg.dataHome}/Steam/config" + ], + "external_drivers" : null, + "jsonid" : "vrpathreg", + "log" : + [ + "${config.xdg.dataHome}/Steam/logs" + ], + "runtime" : + [ + "${pkgs.opencomposite}/lib/opencomposite" + ], + "version" : 1 + } + ''; # Let Home Manager install and manage itself. programs.home-manager.enable = true; } 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 +