Files
nixpkgs/nixos/tests/librechat.nix
2026-01-19 11:52:03 +01:00

58 lines
2.1 KiB
Nix

# Run this test with NIXPKGS_ALLOW_UNFREE=1
{ lib, ... }:
{
name = "librechat";
meta.maintainers = with lib.maintainers; [
gepbird
niklaskorz
rrvsh
];
nodes.machine =
{ pkgs, ... }:
let
# !!! Don't do this with real keys. The /nix store is world-readable!
credsKeyFile = pkgs.writeText "librechat-creds-key" "6d6deb03cdfb27ea454f6b9ddd42494bdce4af25d50d8aee454ddce583690cc5";
credsIvFile = pkgs.writeText "librechat-creds-iv" "7c09a571f65ac793611685cc9ab1dbe7";
jwtSecret = pkgs.writeText "librechat-jwt-secret" "29c4dc7f7de15306accf5eddb4cb8a70eb233d9fba4301f8f47f14c8c047ac81";
jwtRefreshSecret = pkgs.writeText "librechat-jwt-refresh-secret" "f2c1685561f2f570b3e7955df267b5c602ee099f14dc5caa0dacc320580ea180";
meilisearchMasterKeyFile = pkgs.writeText "meilisearch-master-key" "xHkP3Bzcf98fw7FiSCR82g5ULLGrXc4frK1qkEfN8St/3kJZ";
in
{
services.librechat = {
enable = true;
env = {
ALLOW_REGISTRATION = true;
};
credentials = {
# The following were randomly generated with https://www.librechat.ai/toolkit/creds_generator
CREDS_KEY = credsKeyFile;
CREDS_IV = credsIvFile;
JWT_SECRET = jwtSecret;
JWT_REFRESH_SECRET = jwtRefreshSecret;
};
enableLocalDB = true;
meilisearch.enable = true;
};
services.meilisearch.masterKeyFile = meilisearchMasterKeyFile;
};
testScript = ''
machine.start()
machine.succeed("grep -qF 'ALLOW_REGISTRATION=true' /etc/systemd/system/librechat.service")
machine.succeed("grep -qF 'SEARCH=true' /etc/systemd/system/librechat.service")
machine.succeed("grep -qF 'MEILI_HOST=http://localhost:7700' /etc/systemd/system/librechat.service")
machine.succeed("grep -qG 'MEILI_MASTER_KEY_FILE:/nix/store/.*meilisearch-master-key' /etc/systemd/system/librechat.service")
machine.wait_for_unit("librechat.service")
machine.wait_for_open_port(3080)
machine.succeed("curl --fail http://localhost:3080/")
machine.shutdown()
'';
}