diff options
author | azahi <azat@bahawi.net> | 2025-02-17 02:21:56 +0300 |
---|---|---|
committer | azahi <azat@bahawi.net> | 2025-02-17 02:21:56 +0300 |
commit | 59180328cda59817d71cd58c8f48ead047375064 (patch) | |
tree | 2cdd7d1bfa309839ef624c19daf283f510aacf69 /modules/prometheus.nix | |
parent | 2025-02-05 (diff) |
2025-02-17
Diffstat (limited to '')
-rw-r--r-- | modules/prometheus.nix | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/modules/prometheus.nix b/modules/prometheus.nix index 673f288..031b0b2 100644 --- a/modules/prometheus.nix +++ b/modules/prometheus.nix @@ -6,59 +6,56 @@ this, ... }: -with lib; let cfg = config.nixfiles.modules.prometheus; in { options.nixfiles.modules.prometheus = { - enable = mkEnableOption "Prometheus"; + enable = lib.mkEnableOption "Prometheus"; - port = mkOption { + port = lib.mkOption { description = "Port."; - type = with types; port; + type = lib.types.port; default = 30111; }; - domain = mkOption { + domain = lib.mkOption { description = "Domain name sans protocol scheme."; - type = with types; str; + type = lib.types.str; default = "prometheus.${config.networking.domain}"; }; }; - config = mkIf cfg.enable { - nixfiles.modules.nginx = with cfg; { + config = lib.mkIf cfg.enable { + nixfiles.modules.nginx = { enable = true; upstreams.prometheus.servers."127.0.0.1:${toString cfg.port}" = { }; - virtualHosts.${domain} = { + virtualHosts.${cfg.domain} = { locations."/".proxyPass = "http://prometheus"; extraConfig = libNginx.config.internalOnly; }; }; - services.prometheus = with cfg; { + services.prometheus = { enable = true; enableReload = true; listenAddress = "127.0.0.1"; - inherit port; + inherit (cfg) port; extraFlags = [ - "--web.external-url=https://${domain}" + "--web.external-url=https://${cfg.domain}" "--storage.tsdb.retention.size=50GB" "--storage.tsdb.retention.time=1y" "--storage.tsdb.wal-compression" ]; }; - topology = with cfg; { - nodes.${this.hostname}.services.prometheus = { - name = "Prometheus"; - icon = "${inputs.homelab-svg-assets}/assets/prometheus.svg"; - info = domain; - details.listen.text = "127.0.0.1:${toString port}"; - }; + topology.nodes.${this.hostname}.services.prometheus = { + name = "Prometheus"; + icon = "${inputs.homelab-svg-assets}/assets/prometheus.svg"; + info = cfg.domain; + details.listen.text = "127.0.0.1:${toString cfg.port}"; }; }; } |