pipewire: split pulse and jack emulation out

This splits PulseAudio and JACK emulation into separate outputs. Doing
so provides a number of benefits.

First it fixes pw-pulse and pw-jack. Prior to this they pointed to bogus
locations because the environment variables were not evaluated.
Technically fixing this only requires setting libpulse-path and
libjack-path to any absolute path not necessarily separate outputs but
it comes as a nice result.

Secondly it allows overriding libpulseaudio with pipewire.pulse in many
packages. This is possible because the new outputs have a more standard
layout.
This commit is contained in:
Nathaniel Glen 2020-08-31 14:28:01 -04:00
parent f01be2978b
commit 3377257d0b
2 changed files with 13 additions and 3 deletions

View File

@ -11,11 +11,11 @@ let
jack-libs = pkgs.runCommand "jack-libs" {} ''
mkdir -p "$out/lib"
ln -s "${pkgs.pipewire.lib}"/lib/pipewire-*/jack "$out/lib/pipewire"
ln -s "${pkgs.pipewire.jack}/lib" "$out/lib/pipewire"
'';
pulse-libs = pkgs.runCommand "pulse-libs" {} ''
mkdir -p "$out/lib"
ln -s "${pkgs.pipewire.lib}"/lib/pipewire-*/pulse "$out/lib/pipewire"
ln -s "${pkgs.pipewire.pulse}/lib" "$out/lib/pipewire"
'';
in {

View File

@ -39,7 +39,15 @@ stdenv.mkDerivation rec {
pname = "pipewire";
version = "0.3.9";
outputs = [ "out" "lib" "dev" "doc" "installedTests" ];
outputs = [
"out"
"lib"
"pulse"
"jack"
"dev"
"doc"
"installedTests"
];
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
@ -95,6 +103,8 @@ stdenv.mkDerivation rec {
"-Dgstreamer=true"
"-Dudevrulesdir=lib/udev/rules.d"
"-Dinstalled_tests=true"
"-Dlibpulse-path=${placeholder "pulse"}/lib"
"-Dlibjack-path=${placeholder "jack"}/lib"
] ++ stdenv.lib.optional nativeHspSupport "-Dbluez5-backend-native=true"
++ stdenv.lib.optional ofonoSupport "-Dbluez5-backend-ofono=true";