main
1{lib, ...}: {
2 den.aspects.services.vaultwarden = {
3 settings = {
4 domain = lib.mkOption {
5 type = lib.types.str;
6 };
7 address = lib.mkOption {
8 type = lib.types.str;
9 default = "127.0.0.1";
10 };
11 port = lib.mkOption {
12 type = lib.types.port;
13 default = 8222;
14 };
15 };
16
17 persist = {
18 directories = [
19 {
20 directory = "/var/lib/vaultwarden";
21 user = "vaultwarden";
22 group = "vaultwarden";
23 mode = "0700";
24 }
25 ];
26 };
27
28 reverseProxy = {host, ...}: let
29 cfg = host.settings.services.vaultwarden;
30 in {
31 ${cfg.domain} = {
32 port = cfg.port;
33 };
34 };
35
36 nixos = {host, ...}: let
37 cfg = host.settings.services.vaultwarden;
38 in {
39 services.vaultwarden = {
40 enable = true;
41
42 inherit (cfg) domain;
43 dbBackend = "sqlite";
44 config = {
45 SIGNUPS_ALLOWED = false;
46 ENABLE_WEBSOCKET = true;
47 ROCKET_ADDRESS = cfg.address;
48 ROCKET_PORT = cfg.port;
49 };
50 };
51 };
52 };
53}