This repository has no description
1.3 kB
50 lines
1{ config, pkgs, ... }:
2{
3 systemd.services.borgbackup-job-hetzner.serviceConfig.ReadWritePaths = [ "/var/log/telegraf" ];
4
5 clan.core.vars.generators.borgbackup = {
6 files."borgbackup.ssh.id25519" = { };
7 files."borgbackup.ssh.id25519.pub".secret = false;
8 runtimeInputs = with pkgs; [
9 coreutils
10 openssh
11 ];
12 script = ''
13 exit 1 # Manual migration required from facts to vars
14 ssh-keygen -t ed25519 -N "" -f $out/borgbackup.ssh.id25519
15 '';
16 };
17
18 services.borgbackup.jobs.hetzner = {
19 paths = [
20 "/var/backup"
21 ];
22 exclude = [
23 "*.pyc"
24 ];
25 repo = "u364341@u364341.your-storagebox.de:/./hetzner";
26 encryption.mode = "none";
27 compression = "auto,zstd";
28 startAt = "*-*-* 02:00:00";
29 # TODO: change backup key
30 environment.BORG_RSH = "ssh -oPort=23 -i ${
31 config.clan.core.vars.generators.borgbackup.files."borgbackup.ssh.id25519".path
32 }";
33 preHook = ''
34 set -x
35 '';
36
37 postHook = ''
38 cat > /var/log/telegraf/borgbackup-job-hetzner.service <<EOF
39 task,frequency=daily last_run=$(date +%s)i,state="$([[ $exitStatus == 0 ]] && echo ok || echo fail)"
40 EOF
41 '';
42
43 prune.keep = {
44 within = "1d"; # Keep all archives from the last day
45 daily = 7;
46 weekly = 4;
47 monthly = 0;
48 };
49 };
50}