diff --git a/modules/nixos/server/web-apps/default.nix b/modules/nixos/server/web-apps/librechat/default.nix similarity index 55% rename from modules/nixos/server/web-apps/default.nix rename to modules/nixos/server/web-apps/librechat/default.nix index 630a46c..c0e30b4 100644 --- a/modules/nixos/server/web-apps/default.nix +++ b/modules/nixos/server/web-apps/librechat/default.nix @@ -1,34 +1,48 @@ { - inputs, config, lib, + inputs, ... }: let - cfg = config.server.web-apps; + inherit (lib) singleton mkEnableOption mkIf; + inherit (lib.pantheon) mkRootDomain mkPortOption mkStrOption; + cfg = config.server.web-apps.librechat; + upstreamCfg = config.services.librechat; in { + imports = singleton "${inputs.rrvsh-nixpkgs}/nixos/modules/services/web-apps/librechat.nix"; - imports = [ - "${inputs.rrvsh-nixpkgs}/nixos/modules/services/web-apps/librechat.nix" - ]; - - options.server.web-apps = { - librechat.enable = lib.mkEnableOption ""; + options.server.web-apps.librechat = { + enable = mkEnableOption ""; + port = mkPortOption 3080; + url = mkStrOption; + mongodbURI = mkStrOption // { + default = "mongodb://${config.system.hostname}:27017/LibreChat"; + }; }; - config = lib.mkIf cfg.librechat.enable { + config = mkIf cfg.enable { + environment.persistence."/persist".directories = singleton { + directory = upstreamCfg.logDir; + inherit (upstreamCfg) user group; + }; + server.networking.ddns.domains = singleton (mkRootDomain cfg.url); + server.web-servers.nginx.proxies = lib.mkIf config.server.web-servers.nginx.enable (singleton { + source = cfg.url; + target = "http://${config.system.hostname}:${builtins.toString cfg.port}"; + }); services.librechat = { enable = true; openFirewall = true; - port = 3080; + inherit (cfg) port; env = { HOST = "0.0.0.0"; ALLOW_REGISTRATION = "true"; NO_INDEX = "true"; - MONGO_URI = "mongodb://apollo:27017/LibreChat"; - DOMAIN_CLIENT = "https://chat.bwfiq.com"; - DOMAIN_SERVER = "https://chat.bwfiq.com"; + MONGO_URI = cfg.mongodbURI; + DOMAIN_CLIENT = cfg.url; + DOMAIN_SERVER = cfg.url; ENDPOINTS = "anthropic,agents,google"; }; credentials = { diff --git a/systems/x86_64-linux/apollo/default.nix b/systems/x86_64-linux/apollo/default.nix index 05abdc3..7ed2fab 100644 --- a/systems/x86_64-linux/apollo/default.nix +++ b/systems/x86_64-linux/apollo/default.nix @@ -35,6 +35,7 @@ }; web-apps = { librechat.enable = true; + librechat.url = "chat.bwfiq.com"; mattermost.enable = true; mattermost.url = "mm.bwfiq.com"; }; @@ -47,11 +48,6 @@ source = "aenyrathia.wiki"; target = "http://helios:5896"; } - { - #TODO: merge into librechat module - source = "chat.bwfiq.com"; - target = "http://localhost:3080"; - } { source = "il.bwfiq.com"; target = "http://helios:2283";