From fb2ffd5b841e4d25368a324b3f2f8fd6559020f7 Mon Sep 17 00:00:00 2001 From: Aliaksandr Date: Fri, 20 Feb 2026 16:59:22 +0200 Subject: [PATCH 1/6] libldac-dec: init at 0.0.2-unstable-2024-11-12 needed for pipewire --- pkgs/by-name/li/libldac-dec/package.nix | 42 +++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 pkgs/by-name/li/libldac-dec/package.nix diff --git a/pkgs/by-name/li/libldac-dec/package.nix b/pkgs/by-name/li/libldac-dec/package.nix new file mode 100644 index 000000000000..7a8eaf208718 --- /dev/null +++ b/pkgs/by-name/li/libldac-dec/package.nix @@ -0,0 +1,42 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + nix-update-script, +}: + +stdenv.mkDerivation { + pname = "libldac-dec"; + version = "0.0.2-unstable-2024-11-12"; + + src = fetchFromGitHub { + owner = "O2C14"; + repo = "libldac-dec"; + rev = "8c15f53b97c8322c18cff3fddf6d7129dbd3d349"; + hash = "sha256-pdeEtQXxL2pd9qTfLOEmPDn3POgo5qxRqbK807WN98s="; + }; + + nativeBuildInputs = [ cmake ]; + + # Upstream CMakeLists.txt doesn't have install rules + postPatch = '' + cat >> CMakeLists.txt <<'EOF' + install(TARGETS ldacBT_dec LIBRARY DESTINATION ''${CMAKE_INSTALL_LIBDIR}) + EOF + ''; + + cmakeFlags = [ + "-DCMAKE_INSTALL_LIBDIR=lib" + ]; + + passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; }; + + meta = { + description = "LDAC decoding library implemented in another way"; + homepage = "https://github.com/O2C14/libldac-dec"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ qweered ]; + }; +} From 133511d21cac172509e1d4b6c4269ab327f7e906 Mon Sep 17 00:00:00 2001 From: Aliaksandr Date: Fri, 20 Feb 2026 16:26:20 +0200 Subject: [PATCH 2/6] pipewire: move to by-name --- .../pi}/pipewire/0060-libjack-path.patch | 0 .../pi}/pipewire/0070-installed-tests-path.patch | 0 .../default.nix => by-name/pi/pipewire/package.nix} | 8 ++++++-- pkgs/top-level/all-packages.nix | 8 -------- 4 files changed, 6 insertions(+), 10 deletions(-) rename pkgs/{development/libraries => by-name/pi}/pipewire/0060-libjack-path.patch (100%) rename pkgs/{development/libraries => by-name/pi}/pipewire/0070-installed-tests-path.patch (100%) rename pkgs/{development/libraries/pipewire/default.nix => by-name/pi/pipewire/package.nix} (96%) diff --git a/pkgs/development/libraries/pipewire/0060-libjack-path.patch b/pkgs/by-name/pi/pipewire/0060-libjack-path.patch similarity index 100% rename from pkgs/development/libraries/pipewire/0060-libjack-path.patch rename to pkgs/by-name/pi/pipewire/0060-libjack-path.patch diff --git a/pkgs/development/libraries/pipewire/0070-installed-tests-path.patch b/pkgs/by-name/pi/pipewire/0070-installed-tests-path.patch similarity index 100% rename from pkgs/development/libraries/pipewire/0070-installed-tests-path.patch rename to pkgs/by-name/pi/pipewire/0070-installed-tests-path.patch diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/by-name/pi/pipewire/package.nix similarity index 96% rename from pkgs/development/libraries/pipewire/default.nix rename to pkgs/by-name/pi/pipewire/package.nix index e7e1b0a87353..d787e2c7af78 100644 --- a/pkgs/development/libraries/pipewire/default.nix +++ b/pkgs/by-name/pi/pipewire/package.nix @@ -37,7 +37,11 @@ libcamera, libdrm, gst_all_1, - ffmpeg, + # ffmpeg depends on SDL2 which depends on pipewire by default. + # Break the cycle by depending on ffmpeg-headless. + # Pipewire only uses libavcodec (via an SPA plugin), which isn't + # affected by the *-headless changes. + ffmpeg-headless, fftwFloat, bluezSupport ? stdenv.hostPlatform.isLinux, bluez, @@ -121,7 +125,7 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ dbus - ffmpeg + ffmpeg-headless fftwFloat glib gst_all_1.gst-plugins-base diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 535112b4b981..abc2be36691b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5284,14 +5284,6 @@ with pkgs; pipx = with python3.pkgs; toPythonApplication pipx; - pipewire = callPackage ../development/libraries/pipewire { - # ffmpeg depends on SDL2 which depends on pipewire by default. - # Break the cycle by depending on ffmpeg-headless. - # Pipewire only uses libavcodec (via an SPA plugin), which isn't - # affected by the *-headless changes. - ffmpeg = ffmpeg-headless; - }; - wireplumber = callPackage ../development/libraries/pipewire/wireplumber.nix { }; racket-minimal = callPackage ../by-name/ra/racket/minimal.nix { From 863e6a3d7cabc8fef5d698dc13d33bf6dcd945f2 Mon Sep 17 00:00:00 2001 From: Aliaksandr Date: Fri, 20 Feb 2026 17:06:49 +0200 Subject: [PATCH 3/6] pipewire: 1.4.10 -> 1.6.0, enable structuredAttrs --- pkgs/by-name/pi/pipewire/package.nix | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/pkgs/by-name/pi/pipewire/package.nix b/pkgs/by-name/pi/pipewire/package.nix index d787e2c7af78..a87dfcd6d32c 100644 --- a/pkgs/by-name/pi/pipewire/package.nix +++ b/pkgs/by-name/pi/pipewire/package.nix @@ -51,8 +51,12 @@ fdk_aac, libopus, ldacbt, + libldac-dec, + spandsp, modemmanager, libpulseaudio, + onnxruntimeSupport ? false, + onnxruntime, zeroconfSupport ? true, avahi, raopSupport ? true, @@ -84,7 +88,7 @@ in stdenv.mkDerivation (finalAttrs: { pname = "pipewire"; - version = "1.4.10"; + version = "1.6.0"; outputs = [ "out" @@ -99,8 +103,8 @@ stdenv.mkDerivation (finalAttrs: { domain = "gitlab.freedesktop.org"; owner = "pipewire"; repo = "pipewire"; - rev = finalAttrs.version; - sha256 = "sha256-/Av2iXWInsY6S+PdbfCm1AFtHEFt4LXhgRJ6r9lqOpM="; + tag = finalAttrs.version; + hash = "sha256-Xc5ouBvT8v0hA3lPfCjhCicoem0jk4knevj7LJJipJ4="; }; patches = [ @@ -111,6 +115,8 @@ stdenv.mkDerivation (finalAttrs: { ]; strictDeps = true; + __structuredAttrs = true; + depsBuildBuild = [ buildPackages.stdenv.cc ]; nativeBuildInputs = [ docutils @@ -160,7 +166,10 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optional webrtcAudioProcessingSupport webrtc-audio-processing ++ lib.optional stdenv.hostPlatform.isLinux alsa-lib - ++ lib.optional ldacbtSupport ldacbt + ++ lib.optionals ldacbtSupport [ + ldacbt + libldac-dec + ] ++ lib.optional libcameraSupport libcamera ++ lib.optional zeroconfSupport avahi ++ lib.optional raopSupport openssl @@ -182,9 +191,11 @@ stdenv.mkDerivation (finalAttrs: { liblc3 sbc fdk_aac + spandsp ] ++ lib.optional ffadoSupport ffado ++ lib.optional stdenv.hostPlatform.isLinux libselinux + ++ lib.optional onnxruntimeSupport onnxruntime ++ lib.optional modemmanagerSupport modemmanager; # Valgrind binary is required for running one optional test. @@ -212,7 +223,7 @@ stdenv.mkDerivation (finalAttrs: { (lib.mesonEnable "avb" stdenv.hostPlatform.isLinux) (lib.mesonEnable "v4l2" stdenv.hostPlatform.isLinux) (lib.mesonEnable "pipewire-v4l2" stdenv.hostPlatform.isLinux) - (lib.mesonEnable "systemd" enableSystemd) + (lib.mesonEnable "libsystemd" enableSystemd) (lib.mesonEnable "systemd-system-service" enableSystemd) (lib.mesonEnable "udev" (!enableSystemd && stdenv.hostPlatform.isLinux)) (lib.mesonEnable "ffmpeg" true) @@ -241,6 +252,7 @@ stdenv.mkDerivation (finalAttrs: { (lib.mesonEnable "compress-offload" true) (lib.mesonEnable "man" true) (lib.mesonEnable "snap" false) # we don't currently have a working snapd + (lib.mesonEnable "onnxruntime" onnxruntimeSupport) ]; # Fontconfig error: Cannot load default config file @@ -253,8 +265,9 @@ stdenv.mkDerivation (finalAttrs: { patchShebangs doc/*.py patchShebangs doc/input-filter-h.sh - # Remove installed-test that runs forever + # Remove problematic installed-tests sed -i -e "/test-pipewire-alsa-stress/d" pipewire-alsa/tests/meson.build + sed -i -e "/benchmark-aec/d" spa/tests/meson.build ''; postInstall = '' From a80abe10cd1548370c54696bdfd1426d4219d0bb Mon Sep 17 00:00:00 2001 From: Aliaksandr Date: Fri, 20 Feb 2026 17:10:23 +0200 Subject: [PATCH 4/6] pipewire: add qweered as maintainer --- pkgs/by-name/pi/pipewire/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/pi/pipewire/package.nix b/pkgs/by-name/pi/pipewire/package.nix index a87dfcd6d32c..1d026523ad98 100644 --- a/pkgs/by-name/pi/pipewire/package.nix +++ b/pkgs/by-name/pi/pipewire/package.nix @@ -289,6 +289,7 @@ stdenv.mkDerivation (finalAttrs: { platforms = lib.platforms.linux ++ lib.platforms.freebsd; maintainers = with lib.maintainers; [ k900 + qweered ]; pkgConfigModules = [ "libpipewire-0.3" From 476c5c5957c566d3aa6fe28c041065512d1b193f Mon Sep 17 00:00:00 2001 From: Aliaksandr Date: Fri, 20 Feb 2026 16:28:00 +0200 Subject: [PATCH 5/6] wireplumber: move to by-name --- .../wireplumber.nix => by-name/wi/wireplumber/package.nix} | 0 pkgs/top-level/all-packages.nix | 2 -- 2 files changed, 2 deletions(-) rename pkgs/{development/libraries/pipewire/wireplumber.nix => by-name/wi/wireplumber/package.nix} (100%) diff --git a/pkgs/development/libraries/pipewire/wireplumber.nix b/pkgs/by-name/wi/wireplumber/package.nix similarity index 100% rename from pkgs/development/libraries/pipewire/wireplumber.nix rename to pkgs/by-name/wi/wireplumber/package.nix diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index abc2be36691b..cd29b49308c6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5284,8 +5284,6 @@ with pkgs; pipx = with python3.pkgs; toPythonApplication pipx; - wireplumber = callPackage ../development/libraries/pipewire/wireplumber.nix { }; - racket-minimal = callPackage ../by-name/ra/racket/minimal.nix { stdenv = stdenvAdapters.makeStaticLibraries stdenv; }; From ac861d9da601f6bb8f04781992ff8a833d502f62 Mon Sep 17 00:00:00 2001 From: Aliaksandr Date: Fri, 20 Feb 2026 17:05:34 +0200 Subject: [PATCH 6/6] wireplumber: modernize, add qweered as maintainer --- pkgs/by-name/wi/wireplumber/package.nix | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/wi/wireplumber/package.nix b/pkgs/by-name/wi/wireplumber/package.nix index f091ff12e618..5090168e8822 100644 --- a/pkgs/by-name/wi/wireplumber/package.nix +++ b/pkgs/by-name/wi/wireplumber/package.nix @@ -23,7 +23,7 @@ enableGI ? true, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "wireplumber"; version = "0.5.13"; @@ -37,10 +37,13 @@ stdenv.mkDerivation rec { domain = "gitlab.freedesktop.org"; owner = "pipewire"; repo = "wireplumber"; - rev = version; + tag = finalAttrs.version; hash = "sha256-iQpMT01mRroaA48spA11zdb47L5AcVmigE4nJuJRaUo="; }; + strictDeps = true; + __structuredAttrs = true; + nativeBuildInputs = [ meson pkg-config @@ -90,6 +93,9 @@ stdenv.mkDerivation rec { homepage = "https://pipewire.org"; license = lib.licenses.mit; platforms = lib.platforms.linux; - maintainers = with lib.maintainers; [ k900 ]; + maintainers = with lib.maintainers; [ + k900 + qweered + ]; }; -} +})