helm/pkgs/xr-linux-driver.nix
Anish Lakhwara 2ca6feff4d WIP: Integration branch with darwin and deck support
- Added darwin and jovian inputs
- Added platform-specific package configurations
- Added darwinConfigurations and deck nixosConfiguration
- Copied darwin and deck specific files
- Fixed darwin version compatibility

Some configurations still need debugging
2025-09-12 14:26:38 -07:00

115 lines
2.9 KiB
Nix

# Imported from https://github.com/wheaney/XRLinuxDriver/pull/80/files
# Use flake or nixpkgs once upstreamed
{
self,
lib,
pkgs,
stdenv,
fetchFromGitLab,
libusb1,
curl,
openssl,
libevdev,
json_c,
hidapi,
wayland,
cmake,
pkg-config,
python3,
libffi,
autoPatchelfHook,
...
}: let
pythonEnv = python3.withPackages (ps: [ps.pyyaml]);
buildInputs = [
curl
hidapi
json_c
libevdev
libffi
libusb1
openssl
stdenv.cc.cc.lib
wayland
];
arch =
if pkgs.system == "aarch64-linux"
then "aarch64"
else if pkgs.system == "x86_64-linux"
then "x86_64"
else throw "Unsupported system ${pkgs.system}";
in
stdenv.mkDerivation rec {
pname = "xrlinuxdriver";
version = "0.12.0.1";
srcs = [
(fetchFromGitLab rec {
domain = "gitlab.com";
owner = "TheJackiMonster";
repo = "nrealAirLinuxDriver";
rev = "3225fcc575e19a8407d5019903567cff1c3ed1a8";
hash = "sha256-NRbcANt/CqREQZoYIYtTGVbvkZ7uo2Tm90s6prlsrQE=";
fetchSubmodules = true;
name = "${repo}-src";
})
(lib.cleanSourceWith {
src = self;
name = "${pname}-src";
})
];
sourceRoot = "${(builtins.elemAt srcs 1).name}";
postUnpack = let
nrealAirLinuxDriver = (builtins.elemAt srcs 0).name;
in ''
mkdir -p $sourceRoot/modules/xrealInterfaceLibrary
cp -R ${nrealAirLinuxDriver}/* $sourceRoot/modules/xrealInterfaceLibrary
chmod -R u+w $sourceRoot
'';
nativeBuildInputs = [
cmake
pkg-config
pythonEnv
autoPatchelfHook
];
inherit buildInputs;
cmakeFlags = [
"-DCMAKE_SKIP_RPATH=ON"
];
cmakeBuildDir = "build";
cmakeBuildType = "RelWithDebInfo";
installPhase = ''
mkdir -p $out/bin $out/lib/systemd/user $out/lib/udev/rules.d $out/lib/${arch}
cp xrDriver ../bin/xr_driver_cli ../bin/xr_driver_verify $out/bin
cp ../udev/* $out/lib/udev/rules.d/
cp ../lib/${arch}/* $out/lib/${arch}/
cp ../systemd/xr-driver.service $out/lib/systemd/user/xr-driver.service
cp ${hidapi}/lib/libhidapi-hidraw.so.0 $out/lib/
substituteInPlace \
$out/lib/systemd/user/xr-driver.service \
--replace-fail "ExecStart={bin_dir}/xrDriver" "ExecStart=$out/bin/xrDriver" \
--replace-fail "{ld_library_path}" "$out/lib/${arch}"
'';
preBuild = ''
addAutoPatchelfSearchPath $out/usr/lib/${arch}
'';
doInstallCheck = false;
# The default release is a script which will do an impure download
# just ensure that the application can run without network
meta = with lib; {
homepage = "https://github.com/wheaney/XRLinuxDriver";
license = licenses.mit;
description = "Linux service for interacting with XR devices.";
mainProgram = "xrDriver";
maintainers = with maintainers; [shymega];
platforms = platforms.linux;
};
}