diff --git a/desktop.nix b/desktop.nix index 0ece904..48cc0f0 100644 --- a/desktop.nix +++ b/desktop.nix @@ -3,61 +3,9 @@ with lib; let cfg = config.aviallon.desktop; generalCfg = config.aviallon.general; - filterConfig = pkgs.writeText "pipewire-noise-filter.cfg" '' -# Noise canceling source -# -# start with pipewire -c filter-chain/source-rnnoise.conf -# -context.properties = { - log.level = 0 -} - -context.spa-libs = { - audio.convert.* = audioconvert/libspa-audioconvert - support.* = support/libspa-support -} - -context.modules = [ - { name = libpipewire-module-rtkit - args = { - #nice.level = -11 - #rt.prio = 88 - #rt.time.soft = 200000 - #rt.time.hard = 200000 - } - flags = [ ifexists nofail ] - } - { name = libpipewire-module-protocol-native } - { name = libpipewire-module-client-node } - { name = libpipewire-module-adapter } - - { name = libpipewire-module-filter-chain - args = { - node.name = "rnnoise_source" - 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 (%)" ${toString cfg.audio.noise-filter.strength} - } - } - ] - } - capture.props = { - node.passive = true - } - playback.props = { - media.class = Audio/Source - } - } - } -]''; + filterConfig = pkgs.callPackage ./packages/pipewire-noise-filter.cfg.nix { + noiseFilterStrength = cfg.audio.noise-filter.strength; + }; in { options.aviallon.desktop = { enable = mkOption { diff --git a/packages/pipewire-noise-filter.cfg.nix b/packages/pipewire-noise-filter.cfg.nix new file mode 100644 index 0000000..eceb6e7 --- /dev/null +++ b/packages/pipewire-noise-filter.cfg.nix @@ -0,0 +1,61 @@ +{ lib +, writeText +, rnnoise-plugin +, noiseFilterStrength +}: + +writeText "pipewire-noise-filter.cfg" '' +# Noise canceling source +# +# start with pipewire -c filter-chain/source-rnnoise.conf +# +context.properties = { + log.level = 0 +} + +context.spa-libs = { + audio.convert.* = audioconvert/libspa-audioconvert + support.* = support/libspa-support +} + +context.modules = [ + { name = libpipewire-module-rtkit + args = { + #nice.level = -11 + #rt.prio = 88 + #rt.time.soft = 200000 + #rt.time.hard = 200000 + } + flags = [ ifexists nofail ] + } + { name = libpipewire-module-protocol-native } + { name = libpipewire-module-client-node } + { name = libpipewire-module-adapter } + + { name = libpipewire-module-filter-chain + args = { + node.name = "rnnoise_source" + 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 (%)" ${toString noiseFilterStrength} + } + } + ] + } + capture.props = { + node.passive = true + } + playback.props = { + media.class = Audio/Source + } + } + } +]''