176 lines
3.8 KiB
Nix

{
lib,
stdenv,
fetchFromGitLab,
fetchpatch2,
writeText,
bluez,
cjson,
cmake,
config,
dbus,
doxygen,
eigen,
elfutils,
glslang,
gst-plugins-base,
gstreamer,
hidapi,
libbsd,
libdrm,
libffi,
libGL,
libjpeg,
librealsense,
libsurvive,
libunwind,
libusb1,
libuv,
libuvc,
libv4l,
libXau,
libxcb,
libXdmcp,
libXext,
libXrandr,
nix-update-script,
onnxruntime,
opencv4,
openhmd,
openvr,
orc,
pcre2,
pkg-config,
python3,
SDL2,
shaderc,
tracy,
udev,
vulkan-headers,
vulkan-loader,
wayland,
wayland-protocols,
wayland-scanner,
zlib,
zstd,
nixosTests,
cudaPackages,
enableCuda ? config.cudaSupport,
# 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,
tracingSupport ? false,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "monado";
version = "25.0.0";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "monado";
repo = "monado";
tag = "v${finalAttrs.version}";
hash = "sha256-VxTxvw+ftqlh3qF5qWxpK1OJsRowkRXu0xEH2bDckUA=";
};
patches = [
# Remove with v26
(fetchpatch2 {
url = "https://gitlab.freedesktop.org/monado/monado/-/commit/2a6932d46dad9aa957205e8a47ec2baa33041076.patch";
hash = "sha256-CZMbGgx7mEDcjcoRJHDZ5P6BecFW8CB4fpzxQ9bpAvE=";
})
];
nativeBuildInputs = [
cmake
doxygen
glslang
pkg-config
python3
];
# 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)
buildInputs = [
bluez
cjson
dbus
eigen
elfutils
gst-plugins-base
gstreamer
hidapi
libbsd
libdrm
libffi
libGL
libjpeg
librealsense
libsurvive
libunwind
libusb1
libuv
libuvc
libv4l
libXau
libxcb
libXdmcp
libXext
libXrandr
onnxruntime
opencv4
openhmd
openvr
orc
pcre2
SDL2
shaderc
udev
vulkan-headers
vulkan-loader
wayland
wayland-protocols
wayland-scanner
zlib
zstd
]
++ lib.optionals tracingSupport [
tracy
];
cmakeFlags = [
(lib.cmakeBool "XRT_FEATURE_SERVICE" serviceSupport)
(lib.cmakeBool "XRT_HAVE_TRACY" tracingSupport)
(lib.cmakeBool "XRT_FEATURE_TRACING" tracingSupport)
(lib.cmakeBool "XRT_OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH" true)
(lib.cmakeBool "XRT_HAVE_STEAM" true)
(lib.optionals enableCuda "-DCUDA_TOOLKIT_ROOT_DIR=${cudaPackages.cudatoolkit}")
];
# Help openxr-loader find this runtime
setupHook = writeText "setup-hook" ''
export XDG_CONFIG_DIRS=@out@/etc/xdg''${XDG_CONFIG_DIRS:+:''${XDG_CONFIG_DIRS}}
'';
passthru = {
updateScript = nix-update-script { };
tests.basic-service = nixosTests.monado;
};
meta = {
description = "Open source XR runtime";
homepage = "https://monado.freedesktop.org/";
license = lib.licenses.boost;
maintainers = with lib.maintainers; [ Scrumplex ];
platforms = lib.platforms.linux;
mainProgram = "monado-cli";
};
})