summary refs log tree commit diff
path: root/pkgs/ngfx.nix
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-10-17 21:44:02 +0200
committerMel <einebeere@gmail.com>2024-10-17 21:44:02 +0200
commite4941c5118f52072f8d984a1afbe44a7bd94fb56 (patch)
treeca239f01654581b1e744229ac97bf067bed83455 /pkgs/ngfx.nix
parentef6a9d75aaa6a7a8cf455f5f63fa0d58aabfb433 (diff)
downloadminerals-e4941c5118f52072f8d984a1afbe44a7bd94fb56.tar.zst
minerals-e4941c5118f52072f8d984a1afbe44a7bd94fb56.zip
NVIDIA Nsight Graphics launch wrapper and desktop file
Signed-off-by: Mel <einebeere@gmail.com>
Diffstat (limited to 'pkgs/ngfx.nix')
-rw-r--r--pkgs/ngfx.nix44
1 files changed, 44 insertions, 0 deletions
diff --git a/pkgs/ngfx.nix b/pkgs/ngfx.nix
new file mode 100644
index 0000000..d01bc21
--- /dev/null
+++ b/pkgs/ngfx.nix
@@ -0,0 +1,44 @@
+{
+  lib, writeScriptBin, makeDesktopItem, symlinkJoin,
+  krb5, xcb-util-cursor, xorg, steam-run, ... 
+}:
+
+# Note that this package does not install NVIDIA Nsight Graphics
+# by itself, it needs to be installed to `/opt/nvidia` to work.
+
+# Wrapper script fixing Qt errors mostly taken from:
+# https://github.com/teevik/Config/blob/main/modules/home/development/glsl/default.nix
+let
+  libPath = lib.makeLibraryPath [
+    krb5 # libgssapi_krb5.so.2
+    xcb-util-cursor # libxcb-cursor.so.0
+    xorg.xcbutilimage # libxcb-image.so.0
+    xorg.xcbutilkeysyms # libxcb-keysyms.so.1
+    xorg.xcbutilrenderutil # libxcb-render-util.so.0
+    xorg.xcbutilwm # libxcb-icccm.so.4
+  ];
+
+  # TODO: Make so it find the proper version itself...
+  nsightPath = "/opt/nvidia/NVIDIA-Nsight-Graphics-2024.2/host/linux-desktop-nomad-x64";
+
+  ngfx-wrapper-script = writeScriptBin "ngfx-wrapper" ''
+    ngfx_ui="${nsightPath}/ngfx-ui"
+    export LD_LIBRARY_PATH="''$LD_LIBRARY_PATH":"${nsightPath}":${libPath}
+    # Fixes:
+    # Could not find the Qt platform plugin "wayland" in ""
+    # Could not find the Qt platform plugin "xcb" in ""
+    export QT_PLUGIN_PATH="${nsightPath}/Plugins"
+    "${steam-run}"/bin/steam-run "''$ngfx_ui"
+  '';
+
+  ngfx-desktop = makeDesktopItem {
+    name = "ngfx-ui";
+    desktopName = "NVIDIA Nsight Graphics";
+    icon = ../assets/nvidia-nsight-graphics.png;
+    exec = "${ngfx-wrapper-script}/bin/ngfx-wrapper %f";
+  };
+
+in symlinkJoin {
+  name = "nvidia-nsight-graphics-wrapper";
+  paths = [ ngfx-wrapper-script ngfx-desktop ];
+}