about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/pipewire/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/pipewire/default.nix')
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/default.nix44
1 files changed, 34 insertions, 10 deletions
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/default.nix b/nixpkgs/pkgs/development/libraries/pipewire/default.nix
index 40f4e328c317..8504d2669849 100644
--- a/nixpkgs/pkgs/development/libraries/pipewire/default.nix
+++ b/nixpkgs/pkgs/development/libraries/pipewire/default.nix
@@ -2,6 +2,7 @@
 , lib
 , fetchFromGitLab
 , removeReferencesTo
+, python3
 , meson
 , ninja
 , systemd
@@ -19,6 +20,7 @@
 , SDL2
 , vulkan-headers
 , vulkan-loader
+, webrtc-audio-processing
 , ncurses
 , makeFontsConf
 , callPackage
@@ -31,6 +33,8 @@
 , nativeHfpSupport ? true
 , ofonoSupport ? true
 , hsphfpdSupport ? true
+, pulseTunnelSupport ? true, libpulseaudio ? null
+, zeroconfSupport ? true, avahi ? null
 }:
 
 let
@@ -42,7 +46,7 @@ let
 
   self = stdenv.mkDerivation rec {
     pname = "pipewire";
-    version = "0.3.27";
+    version = "0.3.30";
 
     outputs = [
       "out"
@@ -60,7 +64,7 @@ let
       owner = "pipewire";
       repo = "pipewire";
       rev = version;
-      sha256 = "sha256-GfcMODQWtcahBvXnZ98/PKIm4pkqLaz09oOy7zQR4IA=";
+      sha256 = "sha256-DnaPvZoDaegjtJNKBmCJEAZe5FQBnSER79FPnxiWQUE=";
     };
 
     patches = [
@@ -72,8 +76,10 @@ let
       ./0055-pipewire-media-session-path.patch
       # Move installed tests into their own output.
       ./0070-installed-tests-path.patch
-      # Add flag to specify configuration directory (different from the installation directory).
+      # Add option for changing the config install directory
       ./0080-pipewire-config-dir.patch
+      # Remove output paths from the comments in the config templates to break dependency cycles
+      ./0090-pipewire-config-template-paths.patch
     ];
 
     nativeBuildInputs = [
@@ -82,6 +88,7 @@ let
       meson
       ninja
       pkg-config
+      python3
     ];
 
     buildInputs = [
@@ -94,12 +101,15 @@ let
       udev
       vulkan-headers
       vulkan-loader
+      webrtc-audio-processing
       valgrind
       SDL2
       systemd
     ] ++ lib.optionals gstreamerSupport [ gst_all_1.gst-plugins-base gst_all_1.gstreamer ]
     ++ lib.optional ffmpegSupport ffmpeg
-    ++ lib.optionals bluezSupport [ bluez libopenaptx ldacbt sbc fdk_aac ];
+    ++ lib.optionals bluezSupport [ bluez libopenaptx ldacbt sbc fdk_aac ]
+    ++ lib.optional pulseTunnelSupport libpulseaudio
+    ++ lib.optional zeroconfSupport avahi;
 
     mesonFlags = [
       "-Ddocs=enabled"
@@ -112,6 +122,8 @@ let
       "-Dmedia-session-prefix=${placeholder "mediaSession"}"
       "-Dlibjack-path=${placeholder "jack"}/lib"
       "-Dlibcamera=disabled"
+      "-Dlibpulse=${mesonEnable pulseTunnelSupport}"
+      "-Davahi=${mesonEnable zeroconfSupport}"
       "-Dgstreamer=${mesonEnable gstreamerSupport}"
       "-Dffmpeg=${mesonEnable ffmpegSupport}"
       "-Dbluez5=${mesonEnable bluezSupport}"
@@ -119,24 +131,35 @@ let
       "-Dbluez5-backend-hfp-native=${mesonEnable nativeHfpSupport}"
       "-Dbluez5-backend-ofono=${mesonEnable ofonoSupport}"
       "-Dbluez5-backend-hsphfpd=${mesonEnable hsphfpdSupport}"
-      "-Dpipewire_config_dir=/etc/pipewire"
+      "-Dsysconfdir=/etc"
+      "-Dpipewire_confdata_dir=${placeholder "lib"}/share/pipewire"
     ];
 
     FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
 
     doCheck = true;
 
+    postUnpack = ''
+      patchShebangs source/doc/strip-static.sh
+      patchShebangs source/spa/tests/gen-cpp-test.py
+    '';
+
     postInstall = ''
-      pushd .
-      cd $out
+      pushd $lib/share
       mkdir -p $out/nix-support/etc/pipewire
-      for f in etc/pipewire/*.conf; do bin/spa-json-dump "$f" > "$out/nix-support/$f.json"; done
+      for f in pipewire/*.conf; do
+        echo "Generating JSON from $f"
+        $out/bin/spa-json-dump "$f" > "$out/nix-support/etc/$f.json"
+      done
 
       mkdir -p $mediaSession/nix-support/etc/pipewire/media-session.d
-      for f in etc/pipewire/media-session.d/*.conf; do bin/spa-json-dump "$f" > "$mediaSession/nix-support/$f.json"; done
+      for f in pipewire/media-session.d/*.conf; do
+        echo "Generating JSON from $f"
+        $out/bin/spa-json-dump "$f" > "$mediaSession/nix-support/etc/$f.json"
+      done
       popd
 
-      moveToOutput "etc/pipewire/media-session.d/*.conf" "$mediaSession"
+      moveToOutput "share/pipewire/media-session.d/*.conf" "$mediaSession"
       moveToOutput "share/systemd/user/pipewire-media-session.*" "$mediaSession"
       moveToOutput "lib/systemd/user/pipewire-media-session.*" "$mediaSession"
       moveToOutput "bin/pipewire-media-session" "$mediaSession"
@@ -155,6 +178,7 @@ let
         test-paths = callPackage ./test-paths.nix {
           paths-out = [
             "share/alsa/alsa.conf.d/50-pipewire.conf"
+            "nix-support/etc/pipewire/client-rt.conf.json"
             "nix-support/etc/pipewire/client.conf.json"
             "nix-support/etc/pipewire/jack.conf.json"
             "nix-support/etc/pipewire/pipewire.conf.json"