From d9f2603f4b47b311f9bac2d3a93911a1c284cac4 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Fri, 13 Jun 2025 05:50:34 +0800 Subject: [PATCH] feat(server/grafana): add grafana module and enable it on apollo --- .../server/monitoring/grafana/default.nix | 30 +++++++++++++++++++ systems/x86_64-linux/apollo/default.nix | 4 +++ 2 files changed, 34 insertions(+) create mode 100644 modules/nixos/server/monitoring/grafana/default.nix diff --git a/modules/nixos/server/monitoring/grafana/default.nix b/modules/nixos/server/monitoring/grafana/default.nix new file mode 100644 index 0000000..03dc132 --- /dev/null +++ b/modules/nixos/server/monitoring/grafana/default.nix @@ -0,0 +1,30 @@ +{ config, lib, ... }: +let + inherit (lib) singleton mkEnableOption mkIf; + inherit (lib.pantheon) mkRootDomain mkPortOption mkStrOption; + cfg = config.server.monitoring.grafana; +in +{ + options.server.monitoring.grafana = { + enable = mkEnableOption ""; + url = mkStrOption; + port = mkPortOption 3000; + }; + + config = mkIf cfg.enable { + server.networking.ddns.domains = singleton (mkRootDomain cfg.url); + server.web-servers.nginx.proxies = mkIf config.server.web-servers.nginx.enable (singleton { + source = cfg.url; + target = "http://${config.system.hostname}:${builtins.toString cfg.port}"; + extraConfig.proxyWebsockets = true; + }); + services.grafana = { + enable = true; + settings.server = { + domain = cfg.url; + http_port = cfg.port; + http_addr = "0.0.0.0"; + }; + }; + }; +} diff --git a/systems/x86_64-linux/apollo/default.nix b/systems/x86_64-linux/apollo/default.nix index 7ed2fab..45362b7 100644 --- a/systems/x86_64-linux/apollo/default.nix +++ b/systems/x86_64-linux/apollo/default.nix @@ -20,6 +20,10 @@ }; server = { + monitoring.grafana = { + enable = true; + url = "grafana.bwfiq.com"; + }; networking.ddns = { enable = true; domains = [