{ config, lib, pkgs, ... }: { options = { sysconfig.opts.pipewire.enable = lib.options.mkOption { type = lib.types.bool; default = false; }; }; config = lib.mkIf config.sysconfig.opts.pipewire.enable { # Enable sound with pipewire. #sound.enable = true; security.rtkit.enable = true; services.pipewire = { enable = true; package = pkgs.pipewire; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; extraConfig.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; }; }; # If you want to use JACK applications, uncomment this #jack.enable = true; # use the example session manager (no others are packaged yet so this is enabled by default, # no need to redefine it in your config for now) wireplumber.enable = true; }; }; }