nixpkgs/pkgs/servers/hqplayerd/default.nix
2021-06-16 14:02:27 -07:00

96 lines
2.2 KiB
Nix

{ stdenv
, alsa-lib
, autoPatchelfHook
, cairo
, fetchurl
, flac
, gnome
, gssdp
, gupnp
, lib
, libgmpris
, llvmPackages_10
, rpmextract
, wavpack
}:
stdenv.mkDerivation rec {
pname = "hqplayerd";
version = "4.24.1-62";
src = fetchurl {
# FIXME: use the fc34 sources when we get glibc 2.33 in nixpkgs
# c.f. https://github.com/NixOS/nixpkgs/pull/111616
url = "https://www.signalyst.eu/bins/${pname}/fc33/${pname}-${version}.fc33.x86_64.rpm";
sha256 = "sha256-lnejPkw6X3wRtjXTsdipEy6yZCEsDARhLPnySIltHXs=";
};
unpackPhase = ''
${rpmextract}/bin/rpmextract $src
'';
nativeBuildInputs = [ autoPatchelfHook rpmextract ];
buildInputs = [
alsa-lib
cairo
flac
gnome.rygel
gssdp
gupnp
libgmpris
llvmPackages_10.openmp
wavpack
];
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
# main executable
mkdir -p $out/bin
cp ./usr/bin/hqplayerd $out/bin
# udev rules
mkdir -p $out/etc/udev/rules.d
cp ./etc/udev/rules.d/50-taudio2.rules $out/etc/udev/rules.d
# kernel module cfgs
mkdir -p $out/etc/modules-load.d
cp ./etc/modules-load.d/taudio2.conf $out/etc/modules-load.d
# systemd service file
mkdir -p $out/lib/systemd/system
cp ./usr/lib/systemd/system/hqplayerd.service $out/lib/systemd/system
# documentation
mkdir -p $out/share/doc/hqplayerd
cp ./usr/share/doc/hqplayerd/* $out/share/doc/hqplayerd
# misc service support files
mkdir -p $out/var/lib/hqplayerd
cp -r ./var/hqplayer/web $out/var/lib/hqplayerd
runHook postInstall
'';
postInstall = ''
substituteInPlace $out/lib/systemd/system/hqplayerd.service \
--replace /usr/bin/hqplayerd $out/bin/hqplayerd
'';
postFixup = ''
patchelf --replace-needed libomp.so.5 libomp.so $out/bin/hqplayerd
'';
meta = with lib; {
homepage = "https://www.signalyst.com/custom.html";
description = "High-end upsampling multichannel software embedded HD-audio player";
changelog = "https://www.signalyst.eu/bins/${pname}/fc33/${pname}-${version}.fc33.x86_64.changes";
license = licenses.unfree;
maintainers = with maintainers; [ lovesegfault ];
};
}