{ lib, config, pkgs, ... }: with lib; with lib.custom; let cfg = config.hardware.audio; in { options.hardware.audio = with types; { enable = mkBoolOpt false "Enable Audio"; }; config = mkIf cfg.enable { # Enable sound with pipewire. hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; # If you want to use JACK applications, uncomment this jack.enable = true; extraConfig.pipewire.adjust-sample-rate = { "context.properties" = { "default.clock.rate" = 48000; "default.allowed-rates" = [48000]; "default.clock.quantum" = 32; "default.clock.min-quantum" = 32; "default.clock.max-quantum" = 32; }; }; # 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; }; sound = { enable = true; mediaKeys.enable = true; }; }; }