The Complete Computing Environment

NixOS Audio

LifeTechEmacsTopicsArcology

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, ... }:

{
  environment.systemPackages = [ pkgs.qjackctl ];

  hardware.bluetooth = {
    enable = true;
    package = pkgs.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;
  };
}