diff --git a/flake.lock b/flake.lock index 7ad893b..7ec1ade 100644 --- a/flake.lock +++ b/flake.lock @@ -519,6 +519,7 @@ "nur": "nur", "nvf": "nvf", "python-flexseal": "python-flexseal", + "rrvsh-nixpkgs": "rrvsh-nixpkgs", "rust-overlay": "rust-overlay", "snowfall-lib": "snowfall-lib", "sops-nix": "sops-nix", @@ -528,6 +529,21 @@ "zjstatus": "zjstatus" } }, + "rrvsh-nixpkgs": { + "locked": { + "lastModified": 1748824126, + "narHash": "sha256-EjrHRlTvzECAFH0YSfR+kcK1Q1qDDVX0mQatjpvzwGo=", + "ref": "refs/heads/librechat-module", + "rev": "b6ef5cc34d3699f505e09308b16fe7c0ea8178fc", + "revCount": 808478, + "type": "git", + "url": "file:///home/rafiq/repos/nixpkgs" + }, + "original": { + "type": "git", + "url": "file:///home/rafiq/repos/nixpkgs" + } + }, "rust-overlay": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 9b70b8a..cf718fe 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,7 @@ { inputs = { + rrvsh-nixpkgs.url = "git+file:///home/rafiq/repos/nixpkgs"; crane.url = "github:ipetkov/crane"; disko.inputs.nixpkgs.follows = "nixpkgs"; disko.url = "github:nix-community/disko"; diff --git a/systems/x86_64-linux/nemesis/default.nix b/systems/x86_64-linux/nemesis/default.nix index 67a5164..fc5eaeb 100644 --- a/systems/x86_64-linux/nemesis/default.nix +++ b/systems/x86_64-linux/nemesis/default.nix @@ -1,5 +1,13 @@ -{ lib, config, ... }: { + lib, + config, + inputs, + ... +}: +{ + imports = [ + "${inputs.rrvsh-nixpkgs}/nixos/modules/services/web-apps/librechat.nix" + ]; system = { hostname = "nemesis"; @@ -52,5 +60,48 @@ }; }; + services.librechat = { + enable = true; + openFirewall = true; + env = { + HOST = "0.0.0.0"; + ALLOW_REGISTRATION = "true"; + MONGO_URI = "mongodb://apollo:27017"; + }; + credentials = { + CREDS_KEY = config.sops.secrets."librechat/creds_key".path; + CREDS_IV = config.sops.secrets."librechat/creds_iv".path; + JWT_SECRET = config.sops.secrets."librechat/jwt_secret".path; + JWT_REFRESH_SECRET = config.sops.secrets."librechat/jwt_refresh_secret".path; + }; + settings = { + version = "1.0.8"; + cache = true; + interface = { + privacyPolicy = { + externalUrl = "https://librechat.ai/privacy-policy"; + openNewTab = true; + }; + }; + endpoints = { + custom = [ + { + name = "OpenRouter"; + apiKey = "\${OPENROUTER_KEY}"; + baseURL = "https://openrouter.ai/api/v1"; + models = { + default = [ "meta-llama/llama-3-70b-instruct" ]; + fetch = true; + }; + titleConvo = true; + titleModule = "meta-llama/llama-3-70b-instruct"; + dropParams = [ "stop" ]; + modelDisplayLabel = "OpenRouter"; + } + ]; + }; + }; + }; + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; }