diff options
author | Zhongheng Liu <z.liu@outlook.com.gr> | 2024-09-22 21:49:52 +0300 |
---|---|---|
committer | Zhongheng Liu <z.liu@outlook.com.gr> | 2024-09-22 21:49:52 +0300 |
commit | dad3573f27a09dad401ff2c59076610d201edf6f (patch) | |
tree | c9b51153cd9093467864c2aacaf49237bd6894e6 | |
parent | 3685cf5abe859d510e22dea9cb2fdcca95fa01a2 (diff) | |
download | nixos-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.nix | 52 |
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; }; } |