158 lines
5 KiB
Nix
158 lines
5 KiB
Nix
{
|
|
pkgs,
|
|
config,
|
|
...
|
|
}: let
|
|
vars = import ../../vars.nix;
|
|
arionPath = "/home/${vars.user}/.setup/hosts/franz/arion";
|
|
cfg = config.virtualisation.arion;
|
|
in {
|
|
# systemd.timers."restic-cron" = {
|
|
# wantedBy = ["timers.target"];
|
|
# timerConfig = {
|
|
# OnBootSec = "1m";
|
|
# OnUnitActiveSec = "1m";
|
|
# Unit = "restic-cron.service";
|
|
# };
|
|
# };
|
|
#
|
|
# systemd.services."restic-cron" = {
|
|
# path = [
|
|
# cfg.docker.client.package
|
|
# cfg.package
|
|
# pkgs.nix
|
|
# pkgs.restic
|
|
# pkgs.autorestic
|
|
# ];
|
|
# script = ''
|
|
# source /etc/profile
|
|
# autorestic -c /home/ghoscht/.autorestic.yml --verbose cron >> /tmp/autorestic.log 2>&1
|
|
# '';
|
|
# serviceConfig = {
|
|
# Type = "oneshot";
|
|
# User = "root";
|
|
# };
|
|
# };
|
|
|
|
services.cron = {
|
|
enable = true;
|
|
systemCronJobs = [
|
|
"*/5 * * * * root . /etc/profile; autorestic -c /home/ghoscht/.autorestic.yml --ci cron"
|
|
];
|
|
};
|
|
|
|
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
|
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
|
hooks:
|
|
before:
|
|
- arion -f ${arionPath}/dashboard/arion-compose.nix -p ${arionPath}/dashboard/arion-pkgs.nix stop
|
|
after:
|
|
- arion -f ${arionPath}/dashboard/arion-compose.nix -p ${arionPath}/dashboard/arion-pkgs.nix start
|
|
dns:
|
|
from: /storage/dataset/docker/dns
|
|
to:
|
|
- zfs
|
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
|
hooks:
|
|
before:
|
|
- arion -f ${arionPath}/dns/arion-compose.nix -p ${arionPath}/dns/arion-pkgs.nix stop
|
|
after:
|
|
- arion -f ${arionPath}/dns/arion-compose.nix -p ${arionPath}/dns/arion-pkgs.nix start
|
|
feed:
|
|
from: /storage/dataset/docker/feed
|
|
to:
|
|
- zfs
|
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
|
hooks:
|
|
before:
|
|
- arion -f ${arionPath}/feed/arion-compose.nix -p ${arionPath}/feed/arion-pkgs.nix stop
|
|
after:
|
|
- 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:
|
|
- arion -f ${arionPath}/git/arion-compose.nix -p ${arionPath}/git/arion-pkgs.nix stop
|
|
after:
|
|
- arion -f ${arionPath}/git/arion-compose.nix -p ${arionPath}/git/arion-pkgs.nix start
|
|
media:
|
|
from: /storage/dataset/docker/media
|
|
to:
|
|
- zfs
|
|
cron: '0 3 * * *' # Every Day at 3:00
|
|
hooks:
|
|
before:
|
|
- arion -f ${arionPath}/media/arion-compose.nix -p ${arionPath}/media/arion-pkgs.nix stop
|
|
after:
|
|
- 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:
|
|
- arion -f ${arionPath}/nextcloud/arion-compose.nix -p ${arionPath}/nextcloud/arion-pkgs.nix stop
|
|
after:
|
|
- arion -f ${arionPath}/nextcloud/arion-compose.nix -p ${arionPath}/nextcloud/arion-pkgs.nix start
|
|
smarthome:
|
|
from: /storage/dataset/docker/smarthome
|
|
to:
|
|
- zfs
|
|
cron: '0 3 * * 0' # Every Sunday at 3:00
|
|
hooks:
|
|
before:
|
|
- arion -f ${arionPath}/smarthome/arion-compose.nix -p ${arionPath}/smarthome/arion-pkgs.nix stop
|
|
after:
|
|
- 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:
|
|
- arion -f ${arionPath}/passwords/arion-compose.nix -p ${arionPath}/passwords/arion-pkgs.nix stop
|
|
after:
|
|
- 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"}'
|
|
'';
|
|
};
|
|
}
|