From 7f2b50f736427ebecde36f5ca4c6f99b27995ee5 Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.dev>
Date: Wed, 1 Jan 2025 14:47:09 +0000
Subject: [PATCH] Re-add Vaultwarden

---
 nix/hosts/nixedo/default.nix                  |  2 +-
 .../nixos/features/homelab/default.nix        |  1 +
 .../nixos/features/homelab/vaultwarden.nix    | 31 +++++++++++++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 nix/modules/nixos/features/homelab/vaultwarden.nix

diff --git a/nix/hosts/nixedo/default.nix b/nix/hosts/nixedo/default.nix
index 9c64fdf0..68119ab0 100644
--- a/nix/hosts/nixedo/default.nix
+++ b/nix/hosts/nixedo/default.nix
@@ -13,7 +13,7 @@
       paperless.enable = true;
       pihole.enable = true;
       tubearchivist-container.enable = true;
-      # vaultwarden.enable = true;
+      vaultwarden.enable = true;
     };
   };
 
diff --git a/nix/modules/nixos/features/homelab/default.nix b/nix/modules/nixos/features/homelab/default.nix
index c62d843c..7231aa87 100644
--- a/nix/modules/nixos/features/homelab/default.nix
+++ b/nix/modules/nixos/features/homelab/default.nix
@@ -9,5 +9,6 @@
     ./paperless.nix
     ./pi-hole.nix
     ./tubearchivist-container.nix
+    ./vaultwarden.nix
   ];
 }
diff --git a/nix/modules/nixos/features/homelab/vaultwarden.nix b/nix/modules/nixos/features/homelab/vaultwarden.nix
new file mode 100644
index 00000000..25767b6a
--- /dev/null
+++ b/nix/modules/nixos/features/homelab/vaultwarden.nix
@@ -0,0 +1,31 @@
+{ config, lib, ... }:
+
+with lib;
+
+{
+  options.features.homelab.vaultwarden.enable = mkEnableOption "Enable vaultwarden";
+
+  config = mkIf config.features.homelab.vaultwarden.enable {
+    services = {
+      vaultwarden = {
+        enable = true;
+
+        config = {
+          DOMAIN = "https://vaultwarden.opdavies.uk";
+
+          # TODO: check registrations are disabled.
+          SIGNUPS_ALLOWED = false;
+
+          ROCKET_ADDRESS = "127.0.0.1";
+          ROCKET_PORT = 8222;
+        };
+      };
+
+      caddy.virtualHosts."vaultwarden.opdavies.uk" = {
+        useACMEHost = "opdavies.uk";
+
+        extraConfig = "reverse_proxy localhost:${toString config.services.vaultwarden.config.ROCKET_PORT}";
+      };
+    };
+  };
+}