All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m20s
72 lines
1.8 KiB
Nix
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";
|
|
}
|
|
];
|
|
}
|