diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/pipewire/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/pipewire/default.nix | 84 |
1 files changed, 35 insertions, 49 deletions
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 ]; }; }; |