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