{ config, lib, modulesPath, pkgs, ... }: let bluetoothSupport = config.sbruder.full; in lib.mkIf config.sbruder.gui.enable { sound.enable = true; security.rtkit.enable = true; services.pipewire = { enable = true; pulse.enable = true; alsa = { enable = true; support32Bit = true; }; }; environment.systemPackages = with pkgs; [ unstable.helvum # patch panel pavucontrol pulseaudio # pacmd and pactl ]; 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 ] } } } ] ''; }