148 lines
4.8 KiB
Nix
148 lines
4.8 KiB
Nix
|
{
|
||
|
pkgs,
|
||
|
config,
|
||
|
...
|
||
|
}: let
|
||
|
vars = import ../../vars.nix;
|
||
|
arionPath = "/home/${vars.user}/.setup/hosts/franz/arion";
|
||
|
in {
|
||
|
systemd.timers."restic-cron" = {
|
||
|
wantedBy = ["timers.target"];
|
||
|
timerConfig = {
|
||
|
OnBootSec = "5m";
|
||
|
OnUnitActiveSec = "5m";
|
||
|
Unit = "restic-cron.service";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
systemd.services."restic-cron" = {
|
||
|
script = ''
|
||
|
set -eu
|
||
|
${pkgs.autorestic}/bin/autorestic -c /home/ghoscht/.autorestic.yml --restic-bin ${pkgs.restic}/bin/restic --ci cron > /tmp/autorestic.log 2>&1
|
||
|
'';
|
||
|
serviceConfig = {
|
||
|
Type = "oneshot";
|
||
|
User = "root";
|
||
|
};
|
||
|
};
|
||
|
environment.systemPackages = with pkgs; [autorestic restic];
|
||
|
|
||
|
sops.secrets."autorestic/zfs_key" = {
|
||
|
owner = vars.user;
|
||
|
};
|
||
|
sops.secrets."autorestic/ssd_key" = {
|
||
|
owner = vars.user;
|
||
|
};
|
||
|
|
||
|
sops.templates.".autorestic.yml" = {
|
||
|
path = "/home/${vars.user}/.autorestic.yml";
|
||
|
owner = vars.user;
|
||
|
mode = "0775";
|
||
|
content = ''
|
||
|
version: 2
|
||
|
global:
|
||
|
forget:
|
||
|
keep-weekly: 7
|
||
|
keep-monthly: 12
|
||
|
locations:
|
||
|
dashboard:
|
||
|
from: /storage/dataset/docker/dashboard
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/dashboard/arion-compose.nix -p ${arionPath}/dashboard/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/dashboard/arion-compose.nix -p ${arionPath}/dashboard/arion-pkgs.nix start
|
||
|
dns:
|
||
|
from: /storage/dataset/docker/dns
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/dns/arion-compose.nix -p ${arionPath}/dns/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/dns/arion-compose.nix -p ${arionPath}/dns/arion-pkgs.nix start
|
||
|
feed:
|
||
|
from: /storage/dataset/docker/feed
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/feed/arion-compose.nix -p ${arionPath}/feed/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/feed/arion-compose.nix -p ${arionPath}/feed/arion-pkgs.nix start
|
||
|
git:
|
||
|
from: /storage/dataset/docker/git
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * *' # Every Day at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/git/arion-compose.nix -p ${arionPath}/git/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/git/arion-compose.nix -p ${arionPath}/git/arion-pkgs.nix start
|
||
|
media:
|
||
|
from: /storage/dataset/docker/media
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/media/arion-compose.nix -p ${arionPath}/media/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/media/arion-compose.nix -p ${arionPath}/media/arion-pkgs.nix start
|
||
|
nextcloud:
|
||
|
from: /storage/dataset/docker/nextcloud
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * *' # Every Day at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/nextcloud/arion-compose.nix -p ${arionPath}/nextcloud/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/nextcloud/arion-compose.nix -p ${arionPath}/nextcloud/arion-pkgs.nix start
|
||
|
smarthome:
|
||
|
from: /storage/dataset/docker/smarthome
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/smarthome/arion-compose.nix -p ${arionPath}/smarthome/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/smarthome/arion-compose.nix -p ${arionPath}/smarthome/arion-pkgs.nix start
|
||
|
passwords:
|
||
|
from: /storage/dataset/docker/passwords
|
||
|
to:
|
||
|
- zfs
|
||
|
- ssd
|
||
|
cron: '0 3 * * *' # Every Day at 3:00
|
||
|
hooks:
|
||
|
before:
|
||
|
- sudo arion -f ${arionPath}/passwords/arion-compose.nix -p ${arionPath}/passwords/arion-pkgs.nix stop
|
||
|
after:
|
||
|
- sudo arion -f ${arionPath}/passwords/arion-compose.nix -p ${arionPath}/passwords/arion-pkgs.nix start
|
||
|
backends:
|
||
|
zfs:
|
||
|
type: local
|
||
|
path: /storage/dataset/backups
|
||
|
key: '${config.sops.placeholder."autorestic/zfs_key"}'
|
||
|
ssd:
|
||
|
type: local
|
||
|
path: /home/ghoscht/Backups
|
||
|
key: '${config.sops.placeholder."autorestic/ssd_key"}'
|
||
|
'';
|
||
|
};
|
||
|
}
|