From 1d03ffaef917e1e23ee56477690f1e5e7bd39e36 Mon Sep 17 00:00:00 2001 From: jasmine Date: Thu, 6 Jun 2024 20:38:37 +0800 Subject: [PATCH] Setup grafana --- nixos/viridian/services/grafana.nix | 56 +++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 nixos/viridian/services/grafana.nix diff --git a/nixos/viridian/services/grafana.nix b/nixos/viridian/services/grafana.nix new file mode 100644 index 0000000..44a8030 --- /dev/null +++ b/nixos/viridian/services/grafana.nix @@ -0,0 +1,56 @@ +{ config, ... }: + +{ + # Setup grafana our grafana instance. + services.grafana = { + enable = true; + dataDir = "/srv/services/grafana"; + settings = { + server = { + http_addr = "127.0.0.1"; + http_port = 3400; + domain = "kanto.dev"; + root_url = "https://kanto.dev/grafana/"; + serve_from_sub_path = true; + }; + database = { + type = "mysql"; + name = "grafana"; + user = "grafana"; + host = "/var/run/mysqld/mysqld.sock"; + }; + }; + }; + + # Setup our database for grafana. + services.mysql = { + ensureUsers = [{ + name = "grafana"; + ensurePermissions = { + "grafana.*" = "ALL PRIVILEGES"; + }; + }]; + ensureDatabases = [ "grafana" ]; + }; + + # Setup our traefik router. + services.traefik.dynamicConfigOptions.http.routers = { + grafana = { + rule = "Host(`kanto.dev`)"; + entryPoints = [ + "websecure" + ]; + middlewares = [ + "admin" + ]; + service = "grafana"; + }; + }; + + # Setup our traefik service. + services.traefik.dynamicConfigOptions.http.services = { + grafana.loadBalancer.servers = [ + { url = "http://127.0.0.1:${toString config.services.grafana.settings.server.http_port}"; } + ]; + }; +}