Archived
One file (variables.nix) holding every value that was previously hardcoded and repeated across modules: LAN domain/CIDR, home/tailnet domains, cross-host references (nix-cache substituter hostname, NFS server hostname, remote-builder user), PXE/PBS IPs, timezone, and the primary username. Wired in via flake.nix's specialArgs (and home-manager's extraSpecialArgs for the two home.nix files), so any module picks it up by just adding `vars` to its function arguments — no explicit import needed. Two hosts (nix-cache, server) now derive their own networking.hostName from the same variable other hosts use to reach them, so there's exactly one place to change either identifier. Purely mechanical: every substituted value matches what was already there, confirmed by identical toplevel .drv paths for all 17 targets before and after. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
29 lines
869 B
Nix
29 lines
869 B
Nix
{ pkgs, vars, ... }:
|
|
|
|
{
|
|
systemd.services.docker-health-to-gotify = {
|
|
description = "Alert Gotify when Docker containers become unhealthy";
|
|
after = [ "docker.service" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
# Run as root so it can read /etc/secrets and access docker socket
|
|
# User = "root";
|
|
#EnvironmentFile = "-/etc/secrets/docker-health-alert.env";
|
|
ExecStart = "${pkgs.bash}/bin/bash /home/${vars.primaryUser}/docker/monitoring/gotify/docker-health-to-gotify.sh";
|
|
StandardOutput = "journal";
|
|
StandardError = "journal";
|
|
};
|
|
path = with pkgs; [ docker curl coreutils gnused ];
|
|
};
|
|
|
|
systemd.timers.docker-health-to-gotify = {
|
|
wantedBy = [ "timers.target" ];
|
|
timerConfig = {
|
|
OnBootSec = "2min";
|
|
OnUnitActiveSec = "1min";
|
|
AccuracySec = "15s";
|
|
Persistent = true;
|
|
};
|
|
};
|
|
}
|