{
  config,
  ...
}:
{
  config = {
    services.prometheus = {
      enable = true;
      scrapeConfigs = [
        {
          job_name = "node";
          static_configs = [
            {
              targets = [ "localhost:9100" ];
              labels.instance = config.networking.hostName; # h001
            }
            {
              targets = [ "lio.net.joshuabell.xyz:9100" ];
              labels.instance = "lio";
            }
            {
              targets = [ "oren.net.joshuabell.xyz:9100" ];
              labels.instance = "oren";
            }
            {
              targets = [ "gp3.net.joshuabell.xyz:9100" ];
              labels.instance = "gp3";
            }
            {
              targets = [ "h002.net.joshuabell.xyz:9100" ];
              labels.instance = "h002";
            }
            {
              targets = [ "o001.net.joshuabell.xyz:9100" ];
              labels.instance = "o001";
            }
          ];
        }
      ];
    };

    services.grafana = {
      enable = true;
      dataDir = "/var/lib/grafana";
      settings = {
        server = {
          http_port = 3001;
          http_addr = "127.0.0.1";
          serve_from_sub_path = true;
          domain = "h001.net.joshuabell.xyz";
          root_url = "http://h001.net.joshuabell.xyz/grafana/";
          enforce_domain = true;
          enable_gzip = true;
        };
      };
      provision = {
        datasources.settings.datasources = [
          {
            name = "Prometheus";
            type = "prometheus";
            url = "http://localhost:9090";
            access = "proxy";
            isDefault = true; # Set as default, if you want
          }
          {
            name = "Loki";
            type = "loki";
            url = "http://localhost:3100";
            access = "proxy";
            isDefault = false;
          }
        ];
      };
    };

    # Loki for log aggregation
    systemd.tmpfiles.rules = [
      "d /var/lib/loki 0755 loki loki -"
      "d /var/lib/loki/chunks 0755 loki loki -"
      "d /var/lib/loki/rules 0755 loki loki -"
      "d /var/lib/loki/compactor 0755 loki loki -"
    ];
    services.loki = {
      enable = true;
      configuration = {
        auth_enabled = false;

        server = {
          http_listen_port = 3100;
        };

        common = {
          path_prefix = "/var/lib/loki";
          storage = {
            filesystem = {
              chunks_directory = "/var/lib/loki/chunks";
              rules_directory = "/var/lib/loki/rules";
            };
          };
          replication_factor = 1;
          ring = {
            kvstore = {
              store = "inmemory";
            };
          };
        };

        schema_config = {
          configs = [
            {
              from = "2023-01-01";
              store = "boltdb-shipper";
              object_store = "filesystem";
              schema = "v12"; # Updated schema version
              index = {
                prefix = "index_";
                period = "24h"; # Set to 24h period as recommended
              };
            }
          ];
        };

        limits_config = {
          allow_structured_metadata = false; # Disable structured metadata until we upgrade to v13
        };

        ruler = {
          storage = {
            type = "local";
            local = {
              directory = "/var/lib/loki/rules";
            };
          };
          rule_path = "/var/lib/loki/rules";
          ring = {
            kvstore = {
              store = "inmemory";
            };
          };
        };

        compactor = {
          working_directory = "/var/lib/loki/compactor"; # Set working directory
          retention_enabled = true;
          compaction_interval = "5m";
          delete_request_store = "filesystem"; # Add this line for retention configuration
          delete_request_cancel_period = "24h";
        };

        analytics = {
          reporting_enabled = false;
        };
      };
    };
  };
}
