aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhongheng Liu <z.liu@outlook.com.gr>2024-09-22 21:49:52 +0300
committerZhongheng Liu <z.liu@outlook.com.gr>2024-09-22 21:49:52 +0300
commitdad3573f27a09dad401ff2c59076610d201edf6f (patch)
treec9b51153cd9093467864c2aacaf49237bd6894e6
parent3685cf5abe859d510e22dea9cb2fdcca95fa01a2 (diff)
downloadnixos-configuration-dad3573f27a09dad401ff2c59076610d201edf6f.tar.gz
nixos-configuration-dad3573f27a09dad401ff2c59076610d201edf6f.tar.bz2
nixos-configuration-dad3573f27a09dad401ff2c59076610d201edf6f.zip
feat: add pipewire noise cancellation config
-rw-r--r--nixos/services/pipewire.service.nix52
1 files changed, 43 insertions, 9 deletions
diff --git a/nixos/services/pipewire.service.nix b/nixos/services/pipewire.service.nix
index 3781405..8878903 100644
--- a/nixos/services/pipewire.service.nix
+++ b/nixos/services/pipewire.service.nix
@@ -1,4 +1,36 @@
-{pkgs, ...}: {
+{pkgs, ...}: let
+ pw_rnnoise_config = {
+ "context.modules" = [
+ {
+ "name" = "libpipewire-module-filter-chain";
+ "args" = {
+ "node.description" = "Noise Canceling source";
+ "media.name" = "Noise Canceling source";
+ "filter.graph" = {
+ "nodes" = [
+ {
+ "type" = "ladspa";
+ "name" = "rnnoise";
+ "plugin" = "${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so";
+ "label" = "noise_suppressor_stereo";
+ "control" = {"VAD Threshold (%)" = 50.0;};
+ }
+ ];
+ };
+ "audio.position" = ["FL" "FR"];
+ "capture.props" = {
+ "node.name" = "effect_input.rnnoise";
+ "node.passive" = true;
+ };
+ "playback.props" = {
+ "node.name" = "effect_output.rnnoise";
+ "media.class" = "Audio/Source";
+ };
+ };
+ }
+ ];
+ };
+in {
services.pipewire = {
enable = true;
alsa = {
@@ -8,14 +40,16 @@
pulse.enable = true;
jack.enable = true;
wireplumber.configPackages = [
- (pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" ''
- bluez_monitor.properties = {
- ["bluez5.enable-sbc-xq"] = true,
- ["bluez5.enable-msbc"] = true,
- ["bluez5.enable-hw-volume"] = true,
- ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
- }
- '')
+ (pkgs.writeTextDir
+ "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" ''
+ bluez_monitor.properties = {
+ ["bluez5.enable-sbc-xq"] = true,
+ ["bluez5.enable-msbc"] = true,
+ ["bluez5.enable-hw-volume"] = true,
+ ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
+ }
+ '')
];
+ extraConfig.pipewire."99-input-denoising" = pw_rnnoise_config;
};
}