added EnvironmentFile to snapshot_manager

This commit is contained in:
2025-09-14 23:48:59 -04:00
parent 3434b32fbe
commit 4686a85bcd
4 changed files with 65 additions and 12 deletions

View File

@@ -11,33 +11,39 @@ in
{ {
options = { options = {
services.snapshot_manager = { services.snapshot_manager = {
enable = lib.mkOption { enable = lib.mkEnableOption "ZFS snapshot manager";
default = true;
example = true;
description = "Whether to enable k3s-net.";
type = lib.types.bool;
};
path = lib.mkOption { path = lib.mkOption {
type = lib.types.path; type = lib.types.path;
description = "Path that needs to be updated via git pull";
default = ./snapshot_config.toml; default = ./snapshot_config.toml;
description = "Path to the snapshot_manager TOML config.";
};
EnvironmentFile = lib.mkOption {
type = lib.types.nullOr (lib.types.coercedTo lib.types.path lib.isString lib.types.str);
default = null;
description = ''
Single environment file for the service (e.g. /etc/snapshot-manager/env).
Use a leading "-" to ignore if missing (systemd feature).
'';
}; };
}; };
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
systemd = { systemd = {
services."snapshot_manager" = { services.snapshot_manager = {
description = "ZFS Snapshot Manager"; description = "ZFS Snapshot Manager";
requires = [ "zfs-import.target" ]; requires = [ "zfs-import.target" ];
after = [ "zfs-import.target" ]; after = [ "zfs-import.target" ];
path = [ pkgs.zfs ]; path = [ pkgs.zfs ];
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
ExecStart = "${inputs.system_tools.packages.x86_64-linux.default}/bin/snapshot_manager --config-file='${cfg.path}'"; ExecStart = "${inputs.system_tools.packages.x86_64-linux.default}/bin/snapshot_manager --config-file=${lib.escapeShellArg cfg.path}";
}
// lib.optionalAttrs (cfg.EnvironmentFile != null) {
EnvironmentFile = cfg.EnvironmentFile;
}; };
}; };
timers."snapshot_manager" = { timers.snapshot_manager = {
wantedBy = [ "timers.target" ]; wantedBy = [ "timers.target" ];
timerConfig = { timerConfig = {
OnBootSec = "15m"; OnBootSec = "15m";

View File

@@ -1,3 +1,6 @@
let
vars = import ./vars.nix;
in
{ {
imports = [ imports = [
../../users/richie ../../users/richie
@@ -23,7 +26,10 @@
smartd.enable = true; smartd.enable = true;
snapshot_manager.path = ./snapshot_config.toml; snapshot_manager = {
path = ./snapshot_config.toml;
EnvironmentFile = "${vars.secrets}/services/snapshot_manager";
};
zerotierone.joinNetworks = [ "a09acf02330d37b9" ]; zerotierone.joinNetworks = [ "a09acf02330d37b9" ];
}; };

View File

@@ -51,3 +51,45 @@ monthly = 12
hourly = 12 hourly = 12
daily = 14 daily = 14
monthly = 2 monthly = 2
["media/services"]
15_min = 3
hourly = 12
daily = 14
monthly = 2
["media/home_assistant"]
15_min = 3
hourly = 12
daily = 14
monthly = 2
["scratch/qbitvpn"]
15_min = 0
hourly = 0
daily = 0
monthly = 0
["scratch/transmission"]
15_min = 0
hourly = 0
daily = 0
monthly = 0
["storage/qbitvpn"]
15_min = 0
hourly = 0
daily = 0
monthly = 0
["storage/transmission"]
15_min = 0
hourly = 0
daily = 0
monthly = 0
["storage/ollama"]
15_min = 0
hourly = 0
daily = 0
monthly = 0

View File

@@ -55,6 +55,5 @@
nix-tree nix-tree
nixfmt-rfc-style nixfmt-rfc-style
treefmt treefmt
inputs.system_tools.packages.x86_64-linux.default
]; ];
} }