diff --git a/roles/audio/default.nix b/roles/audio/default.nix index b05ba6b..fbc434a 100644 --- a/roles/audio/default.nix +++ b/roles/audio/default.nix @@ -8,9 +8,36 @@ 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 + 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 @@ -18,17 +45,10 @@ in pulsemixer ]; - services.pipewire = { + services.squeezelite = { enable = true; - pulse.enable = true; + pulseAudio = true; }; - services.pulseaudio = { - package = pkgs.pulseaudioFull; - extraConfig = '' - load-module module-combine-sink - load-module module-switch-on-connect - ''; - }; - }; - + } + ]); }