From 0df6a64304b278f60e8960c6f7ab9b4202acb947 Mon Sep 17 00:00:00 2001 From: Florian Sesser <florian@private.storage> Date: Fri, 29 Apr 2022 18:18:47 +0000 Subject: [PATCH] Borgbackup: Make folders configurable --- morph/grid/local/grid.nix | 1 - morph/lib/borgbackup.nix | 17 +++++++++++++++-- morph/lib/storage.nix | 3 +++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/morph/grid/local/grid.nix b/morph/grid/local/grid.nix index 892f6dee..088d9e8c 100644 --- a/morph/grid/local/grid.nix +++ b/morph/grid/local/grid.nix @@ -84,7 +84,6 @@ let imports = [ gridlib.storage grid-module - gridlib.borgbackup ]; config = { grid.monitoringvpnIPv4 = "172.23.23.12"; diff --git a/morph/lib/borgbackup.nix b/morph/lib/borgbackup.nix index e0655d59..1dc48dd1 100644 --- a/morph/lib/borgbackup.nix +++ b/morph/lib/borgbackup.nix @@ -5,9 +5,22 @@ { lib, config, ...}: let + cfg = config.services.private-storage.borgbackup; inherit (config.grid) publicKeyPath privateKeyPath; + in { - config = { + options.services.private-storage.borgbackup = { + enable = lib.mkEnableOption "Borgbackup daily backup job"; + paths = lib.mkOption { + type = lib.types.listOf lib.types.str; + description = '' + A list of directories to back up using Borg. + ''; + default = [ "/storage" ]; + }; + }; + + config = lib.mkIf cfg.enable { deployment = { secrets = { "borgbackup-repopath" = { @@ -33,7 +46,7 @@ in { services.borgbackup.jobs = { daily = { - paths = [ "/storage" ]; + paths = cfg.paths; repo = lib.fileContents config.deployment.secrets.borgbackup-repopath.source; encryption = { mode = "repokey-blake2"; diff --git a/morph/lib/storage.nix b/morph/lib/storage.nix index 83c12f55..1fd8c26c 100644 --- a/morph/lib/storage.nix +++ b/morph/lib/storage.nix @@ -7,6 +7,7 @@ in { # Any extra NixOS modules to load on this server. imports = [ ./monitoringvpn-client.nix + ./borgbackup.nix ]; options.grid.storage = { @@ -46,6 +47,8 @@ in { services.private-storage.monitoring.exporters.node.enable = true; services.private-storage.monitoring.exporters.tahoe.enable = true; + services.private-storage.borgbackup.enable = true; + # Turn on the Private Storage (Tahoe-LAFS) service. services.private-storage = { # Yep. Turn it on. -- GitLab