{ config, lib, pkgs, ... }: { imports = [ ]; environment.systemPackages = with pkgs; [ pavucontrol ]; # rtkit is optional but recommended security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; # If you want to use JACK applications, uncomment this #jack.enable = true; extraLv2Packages = [ pkgs.rnnoise-plugin ]; configPackages = [ (pkgs.writeTextDir "share/pipewire/pipewire.conf.d/20-rnnoise.conf" '' context.modules = [ { name = libpipewire-module-filter-chain args = { node.description = "Noise Canceling source" media.name = "Noise Canceling source" filter.graph = { nodes = [ { type = lv2 name = rnnoise plugin = "https://github.com/werman/noise-suppression-for-voice#stereo" label = noise_suppressor_stereo control = { } } ] } capture.props = { node.name = "capture.rnnoise_source" node.passive = true audio.rate = 48000 # Optionally specify a specific input: (ID from `pactl list`) # target.object = "alsa_input.usb-Shure_Incorporated_Shure_Digital-00.analog-stereo" } playback.props = { node.name = "rnnoise_source" media.class = Audio/Source audio.rate = 48000 } } } ] '') ]; }; environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) { hideMounts = true; users.talexander = { directories = [ ".local/state/wireplumber" # Sound settings ]; }; }; }