about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/pipewire
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
committerAlyssa Ross <hi@alyssa.is>2023-06-16 06:56:35 +0000
commit99fcaeccb89621dd492203ce1f2d551c06f228ed (patch)
tree41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/development/libraries/pipewire
parent59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff)
parent75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff)
downloadnixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst
nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/nixos/modules/config/console.nix
	nixpkgs/nixos/modules/services/mail/mailman.nix
	nixpkgs/nixos/modules/services/mail/public-inbox.nix
	nixpkgs/nixos/modules/services/mail/rss2email.nix
	nixpkgs/nixos/modules/services/networking/ssh/sshd.nix
	nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
	nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
	nixpkgs/pkgs/applications/window-managers/sway/default.nix
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix
	nixpkgs/pkgs/development/interpreters/python/default.nix
	nixpkgs/pkgs/development/node-packages/overrides.nix
	nixpkgs/pkgs/development/tools/b4/default.nix
	nixpkgs/pkgs/servers/dict/dictd-db.nix
	nixpkgs/pkgs/servers/mail/public-inbox/default.nix
	nixpkgs/pkgs/tools/security/pinentry/default.nix
	nixpkgs/pkgs/tools/text/unoconv/default.nix
	nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/pipewire')
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/0.2.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/0060-libjack-path.patch26
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch24
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/default.nix84
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/media-session.nix109
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix23
-rwxr-xr-xnixpkgs/pkgs/development/libraries/pipewire/update-media-session.sh24
-rwxr-xr-xnixpkgs/pkgs/development/libraries/pipewire/update-pipewire.sh25
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/wireplumber.nix22
9 files changed, 81 insertions, 260 deletions
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix b/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix
index 16c8d5d25128..cf2448bddfcb 100644
--- a/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix
+++ b/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix
@@ -31,7 +31,7 @@ in stdenv.mkDerivation rec {
   # Workaround build on gcc-10+ and clang11+:
   #  spa/plugins/bluez5/libspa-bluez5.so.p/bluez5-monitor.c.o:(.bss+0x0):
   #    multiple definition of `spa_a2dp_sink_factory'
-  NIX_CFLAGS_COMPILE = [ "-fcommon" ];
+  env.NIX_CFLAGS_COMPILE = toString [ "-fcommon" ];
 
   mesonFlags = [
     "-Ddocs=true"
@@ -49,6 +49,6 @@ in stdenv.mkDerivation rec {
     homepage = "https://pipewire.org/";
     license = licenses.lgpl21;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ jtojnar ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/0060-libjack-path.patch b/nixpkgs/pkgs/development/libraries/pipewire/0060-libjack-path.patch
new file mode 100644
index 000000000000..7fde3dbb8faa
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/pipewire/0060-libjack-path.patch
@@ -0,0 +1,26 @@
+diff --git a/src/modules/meson.build b/src/modules/meson.build
+index 5d2dc9984..35f5773aa 100644
+--- a/src/modules/meson.build
++++ b/src/modules/meson.build
+@@ -169,6 +169,7 @@ if build_module_jack_tunnel
+     install_dir : modules_install_dir,
+     install_rpath: modules_install_dir,
+     dependencies : [mathlib, dl_lib, pipewire_dep],
++    c_args: '-DNIXPKGS_LIBJACK_PATH="@0@"'.format(jack_dep.get_variable('libdir'))
+   )
+   build_module_jackdbus_detect = dbus_dep.found()
+   if build_module_jackdbus_detect
+diff --git a/src/modules/module-jack-tunnel/weakjack.h b/src/modules/module-jack-tunnel/weakjack.h
+index 42580f798..e7aadd3cc 100644
+--- a/src/modules/module-jack-tunnel/weakjack.h
++++ b/src/modules/module-jack-tunnel/weakjack.h
+@@ -164,8 +164,7 @@ static inline int weakjack_load(struct weakjack *jack, const char *lib)
+ 
+ 		search_dirs = getenv("LIBJACK_PATH");
+ 		if (!search_dirs)
+-			search_dirs = PREFIX "/lib64/:" PREFIX "/lib/:"
+-				"/usr/lib64/:/usr/lib/:" LIBDIR;
++			search_dirs = NIXPKGS_LIBJACK_PATH;
+ 
+ 		while ((p = pw_split_walk(search_dirs, ":", &len, &state))) {
+ 			int pathlen;
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch b/nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch
index b4c9f8ed2aab..ca7d351257bf 100644
--- a/nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch
+++ b/nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch
@@ -1,8 +1,8 @@
 diff --git a/src/daemon/minimal.conf.in b/src/daemon/minimal.conf.in
-index 6464839a0..05546201f 100644
+index 9c885a38f..c474eb45d 100644
 --- a/src/daemon/minimal.conf.in
 +++ b/src/daemon/minimal.conf.in
-@@ -110,7 +110,7 @@ context.modules = [
+@@ -111,7 +111,7 @@ context.modules = [
              # access.allowed to list an array of paths of allowed
              # apps.
              #access.allowed = [
@@ -11,7 +11,7 @@ index 6464839a0..05546201f 100644
              #]
  
              # An array of rejected paths.
-@@ -298,5 +298,5 @@ context.exec = [
+@@ -359,5 +359,5 @@ context.exec = [
      # It can be interesting to start another daemon here that listens
      # on another address with the -a option (eg. -a tcp:4713).
      #
@@ -19,10 +19,10 @@ index 6464839a0..05546201f 100644
 +    #@pulse_comment@{ path = "<pipewire_path>" args = "-c pipewire-pulse.conf" }
  ]
 diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in
-index a948a1b9b..4ece43c6f 100644
+index 697bf094d..3a7b54ddd 100644
 --- a/src/daemon/pipewire.conf.in
 +++ b/src/daemon/pipewire.conf.in
-@@ -132,7 +132,7 @@ context.modules = [
+@@ -142,7 +142,7 @@ context.modules = [
              # access.allowed to list an array of paths of allowed
              # apps.
              #access.allowed = [
@@ -31,18 +31,20 @@ index a948a1b9b..4ece43c6f 100644
              #]
  
              # An array of rejected paths.
-@@ -246,12 +246,12 @@ context.exec = [
+@@ -294,7 +294,7 @@ context.exec = [
      # but it is better to start it as a systemd service.
      # Run the session manager with -h for options.
      #
--    @sm_comment@{ path = "@session_manager_path@" args = "@session_manager_args@" }
-+    @sm_comment@{ path = "<session_manager_path>" args = "@session_manager_args@" }
+-    @sm_comment@{ path = "@session_manager_path@" args = "@session_manager_args@"
++    @sm_comment@{ path = "<session_manager_path>" args = "@session_manager_args@"
+     @sm_comment@  condition = [ { exec.session-manager = null } { exec.session-manager = true } ] }
      #
      # You can optionally start the pulseaudio-server here as well
-     # but it is better to start it as a systemd service.
+@@ -302,6 +302,6 @@ context.exec = [
      # It can be interesting to start another daemon here that listens
      # on another address with the -a option (eg. -a tcp:4713).
      #
--    @pulse_comment@{ path = "@pipewire_path@" args = "-c pipewire-pulse.conf" }
-+    @pulse_comment@{ path = "<pipewire_path>" args = "-c pipewire-pulse.conf" }
+-    @pulse_comment@{ path = "@pipewire_path@" args = "-c pipewire-pulse.conf"
++    @pulse_comment@{ path = "<pipewire_path>" args = "-c pipewire-pulse.conf"
+     @pulse_comment@  condition = [ { exec.pipewire-pulse = null } { exec.pipewire-pulse = true } ] }
  ]
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/default.nix b/nixpkgs/pkgs/development/libraries/pipewire/default.nix
index 991ac1ad594c..2e60f72a40d5 100644
--- a/nixpkgs/pkgs/development/libraries/pipewire/default.nix
+++ b/nixpkgs/pkgs/development/libraries/pipewire/default.nix
@@ -2,7 +2,7 @@
 , lib
 , buildPackages
 , fetchFromGitLab
-, removeReferencesTo
+, fetchpatch
 , python3
 , meson
 , ninja
@@ -19,20 +19,18 @@
 , libjack2
 , libusb1
 , udev
-, libva
 , libsndfile
 , vulkan-headers
 , vulkan-loader
 , webrtc-audio-processing
 , ncurses
-, readline81 # meson can't find <7 as those versions don't have a .pc file
+, readline # meson can't find <7 as those versions don't have a .pc file
 , lilv
 , makeFontsConf
 , callPackage
 , nixosTests
 , withValgrind ? lib.meta.availableOn stdenv.hostPlatform valgrind
 , valgrind
-, withMediaSession ? true
 , libcameraSupport ? true
 , libcamera
 , libdrm
@@ -45,9 +43,13 @@
 , sbc
 , libfreeaptx
 , ldacbt
+, liblc3
 , fdk_aac
+, libopus
 , nativeHspSupport ? true
 , nativeHfpSupport ? true
+, nativeModemManagerSupport ? true
+, modemmanager
 , ofonoSupport ? true
 , hsphfpdSupport ? true
 , pulseTunnelSupport ? true
@@ -61,15 +63,17 @@
 , x11Support ? true
 , libcanberra
 , xorg
+, mysofaSupport ? true
+, libmysofa
+, tinycompress
 }:
 
 let
   mesonEnableFeature = b: if b then "enabled" else "disabled";
-  mesonList = l: "[" + lib.concatStringsSep "," l + "]";
 
   self = stdenv.mkDerivation rec {
     pname = "pipewire";
-    version = "0.3.56";
+    version = "0.3.71";
 
     outputs = [
       "out"
@@ -87,7 +91,7 @@ let
       owner = "pipewire";
       repo = "pipewire";
       rev = version;
-      sha256 = "sha256-wbHHr7BW8Gdj9D1IjzOuD6VuXApJ5E0Zde2iKWImzxg=";
+      sha256 = "sha256-NPYWl+WeI/z70gNHX1BAKslGFX634D7XrV04vuJgGOo=";
     };
 
     patches = [
@@ -95,6 +99,8 @@ let
       ./0040-alsa-profiles-use-libdir.patch
       # Change the path of the pipewire-pulse binary in the service definition.
       ./0050-pipewire-pulse-path.patch
+      # Load libjack from a known location
+      ./0060-libjack-path.patch
       # Move installed tests into their own output.
       ./0070-installed-tests-path.patch
       # Add option for changing the config install directory
@@ -105,6 +111,7 @@ let
       ./0095-spa-data-dir.patch
     ];
 
+    strictDeps = true;
     nativeBuildInputs = [
       docutils
       doxygen
@@ -113,6 +120,7 @@ let
       ninja
       pkg-config
       python3
+      glib
     ];
 
     buildInputs = [
@@ -124,24 +132,27 @@ let
       libsndfile
       lilv
       ncurses
-      readline81
+      readline
       udev
       vulkan-headers
       vulkan-loader
       webrtc-audio-processing
+      tinycompress
     ] ++ (if enableSystemd then [ systemd ] else [ eudev ])
     ++ lib.optionals gstreamerSupport [ gst_all_1.gst-plugins-base gst_all_1.gstreamer ]
     ++ lib.optionals libcameraSupport [ libcamera libdrm ]
     ++ lib.optional ffmpegSupport ffmpeg
-    ++ lib.optionals bluezSupport [ bluez libfreeaptx ldacbt sbc fdk_aac ]
+    ++ lib.optionals bluezSupport [ bluez libfreeaptx ldacbt liblc3 sbc fdk_aac libopus ]
+    ++ lib.optional nativeModemManagerSupport modemmanager
     ++ lib.optional pulseTunnelSupport libpulseaudio
     ++ lib.optional zeroconfSupport avahi
     ++ lib.optional raopSupport openssl
     ++ lib.optional rocSupport roc-toolkit
-    ++ lib.optionals x11Support [ libcanberra xorg.libX11 xorg.libXfixes ];
+    ++ lib.optionals x11Support [ libcanberra xorg.libX11 xorg.libXfixes ]
+    ++ lib.optional mysofaSupport libmysofa;
 
     # Valgrind binary is required for running one optional test.
-    checkInputs = lib.optional withValgrind valgrind;
+    nativeCheckInputs = lib.optional withValgrind valgrind;
 
     mesonFlags = [
       "-Ddocs=enabled"
@@ -163,16 +174,24 @@ let
       "-Dbluez5=${mesonEnableFeature bluezSupport}"
       "-Dbluez5-backend-hsp-native=${mesonEnableFeature nativeHspSupport}"
       "-Dbluez5-backend-hfp-native=${mesonEnableFeature nativeHfpSupport}"
+      "-Dbluez5-backend-native-mm=${mesonEnableFeature nativeModemManagerSupport}"
       "-Dbluez5-backend-ofono=${mesonEnableFeature ofonoSupport}"
       "-Dbluez5-backend-hsphfpd=${mesonEnableFeature hsphfpdSupport}"
+      # source code is not easily obtainable
       "-Dbluez5-codec-lc3plus=disabled"
+      "-Dbluez5-codec-lc3=${mesonEnableFeature bluezSupport}"
       "-Dsysconfdir=/etc"
       "-Dpipewire_confdata_dir=${placeholder "lib"}/share/pipewire"
       "-Draop=${mesonEnableFeature raopSupport}"
       "-Dsession-managers="
       "-Dvulkan=enabled"
       "-Dx11=${mesonEnableFeature x11Support}"
+      "-Dx11-xfixes=${mesonEnableFeature x11Support}"
+      "-Dlibcanberra=${mesonEnableFeature x11Support}"
+      "-Dlibmysofa=${mesonEnableFeature mysofaSupport}"
       "-Dsdl2=disabled" # required only to build examples, causes dependency loop
+      "-Drlimits-install=false" # installs to /etc, we won't use this anyway
+      "-Dcompress-offload=enabled"
     ];
 
     # Fontconfig error: Cannot load default config file
@@ -186,59 +205,26 @@ let
     '';
 
     postInstall = ''
-      mkdir $out/nix-support
-      ${if (stdenv.hostPlatform == stdenv.buildPlatform) then ''
-        pushd $lib/share/pipewire
-        for f in *.conf; do
-          echo "Generating JSON from $f"
-
-          $out/bin/spa-json-dump "$f" > "$out/nix-support/$f.json"
-        done
-        popd
-      '' else ''
-        cp ${buildPackages.pipewire}/nix-support/*.json "$out/nix-support"
-      ''}
-
       ${lib.optionalString enableSystemd ''
         moveToOutput "share/systemd/user/pipewire-pulse.*" "$pulse"
         moveToOutput "lib/systemd/user/pipewire-pulse.*" "$pulse"
       ''}
 
-      moveToOutput "bin/pipewire-pulse" "$pulse"
+      rm $out/bin/pipewire-pulse
+      mkdir -p $pulse/bin
+      ln -sf $out/bin/pipewire $pulse/bin/pipewire-pulse
 
       moveToOutput "bin/pw-jack" "$jack"
     '';
 
-    passthru = {
-      updateScript = ./update-pipewire.sh;
-      tests = {
-        installedTests = nixosTests.installed-tests.pipewire;
-
-        # This ensures that all the paths used by the NixOS module are found.
-        test-paths = callPackage ./test-paths.nix { package = self; } {
-          paths-out = [
-            "share/alsa/alsa.conf.d/50-pipewire.conf"
-            "nix-support/client-rt.conf.json"
-            "nix-support/client.conf.json"
-            "nix-support/jack.conf.json"
-            "nix-support/minimal.conf.json"
-            "nix-support/pipewire.conf.json"
-            "nix-support/pipewire-pulse.conf.json"
-          ];
-          paths-lib = [
-            "lib/alsa-lib/libasound_module_pcm_pipewire.so"
-            "share/alsa-card-profile/mixer"
-          ];
-        };
-      };
-    };
+    passthru.tests = nixosTests.installed-tests.pipewire;
 
     meta = with lib; {
       description = "Server and user space API to deal with multimedia pipelines";
       homepage = "https://pipewire.org/";
       license = licenses.mit;
       platforms = platforms.linux;
-      maintainers = with maintainers; [ jtojnar kranzes ];
+      maintainers = with maintainers; [ kranzes k900 ];
     };
   };
 
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/media-session.nix b/nixpkgs/pkgs/development/libraries/pipewire/media-session.nix
deleted file mode 100644
index 19940d8d7477..000000000000
--- a/nixpkgs/pkgs/development/libraries/pipewire/media-session.nix
+++ /dev/null
@@ -1,109 +0,0 @@
-{ stdenv
-, lib
-, fetchFromGitLab
-, fetchpatch
-, meson
-, ninja
-, pkg-config
-, doxygen
-, graphviz
-, systemd
-, pipewire
-, glib
-, dbus
-, alsa-lib
-, callPackage
-}:
-
-let
-  mesonEnable = b: if b then "enabled" else "disabled";
-  mesonList = l: "[" + lib.concatStringsSep "," l + "]";
-
-  self = stdenv.mkDerivation rec {
-    pname = "pipewire-media-session";
-    version = "0.4.1";
-
-    src = fetchFromGitLab {
-      domain = "gitlab.freedesktop.org";
-      owner = "pipewire";
-      repo = "media-session";
-      rev = version;
-      sha256 = "sha256-e537gTkiNYMz2YJrOff/MXYWVDgHZDkqkSn8Qh+7Wr4=";
-    };
-
-    patches = [
-      # Fix `ERROR: Tried to access unknown option "session-managers".`
-      (fetchpatch {
-        url = "https://gitlab.freedesktop.org/pipewire/media-session/-/commit/dfa740175c83e1cd0d815ad423f90872de566437.diff";
-        sha256 = "01rfwq8ipm8wyv98rxal1s5zrkf0pn9hgrngiq2wdbwj6vjdnr1h";
-      })
-      # Fix attempt to put system service units into pkgs.systemd.
-      (fetchpatch {
-        url = "https://gitlab.freedesktop.org/pipewire/media-session/-/commit/2ff6b0baec7325dde229013b9d37c93f8bc7edee.diff";
-        sha256 = "18gg7ca04ihl4ylnw78wdyrbvg66m8w43gg0wp258x4nv95gpps2";
-      })
-    ];
-
-    nativeBuildInputs = [
-      doxygen
-      graphviz
-      meson
-      ninja
-      pkg-config
-    ];
-
-    buildInputs = [
-      alsa-lib
-      dbus
-      glib
-      pipewire
-      systemd
-    ];
-
-    mesonFlags = [
-      "-Ddocs=enabled"
-      "-Dsystemd-system-service=enabled"
-      # We generate these empty files from the nixos module, don't bother installing them
-      "-Dwith-module-sets=[]"
-    ];
-
-    postUnpack = ''
-      patchShebangs source/doc/input-filter-h.sh
-      patchShebangs source/doc/input-filter.sh
-    '';
-
-    postInstall = ''
-      mkdir $out/nix-support
-      cd $out/share/pipewire/media-session.d
-      for f in *.conf; do
-        echo "Generating JSON from $f"
-        ${pipewire}/bin/spa-json-dump "$f" > "$out/nix-support/$f.json"
-      done
-    '';
-
-    passthru = {
-      updateScript = ./update-media-session.sh;
-      tests = {
-        test-paths = callPackage ./test-paths.nix { package = self; } {
-          paths-out = [
-            "nix-support/alsa-monitor.conf.json"
-            "nix-support/bluez-monitor.conf.json"
-            "nix-support/media-session.conf.json"
-            "nix-support/v4l2-monitor.conf.json"
-          ];
-          paths-lib = [];
-        };
-      };
-    };
-
-    meta = with lib; {
-      description = "Example session manager for PipeWire";
-      homepage = "https://pipewire.org";
-      license = licenses.mit;
-      platforms = platforms.linux;
-      maintainers = with maintainers; [ jtojnar kranzes ];
-    };
-  };
-
-in
-self
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix b/nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix
deleted file mode 100644
index 1e3e5fef3a6e..000000000000
--- a/nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-{ lib, runCommand, package, paths-out, paths-lib }:
-
-let
-  check-path = output: path: ''
-    if [[ ! -f "${output}/${path}" && ! -d "${output}/${path}" ]]; then
-      printf "Missing: %s\n" "${output}/${path}" | tee -a $out
-      error=error
-    else
-      printf "Found: %s\n" "${output}/${path}" | tee -a $out
-    fi
-  '';
-
-  check-output = output: lib.concatMapStringsSep "\n" (check-path output);
-in runCommand "pipewire-test-paths" { } ''
-  touch $out
-
-  ${check-output package.lib paths-lib}
-  ${check-output package paths-out}
-
-  if [[ -n "$error" ]]; then
-    exit 1
-  fi
-''
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/update-media-session.sh b/nixpkgs/pkgs/development/libraries/pipewire/update-media-session.sh
deleted file mode 100755
index c55745815759..000000000000
--- a/nixpkgs/pkgs/development/libraries/pipewire/update-media-session.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -p nix-update -i bash
-# shellcheck shell=bash
-
-set -o errexit -o pipefail -o nounset -o errtrace
-shopt -s inherit_errexit
-shopt -s nullglob
-IFS=$'\n'
-
-NIXPKGS_ROOT="$(git rev-parse --show-toplevel)"
-
-cd "$NIXPKGS_ROOT"
-nix-update pipewire-media-session
-outputs=$(nix-build . -A pipewire-media-session)
-for p in $outputs; do
-    conf_files=$(find "$p/nix-support/" -name '*.conf.json')
-    for c in $conf_files; do
-        file_name=$(basename "$c")
-        if [[ ! -e "nixos/modules/services/desktops/pipewire/media-session/$file_name" ]]; then
-            echo "New file $file_name found! Add it to the module config and passthru tests!"
-        fi
-        install -m 0644 "$c" "nixos/modules/services/desktops/pipewire/media-session/"
-    done
-done
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/update-pipewire.sh b/nixpkgs/pkgs/development/libraries/pipewire/update-pipewire.sh
deleted file mode 100755
index d94d39c76307..000000000000
--- a/nixpkgs/pkgs/development/libraries/pipewire/update-pipewire.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -p nix-update -i bash
-# shellcheck shell=bash
-
-set -o errexit -o pipefail -o nounset -o errtrace
-shopt -s inherit_errexit
-shopt -s nullglob
-IFS=$'\n'
-
-NIXPKGS_ROOT="$(git rev-parse --show-toplevel)"
-
-cd "$NIXPKGS_ROOT"
-nix-update pipewire
-outputs=$(nix-build . -A pipewire)
-for p in $outputs; do
-    conf_files=$(find "$p/nix-support/" -name '*.conf.json')
-    for c in $conf_files; do
-        file_name=$(basename "$c")
-        if [[ ! -e "nixos/modules/services/desktops/pipewire/daemon/$file_name" ]]; then
-            echo "New file $file_name found! Add it to the module config and passthru tests!"
-        fi
-        install -m 0644 "$c" "nixos/modules/services/desktops/pipewire/daemon/"
-    done
-done
-
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/wireplumber.nix b/nixpkgs/pkgs/development/libraries/pipewire/wireplumber.nix
index 8769587605ea..4e249459d7ae 100644
--- a/nixpkgs/pkgs/development/libraries/pipewire/wireplumber.nix
+++ b/nixpkgs/pkgs/development/libraries/pipewire/wireplumber.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitLab
-, fetchpatch
 , nix-update-script
 , # base build deps
   meson
@@ -20,14 +19,14 @@
 , pipewire
 , # options
   enableDocs ? true
-, enableGI ? stdenv.hostPlatform == stdenv.buildPlatform
+, enableGI ? true
 }:
 let
   mesonEnableFeature = b: if b then "enabled" else "disabled";
 in
 stdenv.mkDerivation rec {
   pname = "wireplumber";
-  version = "0.4.11";
+  version = "0.4.14";
 
   outputs = [ "out" "dev" ] ++ lib.optional enableDocs "doc";
 
@@ -36,18 +35,9 @@ stdenv.mkDerivation rec {
     owner = "pipewire";
     repo = "wireplumber";
     rev = version;
-    sha256 = "sha256-3NrzOsL0MekxMMXCFubEkazzSWFNsjUsX8n2ECcr7yY=";
+    sha256 = "sha256-PKS+WErdZuSU4jrFHQcRbnZIHlnlv06R6ZxIAIBptko=";
   };
 
-  patches = [
-    # fix sound not working in VMs
-    # FIXME: drop in next release
-    (fetchpatch {
-      url = "https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/c16e637c329bc9dda8544b18f5bd47a8d63ee253.patch";
-      sha256 = "sha256-xhhAlhOovwIjwAxXxvHRTG4GzpIPYvKQE2F4ZP1Udq8=";
-    })
-  ];
-
   nativeBuildInputs = [
     meson
     pkg-config
@@ -58,7 +48,7 @@ stdenv.mkDerivation rec {
     gobject-introspection
   ] ++ lib.optionals (enableDocs || enableGI) [
     doxygen
-    (python3.withPackages (ps: with ps;
+    (python3.pythonForBuild.withPackages (ps: with ps;
     lib.optionals enableDocs [ sphinx sphinx-rtd-theme breathe ] ++
       lib.optionals enableGI [ lxml ]
     ))
@@ -81,9 +71,7 @@ stdenv.mkDerivation rec {
     "-Dsysconfdir=/etc"
   ];
 
-  passthru.updateScript = nix-update-script {
-    attrPath = pname;
-  };
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "A modular session / policy manager for PipeWire";