147 lines
4.8 KiB
Nix
147 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"}'
|
|
'';
|
|
};
|
|
}
|