refactor: Use mkMerge to combine LLM module configs
This commit is contained in:
parent
317803eb5a
commit
9e8e7169d3
@ -1,7 +1,7 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf mkEnableOption mkPackageOption mkOption types optionalAttrs;
|
inherit (lib) mkIf mkEnableOption mkPackageOption mkOption types optionalAttrs mkMerge;
|
||||||
|
|
||||||
cfg = config.pepe.services.llm;
|
cfg = config.pepe.services.llm;
|
||||||
in
|
in
|
||||||
@ -34,7 +34,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
frontend = {
|
frontend = {
|
||||||
enable = mkEnableOption "Enable LLM frontend service (Open WebUI)";
|
enable = mkEnableOption "Enable LLM frontend service (Open WebUI)"; # Defaults to false
|
||||||
uiPackage = mkPackageOption pkgs "open-webui" { };
|
uiPackage = mkPackageOption pkgs "open-webui" { };
|
||||||
tikaPackage = mkPackageOption pkgs "tika" { }; # Tika for document processing with Open WebUI
|
tikaPackage = mkPackageOption pkgs "tika" { }; # Tika for document processing with Open WebUI
|
||||||
domain = mkOption {
|
domain = mkOption {
|
||||||
@ -45,10 +45,16 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable
|
config = mkMerge [
|
||||||
|
# Combined environment packages
|
||||||
{
|
{
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages =
|
||||||
|
(if cfg.enable then [ cfg.package ] else [ ]) ++
|
||||||
|
(if cfg.enable && cfg.frontend.enable then [ cfg.frontend.uiPackage cfg.frontend.tikaPackage ] else [ ]);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Backend Ollama Service Configuration
|
||||||
|
(mkIf cfg.enable {
|
||||||
services.ollama = {
|
services.ollama = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = cfg.package;
|
package = cfg.package;
|
||||||
@ -73,24 +79,19 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
// mkIf (cfg.enable && cfg.frontend.enable) {
|
|
||||||
environment.systemPackages = [
|
|
||||||
cfg.frontend.uiPackage
|
|
||||||
cfg.frontend.tikaPackage
|
|
||||||
];
|
|
||||||
|
|
||||||
services = {
|
# Frontend Open WebUI and Tika Service Configuration
|
||||||
open-webui = {
|
(mkIf (cfg.enable && cfg.frontend.enable) {
|
||||||
|
services.open-webui = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = cfg.frontend.uiPackage;
|
package = cfg.frontend.uiPackage;
|
||||||
};
|
};
|
||||||
|
|
||||||
tika = {
|
services.tika = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = cfg.frontend.tikaPackage;
|
package = cfg.frontend.tikaPackage;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
pepe.core.vhost.hosts = optionalAttrs (cfg.frontend.domain != null) {
|
pepe.core.vhost.hosts = optionalAttrs (cfg.frontend.domain != null) {
|
||||||
"${cfg.frontend.domain}" = {
|
"${cfg.frontend.domain}" = {
|
||||||
@ -104,5 +105,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user