diff --git a/modules/audio/default.nix b/modules/audio/default.nix index 461ed5c..98e3120 100644 --- a/modules/audio/default.nix +++ b/modules/audio/default.nix @@ -1,10 +1,10 @@ -{ ... }: - +{ pkgs, ... }: { security.rtkit.enable = true; services.pipewire = { enable = true; + systemWide = true; alsa = { enable = true; support32Bit = true; @@ -16,5 +16,42 @@ }; hardware.pulseaudio.enable = false; + + environment.etc = let + json = pkgs.formats.json {}; + in { + "pipewire/pipewire.conf.d/91-rnnoise.conf".source = json.generate "91-rnnoise.conf" { + 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_mono"; + control = { + "VAD Threshold (%)" = 50.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; + }; + }; + }]; + }; + }; }