{ config, lib, myData, ... }: let cfg = config.mj.services.node_exporter; in { options.mj.services.node_exporter = with lib.types; { enable = lib.mkEnableOption "Enable node_exporter"; extraSubnets = lib.mkOption { type = listOf str; default = []; }; }; config = lib.mkIf cfg.enable { services.prometheus.exporters.node = { enable = true; enabledCollectors = ["systemd" "processes"]; port = myData.ports.exporters.node; user = "node_exporter"; group = "node_exporter"; }; users.users.node_exporter = { isSystemUser = true; group = "node_exporter"; uid = myData.uidgid.node_exporter; }; users.groups.node_exporter = { gid = myData.uidgid.node_exporter; }; mj.services.friendlyport.ports = [ { subnets = [myData.subnets.tailscale.cidr] ++ cfg.extraSubnets; tcp = [myData.ports.exporters.node]; } ]; }; }