nixos-config/modules/borg.nix
2023-12-12 08:07:16 +01:00

48 lines
1.5 KiB
Nix

{ config, pkgs, ... }:
let
backuppath = "/backup/snapshot";
in
{
services.borgbackup.jobs.default = {
paths = [
"${backuppath}/etc"
"${backuppath}/home"
"${backuppath}/root"
"${backuppath}/var"
];
exclude = [
"${backuppath}*/.cache"
"${backuppath}/home/*/build"
"${backuppath}/var/log"
"${backuppath}/var/lib/nextcloud/data/appdata_ocnc33s4dl6i/preview"
"${backuppath}/var/lib/postgresql/*/"
"${backuppath}/var/lib/mysql/*"
"${backuppath}/var/lib/containers"
"${backuppath}/var/lib/rancher/k3s/agent/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots"
];
#repo = "borg@haus.mc-fucker.cool:/mnt/sdf1/borg/${config.networking.hostName}";
repo = "borg@nasty:.";
compression = "zstd";
encryption.mode = "none";
environment.BORG_RSH = "ssh -o 'StrictHostKeyChecking=no' -i /root/.ssh/id_borg";
extraCreateArgs = "--verbose --stats";
startAt = "00:10";
preHook = ''if [[ -d ${backuppath} ]]; then
btrfs subvolume delete ${backuppath}
fi
btrfs subvolume snapshot / ${backuppath}''; #create snapshot for consistent filesystem
postCreate = "btrfs subvolume delete ${backuppath}"; #delete snapshot again
};
systemd.services.borgbackup-job-default = {
environment = {
BORG_RELOCATED_REPO_ACCESS_IS_OK = "yes";
};
path = [ pkgs.btrfs-progs ];
serviceConfig = {
ReadWritePaths = [ "/backup" ];
};
};
}
# vim: set et ts=2 sw=2 ai: