{ 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}"; compression = "zstd"; encryption.mode = "none"; environment.BORG_RSH = "ssh -o 'StrictHostKeyChecking=no' -i /root/.ssh/id_borg"; extraCreateArgs = "--verbose --stats"; startAt = "03:00"; 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 = { path = [ pkgs.btrfs-progs ]; serviceConfig = { ReadWritePaths = [ "/backup" ]; }; }; } # vim: set et ts=2 sw=2 ai: