From 100a01c272777f6e804cdbaff518ae434a8b8865 Mon Sep 17 00:00:00 2001 From: Nicolas Berbiche Date: Wed, 5 May 2021 23:52:53 -0400 Subject: kinect-audio-setup: init at v0.5 Co-authored-by: timokau --- .../linux/kinect-audio-setup/default.nix | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 pkgs/os-specific/linux/kinect-audio-setup/default.nix (limited to 'pkgs/os-specific/linux/kinect-audio-setup/default.nix') diff --git a/pkgs/os-specific/linux/kinect-audio-setup/default.nix b/pkgs/os-specific/linux/kinect-audio-setup/default.nix new file mode 100644 index 00000000000..94ae4806cf2 --- /dev/null +++ b/pkgs/os-specific/linux/kinect-audio-setup/default.nix @@ -0,0 +1,91 @@ +{ lib +, stdenv +, fetchgit +, requireFile +, pkg-config +, libusb1 +, p7zip +}: + +let + # The last known good firmware package to have been tested + # by the upstream projet. + # The firmware URL is hardcoded in the upstream project's installation script + firmwareUrl = "https://download.microsoft.com/download/F/9/9/F99791F2-D5BE-478A-B77A-830AD14950C3/KinectSDK-v1.0-beta2-x86.msi"; + # The original URL "https://research.microsoft.com/en-us/um/legal/kinectsdk-tou_noncommercial.htm" + # redirects to the following url: + licenseUrl = "https://www.microsoft.com/en-us/legal/terms-of-use"; +in +stdenv.mkDerivation rec { + pname = "kinect-audio-setup"; + + # On update: Make sure that the `firmwareURL` is still in sync with upstream. + # If the project structure hasn't changed you can find the URL in the + # `kinect_fetch_fw` file in the project source. + version = "0.5"; + + # This is an MSI or CAB file + FIRMWARE = requireFile rec { + name = "UACFirmware"; + sha256 = "08a2vpgd061cmc6h3h8i6qj3sjvjr1fwcnwccwywqypz3icn8xw1"; + message = '' + In order to install the Kinect Audio Firmware, you need to download the + non-redistributable firmware from Microsoft. + The firmware is available at ${firmwareUrl} and the license at ${licenseUrl} . + Save the file as UACFirmware and use "nix-prefetch-url file://\$PWD/UACFirmware" to + add it to the Nix store. + ''; + }; + + src = fetchgit { + url = "git://git.ao2.it/kinect-audio-setup.git"; + rev = "v${version}"; + sha256 = "sha256-bFwmWh822KvFwP/0Gu097nF5K2uCwCLMB1RtP7k+Zt0="; + }; + + # These patches are not upstream because the project has seen no + # activity since 2016 + patches = [ + ./libusb-1-import-path.patch + ./udev-rules-extra-devices.patch + ]; + + nativeBuildInputs = [ p7zip libusb1 pkg-config ]; + + makeFlags = [ + "PREFIX=$(out)" + "DESTDIR=$(out)" + "FIRMWARE_PATH=$(out)/lib/firmware/UACFirmware" + "LOADER_PATH=$(out)/libexec/kinect_upload_fw" + ]; + + buildPhase = '' + runHook preBuild + make -C kinect_upload_fw kinect_upload_fw $makeFlags "''${makeFlagsArray[@]}" + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/libexec/ $out/lib/firmware $out/lib/udev/rules.d + + install -Dm755 kinect_upload_fw/kinect_upload_fw $out/libexec/ + + # 7z extract "assume yes on all queries" "only extract/keep files/directories matching UACFIRMWARE.* recursively" + 7z e -y -r "${FIRMWARE}" "UACFirmware.*" >/dev/null + # The filename is bound to change with the Firmware SDK + mv UACFirmware.* $out/lib/firmware/UACFirmware + + make install_udev_rules $makeFlags "''${makeFlagsArray[@]}" + + runHook postInstall + ''; + + meta = with lib; { + description = "Tools to enable audio input from the Microsoft Kinect sensor device"; + homepage = "https://git.ao2.it/kinect-audio-setup.git"; + maintainers = with maintainers; [ berbiche ]; + platforms = platforms.linux; + license = licenses.unfree; + }; +} -- cgit 1.4.1