{ config, lib, ... }: let inherit (lib) mkOption types; in { imports = [ ./cadvisor.nix ./node.nix ./nginx.nix ./postgres.nix ]; options.bagel = { meta.monitoring = { address = mkOption { description = "Node's public address"; type = types.str; }; exporters = mkOption { description = "List of all exporters to scrape"; type = types.listOf (types.submodule { options.port = mkOption { description = "Exporter port"; type = types.int; }; }); default = []; }; }; }; config.networking.firewall.allowedTCPPorts = map (e: e.port) config.bagel.meta.monitoring.exporters; }