{ config, pkgs, lib, ... }: let inherit (pkgs) rnnoise-plugin; in { options = { crony.pipewire.enable = lib.mkEnableOption "Setup some config files for my pipewire/wireplumber setup."; }; config = lib.mkIf config.crony.pipewire.enable { xdg.configFile."pipewire/pipewire.conf.d/99-rnnoise.conf" = { text = builtins.toJSON { "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 = "${rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so"; label = "noise_suppressor_stereo"; control = { "VAD Threshold (%)" = 80.0; "VAD Grace Period (ms)" = 200; "Retroactive VAD Grace (ms)" = 0; }; } ]; }; "capture.props" = { "node.name" = "capture.rnnoise_source"; "node.passive" = true; "audio.rate" = 48000; }; "playback.props" = { "node.name" = "rnnoise_source"; "media.class" = "Audio/Source"; "audio.rate" = 48000; }; }; } ]; }; }; }; }