From ba9f2ccceef9bdbc95c951a3fb75f337f131a13e Mon Sep 17 00:00:00 2001 From: Myned <dev@bjork.tech> Date: Sun, 9 Feb 2025 18:34:48 -0600 Subject: [PATCH] containers: add vaultwarden Signed-off-by: Myned <dev@bjork.tech> --- options/custom/containers/vaultwarden.nix | 40 ++++++++++++++++++++++ profiles/server/default.nix | 1 + secrets/secrets.nix | 1 + secrets/server/vaultwarden/.env | Bin 0 -> 2463 bytes 4 files changed, 42 insertions(+) create mode 100644 options/custom/containers/vaultwarden.nix create mode 100644 secrets/server/vaultwarden/.env diff --git a/options/custom/containers/vaultwarden.nix b/options/custom/containers/vaultwarden.nix new file mode 100644 index 0000000..c972508 --- /dev/null +++ b/options/custom/containers/vaultwarden.nix @@ -0,0 +1,40 @@ +{ + config, + inputs, + lib, + ... +}: +with lib; let + cfg = config.custom.containers.vaultwarden; +in { + options.custom.containers.vaultwarden = { + enable = mkOption {default = false;}; + menu = mkOption {default = true;}; + }; + + config = mkIf cfg.enable { + age.secrets = let + secret = filename: { + file = "${inputs.self}/secrets/${filename}"; + }; + in { + "${config.custom.profile}/vaultwarden/.env" = secret "${config.custom.profile}/vaultwarden/.env"; + }; + + #?? arion-vaultwarden pull + environment.shellAliases.arion-vaultwarden = "sudo arion --prebuilt-file ${config.virtualisation.arion.projects.vaultwarden.settings.out.dockerComposeYaml}"; + + virtualisation.arion.projects.vaultwarden.settings.services = { + # https://github.com/dani-garcia/vaultwarden + # https://github.com/dani-garcia/vaultwarden/wiki + vaultwarden.service = { + container_name = "vaultwarden"; + env_file = [config.age.secrets."${config.custom.profile}/vaultwarden/.env".path]; + image = "vaultwarden/server:1.33.1"; + ports = ["8008:80"]; + restart = "unless-stopped"; + volumes = ["${config.custom.containers.directory}/vaultwarden/data:/data"]; + }; + }; + }; +} diff --git a/profiles/server/default.nix b/profiles/server/default.nix index b172170..9d485bf 100644 --- a/profiles/server/default.nix +++ b/profiles/server/default.nix @@ -24,6 +24,7 @@ #// owncast.enable = true; #// redlib.enable = true; #// searxng.enable = true; + vaultwarden.enable = true; }; services = { diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 9d64ac3..4d384a3 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -87,4 +87,5 @@ in { "server/searxng/.env".publicKeys = server; "server/users/myned.pass".publicKeys = server; "server/users/root.pass".publicKeys = server; + "server/vaultwarden/.env".publicKeys = server; } diff --git a/secrets/server/vaultwarden/.env b/secrets/server/vaultwarden/.env new file mode 100644 index 0000000000000000000000000000000000000000..9747da2a5536e274b1eede74adc2a53c943b7064 GIT binary patch literal 2463 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 literal 0 HcmV?d00001