aboutsummaryrefslogtreecommitdiff
path: root/modules/services/grafana/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/services/grafana/default.nix')
-rw-r--r--modules/services/grafana/default.nix47
1 files changed, 47 insertions, 0 deletions
diff --git a/modules/services/grafana/default.nix b/modules/services/grafana/default.nix
new file mode 100644
index 0000000..5d67bc1
--- /dev/null
+++ b/modules/services/grafana/default.nix
@@ -0,0 +1,47 @@
+{ config, lib, pkgs, ... }:
+let cfg = config.my.services.grafana;
+in {
+ options.my.services.grafana = with lib; {
+ enable = mkEnableOption "grafana observability stack";
+ };
+
+ config = lib.mkIf cfg.enable {
+ services.grafana = {
+ enable = true;
+ # Bind to all interfaces.
+ addr = "";
+ security.adminUser = "fcuny";
+
+ analytics.reporting.enable = false;
+
+ provision = {
+ enable = true;
+ datasources = [{
+ name = "prometheus";
+ type = "prometheus";
+ isDefault = true;
+ url = "http://localhost:9090";
+ }];
+ dashboards = [{
+ disableDeletion = true;
+ options.path = ./dashboards;
+ }];
+ };
+ };
+
+ age.secrets.restic-repo-systems.file =
+ ../../../secrets/restic/repo-systems.age;
+
+ services.restic.backups = {
+ grafana = {
+ paths = [ "/var/lib/grafana/data" ];
+ repository = "/data/slow/backups/systems";
+ passwordFile = config.age.secrets.restic-repo-systems.path;
+ timerConfig = { OnCalendar = "00:05"; };
+ initialize = true;
+ extraBackupArgs = [ "--tag grafana" ];
+ pruneOpts = [ "--keep-daily 7" "--keep-weekly 4" ];
+ };
+ };
+ };
+}