mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-04-25 06:19:10 +00:00
modules: improve conditional config for system config integration
This commit is contained in:
parent
14d9508a1e
commit
aa2a21d0fc
@ -3,9 +3,6 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.profiles.desktop;
|
cfg = config.profiles.desktop;
|
||||||
nixosCfg = attrs.osConfig;
|
|
||||||
nixosPipewireCfg = nixosCfg.services.pipewire;
|
|
||||||
hasNixOSPipewireService = attrs ? osConfig -> nixosPipewireCfg.enable;
|
|
||||||
in {
|
in {
|
||||||
options.profiles.desktop = {
|
options.profiles.desktop = {
|
||||||
enable = lib.mkEnableOption "installations of desktop apps";
|
enable = lib.mkEnableOption "installations of desktop apps";
|
||||||
@ -15,7 +12,7 @@ in {
|
|||||||
enable = lib.mkEnableOption "installations of audio-related apps";
|
enable = lib.mkEnableOption "installations of audio-related apps";
|
||||||
pipewire.enable = lib.mkOption {
|
pipewire.enable = lib.mkOption {
|
||||||
type = lib.types.bool;
|
type = lib.types.bool;
|
||||||
default = hasNixOSPipewireService;
|
default = attrs ? osConfig && lib.attrByPath [ "services" "pipewire" "enable" ] false attrs.osConfig;
|
||||||
description = ''
|
description = ''
|
||||||
Enable whether to install Pipewire-related applications.
|
Enable whether to install Pipewire-related applications.
|
||||||
|
|
||||||
@ -42,7 +39,10 @@ in {
|
|||||||
ffmpeg-full # Ah yes, everyman's multimedia swiss army knife.
|
ffmpeg-full # Ah yes, everyman's multimedia swiss army knife.
|
||||||
imagemagick # Ah yes, everyman's image manipulation tool.
|
imagemagick # Ah yes, everyman's image manipulation tool.
|
||||||
gmic # Don't let the gimmicks fool you, it's a magical image framework.
|
gmic # Don't let the gimmicks fool you, it's a magical image framework.
|
||||||
] ++ (lib.optional (attrs ? osConfig -> !nixosCfg.programs.blender.enable) blender);
|
]
|
||||||
|
++ (let
|
||||||
|
hasBlenderNixOSModule = attrs ? osConfig && lib.attrByPath [ "programs" "blender" "enable" ] false attrs.osConfig;
|
||||||
|
in lib.optional (!hasBlenderNixOSModule) pkgs.blender);
|
||||||
})
|
})
|
||||||
|
|
||||||
(lib.mkIf cfg.audio.enable {
|
(lib.mkIf cfg.audio.enable {
|
||||||
@ -54,9 +54,11 @@ in {
|
|||||||
sonic-pi # The only pie you'll get from this is worms which I heard is addicting.
|
sonic-pi # The only pie you'll get from this is worms which I heard is addicting.
|
||||||
|
|
||||||
ffmpeg-full # Ah yes, everyman's multimedia swiss army knife.
|
ffmpeg-full # Ah yes, everyman's multimedia swiss army knife.
|
||||||
] ++ (lib.optionals
|
]
|
||||||
(attrs ? osConfig -> nixosCfg.profiles.desktop.wine.enable)
|
++ (let
|
||||||
(with pkgs; [
|
hasWineProfile = attrs ? osConfig && lib.attrByPath [ "profiles" "desktop" "wine" "enable" ] false attrs.osConfig;
|
||||||
|
in
|
||||||
|
lib.optionals hasWineProfile (with pkgs; [
|
||||||
yabridge # Building bridges to Windows and Linux audio tools.
|
yabridge # Building bridges to Windows and Linux audio tools.
|
||||||
yabridgectl # The bridge controller.
|
yabridgectl # The bridge controller.
|
||||||
]));
|
]));
|
||||||
@ -67,7 +69,10 @@ in {
|
|||||||
services.easyeffects.enable = true;
|
services.easyeffects.enable = true;
|
||||||
services.fluidsynth = {
|
services.fluidsynth = {
|
||||||
enable = true;
|
enable = true;
|
||||||
soundService = lib.mkIf nixosPipewireCfg.pulse.enable "pipewire-pulse";
|
soundService = let
|
||||||
|
hasNixOSPipewirePulseEnabled = attrs ? osConfig && lib.attrByPath [ "services" "pipewire" "pulse" "enable" ] false attrs.osConfig;
|
||||||
|
in
|
||||||
|
lib.mkIf hasNixOSPipewirePulseEnabled "pipewire-pulse";
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
@ -85,7 +85,9 @@ in {
|
|||||||
|
|
||||||
# Echolocation. Since you're using a home-manager configuration, you're
|
# Echolocation. Since you're using a home-manager configuration, you're
|
||||||
# most likely using Nix anyways.
|
# most likely using Nix anyways.
|
||||||
programs.nix-index.enable = lib.mkIf (attrs ? osConfig -> !attrs.osConfig.programs.nix-index.enable) true;
|
programs.nix-index.enable = let
|
||||||
|
hasNixOSModuleEnabled = attrs ? osConfig && lib.attrByPath [ "programs" "nix-index" "enable" ] false attrs.osConfig;
|
||||||
|
in !hasNixOSModuleEnabled;
|
||||||
})
|
})
|
||||||
|
|
||||||
# Level up your terminal-dwelling skills with these.
|
# Level up your terminal-dwelling skills with these.
|
||||||
|
Loading…
Reference in New Issue
Block a user