Files
nix-config/hosts/library/ai.nix
Jordan Holt 172b4269d1
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
hosts/library: drop chat.ai.vimium.com proxying
2025-11-01 14:53:03 +00:00

73 lines
1.9 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;
host = "0.0.0.0";
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";
}
];
}