From 7d8c973b71d2d9cd404fd46da22a4cd59ab49569 Mon Sep 17 00:00:00 2001 From: Richie Cahill Date: Sat, 12 Oct 2024 06:37:02 -0400 Subject: [PATCH] made snapshot_manager.nix --- systems/common/global/default.nix | 1 + systems/common/global/snapshot_config.toml | 29 ++++++++++++++ systems/common/global/snapshot_manager.nix | 44 ++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 systems/common/global/snapshot_config.toml create mode 100644 systems/common/global/snapshot_manager.nix diff --git a/systems/common/global/default.nix b/systems/common/global/default.nix index 352712f..d85bf5a 100644 --- a/systems/common/global/default.nix +++ b/systems/common/global/default.nix @@ -16,6 +16,7 @@ ./nix.nix ./programs.nix ./ssh.nix + ./snapshot_manager.nix ]; boot = { diff --git a/systems/common/global/snapshot_config.toml b/systems/common/global/snapshot_config.toml new file mode 100644 index 0000000..c1db4ca --- /dev/null +++ b/systems/common/global/snapshot_config.toml @@ -0,0 +1,29 @@ +["default"] +15_min = 8 +hourly = 24 +daily = 0 +monthly = 0 + +["root_pool/home"] +15_min = 8 +hourly = 24 +daily = 14 +monthly = 0 + +["root_pool/root"] +15_min = 8 +hourly = 24 +daily = 0 +monthly = 0 + +["root_pool/nix"] +15_min = 4 +hourly = 0 +daily = 0 +monthly = 0 + +["root_pool/var"] +15_min = 8 +hourly = 24 +daily = 30 +monthly = 6 diff --git a/systems/common/global/snapshot_manager.nix b/systems/common/global/snapshot_manager.nix new file mode 100644 index 0000000..553e4c5 --- /dev/null +++ b/systems/common/global/snapshot_manager.nix @@ -0,0 +1,44 @@ +{ inputs, pkgs, lib, config, ... }: +let + cfg = config.services.snapshot_manager; +in +{ + options = { + services.snapshot_manager = { + enable = lib.mkOption { + default = true; + example = true; + description = "Whether to enable k3s-net."; + type = lib.types.bool; + }; + path = lib.mkOption { + type = lib.types.path; + description = "Path that needs to be updated via git pull"; + default = ./snapshot_config.toml; + }; + }; + }; + + config = lib.mkIf cfg.enable { + systemd = { + services."snapshot_manager" = { + description = "ZFS Snapshot Manager"; + requires = [ "zfs-import.target" ]; + after = [ "zfs-import.target" ]; + path = [ pkgs.zfs ]; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${inputs.system_tools.packages.x86_64-linux.default}/bin/snapshot_manager --config-file='${cfg.path}'"; + }; + }; + timers."snapshot_manager" = { + wantedBy = [ "timers.target" ]; + timerConfig = { + OnBootSec = "15m"; + OnUnitActiveSec = "15m"; + Unit = "snapshot_manager.service"; + }; + }; + }; + }; +} \ No newline at end of file