{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 = { enable = true; support32Bit = true; }; 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 ]" } '') ]; extraConfig.pipewire."99-input-denoising" = pw_rnnoise_config; }; }