nixos-config/machines/renge/services/grafana.nix
Simon Bruder 10b8d432d5
Relicense
This applies the REUSE specification to the repository, so the licensing
information can be tracked for every file individually.
2024-01-13 14:39:22 +01:00

66 lines
1.6 KiB
Nix

# SPDX-FileCopyrightText: 2021-2023 Simon Bruder <simon@sbruder.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
{ config, ... }:
let
cfg = config.services.grafana;
in
{
services.grafana = {
enable = true;
settings = {
server = {
# grafana supports sockets, but no permission management (always 660 grafana:grafana)
http_addr = "127.0.0.1";
http_port = 3002;
domain = "grafana.sbruder.de";
rootUrl = "https://%(domain)s/";
};
database = {
type = "postgres";
host = "/run/postgresql";
user = "grafana";
};
analytics = {
reporting_enabled = false;
check_for_updates = false;
check_for_plugin_updates = false;
};
};
provision = {
enable = true;
datasources.settings.datasources = [
{
name = "Prometheus";
type = "prometheus";
url = "http://${config.services.prometheus.listenAddress}:${toString config.services.prometheus.port}";
isDefault = true;
}
];
};
};
systemd.services.grafana.after = [ "postgresql.service" ];
services.postgresql = {
enable = true;
ensureDatabases = [ cfg.settings.database.name ];
ensureUsers = [
{
name = cfg.settings.database.user;
ensureDBOwnership = true;
}
];
};
services.nginx.virtualHosts."grafana.sbruder.de" = {
enableACME = true;
forceSSL = true;
locations = {
"/".proxyPass = "http://${cfg.settings.server.http_addr}:${toString cfg.settings.server.http_port}";
};
};
}