summary refs log tree commit diff
path: root/pkgs/applications/audio/jamesdsp/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/audio/jamesdsp/default.nix')
-rw-r--r--pkgs/applications/audio/jamesdsp/default.nix40
1 files changed, 35 insertions, 5 deletions
diff --git a/pkgs/applications/audio/jamesdsp/default.nix b/pkgs/applications/audio/jamesdsp/default.nix
index 16683564b2c..61f8907f99c 100644
--- a/pkgs/applications/audio/jamesdsp/default.nix
+++ b/pkgs/applications/audio/jamesdsp/default.nix
@@ -2,18 +2,31 @@
 , mkDerivation
 , fetchFromGitHub
 , pipewire
+, pulseaudio
+, gst_all_1
 , glibmm
 , qmake
+, qtbase
+, qtsvg
+, wrapQtAppsHook
 , makeDesktopItem
 , pkg-config
 , libarchive
 , fetchpatch
+, copyDesktopItems
+, usePipewire ? true
+, usePulseaudio ? false
 }:
 
-mkDerivation rec{
+assert lib.asserts.assertMsg (usePipewire != usePulseaudio) "You need to enable one and only one of pulseaudio or pipewire support";
+
+let
+  pluginPath = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good ]);
+in
+  mkDerivation rec {
   pname = "jamesdsp";
   version = "2.3";
-  src = fetchFromGitHub rec{
+  src = fetchFromGitHub rec {
     owner = "Audio4Linux";
     repo = "JDSP4Linux";
     fetchSubmodules = true;
@@ -29,13 +42,30 @@ mkDerivation rec{
     })
   ];
 
-  nativeBuildInputs = [ qmake pkg-config ];
+  nativeBuildInputs = [
+    qmake
+    pkg-config
+    copyDesktopItems
+    wrapQtAppsHook
+  ];
+
   buildInputs = [
     glibmm
     libarchive
-    pipewire
+    qtbase
+    qtsvg
+  ] ++ lib.optional usePipewire pipewire
+  ++ lib.optionals usePulseaudio [
+    pulseaudio
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gstreamer
   ];
 
+  qtWrapperArgs = lib.optionals usePulseaudio [ "--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : ${pluginPath}" ];
+
+  qmakeFlags = lib.optionals usePulseaudio [ "CONFIG+=USE_PULSEAUDIO" ];
+
   desktopItems = [
     (makeDesktopItem {
       name = "jamesdsp";
@@ -54,7 +84,7 @@ mkDerivation rec{
     description = "An audio effect processor for PipeWire clients";
     homepage = "https://github.com/Audio4Linux/JDSP4Linux";
     license = licenses.gpl3Only;
-    maintainers = with maintainers;[ pasqui23 ];
+    maintainers = with maintainers; [ pasqui23 rewine ];
     platforms = platforms.linux;
   };
 }