80 lines
1.8 KiB
Nix
80 lines
1.8 KiB
Nix
{
|
|
...
|
|
}:
|
|
let
|
|
name = "vaultwarden";
|
|
user = name;
|
|
uid = 114;
|
|
hostDataDir = "/var/lib/${name}";
|
|
|
|
v_port = 8222;
|
|
in
|
|
{
|
|
users = {
|
|
users.${user} = {
|
|
isSystemUser = true;
|
|
group = user;
|
|
inherit uid;
|
|
};
|
|
groups.${user}.gid = uid;
|
|
};
|
|
system.activationScripts.createMediaServerDirs = ''
|
|
mkdir -p ${hostDataDir}/data
|
|
mkdir -p ${hostDataDir}/backups
|
|
chown -R ${toString uid}:${toString uid} ${hostDataDir}
|
|
chmod -R 750 ${hostDataDir}
|
|
'';
|
|
|
|
containers.${name} = {
|
|
ephemeral = true;
|
|
autoStart = true;
|
|
privateNetwork = false;
|
|
bindMounts = {
|
|
"/var/lib/vaultwarden" = {
|
|
hostPath = "${hostDataDir}/data";
|
|
isReadOnly = false;
|
|
};
|
|
"/var/lib/backups/vaultwarden" = {
|
|
hostPath = "${hostDataDir}/backups";
|
|
isReadOnly = false;
|
|
};
|
|
};
|
|
config =
|
|
{ ... }:
|
|
{
|
|
system.stateVersion = "24.11";
|
|
users = {
|
|
users.${user} = {
|
|
isSystemUser = true;
|
|
group = user;
|
|
inherit uid;
|
|
};
|
|
groups.${user}.gid = uid;
|
|
};
|
|
|
|
services.vaultwarden = {
|
|
enable = true;
|
|
dbBackend = "sqlite";
|
|
backupDir = "/var/lib/backups/vaultwarden";
|
|
config = {
|
|
DOMAIN = "https://vault.joshuabell.xyz";
|
|
SIGNUPS_ALLOWED = false;
|
|
ROCKET_PORT = builtins.toString v_port;
|
|
ROCKET_ADDRESS = "127.0.0.1";
|
|
# ADMIN_TOKEN = "> vaultwarden hash";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
services.nginx.virtualHosts."vault.joshuabell.xyz" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations = {
|
|
"/" = {
|
|
proxyWebsockets = true;
|
|
proxyPass = "http://127.0.0.1:${builtins.toString v_port}";
|
|
};
|
|
};
|
|
};
|
|
}
|