91 lines
2.3 KiB
Nix
91 lines
2.3 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
{
|
|
# Enable sound with pipewire.
|
|
services.pulseaudio.enable = false;
|
|
|
|
musnix = {
|
|
enable = true;
|
|
alsaSeq.enable = true;
|
|
rtcqs.enable = true;
|
|
};
|
|
|
|
services.pipewire = {
|
|
enable = true;
|
|
|
|
alsa = {
|
|
enable = true;
|
|
support32Bit = true;
|
|
};
|
|
|
|
pulse.enable = true;
|
|
jack.enable = true;
|
|
|
|
wireplumber = {
|
|
enable = true;
|
|
};
|
|
|
|
extraConfig = {
|
|
pipewire."91-null-sinks" = {
|
|
"context.modules" = [
|
|
{
|
|
name = "libpipewire-module-loopback";
|
|
args = {
|
|
"node.description" = "Default Playback";
|
|
"capture.props" = {
|
|
"node.name" = "BixSix_or_fallback_Playback";
|
|
"media.class" = "Audio/Sink";
|
|
"audio.position" = "[FL FR]";
|
|
};
|
|
"playback.props" = {
|
|
"node.name" = "playback.BixSixWithFallbackPlayback";
|
|
"audio.position" = "[AUX14 AUX15]";
|
|
"target.object" = "alsa_output.usb-Solid_State_Logic_BiG_SiX-00.pro-output-0";
|
|
"stream.dont-remix" = true;
|
|
"node.passive" = true;
|
|
};
|
|
};
|
|
}
|
|
];
|
|
};
|
|
pipewire."92-low-latency" = {
|
|
context.properties = {
|
|
default.clock.rate = 48000;
|
|
default.clock.quantum = 32;
|
|
default.clock.min-quantum = 32;
|
|
default.clock.max-quantum = 32;
|
|
};
|
|
};
|
|
pipewire-pulse."92-low-latency" = {
|
|
context.modules = [
|
|
{
|
|
name = "libpipewire-module-protocol-pulse";
|
|
args = {
|
|
pulse.min.req = "32/48000";
|
|
pulse.default.req = "32/48000";
|
|
pulse.max.req = "32/48000";
|
|
pulse.min.quantum = "32/48000";
|
|
pulse.max.quantum = "32/48000";
|
|
};
|
|
}
|
|
];
|
|
stream.properties = {
|
|
node.latency = "32/48000";
|
|
resample.quality = 1;
|
|
};
|
|
};
|
|
pipewire."10-airplay" = {
|
|
"context.modules" = [
|
|
{
|
|
name = "libpipewire-module-raop-discover";
|
|
|
|
# increase the buffer size if you get dropouts/glitches
|
|
# args = {
|
|
# "raop.latency.ms" = 500;
|
|
# };
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|