about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/opencomposite
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/opencomposite')
-rw-r--r--nixpkgs/pkgs/development/libraries/opencomposite/default.nix59
-rw-r--r--nixpkgs/pkgs/development/libraries/opencomposite/helper.nix18
2 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/opencomposite/default.nix b/nixpkgs/pkgs/development/libraries/opencomposite/default.nix
new file mode 100644
index 000000000000..79b96bb9ae3d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/opencomposite/default.nix
@@ -0,0 +1,59 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+
+, cmake
+
+, glm
+, libGL
+, openxr-loader
+, python3
+, vulkan-headers
+, vulkan-loader
+, xorg
+}:
+
+stdenv.mkDerivation {
+  pname = "opencomposite";
+  version = "unstable-2023-09-11";
+
+  src = fetchFromGitLab {
+    owner = "znixian";
+    repo = "OpenOVR";
+    rev = "cca18158a4b6921df54e84a3b23ff459f76a2bde";
+    hash = "sha256-VREApt4juz283aJVLZoBbqg01PNs4XBxmpr/UIMlaK8=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  buildInputs = [
+    glm
+    libGL
+    openxr-loader
+    python3
+    vulkan-headers
+    vulkan-loader
+    xorg.libX11
+  ];
+
+  cmakeFlags = [
+    "-DUSE_SYSTEM_OPENXR=ON"
+    "-DUSE_SYSTEM_GLM=ON"
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/lib/opencomposite
+    cp -r bin/ $out/lib/opencomposite
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Reimplementation of OpenVR, translating calls to OpenXR";
+    homepage = "https://gitlab.com/znixian/OpenOVR";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ Scrumplex ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/opencomposite/helper.nix b/nixpkgs/pkgs/development/libraries/opencomposite/helper.nix
new file mode 100644
index 000000000000..f19f5e868139
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/opencomposite/helper.nix
@@ -0,0 +1,18 @@
+{ writeShellApplication
+
+, monado
+, opencomposite
+}:
+writeShellApplication {
+  name = "opencomposite-helper";
+  text = ''
+    # Tell Proton to use OpenComposite instead of OpenVR
+    export VR_OVERRIDE=${opencomposite}/lib/opencomposite
+    # Help OpenComposite find the OpenXR runtime
+    export XR_RUNTIME_JSON=${monado}/share/openxr/1/openxr_monado.json
+    # Tell Steam Pressure Vessel to allow access to Monado
+    export PRESSURE_VESSEL_FILESYSTEMS_RW=$XDG_RUNTIME_DIR/monado_comp_ipc
+    exec "$@"
+  '';
+}
+