From b9fbcc958af64d7a5d41b6077d7beafdfe4843b2 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Mon, 18 Dec 2023 09:01:50 +0800 Subject: [PATCH] profiles/desktop: init audio.pipewire submodule --- modules/home-manager/profiles/desktop.nix | 30 +++++++++++++++---- .../foo-dogsquared/modules/setups/music.nix | 5 +++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/modules/home-manager/profiles/desktop.nix b/modules/home-manager/profiles/desktop.nix index 15845e4a..5efd066c 100644 --- a/modules/home-manager/profiles/desktop.nix +++ b/modules/home-manager/profiles/desktop.nix @@ -1,13 +1,29 @@ # Enables all of my usual setup for desktop-oriented stuff. { config, lib, pkgs, ... }@attrs: -let cfg = config.profiles.desktop; +let + cfg = config.profiles.desktop; + nixosCfg = attrs.osConfig; + nixosPipewireCfg = nixosCfg.services.pipewire; + hasNixOSPipewireService = attrs ? osConfig -> nixosPipewireCfg.enable; in { options.profiles.desktop = { enable = lib.mkEnableOption "installations of desktop apps"; graphics.enable = lib.mkEnableOption "installations of graphics-related apps"; - audio.enable = lib.mkEnableOption "installations of audio-related apps"; + audio = { + enable = lib.mkEnableOption "installations of audio-related apps"; + pipewire.enable = lib.mkOption { + type = lib.types.bool; + default = hasNixOSPipewireService; + description = '' + Enable whether to install Pipewire-related applications. + + This module is implicitly enabled if used as part of the NixOS + configuration and has Pipewire service enabled. + ''; + }; + }; video.enable = lib.mkEnableOption "installations of video-related apps"; documents.enable = lib.mkEnableOption "installations for document-related apps"; @@ -42,16 +58,20 @@ in { yabridgectl # The bridge controller. ffmpeg-full # Ah yes, everyman's multimedia swiss army knife. - helvum # The Pipewire Patchbay. - carla # The Carla Carla. ]; + (lib.mkIf cfg.audio.pipewire.enable { # This is assuming you're using Pipewire, yes? services.easyeffects.enable = true; services.fluidsynth = { enable = true; - soundService = "pipewire-pulse"; + soundService = lib.mkIf nixosPipewireCfg.pulse.enable "pipewire-pulse"; }; + + home.packages = with pkgs; [ + helvum # The Pipewire Patchbay. + carla # The Carla Carla. + ]; }) (lib.mkIf cfg.video.enable { diff --git a/users/home-manager/foo-dogsquared/modules/setups/music.nix b/users/home-manager/foo-dogsquared/modules/setups/music.nix index bb14e8b1..7c03d7b8 100644 --- a/users/home-manager/foo-dogsquared/modules/setups/music.nix +++ b/users/home-manager/foo-dogsquared/modules/setups/music.nix @@ -26,7 +26,10 @@ in ]; # Enable the desktop audio profile for extra auditorial goodies. - profiles.desktop.audio.enable = lib.mkDefault true; + profiles.desktop.audio = { + enable = lib.mkDefault true; + pipewire.enable = lib.mkDefault true; + }; # My music player setup, completely configured with Nix! programs.beets = {