{ config, pkgs, ... }: let snd-usb-audio-module = pkgs.callPackage ./snd-usb-audio.nix { kernel = config.boot.kernelPackages.kernel; }; upmixConfig = '' stream.properties = { channelmix.upmix = true channelmix.upmix-method = psd } ''; in { boot.extraModulePackages = [ (snd-usb-audio-module.overrideAttrs (_: { patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ]; })) ]; environment.etc = { "pipewire/pipewire.conf.d/surround.conf".text = '' context.modules = [ { name = libpipewire-module-loopback args = { node.description = "Genelec 4.1 Surround" capture.props = { node.name = "Genelec_Speakers" media.class = "Audio/Sink" audio.position = [ FL FR SL SR LFE ] } playback.props = { node.name = "playback.Genelec_Speakers" audio.position = [ AUX0 AUX1 AUX3 AUX4 AUX5 ] target.object = "alsa_output.usb-PreSonus_Studio_1824c_SC4E21110775-00.multichannel-output" stream.dont-remix = true node.passive = true } } } ] ''; "pipewire/pipewire-pulse.conf.d/40-upmix.conf".text = upmixConfig; "pipewire/client-rt.conf.d/40-upmix.conf".text = upmixConfig; }; }