@@ -0,0 +1,89 @@
1+{ stdenv
2+, alsa-lib
3+, autoPatchelfHook
4+, cairo
5+, fetchurl
6+, flac
7+, gnome
8+, gssdp
9+, gupnp
10+, lib
11+, libgmpris
12+, llvmPackages_10
13+, rpmextract
14+, wavpack
15+}:
16+
17+stdenv.mkDerivation rec {
18+ pname = "hqplayerd";
19+ version = "4.24.0-61";
20+
21+ src = fetchurl {
22+ url = "https://www.signalyst.eu/bins/${pname}/fc33/${pname}-${version}.fc33.x86_64.rpm";
23+ sha256 = "sha256-VouqkWRu9lcbCQNmXJayrsZZnhvM5xEZlUyBEkURBOQ=";
24+ };
25+
26+ unpackPhase = ''
27+ ${rpmextract}/bin/rpmextract $src
28+ '';
29+
30+ nativeBuildInputs = [ autoPatchelfHook rpmextract ];
31+
32+ buildInputs = [
33+ alsa-lib
34+ cairo
35+ flac
36+ gnome.rygel
37+ gssdp
38+ gupnp
39+ libgmpris
40+ llvmPackages_10.openmp
41+ wavpack
42+ ];
43+
44+ dontConfigure = true;
45+ dontBuild = true;
46+
47+ installPhase = ''
48+ # main executable
49+ mkdir -p $out/bin
50+ cp ./usr/bin/hqplayerd $out/bin
51+
52+ # udev rules
53+ mkdir -p $out/etc/udev/rules.d
54+ cp ./etc/udev/rules.d/50-taudio2.rules $out/etc/udev/rules.d
55+
56+ # kernel module cfgs
57+ mkdir -p $out/etc/modules-load.d
58+ cp ./etc/modules-load.d/taudio2.conf $out/etc/modules-load.d
59+
60+ # systemd service file
61+ mkdir -p $out/lib/systemd/system
62+ cp ./usr/lib/systemd/system/hqplayerd.service $out/lib/systemd/system
63+
64+ # documentation
65+ mkdir -p $out/share/doc/${pname}
66+ cp ./usr/share/doc/${pname}/* $out/share/doc/${pname}
67+
68+ # misc service support files
69+ mkdir -p $out/var/lib/${pname}
70+ cp -r ./var/hqplayer/web $out/var/lib/${pname}
71+ '';
72+
73+ postInstall = ''
74+ substituteInPlace $out/lib/systemd/system/hqplayerd.service \
75+ --replace /usr/bin/hqplayerd $out/bin/hqplayerd
76+ '';
77+
78+ postFixup = ''
79+ patchelf --replace-needed libomp.so.5 libomp.so $out/bin/hqplayerd
80+ '';
81+
82+ meta = with lib; {
83+ homepage = "https://www.signalyst.com/custom.html";
84+ description = "High-end upsampling multichannel software embedded HD-audio player";
85+ changelog = "https://www.signalyst.eu/bins/${pname}/fc33/${pname}-${version}.fc33.x86_64.changes";
86+ license = licenses.unfree;
87+ maintainers = with maintainers; [ lovesegfault ];
88+ };
89+}