From 1d0b3a0367cb560e4e254be5621aa21384b8821c Mon Sep 17 00:00:00 2001 From: John Ogle Date: Sun, 16 Feb 2025 18:41:50 -0800 Subject: [PATCH] [audio] Setup squeezelite --- roles/audio/default.nix | 44 ++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 12 deletions(-) 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 - ''; - }; - }; - + } + ]); }