mirror of
https://git.sr.ht/~magic_rb/dotfiles
synced 2024-11-26 10:06:13 +01:00
109 lines
2.5 KiB
Nix
109 lines
2.5 KiB
Nix
|
{ pkgs, ... }:
|
||
|
{
|
||
|
fileSystems."/mnt/cartman" = {
|
||
|
device = "storfa/ds1/cartman";
|
||
|
fsType = "zfs";
|
||
|
};
|
||
|
|
||
|
systemd.services.mnt-kyle-zfs-relmount = {
|
||
|
requires = ["mnt-kyle.mount"];
|
||
|
after = ["mnt-kyle.mount"];
|
||
|
requiredBy = ["local-fs.target"];
|
||
|
|
||
|
path = with pkgs; [zfs util-linux];
|
||
|
|
||
|
serviceConfig = {
|
||
|
RemainAfterExit = true;
|
||
|
Type = "oneshot";
|
||
|
ExecStart = "${pkgs.zfs-relmount}/bin/zfs-relmount mount storfa/ds1/kyle /mnt/kyle";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
fileSystems."/mnt/kyle" = {
|
||
|
device = "storfa/ds1/kyle";
|
||
|
fsType = "zfs";
|
||
|
};
|
||
|
|
||
|
systemd.services.mnt-cartman-zfs-relmount = {
|
||
|
requires = ["mnt-cartman.mount"];
|
||
|
after = ["mnt-cartman.mount"];
|
||
|
requiredBy = ["local-fs.target"];
|
||
|
|
||
|
path = with pkgs; [zfs util-linux];
|
||
|
|
||
|
serviceConfig = {
|
||
|
RemainAfterExit = true;
|
||
|
Type = "oneshot";
|
||
|
ExecStart = "${pkgs.zfs-relmount}/bin/zfs-relmount mount storfa/ds1/cartman /mnt/cartman";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
fileSystems."/mnt/stan" = {
|
||
|
device = "storfa/ds1/stan";
|
||
|
fsType = "zfs";
|
||
|
};
|
||
|
|
||
|
systemd.services.mnt-stan-zfs-relmount = {
|
||
|
requires = ["mnt-stan.mount"];
|
||
|
after = ["mnt-stan.mount"];
|
||
|
requiredBy = ["local-fs.target"];
|
||
|
|
||
|
path = with pkgs; [zfs util-linux];
|
||
|
|
||
|
serviceConfig = {
|
||
|
RemainAfterExit = true;
|
||
|
Type = "oneshot";
|
||
|
ExecStart = "${pkgs.zfs-relmount}/bin/zfs-relmount mount storfa/ds1/stan /mnt/stan";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
fileSystems."/run/restic" = {
|
||
|
fsType = "tmpfs";
|
||
|
options = [ "size=64M" ];
|
||
|
};
|
||
|
|
||
|
services.restic.backups.cartman = {
|
||
|
initialize = true;
|
||
|
timerConfig = {
|
||
|
OnCalendar = "03:00";
|
||
|
};
|
||
|
|
||
|
paths = [ "/run/restic/cartman" ];
|
||
|
backupPrepareCommand = ''
|
||
|
snapshot="$(date +restic%+4Y_%U_%u)"
|
||
|
${pkgs.zfs-relmount}/bin/zfs-relmount snapshot storfa/ds1/cartman "''${snapshot}"
|
||
|
|
||
|
mkdir /run/restic/cartman
|
||
|
${pkgs.zfs-relmount}/bin/zfs-relmount mount-snapshot storfa/ds1/cartman /run/restic/cartman "''${snapshot}"
|
||
|
|
||
|
export RESTIC_PROGRESS_FPS=1
|
||
|
'';
|
||
|
backupCleanupCommand = ''
|
||
|
${pkgs.zfs-relmount}/bin/zfs-relmount umount storfa/ds1/cartman /run/restic/cartman
|
||
|
rm -r /run/restic/cartman
|
||
|
'';
|
||
|
|
||
|
passwordFile = "";
|
||
|
repository = "";
|
||
|
};
|
||
|
|
||
|
systemd.timers."restic-backups-cartman" = {
|
||
|
timerConfig = {
|
||
|
Persistent = true;
|
||
|
WakeSystem = true;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
systemd.services."restic-backups-cartman" = {
|
||
|
path = with pkgs; [
|
||
|
util-linux
|
||
|
zfs
|
||
|
];
|
||
|
serviceConfig = {
|
||
|
Nice = 19;
|
||
|
IOSchedulingClass = "idle";
|
||
|
EnvironmentFile = "/var/secrets/restic-b2";
|
||
|
};
|
||
|
};
|
||
|
}
|