diff --git a/modules/pipewire.nix b/modules/pipewire.nix index f69c33a..3428be8 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -23,4 +23,47 @@ lib.mkIf config.sbruder.gui.enable { hardware.bluetooth.enable = lib.mkDefault bluetoothSupport; services.blueman.enable = lib.mkDefault bluetoothSupport; + + environment.etc."pipewire/pipewire.conf.d/10-behringer-umc202hd.conf".text = '' + # This is heavily based on the example from the PipeWire wiki: + # https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Virtual-Devices#behringer-umc404hd-microphoneguitar-virtual-sources + # It has the problem that the virtual source persists, + # even when the physical source is disconnected. + context.modules = [ + { name = libpipewire-module-loopback + args = { + node.description = "UMC202HD Left" + capture.props = { + node.name = "capture.UMC202HD_Left" + audio.position = [ FL ] + stream.dont-remix = true + target.object = "alsa_input.usb-BEHRINGER_UMC202HD_192k_12345678-00.analog-stereo" + node.passive = true + } + playback.props = { + node.name = "UMC202HD_Left" + media.class = "Audio/Source" + audio.position = [ MONO ] + } + } + } + { name = libpipewire-module-loopback + args = { + node.description = "UMC202HD Right" + capture.props = { + node.name = "capture.UMC202HD_Right" + audio.position = [ FR ] + stream.dont-remix = true + target.object = "alsa_input.usb-BEHRINGER_UMC202HD_192k_12345678-00.analog-stereo" + node.passive = true + } + playback.props = { + node.name = "UMC202HD_Right" + media.class = "Audio/Source" + audio.position = [ MONO ] + } + } + } + ] + ''; }