{pkgs, ...}: let
  configFile = "pipewire/pipewire.conf.d/99-input-denoising.conf";
  toJSON = (pkgs.formats.json {}).generate;
in {
  users.users.someone.packages = with pkgs; [
    rnnoise
    rnnoise-plugin
  ];

  xdg.configFile."${configFile}".source = toJSON "99-input-denoising.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" = "librnnoise_ladspa";
                "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";
          };
        };
      }
    ];
  };
}
