diff --git a/hosts/vps-private/default.nix b/hosts/vps-private/default.nix index b073dfb..9a0a501 100644 --- a/hosts/vps-private/default.nix +++ b/hosts/vps-private/default.nix @@ -58,6 +58,12 @@ doBackups = true; }; + memos = { + enable = true; + domain = "memos.${privateDomain}"; + doBackups = true; + }; + actualbudget = { enable = true; domain = "budget.${privateDomain}"; diff --git a/modules/system/web-services/memos.nix b/modules/system/web-services/memos.nix new file mode 100644 index 0000000..9b5e407 --- /dev/null +++ b/modules/system/web-services/memos.nix @@ -0,0 +1,48 @@ +{ + config, + options, + lib, + ... +}: +let + cfg = config.custom.web-services.memos; + + dataDir = config.services.memos.settings.MEMOS_DATA; +in +{ + options.custom.web-services.memos = { + enable = lib.mkEnableOption ""; + domain = lib.mkOption { + type = lib.types.nonEmptyStr; + default = ""; + }; + port = lib.mkOption { + type = lib.types.port; + default = 5230; + }; + doBackups = lib.mkEnableOption ""; + }; + + config = lib.mkIf cfg.enable { + services.memos = { + enable = true; + settings = options.services.memos.settings.default // { + MEMOS_PORT = toString cfg.port; + MEMOS_INSTANCE_URL = "https://${cfg.domain}"; + }; + }; + + custom = { + services = { + caddy.virtualHosts.${cfg.domain}.port = cfg.port; + + restic.backups.memos = lib.mkIf cfg.doBackups { + conflictingService = "memos.service"; + paths = [ dataDir ]; + }; + }; + + persistence.directories = [ dataDir ]; + }; + }; +}