- 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
115 lines
2.9 KiB
Nix
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;
|
|
};
|
|
}
|