From 996cbb34eeb77e88e01432f14ff0658cd98cbd2b Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Tue, 30 Sep 2025 23:43:54 +0200 Subject: [PATCH] outline: Configure backups --- hosts/srv-public/default.nix | 5 +++-- modules/system/services/outline.nix | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/hosts/srv-public/default.nix b/hosts/srv-public/default.nix index f2aec4f..b1721f2 100644 --- a/hosts/srv-public/default.nix +++ b/hosts/srv-public/default.nix @@ -37,20 +37,21 @@ forgejo = { enable = true; - doBackups = true; domain = "git.sstork.dev"; + doBackups = true; ssh.enable = true; }; hedgedoc = { enable = true; - doBackups = true; domain = "docs.${sproutedDomain}"; + doBackups = true; }; outline = { enable = true; domain = "wiki.${sproutedDomain}"; + doBackups = true; }; it-tools = { diff --git a/modules/system/services/outline.nix b/modules/system/services/outline.nix index d6ccd26..90bccb6 100644 --- a/modules/system/services/outline.nix +++ b/modules/system/services/outline.nix @@ -1,6 +1,14 @@ -{ config, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: let cfg = config.custom.services.outline; + + dataDir = "/var/lib/outline"; + inherit (config.services.outline) user; in { options.custom.services.outline = { @@ -13,6 +21,7 @@ in type = lib.types.port; default = 32886; }; + doBackups = lib.mkEnableOption ""; }; config = lib.mkIf cfg.enable { @@ -60,5 +69,14 @@ in }; systemd.services.outline.enableStrictShellChecks = false; + + custom.services.resticBackups.outline = lib.mkIf cfg.doBackups { + conflictingService = "outline.service"; + paths = [ dataDir ]; + extraConfig.backupPrepareCommand = '' + ${lib.getExe pkgs.sudo} --user=${user} ${lib.getExe' config.services.postgresql.package "pg_dump"} outline --format=custom --file=${dataDir}/db.dump + ''; + restoreCommand.postRestore = "sudo --user=${user} pg_restore --clean --if-exists --dbname outline ${dataDir}/db.dump"; + }; }; }