about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/hqplayerd/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/hqplayerd/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/hqplayerd/default.nix117
1 files changed, 117 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/hqplayerd/default.nix b/nixpkgs/pkgs/servers/hqplayerd/default.nix
new file mode 100644
index 000000000000..aa08f781121c
--- /dev/null
+++ b/nixpkgs/pkgs/servers/hqplayerd/default.nix
@@ -0,0 +1,117 @@
+{ stdenv, lib
+, addOpenGLRunpath
+, alsa-lib
+, autoPatchelfHook
+, cairo
+, fetchurl
+, flac
+, gcc12
+, gssdp
+, gupnp
+, gupnp-av
+, lame
+, libgmpris
+, libusb-compat-0_1
+, llvmPackages_14
+, mpg123
+, rpmextract
+, wavpack
+
+, 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
+stdenv.mkDerivation rec {
+  pname = "hqplayerd";
+  version = "5.5.0-13";
+
+  src = fetchurl {
+    url = "https://www.signalyst.eu/bins/${pname}/fc37/${pname}-${version}.fc37.x86_64.rpm";
+    hash = "sha256-yfdgsQu2w56apq5lyD0JcEkM9/EtlfdZQ9I5x1BBOcU=";
+  };
+
+  unpackPhase = ''
+    ${rpmextract}/bin/rpmextract $src
+  '';
+
+  nativeBuildInputs = [ addOpenGLRunpath autoPatchelfHook rpmextract ];
+
+  buildInputs = [
+    alsa-lib
+    cairo
+    flac
+    gcc12.cc.lib
+    rygel-hqplayerd
+    gssdp
+    gupnp
+    gupnp-av
+    lame
+    libgmpris
+    libusb-compat-0_1
+    llvmPackages_14.openmp
+    mpg123
+    wavpack
+  ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    # executables
+    mkdir -p $out
+    cp -rv ./usr/bin $out/bin
+
+    # libs
+    mkdir -p $out
+    cp -rv ./opt/hqplayerd/lib $out
+
+    # configuration
+    mkdir -p $out/etc
+    cp -rv ./etc/hqplayer $out/etc/
+
+    # systemd service file
+    mkdir -p $out/lib/systemd
+    cp -rv ./usr/lib/systemd/system $out/lib/systemd/
+
+    # documentation
+    mkdir -p $out/share/doc
+    cp -rv ./usr/share/doc/hqplayerd $out/share/doc/
+
+    # misc service support files
+    mkdir -p $out/var/lib
+    cp -rv ./var/lib/hqplayer $out/var/lib/
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    substituteInPlace $out/lib/systemd/system/hqplayerd.service \
+      --replace /usr/bin/hqplayerd $out/bin/hqplayerd \
+      --replace "NetworkManager-wait-online.service" ""
+  '';
+
+  # 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
+  '';
+
+  passthru = {
+    rygel = rygel-hqplayerd;
+  };
+
+  meta = with lib; {
+    homepage = "https://www.signalyst.com/custom.html";
+    description = "High-end upsampling multichannel software embedded HD-audio player";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ lovesegfault ];
+  };
+}