From 87ae7fe2470d30542142aeebdfd66e10f7900066 Mon Sep 17 00:00:00 2001 From: PassiveLemon Date: Sun, 20 Oct 2024 13:12:57 -0400 Subject: [PATCH] wivrn: 0.19 -> 0.22 --- .../wi/wivrn/force-enable-steamvr_lh.patch | 13 ++ pkgs/by-name/wi/wivrn/package.nix | 203 +++++++++++++----- 2 files changed, 161 insertions(+), 55 deletions(-) create mode 100644 pkgs/by-name/wi/wivrn/force-enable-steamvr_lh.patch diff --git a/pkgs/by-name/wi/wivrn/force-enable-steamvr_lh.patch b/pkgs/by-name/wi/wivrn/force-enable-steamvr_lh.patch new file mode 100644 index 000000000000..7ea67c738506 --- /dev/null +++ b/pkgs/by-name/wi/wivrn/force-enable-steamvr_lh.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6c7956b4c..633fb6f72 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -205,6 +205,7 @@ option(BUILD_TESTING "Enable building of the test suite?" ON) + if(EXISTS "$ENV{HOME}/.steam/root") + set(XRT_HAVE_STEAM YES) + endif() ++set(XRT_HAVE_STEAM YES) + + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + set(XRT_HAVE_INTERNAL_HID ON) + diff --git a/pkgs/by-name/wi/wivrn/package.nix b/pkgs/by-name/wi/wivrn/package.nix index f795ec72b348..452d14a3082a 100644 --- a/pkgs/by-name/wi/wivrn/package.nix +++ b/pkgs/by-name/wi/wivrn/package.nix @@ -1,4 +1,5 @@ { + # Commented packages are not currently in nixpkgs. They don't appear to cause a problem when not present. config, lib, stdenv, @@ -7,49 +8,81 @@ applyPatches, autoAddDriverRunpath, avahi, + bluez, boost, + cjson, cli11, cmake, cudaPackages ? { }, cudaSupport ? config.cudaSupport, + dbus, + # depthai + doxygen, eigen, + elfutils, ffmpeg, freetype, git, + glib, glm, glslang, + gst_all_1, harfbuzz, - libdrm, + hidapi, + # leapsdk + # leapv2 libGL, - libva, - libpulseaudio, libX11, libXrandr, + libbsd, + libdrm, + libdwg, + libjpeg, + libmd, + libnotify, + libpulseaudio, + librealsense, + librsvg, + libsurvive, + libunwind, + libusb1, + libuvc, + libva, + makeDesktopItem, nix-update-script, nlohmann_json, onnxruntime, + opencv4, + openhmd, + openvr, openxr-loader, + orc, + # percetto pipewire, pkg-config, python3, + qt6, + SDL2, shaderc, spdlog, systemd, udev, vulkan-headers, vulkan-loader, - vulkan-tools, + wayland, + wayland-protocols, + wayland-scanner, x264, }: stdenv.mkDerivation (finalAttrs: { pname = "wivrn"; - version = "0.19"; + version = "0.22"; src = fetchFromGitHub { owner = "wivrn"; repo = "wivrn"; rev = "v${finalAttrs.version}"; - hash = "sha256-DYV+JUWjjhLZLq+4Hv7jxOyxDqQut/mU1X0ZFMoNkDI="; + hash = "sha256-i/CG+zD64cwnu0z1BRkRn7Wm67KszE+wZ5geeAvrvMY="; }; monado = applyPatches { @@ -57,18 +90,17 @@ stdenv.mkDerivation (finalAttrs: { domain = "gitlab.freedesktop.org"; owner = "monado"; repo = "monado"; - rev = "bcbe19ddd795f182df42051e5495e9727db36c1c"; - hash = "sha256-sh5slHROcuC3Dgenu1+hm8U5lUOW48JUbiluYvc3NiQ="; + rev = "aa2b0f9f1d638becd6bb9ca3c357ac2561a36b07"; + hash = "sha256-yfHtkMvX/gyVG0UgpSB6KjSDdCym6Reb9LRb3OortaI="; }; patches = [ - "${finalAttrs.src}/patches/monado/0001-c-multi-disable-dropping-of-old-frames.patch" - "${finalAttrs.src}/patches/monado/0002-ipc-server-Always-listen-to-stdin.patch" - "${finalAttrs.src}/patches/monado/0003-c-multi-Don-t-log-frame-time-diff.patch" - "${finalAttrs.src}/patches/monado/0005-distortion-images.patch" - "${finalAttrs.src}/patches/monado/0008-Use-mipmaps-for-distortion-shader.patch" - "${finalAttrs.src}/patches/monado/0009-convert-to-YCbCr-in-monado.patch" + ./force-enable-steamvr_lh.patch ]; + + postPatch = '' + ${finalAttrs.src}/patches/apply.sh ${finalAttrs.src}/patches/monado/* + ''; }; strictDeps = true; @@ -85,65 +117,126 @@ stdenv.mkDerivation (finalAttrs: { fi ''; - nativeBuildInputs = [ - cmake - git - glslang - pkg-config - python3 - ] ++ lib.optionals cudaSupport [ autoAddDriverRunpath ]; + nativeBuildInputs = + [ + cmake + doxygen + git + glib + glslang + librsvg + pkg-config + python3 + qt6.wrapQtAppsHook + ] + ++ lib.optionals cudaSupport [ + autoAddDriverRunpath + ]; - buildInputs = [ - avahi - boost - cli11 - eigen - ffmpeg - freetype - glm - harfbuzz - libdrm - libGL - libva - libX11 - libXrandr - libpulseaudio - nlohmann_json - onnxruntime - openxr-loader - pipewire - shaderc - spdlog - systemd - udev - vulkan-headers - vulkan-loader - vulkan-tools - x264 - ] ++ lib.optionals cudaSupport [ cudaPackages.cudatoolkit ]; + buildInputs = + [ + avahi + boost + bluez + cjson + cli11 + dbus + eigen + elfutils + ffmpeg + freetype + glib + glm + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + harfbuzz + hidapi + libbsd + libdrm + libdwg + libGL + libjpeg + libmd + libnotify + librealsense + libsurvive + libunwind + libusb1 + libuvc + libva + libX11 + libXrandr + libpulseaudio + nlohmann_json + opencv4 + openhmd + openvr + openxr-loader + onnxruntime + orc + pipewire + qt6.qtbase + qt6.qttools + SDL2 + shaderc + spdlog + systemd + udev + vulkan-headers + vulkan-loader + wayland + wayland-protocols + wayland-scanner + x264 + ] + ++ lib.optionals cudaSupport [ + cudaPackages.cudatoolkit + ]; cmakeFlags = [ - (lib.cmakeBool "WIVRN_USE_VAAPI" true) - (lib.cmakeBool "WIVRN_USE_X264" true) (lib.cmakeBool "WIVRN_USE_NVENC" cudaSupport) - (lib.cmakeBool "WIVRN_USE_SYSTEMD" true) + (lib.cmakeBool "WIVRN_USE_VAAPI" true) + (lib.cmakeBool "WIVRN_USE_VULKAN" true) + (lib.cmakeBool "WIVRN_USE_X264" true) (lib.cmakeBool "WIVRN_USE_PIPEWIRE" true) (lib.cmakeBool "WIVRN_USE_PULSEAUDIO" true) + (lib.cmakeBool "WIVRN_FEATURE_STEAMVR_LIGHTHOUSE" true) (lib.cmakeBool "WIVRN_BUILD_CLIENT" false) - (lib.cmakeBool "WIVRN_OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH" true) + (lib.cmakeBool "WIVRN_BUILD_DASHBOARD" true) + (lib.cmakeBool "WIVRN_CHECK_CAPSYSNICE" false) (lib.cmakeBool "FETCHCONTENT_FULLY_DISCONNECTED" true) + (lib.cmakeFeature "WIVRN_OPENXR_MANIFEST_TYPE" "absolute") + (lib.cmakeFeature "GIT_DESC" "${finalAttrs.version}") (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_MONADO" "${finalAttrs.monado}") + (lib.cmakeFeature "CUDA_TOOLKIT_ROOT_DIR" "${cudaPackages.cudatoolkit}") + ]; + + desktopItems = [ + (makeDesktopItem { + name = "WiVRn Server"; + desktopName = "WiVRn Server"; + genericName = "WiVRn Server"; + comment = "Play your PC VR games on a standalone headset"; + icon = "io.github.wivrn.wivrn"; + exec = "wivrn-dashboard"; + type = "Application"; + categories = [ + "Network" + "Game" + ]; + }) ]; passthru.updateScript = nix-update-script { }; meta = with lib; { description = "An OpenXR streaming application to a standalone headset"; - homepage = "https://github.com/Meumeu/WiVRn/"; - changelog = "https://github.com/Meumeu/WiVRn/releases/"; + homepage = "https://github.com/WiVRn/WiVRn/"; + changelog = "https://github.com/WiVRn/WiVRn/releases/"; license = licenses.gpl3Only; maintainers = with maintainers; [ passivelemon ]; platforms = platforms.linux; mainProgram = "wivrn-server"; + sourceProvenance = with sourceTypes; [ fromSource ]; }; })