summaryrefslogtreecommitdiff
path: root/config/backups.nix
diff options
context:
space:
mode:
authorquentin@aristote.fr <quentin@aristote.fr>2026-01-04 17:34:53 +0100
committerquentin@aristote.fr <quentin@aristote.fr>2026-01-04 17:34:53 +0100
commita20c5e4a95fec048e31d251857749fc8660bb793 (patch)
tree268a517ebf69024fe43978dc9132aa3f688eb177 /config/backups.nix
parent31bd1a0a930af462c4575c55a4e3e92178f42342 (diff)
backups: borg over nfs -> restic over sftp
Diffstat (limited to 'config/backups.nix')
-rw-r--r--config/backups.nix41
1 files changed, 41 insertions, 0 deletions
diff --git a/config/backups.nix b/config/backups.nix
new file mode 100644
index 0000000..14ed8f1
--- /dev/null
+++ b/config/backups.nix
@@ -0,0 +1,41 @@
+{ lib, pkgs, ... }:
+let
+ host = "ds218.aristote.mesh";
+ path = "/hephaistos";
+ sshpass = "${pkgs.sshpass}/bin/sshpass -f /etc/restic/sftp.key";
+in
+{
+ programs.ssh.extraConfig = ''
+ Host ${host}
+ User hephaistos
+ ServerAliveInternal 60
+ ServerAliveCountMax 240
+ '';
+
+ services.restic.backups.srv = {
+ extraOptions = [
+ "sftp.command='${sshpass} ssh ${host} -s sftp'"
+ ];
+ passwordFile = "/etc/restic/srv.key";
+ paths = [
+ "/srv"
+ ];
+ repository = "sftp:${host}:${path}";
+ timerConfig = {
+ OnCalendar = "12:00";
+ RandomizedDelaySec = "1h";
+ Persistent = true;
+ };
+ pruneOpts = [ "--keep-daily 7" ];
+ initialize = true;
+ };
+ systemd.services.restic-backups-srv = lib.mkMerge [
+ {
+ personal.monitor = true;
+ }
+ (pkgs.lib.personal.services.checkNetwork {
+ hosts = [ "ds218.aristote.mesh" ];
+ restart = false;
+ })
+ ];
+}