Files
nix-config/hosts/library/ai.nix
Jordan Holt 76712620d2
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m20s
open-webui: fix database location
2025-09-07 13:00:12 +01:00

72 lines
1.8 KiB
Nix

{
config,
pkgs,
...
}:
let
stateDir = "/var/lib/open-webui";
in
{
age.secrets.open-webui-env = {
rekeyFile = ./secrets/open-webui-env.age;
};
services.open-webui = {
enable = true;
package = pkgs.unstable.open-webui;
port = 8081;
environment =
let
clientId = "open-webui";
publicUrl = "https://chat.ai.vimium.com";
in
{
WEBUI_URL = publicUrl;
ENABLE_LOGIN_FORM = "False";
ENABLE_OAUTH_SIGNUP = "True";
ENABLE_OAUTH_ROLE_MANAGEMENT = "True";
OAUTH_CLIENT_ID = clientId;
OAUTH_PROVIDER_NAME = "Vimium";
OFFLINE_MODE = "True";
OPENID_PROVIDER_URL = "https://auth.vimium.com/oauth2/openid/${clientId}/.well-known/openid-configuration";
OPENID_REDIRECT_URI = "${publicUrl}/oauth/oidc/callback";
# Fix from https://github.com/NixOS/nixpkgs/pull/431395
STATIC_DIR = "${stateDir}/static";
DATA_DIR = "${stateDir}/data";
HF_HOME = "${stateDir}/hf_home";
SENTENCE_TRANSFORMERS_HOME = "${stateDir}/transformers_home";
};
environmentFile = config.age.secrets.open-webui-env.path;
};
# Fix from https://github.com/NixOS/nixpkgs/pull/432897
systemd.services.open-webui.preStart = ''
if [ -d "${stateDir}/data" ] && [ -n "$(ls -A "${stateDir}/data" 2>/dev/null)" ]; then
exit 0
fi
mkdir -p "${stateDir}/data"
[ -f "${stateDir}/webui.db" ] && mv "${stateDir}/webui.db" "${stateDir}/data/"
for dir in cache uploads vector_db; do
[ -d "${stateDir}/$dir" ] && mv "${stateDir}/$dir" "${stateDir}/data/"
done
exit 0
'';
modules.services.borgmatic.directories = [
"/var/lib/private/open-webui"
];
environment.persistence."/persist".directories = [
{
directory = "/var/lib/private/open-webui";
mode = "0700";
}
];
}