diff --git a/nixos/modules/services/desktops/pipewire/client-rt.conf.json b/nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json similarity index 100% rename from nixos/modules/services/desktops/pipewire/client-rt.conf.json rename to nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json diff --git a/nixos/modules/services/desktops/pipewire/client.conf.json b/nixos/modules/services/desktops/pipewire/daemon/client.conf.json similarity index 100% rename from nixos/modules/services/desktops/pipewire/client.conf.json rename to nixos/modules/services/desktops/pipewire/daemon/client.conf.json diff --git a/nixos/modules/services/desktops/pipewire/jack.conf.json b/nixos/modules/services/desktops/pipewire/daemon/jack.conf.json similarity index 100% rename from nixos/modules/services/desktops/pipewire/jack.conf.json rename to nixos/modules/services/desktops/pipewire/daemon/jack.conf.json diff --git a/nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json b/nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json similarity index 100% rename from nixos/modules/services/desktops/pipewire/pipewire-pulse.conf.json rename to nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json diff --git a/nixos/modules/services/desktops/pipewire/pipewire.conf.json b/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json similarity index 100% rename from nixos/modules/services/desktops/pipewire/pipewire.conf.json rename to nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json diff --git a/nixos/modules/services/desktops/pipewire/pipewire.nix b/nixos/modules/services/desktops/pipewire/pipewire.nix index bc75aa2717a..fb5a27a50d6 100644 --- a/nixos/modules/services/desktops/pipewire/pipewire.nix +++ b/nixos/modules/services/desktops/pipewire/pipewire.nix @@ -22,12 +22,11 @@ let # Use upstream config files passed through spa-json-dump as the base # Patched here as necessary for them to work with this module defaults = { - client = builtins.fromJSON (builtins.readFile ./client.conf.json); - client-rt = builtins.fromJSON (builtins.readFile ./client-rt.conf.json); - jack = builtins.fromJSON (builtins.readFile ./jack.conf.json); - # Remove session manager invocation from the upstream generated file, it points to the wrong path - pipewire = builtins.fromJSON (builtins.readFile ./pipewire.conf.json); - pipewire-pulse = builtins.fromJSON (builtins.readFile ./pipewire-pulse.conf.json); + client = builtins.fromJSON (builtins.readFile ./daemon/client.conf.json); + client-rt = builtins.fromJSON (builtins.readFile ./daemon/client-rt.conf.json); + jack = builtins.fromJSON (builtins.readFile ./daemon/jack.conf.json); + pipewire = builtins.fromJSON (builtins.readFile ./daemon/pipewire.conf.json); + pipewire-pulse = builtins.fromJSON (builtins.readFile ./daemon/pipewire-pulse.conf.json); }; configs = { diff --git a/pkgs/development/libraries/pipewire/0050-pipewire-pulse-path.patch b/pkgs/development/libraries/pipewire/0050-pipewire-pulse-path.patch index fd7d031ee0f..84238bf6e5a 100644 --- a/pkgs/development/libraries/pipewire/0050-pipewire-pulse-path.patch +++ b/pkgs/development/libraries/pipewire/0050-pipewire-pulse-path.patch @@ -1,8 +1,8 @@ diff --git a/meson_options.txt b/meson_options.txt -index 66791f3a..93b5e2a9 100644 +index 71c2e35e9..a0f380c04 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -172,6 +172,9 @@ option('udev', +@@ -176,6 +176,9 @@ option('udev', option('udevrulesdir', type : 'string', description : 'Directory for udev rules (defaults to /lib/udev/rules.d)') @@ -13,7 +13,7 @@ index 66791f3a..93b5e2a9 100644 type : 'string', description : 'Directory for user systemd units (defaults to /usr/lib/systemd/user)') diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build -index aa30a86f..1edebb2d 100644 +index 5bd134537..5a3ca9ed5 100644 --- a/src/daemon/systemd/user/meson.build +++ b/src/daemon/systemd/user/meson.build @@ -9,7 +9,7 @@ install_data( @@ -22,6 +22,6 @@ index aa30a86f..1edebb2d 100644 systemd_config.set('PW_BINARY', pipewire_bindir / 'pipewire') -systemd_config.set('PW_PULSE_BINARY', pipewire_bindir / 'pipewire-pulse') +systemd_config.set('PW_PULSE_BINARY', get_option('pipewire_pulse_prefix') / 'bin/pipewire-pulse') - systemd_config.set('PW_MEDIA_SESSION_BINARY', pipewire_bindir / 'pipewire-media-session') configure_file(input : 'pipewire.service.in', + output : 'pipewire.service', diff --git a/pkgs/development/libraries/pipewire/0055-pipewire-media-session-path.patch b/pkgs/development/libraries/pipewire/0055-pipewire-media-session-path.patch deleted file mode 100644 index 8290aec5dfc..00000000000 --- a/pkgs/development/libraries/pipewire/0055-pipewire-media-session-path.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/meson_options.txt b/meson_options.txt -index 93b5e2a9..1b915ac3 100644 ---- a/meson_options.txt -+++ b/meson_options.txt -@@ -200,3 +200,6 @@ option('media-session', - type: 'feature', - value: 'auto') -+option('media-session-prefix', -+ description: 'Install directory for pipewire-media-session and its support files', -+ type: 'string') - option('session-managers', -diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build -index 1edebb2d..251270eb 100644 ---- a/src/daemon/systemd/user/meson.build -+++ b/src/daemon/systemd/user/meson.build -@@ -10,7 +10,7 @@ install_data( - systemd_config = configuration_data() - systemd_config.set('PW_BINARY', pipewire_bindir / 'pipewire') - systemd_config.set('PW_PULSE_BINARY', get_option('pipewire_pulse_prefix') / 'bin/pipewire-pulse') --systemd_config.set('PW_MEDIA_SESSION_BINARY', pipewire_bindir / 'pipewire-media-session') -+systemd_config.set('PW_MEDIA_SESSION_BINARY', get_option('media-session-prefix') / 'bin/pipewire-media-session') - - configure_file(input : 'pipewire.service.in', - output : 'pipewire.service', diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix index 86a3517ba54..8070222b9e1 100644 --- a/pkgs/development/libraries/pipewire/default.nix +++ b/pkgs/development/libraries/pipewire/default.nix @@ -1,6 +1,7 @@ { stdenv , lib , fetchFromGitLab +, fetchpatch , removeReferencesTo , python3 , meson @@ -59,7 +60,7 @@ let self = stdenv.mkDerivation rec { pname = "pipewire"; - version = "0.3.38"; + version = "0.3.39"; outputs = [ "out" @@ -69,7 +70,6 @@ let "dev" "doc" "man" - "mediaSession" "installedTests" ]; @@ -78,7 +78,7 @@ let owner = "pipewire"; repo = "pipewire"; rev = version; - sha256 = "sha256-QENz4MVyKuPJynA+NBdmKa6g1GrcRg9vzXLJ1/i3VJU="; + sha256 = "sha256-peTS1+NuQxZg1rrv8DrnJW5BR9yReleqooIwhZWHLjM="; }; patches = [ @@ -86,8 +86,6 @@ let ./0040-alsa-profiles-use-libdir.patch # Change the path of the pipewire-pulse binary in the service definition. ./0050-pipewire-pulse-path.patch - # Change the path of the pipewire-media-session binary in the service definition. - ./0055-pipewire-media-session-path.patch # Move installed tests into their own output. ./0070-installed-tests-path.patch # Add option for changing the config install directory @@ -96,6 +94,12 @@ let ./0090-pipewire-config-template-paths.patch # Place SPA data files in lib output to avoid dependency cycles ./0095-spa-data-dir.patch + # Fix compilation on some architectures + # XXX: REMOVE ON NEXT RELEASE + (fetchpatch { + url = "https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/651f0decea5f83730c271e9bed03cdd0048fcd49.diff"; + sha256 = "1bmpi5qn750mcspaw7m57ww0503sl9781jswqby4gr0f7c5wmqvj"; + }) ]; nativeBuildInputs = [ @@ -136,7 +140,6 @@ let "-Dinstalled_tests=enabled" "-Dinstalled_test_prefix=${placeholder "installedTests"}" "-Dpipewire_pulse_prefix=${placeholder "pulse"}" - "-Dmedia-session-prefix=${placeholder "mediaSession"}" "-Dlibjack-path=${placeholder "jack"}/lib" "-Dlibcamera=disabled" "-Droc=disabled" @@ -151,7 +154,8 @@ let "-Dbluez5-backend-hsphfpd=${mesonEnable hsphfpdSupport}" "-Dsysconfdir=/etc" "-Dpipewire_confdata_dir=${placeholder "lib"}/share/pipewire" - "-Dsession-managers=${mesonList (lib.optional withMediaSession "media-session")}" + "-Dsession-managers=" + "-Dvulkan=enabled" ]; FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file @@ -160,29 +164,20 @@ let postUnpack = '' patchShebangs source/doc/strip-static.sh + patchShebangs source/doc/input-filter.sh + patchShebangs source/doc/input-filter-h.sh patchShebangs source/spa/tests/gen-cpp-test.py ''; postInstall = '' - pushd $lib/share - mkdir -p $out/nix-support/etc/pipewire - for f in pipewire/*.conf; do + mkdir $out/nix-support + pushd $lib/share/pipewire + for f in *.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 pipewire/media-session.d/*.conf; do - echo "Generating JSON from $f" - $out/bin/spa-json-dump "$f" > "$mediaSession/nix-support/etc/$f.json" + $out/bin/spa-json-dump "$f" > "$out/nix-support/$f.json" done popd - 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" - moveToOutput "share/systemd/user/pipewire-pulse.*" "$pulse" moveToOutput "lib/systemd/user/pipewire-pulse.*" "$pulse" moveToOutput "bin/pipewire-pulse" "$pulse" @@ -194,21 +189,14 @@ let installedTests = nixosTests.installed-tests.pipewire; # This ensures that all the paths used by the NixOS module are found. - test-paths = callPackage ./test-paths.nix { + test-paths = callPackage ./test-paths.nix { package = self; } { 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" - "nix-support/etc/pipewire/pipewire-pulse.conf.json" - ]; - paths-out-media-session = [ - "nix-support/etc/pipewire/media-session.d/alsa-monitor.conf.json" - "nix-support/etc/pipewire/media-session.d/bluez-monitor.conf.json" - "nix-support/etc/pipewire/media-session.d/bluez-hardware.conf.json" - "nix-support/etc/pipewire/media-session.d/media-session.conf.json" - "nix-support/etc/pipewire/media-session.d/v4l2-monitor.conf.json" + "nix-support/client-rt.conf.json" + "nix-support/client.conf.json" + "nix-support/jack.conf.json" + "nix-support/pipewire.conf.json" + "nix-support/pipewire-pulse.conf.json" ]; paths-lib = [ "lib/alsa-lib/libasound_module_pcm_pipewire.so"