nixpkgs/pkgs/servers/hqplayerd/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

118 lines
2.5 KiB
Nix
Raw Normal View History

2022-05-04 01:21:57 +02:00
{ stdenv, lib
2021-10-22 00:14:36 +02:00
, addOpenGLRunpath
2022-05-04 01:21:57 +02:00
, alsa-lib
2021-06-10 08:40:27 +02:00
, autoPatchelfHook
, cairo
, fetchurl
, flac
2022-08-10 05:45:57 +02:00
, gcc12
2021-06-10 08:40:27 +02:00
, gssdp
2022-05-04 01:21:57 +02:00
, gupnp
, gupnp-av
2022-01-22 21:19:48 +01:00
, lame
2021-06-10 08:40:27 +02:00
, libgmpris
2022-05-04 01:21:57 +02:00
, libusb-compat-0_1
2022-11-09 17:18:38 +01:00
, llvmPackages_14
2021-11-04 23:32:34 +01:00
, mpg123
2021-06-10 08:40:27 +02:00
, rpmextract
, wavpack
2022-11-09 17:18:38 +01:00
, callPackage
, rygel ? null
}@inputs:
let
# FIXME: Replace with gnome.rygel once hqplayerd releases a new version.
rygel-hqplayerd = inputs.rygel or (callPackage ./rygel.nix { });
in
2021-06-10 08:40:27 +02:00
stdenv.mkDerivation rec {
pname = "hqplayerd";
2024-03-18 16:25:20 +01:00
version = "5.5.0-13";
2021-06-10 08:40:27 +02:00
src = fetchurl {
2023-10-09 09:53:47 +02:00
url = "https://www.signalyst.eu/bins/${pname}/fc37/${pname}-${version}.fc37.x86_64.rpm";
2024-03-18 16:25:20 +01:00
hash = "sha256-yfdgsQu2w56apq5lyD0JcEkM9/EtlfdZQ9I5x1BBOcU=";
2021-06-10 08:40:27 +02:00
};
unpackPhase = ''
${rpmextract}/bin/rpmextract $src
'';
2021-10-22 00:14:36 +02:00
nativeBuildInputs = [ addOpenGLRunpath autoPatchelfHook rpmextract ];
2021-06-10 08:40:27 +02:00
buildInputs = [
alsa-lib
cairo
flac
2022-08-10 05:45:57 +02:00
gcc12.cc.lib
2022-11-09 17:18:38 +01:00
rygel-hqplayerd
2021-06-10 08:40:27 +02:00
gssdp
2022-04-18 08:58:59 +02:00
gupnp
gupnp-av
2022-01-22 21:19:48 +01:00
lame
2021-06-10 08:40:27 +02:00
libgmpris
2022-05-04 01:21:57 +02:00
libusb-compat-0_1
2022-11-09 17:18:38 +01:00
llvmPackages_14.openmp
2021-11-04 23:32:34 +01:00
mpg123
2021-06-10 08:40:27 +02:00
wavpack
];
dontConfigure = true;
dontBuild = true;
installPhase = ''
2021-06-14 00:12:55 +02:00
runHook preInstall
2022-05-04 01:21:57 +02:00
# executables
mkdir -p $out
cp -rv ./usr/bin $out/bin
# libs
mkdir -p $out
cp -rv ./opt/hqplayerd/lib $out
2021-06-10 08:40:27 +02:00
2022-05-04 01:21:57 +02:00
# configuration
mkdir -p $out/etc
cp -rv ./etc/hqplayer $out/etc/
2021-06-10 08:40:27 +02:00
# systemd service file
2022-05-04 01:21:57 +02:00
mkdir -p $out/lib/systemd
cp -rv ./usr/lib/systemd/system $out/lib/systemd/
2021-06-10 08:40:27 +02:00
# documentation
2022-05-04 01:21:57 +02:00
mkdir -p $out/share/doc
cp -rv ./usr/share/doc/hqplayerd $out/share/doc/
2021-06-10 08:40:27 +02:00
# misc service support files
2022-05-04 01:21:57 +02:00
mkdir -p $out/var/lib
cp -rv ./var/lib/hqplayer $out/var/lib/
2021-06-14 00:12:55 +02:00
runHook postInstall
2021-06-10 08:40:27 +02:00
'';
postInstall = ''
substituteInPlace $out/lib/systemd/system/hqplayerd.service \
--replace /usr/bin/hqplayerd $out/bin/hqplayerd \
--replace "NetworkManager-wait-online.service" ""
2021-06-10 08:40:27 +02:00
'';
2021-10-22 00:14:36 +02:00
# NB: addOpenGLRunpath needs to run _after_ autoPatchelfHook, which runs in
# postFixup, so we tack it on here.
doInstallCheck = true;
installCheckPhase = ''
addOpenGLRunpath $out/bin/hqplayerd
$out/bin/hqplayerd --version
2021-06-10 08:40:27 +02:00
'';
2022-11-09 17:18:38 +01:00
passthru = {
rygel = rygel-hqplayerd;
};
2021-06-10 08:40:27 +02:00
meta = with lib; {
homepage = "https://www.signalyst.com/custom.html";
description = "High-end upsampling multichannel software embedded HD-audio player";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
2021-06-10 08:40:27 +02:00
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
2021-06-10 08:40:27 +02:00
maintainers = with maintainers; [ lovesegfault ];
};
}