62 lines
2.1 KiB
Nix
62 lines
2.1 KiB
Nix
{ lib, pkgs, desktop, ... }:
|
|
let
|
|
btrfs-backup = pkgs.writeScriptBin "btrfs-backup" "${builtins.readFile ../software/cli/scripts/btrfs-backup.sh}";
|
|
in {
|
|
environment.systemPackages = [
|
|
pkgs.snapper
|
|
btrfs-backup
|
|
] ++ lib.optional (builtins.isString desktop) pkgs.btrfs-assistant;
|
|
|
|
# SSH key for btrfs-backups
|
|
sops.secrets."btrfs-backups/ssh_key" = {
|
|
sopsFile = ../../../secrets/secrets.yaml;
|
|
owner = "root";
|
|
};
|
|
|
|
sops.secrets."btrfs-backups/gotify_token" = {
|
|
sopsFile = ../../../secrets/secrets.yaml;
|
|
owner = "root";
|
|
};
|
|
|
|
services.snapper = {
|
|
snapshotRootOnBoot = true;
|
|
cleanupInterval = "1h";
|
|
snapshotInterval = "hourly";
|
|
configs = {
|
|
root = {
|
|
TIMELINE_CREATE = true;
|
|
TIMELINE_CLEANUP = true;
|
|
NUMBER_LIMIT = 10; # snapshotRootOnBoot cleanup
|
|
TIMELINE_LIMIT_YEARLY = 0;
|
|
TIMELINE_LIMIT_QUARTERLY = 2;
|
|
TIMELINE_LIMIT_MONTHLY = 3;
|
|
TIMELINE_LIMIT_WEEKLY = 4;
|
|
TIMELINE_LIMIT_DAILY = 7;
|
|
TIMELINE_LIMIT_HOURLY = 24;
|
|
SUBVOLUME = "/";
|
|
};
|
|
home = {
|
|
TIMELINE_CREATE = true;
|
|
TIMELINE_CLEANUP = true;
|
|
TIMELINE_LIMIT_YEARLY = 0;
|
|
TIMELINE_LIMIT_QUARTERLY = 2;
|
|
TIMELINE_LIMIT_MONTHLY = 3;
|
|
TIMELINE_LIMIT_WEEKLY = 4;
|
|
TIMELINE_LIMIT_DAILY = 7;
|
|
TIMELINE_LIMIT_HOURLY = 24;
|
|
SUBVOLUME = "/home";
|
|
};
|
|
nix = {
|
|
TIMELINE_CREATE = true;
|
|
TIMELINE_CLEANUP = true;
|
|
TIMELINE_LIMIT_YEARLY = 0;
|
|
TIMELINE_LIMIT_QUARTERLY = 2;
|
|
TIMELINE_LIMIT_MONTHLY = 3;
|
|
TIMELINE_LIMIT_WEEKLY = 4;
|
|
TIMELINE_LIMIT_DAILY = 7;
|
|
TIMELINE_LIMIT_HOURLY = 24;
|
|
SUBVOLUME = "/nix";
|
|
};
|
|
};
|
|
};
|
|
}
|