I use PipeWire because it implements JACK Audio Connection Kit and Pulseaudio interfaces and supports bluetooth devices. this means that I can run TidalCycles straight to bluetooth without resorting to terrible loopback/monitor hacks.
{ pkgs, ... }:
with pkgs; {
environment.systemPackages = [ qjackctl easyeffects ];
hardware.bluetooth = {
enable = true;
package = bluez5;
settings = {
General = { Enable = "Source,Sink,Media,Socket"; };
};
};
security.rtkit.enable = true;
# https://nixos.wiki/wiki/PipeWire#Bluetooth_Configuration this is cool.
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
}
{ ... }:
{
services.easyeffects.enable = true;
# programs.dconf.enable = true;
}