Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / hqplayerd / default.nix
blob3cbec0b64818fda8168fbc650ec84f2770e3603e
1 { stdenv, lib
2 , addDriverRunpath
3 , alsa-lib
4 , autoPatchelfHook
5 , cairo
6 , fetchurl
7 , flac
8 , gcc12
9 , gssdp
10 , gupnp
11 , gupnp-av
12 , lame
13 , libgmpris
14 , libusb-compat-0_1
15 , llvmPackages_14
16 , mpg123
17 , rpmextract
18 , wavpack
20 , callPackage
21 , rygel ? null
22 }@inputs:
23 let
24   # FIXME: Replace with gnome.rygel once hqplayerd releases a new version.
25   rygel-hqplayerd = inputs.rygel or (callPackage ./rygel.nix { });
27 stdenv.mkDerivation rec {
28   pname = "hqplayerd";
29   version = "5.5.0-13";
31   src = fetchurl {
32     url = "https://www.signalyst.eu/bins/${pname}/fc37/${pname}-${version}.fc37.x86_64.rpm";
33     hash = "sha256-yfdgsQu2w56apq5lyD0JcEkM9/EtlfdZQ9I5x1BBOcU=";
34   };
36   unpackPhase = ''
37     ${rpmextract}/bin/rpmextract $src
38   '';
40   nativeBuildInputs = [ addDriverRunpath autoPatchelfHook rpmextract ];
42   buildInputs = [
43     alsa-lib
44     cairo
45     flac
46     gcc12.cc.lib
47     rygel-hqplayerd
48     gssdp
49     gupnp
50     gupnp-av
51     lame
52     libgmpris
53     libusb-compat-0_1
54     llvmPackages_14.openmp
55     mpg123
56     wavpack
57   ];
59   dontConfigure = true;
60   dontBuild = true;
62   installPhase = ''
63     runHook preInstall
65     # executables
66     mkdir -p $out
67     cp -rv ./usr/bin $out/bin
69     # libs
70     mkdir -p $out
71     cp -rv ./opt/hqplayerd/lib $out
73     # configuration
74     mkdir -p $out/etc
75     cp -rv ./etc/hqplayer $out/etc/
77     # systemd service file
78     mkdir -p $out/lib/systemd
79     cp -rv ./usr/lib/systemd/system $out/lib/systemd/
81     # documentation
82     mkdir -p $out/share/doc
83     cp -rv ./usr/share/doc/hqplayerd $out/share/doc/
85     # misc service support files
86     mkdir -p $out/var/lib
87     cp -rv ./var/lib/hqplayer $out/var/lib/
88     runHook postInstall
89   '';
91   postInstall = ''
92     substituteInPlace $out/lib/systemd/system/hqplayerd.service \
93       --replace /usr/bin/hqplayerd $out/bin/hqplayerd \
94       --replace "NetworkManager-wait-online.service" ""
95   '';
97   # NB: addDriverRunpath needs to run _after_ autoPatchelfHook, which runs in
98   # postFixup, so we tack it on here.
99   doInstallCheck = true;
100   installCheckPhase = ''
101     addDriverRunpath $out/bin/hqplayerd
102     $out/bin/hqplayerd --version
103   '';
105   passthru = {
106     rygel = rygel-hqplayerd;
107   };
109   meta = with lib; {
110     homepage = "https://www.signalyst.com/custom.html";
111     description = "High-end upsampling multichannel software embedded HD-audio player";
112     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
113     license = licenses.unfree;
114     platforms = [ "x86_64-linux" ];
115     maintainers = with maintainers; [ lovesegfault ];
116   };