Files
nixos-configs/roles/audio/default.nix
2025-02-16 18:41:50 -08:00

55 lines
1.2 KiB
Nix

{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.roles.audio;
in
{
options.roles.audio = {
enable = mkEnableOption "Enable the audio role";
pulseAudio = mkOption { type = types.bool; default = false; description = "Use PulseAudio exclusively instead of Pipewire"; };
};
config = mkIf cfg.enable (mkMerge [
(mkIf cfg.pulseAudio {
services.pipewire.enable = false;
services.pulseaudio = {
enable = true;
package = pkgs.pulseaudioFull;
systemWide = true;
extraConfig = ''
load-module module-combine-sink
load-module module-switch-on-connect
'';
};
nixpkgs.config.pulseaudio = true;
})
(mkIf (!cfg.pulseAudio) {
services.pipewire = {
enable = true;
systemWide = true;
audio.enable = true;
pulse.enable = true;
alsa = {
enable = true;
support32Bit = true;
};
jack.enable = true;
};
})
{
environment.systemPackages = with pkgs; [
paprefs
pavucontrol
pulsemixer
];
services.squeezelite = {
enable = true;
pulseAudio = true;
};
}
]);
}