From afbb3ca9ef1a2ca66f96d7447e79030d8b5dbf49 Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Thu, 17 Feb 2022 17:39:31 +0200 Subject: [PATCH 1/4] pipewire: 0.3.45 -> 0.3.46 --- .../pipewire/daemon/client-rt.conf.json | 2 +- .../pipewire/daemon/minimal.conf.json | 118 ++++++++++++++++++ .../pipewire/daemon/pipewire-pulse.conf.json | 65 +++++++++- .../pipewire/daemon/pipewire.conf.json | 7 +- .../pipewire/0070-installed-tests-path.patch | 14 +-- .../libraries/pipewire/default.nix | 5 +- 6 files changed, 195 insertions(+), 16 deletions(-) create mode 100644 nixos/modules/services/desktops/pipewire/daemon/minimal.conf.json diff --git a/nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json b/nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json index 284d8c394a61..9aa51b61431d 100644 --- a/nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json +++ b/nixos/modules/services/desktops/pipewire/daemon/client-rt.conf.json @@ -8,7 +8,7 @@ }, "context.modules": [ { - "name": "libpipewire-module-rtkit", + "name": "libpipewire-module-rt", "args": {}, "flags": [ "ifexists", diff --git a/nixos/modules/services/desktops/pipewire/daemon/minimal.conf.json b/nixos/modules/services/desktops/pipewire/daemon/minimal.conf.json new file mode 100644 index 000000000000..c7f58fd5799a --- /dev/null +++ b/nixos/modules/services/desktops/pipewire/daemon/minimal.conf.json @@ -0,0 +1,118 @@ +{ + "context.properties": { + "link.max-buffers": 16, + "core.daemon": true, + "core.name": "pipewire-0", + "settings.check-quantum": true, + "settings.check-rate": true, + "vm.overrides": { + "default.clock.min-quantum": 1024 + } + }, + "context.spa-libs": { + "audio.convert.*": "audioconvert/libspa-audioconvert", + "api.alsa.*": "alsa/libspa-alsa", + "support.*": "support/libspa-support" + }, + "context.modules": [ + { + "name": "libpipewire-module-rt", + "args": { + "nice.level": -11 + }, + "flags": [ + "ifexists", + "nofail" + ] + }, + { + "name": "libpipewire-module-protocol-native" + }, + { + "name": "libpipewire-module-profiler" + }, + { + "name": "libpipewire-module-metadata" + }, + { + "name": "libpipewire-module-spa-node-factory" + }, + { + "name": "libpipewire-module-client-node" + }, + { + "name": "libpipewire-module-access", + "args": {} + }, + { + "name": "libpipewire-module-adapter" + }, + { + "name": "libpipewire-module-link-factory" + } + ], + "context.objects": [ + { + "factory": "metadata", + "args": { + "metadata.name": "default" + } + }, + { + "factory": "spa-node-factory", + "args": { + "factory.name": "support.node.driver", + "node.name": "Dummy-Driver", + "node.group": "pipewire.dummy", + "priority.driver": 20000 + } + }, + { + "factory": "spa-node-factory", + "args": { + "factory.name": "support.node.driver", + "node.name": "Freewheel-Driver", + "priority.driver": 19000, + "node.group": "pipewire.freewheel", + "node.freewheel": true + } + }, + { + "factory": "adapter", + "args": { + "factory.name": "api.alsa.pcm.source", + "node.name": "system", + "node.description": "system", + "media.class": "Audio/Source", + "api.alsa.path": "hw:0", + "node.suspend-on-idle": true, + "resample.disable": true, + "channelmix.disable": true, + "adapter.auto-port-config": { + "mode": "dsp", + "monitor": false, + "position": "unknown" + } + } + }, + { + "factory": "adapter", + "args": { + "factory.name": "api.alsa.pcm.sink", + "node.name": "system", + "node.description": "system", + "media.class": "Audio/Sink", + "api.alsa.path": "hw:0", + "node.suspend-on-idle": true, + "resample.disable": true, + "channelmix.disable": true, + "adapter.auto-port-config": { + "mode": "dsp", + "monitor": false, + "position": "unknown" + } + } + } + ], + "context.exec": [] +} diff --git a/nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json b/nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json index 3ed994f11145..df0f62556dff 100644 --- a/nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json +++ b/nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json @@ -6,8 +6,10 @@ }, "context.modules": [ { - "name": "libpipewire-module-rtkit", - "args": {}, + "name": "libpipewire-module-rt", + "args": { + "nice.level": -11 + }, "flags": [ "ifexists", "nofail" @@ -37,6 +39,61 @@ } } ], - "context.exec": [], - "stream.properties": {} + "context.exec": [ + { + "path": "pactl", + "args": "load-module module-always-sink" + } + ], + "stream.properties": {}, + "pulse.rules": [ + { + "matches": [ + {} + ], + "actions": { + "update-props": {} + } + }, + { + "matches": [ + { + "application.process.binary": "teams" + }, + { + "application.process.binary": "skypeforlinux" + } + ], + "actions": { + "quirks": [ + "force-s16-info" + ] + } + }, + { + "matches": [ + { + "application.process.binary": "firefox" + } + ], + "actions": { + "quirks": [ + "remove-capture-dont-move" + ] + } + }, + { + "matches": [ + { + "application.name": "~speech-dispatcher*" + } + ], + "actions": { + "update-props": { + "pulse.min.req": "1024/48000", + "pulse.min.quantum": "1024/48000" + } + } + } + ] } diff --git a/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json b/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json index a923ab4db235..7c79f0168c02 100644 --- a/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json +++ b/nixos/modules/services/desktops/pipewire/daemon/pipewire.conf.json @@ -3,6 +3,7 @@ "link.max-buffers": 16, "core.daemon": true, "core.name": "pipewire-0", + "default.clock.min-quantum": 16, "vm.overrides": { "default.clock.min-quantum": 1024 } @@ -19,8 +20,10 @@ }, "context.modules": [ { - "name": "libpipewire-module-rtkit", - "args": {}, + "name": "libpipewire-module-rt", + "args": { + "nice.level": -11 + }, "flags": [ "ifexists", "nofail" diff --git a/pkgs/development/libraries/pipewire/0070-installed-tests-path.patch b/pkgs/development/libraries/pipewire/0070-installed-tests-path.patch index 926de3062546..b2bcb421befb 100644 --- a/pkgs/development/libraries/pipewire/0070-installed-tests-path.patch +++ b/pkgs/development/libraries/pipewire/0070-installed-tests-path.patch @@ -1,23 +1,23 @@ diff --git a/meson.build b/meson.build -index d4a4cda7..a27569bd 100644 +index 2107c19ec..20ccdfd9f 100644 --- a/meson.build +++ b/meson.build -@@ -353,8 +353,8 @@ libinotify_dep = (build_machine.system() == 'freebsd' - - alsa_dep = dependency('alsa', version : '>=1.1.7', required: get_option('pipewire-alsa')) +@@ -380,8 +380,8 @@ lilv_lib = dependency('lilv-0', required: get_option('lv2')) + summary({'lilv (for lv2 plugins)': lilv_lib.found()}, bool_yn: true) + cdata.set('HAVE_LILV', lilv_lib.found()) -installed_tests_metadir = pipewire_datadir / 'installed-tests' / pipewire_name -installed_tests_execdir = pipewire_libexecdir / 'installed-tests' / pipewire_name +installed_tests_metadir = get_option('installed_test_prefix') / 'share' / 'installed-tests' / pipewire_name +installed_tests_execdir = get_option('installed_test_prefix') / 'libexec' / 'installed-tests' / pipewire_name - installed_tests_enabled = not get_option('installed_tests').disabled() + installed_tests_enabled = get_option('installed_tests').allowed() installed_tests_template = files('template.test.in') diff --git a/meson_options.txt b/meson_options.txt -index 1b915ac3..85beb86a 100644 +index 961ae2a76..a36e9e45f 100644 --- a/meson_options.txt +++ b/meson_options.txt -@@ -29,6 +29,9 @@ option('installed_tests', +@@ -22,6 +22,9 @@ option('installed_tests', description: 'Install manual and automated test executables', type: 'feature', value: 'disabled') diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix index 79682d7ace81..a89b579c4eb8 100644 --- a/pkgs/development/libraries/pipewire/default.nix +++ b/pkgs/development/libraries/pipewire/default.nix @@ -69,7 +69,7 @@ let self = stdenv.mkDerivation rec { pname = "pipewire"; - version = "0.3.45"; + version = "0.3.46"; outputs = [ "out" @@ -87,7 +87,7 @@ let owner = "pipewire"; repo = "pipewire"; rev = version; - sha256 = "sha256-OnQd98qfOekAsVXLbciZLNPrM84KBX6fOx/f8y2BYI0="; + sha256 = "sha256-29p6nEaIDeOAAnRJXwJWEnMTCNzAGVi9f8856I1R+fg="; }; patches = [ @@ -214,6 +214,7 @@ let "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" ]; From 394c6f79497f7032c91ba69510c7f7aeb794b3b1 Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Thu, 17 Feb 2022 17:39:53 +0200 Subject: [PATCH 2/4] nixos/pipewire: use standalone config when no session manger enabled --- nixos/modules/services/desktops/pipewire/pipewire.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/desktops/pipewire/pipewire.nix b/nixos/modules/services/desktops/pipewire/pipewire.nix index c3cfd46e61c2..59e9342a6ea1 100644 --- a/nixos/modules/services/desktops/pipewire/pipewire.nix +++ b/nixos/modules/services/desktops/pipewire/pipewire.nix @@ -25,15 +25,18 @@ let client = lib.importJSON ./daemon/client.conf.json; client-rt = lib.importJSON ./daemon/client-rt.conf.json; jack = lib.importJSON ./daemon/jack.conf.json; + minimal = lib.importJSON ./daemon/minimal.conf.json; pipewire = lib.importJSON ./daemon/pipewire.conf.json; pipewire-pulse = lib.importJSON ./daemon/pipewire-pulse.conf.json; }; + useSessionManager = cfg.wireplumber.enable || cfg.media-session.enable; + configs = { client = recursiveUpdate defaults.client cfg.config.client; client-rt = recursiveUpdate defaults.client-rt cfg.config.client-rt; jack = recursiveUpdate defaults.jack cfg.config.jack; - pipewire = recursiveUpdate defaults.pipewire cfg.config.pipewire; + pipewire = recursiveUpdate (if useSessionManager then defaults.pipewire else defaults.minimal) cfg.config.pipewire; pipewire-pulse = recursiveUpdate defaults.pipewire-pulse cfg.config.pipewire-pulse; }; in { From 220367560cd0df9f956b42f5d9e2a7495ba81247 Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Fri, 18 Feb 2022 15:27:13 +0200 Subject: [PATCH 3/4] pipewire: 0.3.46 -> 0.3.47 --- pkgs/development/libraries/pipewire/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix index a89b579c4eb8..8be401a687fa 100644 --- a/pkgs/development/libraries/pipewire/default.nix +++ b/pkgs/development/libraries/pipewire/default.nix @@ -69,7 +69,7 @@ let self = stdenv.mkDerivation rec { pname = "pipewire"; - version = "0.3.46"; + version = "0.3.47"; outputs = [ "out" @@ -87,7 +87,7 @@ let owner = "pipewire"; repo = "pipewire"; rev = version; - sha256 = "sha256-29p6nEaIDeOAAnRJXwJWEnMTCNzAGVi9f8856I1R+fg="; + sha256 = "sha256-RLdA6McMQd70Pz672S8W9nQhzj1zymqXWLLDZKT6vtQ="; }; patches = [ From dc40ef66835e49e5ee9e927bbd2d619a0ec93464 Mon Sep 17 00:00:00 2001 From: Jan Solanti Date: Thu, 3 Mar 2022 23:06:14 +0200 Subject: [PATCH 4/4] pipewire: 0.3.47 -> 0.3.48 --- pkgs/development/libraries/pipewire/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/pipewire/default.nix b/pkgs/development/libraries/pipewire/default.nix index 8be401a687fa..d4dc43021396 100644 --- a/pkgs/development/libraries/pipewire/default.nix +++ b/pkgs/development/libraries/pipewire/default.nix @@ -69,7 +69,7 @@ let self = stdenv.mkDerivation rec { pname = "pipewire"; - version = "0.3.47"; + version = "0.3.48"; outputs = [ "out" @@ -87,7 +87,7 @@ let owner = "pipewire"; repo = "pipewire"; rev = version; - sha256 = "sha256-RLdA6McMQd70Pz672S8W9nQhzj1zymqXWLLDZKT6vtQ="; + sha256 = "sha256-+gk/MJ9YimHBwN2I42DRP+I2OqBFFtZ81Fd/l89HcSk="; }; patches = [ @@ -139,7 +139,7 @@ let ++ lib.optional zeroconfSupport avahi ++ lib.optional raopSupport openssl ++ lib.optional rocSupport roc-toolkit - ++ lib.optionals x11Support [ libcanberra xorg.libxcb ]; + ++ lib.optionals x11Support [ libcanberra xorg.libX11 xorg.libXfixes ]; # Valgrind binary is required for running one optional test. checkInputs = lib.optional withValgrind valgrind;