Simon Bruder
5462768f19
This has some problems (as explained in the comment), but this at least makes it work for now.
70 lines
2.3 KiB
Nix
70 lines
2.3 KiB
Nix
{ 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 ]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
'';
|
|
}
|