summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Solanti <jhs@psonet.com>2021-06-02 03:16:43 +0300
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2021-06-11 14:52:30 +0000
commitc2628780fc5b9836565b41cc104cc9d63ef27720 (patch)
tree15e54ef830b9a67b5f2c89b6882065b52e872263
parentMerge pull request #126589 from NixOS/backport-126540-to-release-21.05 (diff)
downloadnixpkgs-c2628780fc5b9836565b41cc104cc9d63ef27720.tar.gz
pipewire: 0.3.27 -> 0.3.30
(cherry picked from commit c702cc43213dce2573adb924ab9c67522616aea6)
-rw-r--r--nixos/modules/services/desktops/pipewire/pipewire.conf.json13
-rw-r--r--pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch24
-rw-r--r--pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch28
-rw-r--r--pkgs/development/libraries/pipewire/default.nix44
4 files changed, 86 insertions, 23 deletions
diff --git a/nixos/modules/services/desktops/pipewire/pipewire.conf.json b/nixos/modules/services/desktops/pipewire/pipewire.conf.json
index a9330f54f4f7..a923ab4db235 100644
--- a/nixos/modules/services/desktops/pipewire/pipewire.conf.json
+++ b/nixos/modules/services/desktops/pipewire/pipewire.conf.json
@@ -74,7 +74,18 @@
"args": {
"factory.name": "support.node.driver",
"node.name": "Dummy-Driver",
- "priority.driver": 8000
+ "node.group": "pipewire.dummy",
+ "priority.driver": 20000
+ }
+ },
+ {
+ "factory": "spa-node-factory",
+ "args": {
+ "factory.name": "support.node.driver",
+ "node.name": "Freewheel-Driver",
+ "priority.driver": 19000,
+ "node.group": "pipewire.freewheel",
+ "node.freewheel": true
}
}
],
diff --git a/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch b/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch
index b92e2818ea07..b8d8fcb0f905 100644
--- a/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch
+++ b/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch
@@ -1,30 +1,30 @@
diff --git a/meson.build b/meson.build
-index a27569bd..fcf18344 100644
+index b6b4553b..f21c29d8 100644
--- a/meson.build
+++ b/meson.build
-@@ -36,7 +36,10 @@ pipewire_libexecdir = prefix / get_option('libexecdir')
- pipewire_localedir = prefix / get_option('localedir')
+@@ -37,7 +37,10 @@ pipewire_localedir = prefix / get_option('localedir')
pipewire_sysconfdir = prefix / get_option('sysconfdir')
--pipewire_configdir = pipewire_sysconfdir / 'pipewire'
-+pipewire_configdir = get_option('pipewire_config_dir')
-+if pipewire_configdir == ''
-+ pipewire_configdir = pipewire_sysconfdir / 'pipewire'
+ pipewire_configdir = pipewire_sysconfdir / 'pipewire'
+-pipewire_confdatadir = pipewire_datadir / 'pipewire'
++pipewire_confdatadir = get_option('pipewire_confdata_dir')
++if pipewire_confdatadir == ''
++ pipewire_confdatadir = pipewire_datadir / 'pipewire'
+endif
modules_install_dir = pipewire_libdir / pipewire_name
if host_machine.system() == 'linux'
diff --git a/meson_options.txt b/meson_options.txt
-index 85beb86a..372e8faa 100644
+index 9bc33fcd..e4bd2dc1 100644
--- a/meson_options.txt
+++ b/meson_options.txt
-@@ -67,6 +67,9 @@ option('jack-devel',
+@@ -61,6 +61,9 @@ option('jack-devel',
option('libjack-path',
description: 'Where to install the libjack.so library',
type: 'string')
-+option('pipewire_config_dir',
-+ type : 'string',
-+ description : 'Directory for pipewire configuration (defaults to /etc/pipewire)')
++option('pipewire_confdata_dir',
++ type: 'string',
++ description: 'Directory for pipewire default configuration (defaults to /usr/share/pipewire)')
option('spa-plugins',
description: 'Enable spa plugins integration',
type: 'feature',
diff --git a/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch b/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch
new file mode 100644
index 000000000000..966cb9579777
--- /dev/null
+++ b/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch
@@ -0,0 +1,28 @@
+diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in
+index bbafa134..227d3e06 100644
+--- a/src/daemon/pipewire.conf.in
++++ b/src/daemon/pipewire.conf.in
+@@ -116,7 +116,7 @@ context.modules = [
+ # access.allowed to list an array of paths of allowed
+ # apps.
+ #access.allowed = [
+- # @media_session_path@
++ # <media_session_path>
+ #]
+
+ # An array of rejected paths.
+@@ -220,12 +220,12 @@ context.exec = [
+ # but it is better to start it as a systemd service.
+ # Run the session manager with -h for options.
+ #
+- @comment@{ path = "@media_session_path@" args = "" }
++ @comment@{ path = "<media_session_path>" args = "" }
+ #
+ # You can optionally start the pulseaudio-server here as well
+ # but it is better to start it as a systemd service.
+ # It can be interesting to start another daemon here that listens
+ # on another address with the -a option (eg. -a tcp:4713).
+ #
+- @comment@{ path = "@pipewire_path@" args = "-c pipewire-pulse.conf" }
++ @comment@{ path = "<pipewire_path>" args = "-c pipewire-pulse.conf" }
+ ]
diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix
index b3e740f39c46..b8fb216e3583 100644
--- a/pkgs/development/libraries/pipewire/default.nix
+++ b/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"