nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 117 lines 2.9 kB view raw
1{ 2 stdenv, 3 alsa-lib, 4 autoPatchelfHook, 5 dpkg, 6 evince, 7 fetchurl, 8 flac, 9 lib, 10 libmicrohttpd, 11 libogg, 12 libusb-compat-0_1, 13 llvmPackages, 14 mpfr, 15 wavpack, 16 kdePackages, 17}: 18 19let 20 version = "5.16.2-43"; 21 srcs = { 22 aarch64-linux = fetchurl { 23 url = "https://signalyst.com/bins/trixie/hqplayer5desktop_${version}_arm64.deb"; 24 hash = "sha256-dmnDbFf1obuBvKSMIGFiI7fXi/5YRP23625Y+UEj+Wo="; 25 }; 26 x86_64-linux = fetchurl { 27 url = "https://signalyst.com/bins/noble/hqplayer5desktop_${version}_amd64.deb"; 28 hash = "sha256-WUqfMUQSVb+MSc0GyhuEMM9H6fJP/NcmpFAX46BCiPI="; 29 }; 30 }; 31in 32stdenv.mkDerivation { 33 pname = "hqplayer-desktop"; 34 inherit version; 35 36 src = 37 srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); 38 39 nativeBuildInputs = [ 40 autoPatchelfHook 41 dpkg 42 kdePackages.wrapQtAppsHook 43 ]; 44 45 buildInputs = [ 46 alsa-lib 47 flac 48 stdenv.cc.cc.lib 49 libmicrohttpd 50 libogg 51 libusb-compat-0_1 52 llvmPackages.openmp 53 mpfr 54 kdePackages.qtcharts 55 kdePackages.qtdeclarative 56 kdePackages.qtwayland 57 kdePackages.qtwebengine 58 kdePackages.qtwebview 59 wavpack 60 ]; 61 62 dontPatch = true; 63 dontConfigure = true; 64 dontBuild = true; 65 66 installPhase = '' 67 runHook preInstall 68 69 # main executable 70 mkdir -p "$out"/bin 71 mv ./usr/bin/* "$out"/bin 72 73 # documentation 74 mkdir -p "$doc/share/doc/hqplayer-desktop" "$doc/share/applications" 75 mv ./usr/share/doc/hqplayer5desktop/* "$doc/share/doc/hqplayer-desktop" 76 mv ./usr/share/applications/hqplayer5desktop-manual.desktop "$doc/share/applications" 77 78 # desktop files 79 mkdir -p "$out/share/applications" 80 mv ./usr/share/applications/* "$out/share/applications" 81 82 # pixmaps 83 mkdir -p "$out/share/pixmaps" 84 mv ./usr/share/pixmaps/* "$out/share/pixmaps" 85 86 runHook postInstall 87 ''; 88 89 # doc has dependencies on evince that is not required by main app 90 outputs = [ 91 "out" 92 "doc" 93 ]; 94 95 postInstall = '' 96 for desktopFile in $out/share/applications/hqplayer5{client,desktop}.desktop; do 97 substituteInPlace "$desktopFile" \ 98 --replace /usr/bin "$out"/bin 99 done 100 substituteInPlace "$doc/share/applications/hqplayer5desktop-manual.desktop" \ 101 --replace /usr/share/doc/hqplayer5desktop "$doc/share/doc/hqplayer-desktop" \ 102 --replace evince "${evince}/bin/evince" 103 ''; 104 105 postFixup = '' 106 patchelf --replace-needed libomp.so.5 libomp.so $out/bin/.hqplayer5*-wrapped 107 ''; 108 109 meta = { 110 homepage = "https://www.signalyst.com"; 111 description = "High-end upsampling multichannel software HD-audio player"; 112 license = lib.licenses.unfree; 113 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; 114 platforms = builtins.attrNames srcs; 115 maintainers = with lib.maintainers; [ lovesegfault ]; 116 }; 117}