77 lines
2.4 KiB
Nix
77 lines
2.4 KiB
Nix
{ 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/wireplumber.conf.d/52-profile-switch.conf" ''
|
|
wireplumber.settings = {
|
|
bluetooth.autoswitch-to-headset-profile = false
|
|
}
|
|
|
|
monitor.bluez.properties = {
|
|
## Supported roles: hsp_hs (HSP Headset),
|
|
## hsp_ag (HSP Audio Gateway),
|
|
## hfp_hf (HFP Hands-Free),
|
|
## hfp_ag (HFP Audio Gateway)
|
|
## a2dp_sink (A2DP Audio Sink)
|
|
## a2dp_source (A2DP Audio Source)
|
|
## bap_sink (LE Audio Basic Audio Profile Sink)
|
|
## bap_source (LE Audio Basic Audio Profile Source)
|
|
## --
|
|
## Only enable A2DP here and disable HFP. See note at the top as to why.
|
|
bluez5.roles = [ a2dp_sink a2dp_source ]
|
|
}
|
|
'')
|
|
(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;
|
|
};
|
|
}
|