{ lib , stdenv , fetchFromGitLab , writeText , cmake , cjson , doxygen , glslang , pkg-config , python3 , SDL2 , bluez , dbus , eigen , elfutils , ffmpeg , gst-plugins-base , gstreamer , hidapi , libGL , libXau , libXdmcp , libXrandr , libXext , libbsd , libffi , libjpeg , librealsense , libsurvive , libunwind , libusb1 , libuv , libuvc , libv4l , libxcb , onnxruntime , opencv4 , openhmd , openvr , orc , pcre2 , shaderc , udev , vulkan-headers , vulkan-loader , wayland , wayland-protocols , wayland-scanner , libdrm , zlib , zstd , nixosTests # Set as 'false' to build monado without service support, i.e. allow VR # applications linking against libopenxr_monado.so to use OpenXR standalone # instead of via the monado-service program. For more information see: # https://gitlab.freedesktop.org/monado/monado/-/blob/master/doc/targets.md#xrt_feature_service-disabled , serviceSupport ? true }: stdenv.mkDerivation { pname = "monado"; version = "unstable-2024-01-02"; src = fetchFromGitLab { domain = "gitlab.freedesktop.org"; owner = "monado"; repo = "monado"; rev = "bfa1c16ff9fc759327ca251a5d086b958b1a3b8a"; hash = "sha256-wXRwOs9MkDre/VeW686DzmvKjX0qCSS13MILbYQD6OY="; }; nativeBuildInputs = [ cmake doxygen glslang pkg-config python3 ]; cmakeFlags = [ "-DXRT_FEATURE_SERVICE=${if serviceSupport then "ON" else "OFF"}" "-DXRT_OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH=ON" ]; buildInputs = [ SDL2 bluez cjson dbus eigen elfutils ffmpeg gst-plugins-base gstreamer hidapi libGL libXau libXdmcp libXrandr libbsd libjpeg libffi librealsense libsurvive libunwind libusb1 libuv libuvc libv4l libxcb onnxruntime opencv4 openhmd openvr orc pcre2 shaderc udev vulkan-headers vulkan-loader wayland wayland-scanner wayland-protocols libdrm zlib zstd ]; # known disabled drivers/features: # - DRIVER_DEPTHAI - Needs depthai-core https://github.com/luxonis/depthai-core (See https://github.com/NixOS/nixpkgs/issues/292618) # - DRIVER_ILLIXR - needs ILLIXR headers https://github.com/ILLIXR/ILLIXR (See https://github.com/NixOS/nixpkgs/issues/292661) # - DRIVER_ULV2 - Needs proprietary Leapmotion SDK https://api.leapmotion.com/documentation/v2/unity/devguide/Leap_SDK_Overview.html (See https://github.com/NixOS/nixpkgs/issues/292624) # - DRIVER_ULV5 - Needs proprietary Leapmotion SDK https://api.leapmotion.com/documentation/v2/unity/devguide/Leap_SDK_Overview.html (See https://github.com/NixOS/nixpkgs/issues/292624) # Help openxr-loader find this runtime setupHook = writeText "setup-hook" '' export XDG_CONFIG_DIRS=@out@/etc/xdg''${XDG_CONFIG_DIRS:+:''${XDG_CONFIG_DIRS}} ''; patches = [ # We don't have $HOME/.steam when building ./force-enable-steamvr_lh.patch ]; passthru.tests = { basic-service = nixosTests.monado; }; meta = with lib; { description = "Open source XR runtime"; homepage = "https://monado.freedesktop.org/"; license = licenses.boost; maintainers = with maintainers; [ Scrumplex expipiplus1 prusnak ]; platforms = platforms.linux; mainProgram = "monado-cli"; }; }