From 362e5f207a348ad2f4c7300af5f88a82a38bc608 Mon Sep 17 00:00:00 2001 From: Luke Granger-Brown Date: Sat, 21 Dec 2024 15:59:34 +0000 Subject: [PATCH] aja-desktop-software: init at 17.1.3 --- .../aj/aja-desktop-software/package.nix | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 pkgs/by-name/aj/aja-desktop-software/package.nix diff --git a/pkgs/by-name/aj/aja-desktop-software/package.nix b/pkgs/by-name/aj/aja-desktop-software/package.nix new file mode 100644 index 000000000000..f69404bfe5c3 --- /dev/null +++ b/pkgs/by-name/aj/aja-desktop-software/package.nix @@ -0,0 +1,126 @@ +{ + stdenvNoCC, + lib, + fetchzip, + dpkg, + patchelf, + buildFHSEnv, + writeShellScript, + makeBinaryWrapper, +}: + +let + pname = "aja-desktop-software"; + version = "17.1.3"; + meta = { + description = "Graphical utilities for interacting with AJA desktop video cards"; + homepage = "https://www.aja.com/products/aja-control-room"; + license = lib.licenses.unfree; # https://www.aja.com/software-license-agreement + maintainers = [ lib.maintainers.lukegb ]; + platforms = [ "x86_64-linux" ]; + sourceProvenance = [ + lib.sourceTypes.binaryNativeCode + lib.sourceTypes.binaryFirmware + ]; + }; + + unwrapped = stdenvNoCC.mkDerivation { + pname = "${pname}-unwrapped"; + inherit version; + + src = fetchzip { + url = "https://www.aja.com/assets/support/files/9895/en/AJA-Desktop-Software-Installer_Linux-Ubuntu_v${version}_Release.zip"; + hash = "sha256-TxDcYIhEcpPnpoqpey5vSvUltLT/3xwBfOhAP81Q9+E="; + }; + + unpackCmd = "dpkg -x $curSrc/ajaretail_*.deb source"; + + nativeBuildInputs = [ + dpkg + patchelf + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share + mv usr/share/applications $out/share/applications + mv usr/share/doc $out/share/doc + + mv etc $out/etc + + mv opt $out/opt + + ln -s $out/opt/aja/bin $out/bin + + # For some reason ajanmos doesn't have /opt/aja/lib in its rpath... + patchelf $out/opt/aja/bin/ajanmos --add-rpath $out/opt/aja/lib + + runHook postInstall + ''; + + dontPatchELF = true; + + inherit meta; + }; +in +buildFHSEnv { + inherit pname version; + + targetPkgs = + pkgs: + [ unwrapped ] + ++ (with pkgs; [ + ocl-icd + libGL + udev + libpulseaudio + zstd + glib + fontconfig + freetype + xorg.libxcb + xorg.libX11 + xorg.xcbutilwm + xorg.xcbutilimage + xorg.xcbutilkeysyms + xorg.xcbutilrenderutil + xorg.libSM + xorg.libICE + libxkbcommon + dbus + avahi + ]); + + nativeBuildInputs = [ + makeBinaryWrapper + ]; + + unshareIpc = false; + unsharePid = false; + + runScript = writeShellScript "aja" '' + exec_binary="$1" + shift + export QT_PLUGIN_PATH="${unwrapped}/opt/aja/plugins" + exec "${unwrapped}/opt/aja/bin/$exec_binary" "$@" + ''; + + extraInstallCommands = '' + mkdir -p $out/libexec/aja-desktop + mv $out/bin/${pname} $out/libexec/aja-desktop/${pname} + + for binary in controlpanel controlroom ajanmos systemtest; do + makeWrapper "$out/libexec/aja-desktop/${pname}" "$out/bin/aja-$binary" \ + --add-flags "$binary" + done + ''; + + passthru = { + inherit unwrapped; + }; + + meta = meta // { + mainProgram = "aja-controlpanel"; + }; +}