From 3377257d0b7211cb564b9e53f9a2b35a13381a8b Mon Sep 17 00:00:00 2001 From: Nathaniel Glen Date: Mon, 31 Aug 2020 14:28:01 -0400 Subject: [PATCH] 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. --- nixos/modules/services/desktops/pipewire.nix | 4 ++-- pkgs/development/libraries/pipewire/default.nix | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/nixos/modules/services/desktops/pipewire.nix b/nixos/modules/services/desktops/pipewire.nix index 1a47cb27c16..6168c252e31 100644 --- a/nixos/modules/services/desktops/pipewire.nix +++ b/nixos/modules/services/desktops/pipewire.nix @@ -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 { diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix index 706d170ea43..8fc3ecb3873 100644 --- a/pkgs/development/libraries/pipewire/default.nix +++ b/pkgs/development/libraries/pipewire/default.nix @@ -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";