{ lib, pkgs, config, ... }: let # Import rule definitions from refactored alert files in the parent 'alerting' directory cpuAlertRules = (import ./cpu_usage.nix { inherit lib pkgs config; }).grafanaAlertRuleDefinitions; diskAlertRules = (import ./disk_usage.nix { inherit lib pkgs config; }).grafanaAlertRuleDefinitions; hostDownAlertRules = (import ./host_down.nix { inherit lib pkgs config; }).grafanaAlertRuleDefinitions; inodeAlertRules = (import ./inode_usage.nix { inherit lib pkgs config; }).grafanaAlertRuleDefinitions; ramAlertRules = (import ./ram_usage.nix { inherit lib pkgs config; }).grafanaAlertRuleDefinitions; allSystemRules = cpuAlertRules ++ diskAlertRules ++ hostDownAlertRules ++ inodeAlertRules ++ ramAlertRules; in { services.grafana.provision.alerting.rules.settings.groups = [ { name = "System Alerts"; # This is the Grafana alert group name folder = "System Alerts"; # This is the Grafana folder name interval = "1m"; rules = allSystemRules; } ]; }