# Service Catalog > Complete service documentation with core options, feature integrations, and smart defaults > > Generated on: Wed, 30 Jul 2025 02:12:53 +0200 This document provides comprehensive documentation for homelab services, organized by: - **Core Service Options**: The main service configuration - **Feature Integrations**: Available monitoring, logging, and proxy features - **Service Defaults**: What this service configures by default for each feature ## Overview **Total Available Services:** 4 ## Service Integration Matrix | Service | Core Options | Monitoring | Logging | Proxy | Deployments | |---------|--------------|------------|---------|-------|-------------| | `gatus` | 11 | 📊 | 📝 | 🔀 | 1 | | `grafana` | 3 | 📊 | 📝 | 🔀 | 1 | | `minio` | 4 | ❌ | ❌ | ❌ | 1 | | `prometheus` | 12 | 📊 | 📝 | 🔀 | 1 | **Legend:** 📊📝🔀 = Feature available, ❌ = Feature not available ## Service Documentation ### gatus **Deployment Status:** 1/2 nodes have this service enabled #### Core Service Options The main configuration options for gatus: ```nix homelab.services.gatus = { alerting = {}; # Gatus alerting configuration description = Gatus Status Page; # No description enable = false; # Whether to enable Gatus Status Page. extraConfig = {}; # Additional Gatus configuration options port = 8080; # No description storage = { "type": "memory" }; # Gatus storage configuration ui.buttons = [ { "link": "https://grafana.procopius.dk", "name": "Grafana" }, { "link": "https://prometheus.procopius.dk", "name": "Prometheus" } ]; # Navigation buttons in the Gatus interface ui.header = Homelab Services Status; # Header text for the Gatus interface ui.link = https://status.procopius.dk; # Link in the Gatus header ui.title = Homelab Status; # Title for the Gatus web interface web.address = 0.0.0.0; # Web interface bind address }; ``` #### Feature Integrations ##### 📊 Monitoring Integration Available monitoring options: ```nix homelab.services.gatus = { # ... core options above ... monitoring.enable = true; # Enable monitoring for gatus monitoring.extraLabels = {}; # No description monitoring.healthCheck.conditions = [ "[STATUS] == 200" ]; # Health check conditions. Setting conditions enables health checks. monitoring.healthCheck.enable = true; # No description monitoring.healthCheck.extraChecks = []; # Additional health checks. Adding checks enables health monitoring. # monitoring.healthCheck.path = ; # Health check endpoint path. Setting this enables health checks. monitoring.metrics.enable = false; # No description monitoring.metrics.extraEndpoints = []; # Additional metrics endpoints. Adding endpoints enables metrics collection. # monitoring.metrics.path = ; # Metrics endpoint path. Setting this enables metrics collection. }; ``` **gatus sets these monitoring defaults:** ```nix enable = true; extraLabels = {}; healthCheck = {"conditions":["[STATUS] == 200"],"enable":true,"extraChecks":[],"path":null}; metrics = {"enable":false,"extraEndpoints":[],"path":null}; ``` ##### 📝 Logging Integration Available logging options: ```nix homelab.services.gatus = { # ... core options above ... logging.enable = false; # Enable logging for gatus logging.extraLabels = {}; # No description logging.extraSources = []; # No description logging.files = []; # No description # logging.multiline = ; # No description logging.parsing.extractFields = []; # No description # logging.parsing.regex = ; # No description }; ``` **gatus sets these logging defaults:** ```nix enable = false; extraLabels = {}; extraSources = []; files = []; multiline = null; parsing = {"extractFields":[],"regex":null}; ``` ##### 🔀 Proxy Integration Available proxy options: ```nix homelab.services.gatus = { # ... core options above ... proxy.additionalSubdomains = []; # No description proxy.enable = true; # Enable reverse proxy for gatus proxy.enableAuth = false; # No description proxy.subdomain = gatus; # No description }; ``` **gatus sets these proxy defaults:** ```nix additionalSubdomains = []; enable = true; enableAuth = false; subdomain = gatus; ``` --- ### grafana **Deployment Status:** 1/2 nodes have this service enabled #### Core Service Options The main configuration options for grafana: ```nix homelab.services.grafana = { description = Grafana Metrics Dashboard; # No description enable = false; # Whether to enable Grafana Dashboard. port = 3000; # No description }; ``` #### Feature Integrations ##### 📊 Monitoring Integration Available monitoring options: ```nix homelab.services.grafana = { # ... core options above ... monitoring.enable = true; # Enable monitoring for grafana monitoring.extraLabels = {}; # No description monitoring.healthCheck.conditions = [ "[STATUS] == 200" ]; # Health check conditions. Setting conditions enables health checks. monitoring.healthCheck.enable = true; # No description monitoring.healthCheck.extraChecks = []; # Additional health checks. Adding checks enables health monitoring. # monitoring.healthCheck.path = ; # Health check endpoint path. Setting this enables health checks. monitoring.metrics.enable = false; # No description monitoring.metrics.extraEndpoints = []; # Additional metrics endpoints. Adding endpoints enables metrics collection. # monitoring.metrics.path = ; # Metrics endpoint path. Setting this enables metrics collection. }; ``` **grafana sets these monitoring defaults:** ```nix enable = true; extraLabels = {}; healthCheck = {"conditions":["[STATUS] == 200"],"enable":true,"extraChecks":[],"path":null}; metrics = {"enable":false,"extraEndpoints":[],"path":null}; ``` ##### 📝 Logging Integration Available logging options: ```nix homelab.services.grafana = { # ... core options above ... logging.enable = false; # Enable logging for grafana logging.extraLabels = {}; # No description logging.extraSources = []; # No description logging.files = []; # No description # logging.multiline = ; # No description logging.parsing.extractFields = []; # No description # logging.parsing.regex = ; # No description }; ``` **grafana sets these logging defaults:** ```nix enable = false; extraLabels = {}; extraSources = []; files = []; multiline = null; parsing = {"extractFields":[],"regex":null}; ``` ##### 🔀 Proxy Integration Available proxy options: ```nix homelab.services.grafana = { # ... core options above ... proxy.additionalSubdomains = []; # No description proxy.enable = true; # Enable reverse proxy for grafana proxy.enableAuth = false; # No description proxy.subdomain = grafana; # No description }; ``` **grafana sets these proxy defaults:** ```nix additionalSubdomains = []; enable = true; enableAuth = false; subdomain = grafana; ``` --- ### minio **Deployment Status:** 1/2 nodes have this service enabled #### Core Service Options The main configuration options for minio: ```nix homelab.services.minio = { enable = false; # Whether to enable Minio Object Storage. openFirewall = true; # Whether to open the ports specified in `port` and `webPort` in the firewall. port = 9000; # Port of the server. webPort = 9001; # Port of the web UI (console). }; ``` --- ### prometheus **Deployment Status:** 1/2 nodes have this service enabled #### Core Service Options The main configuration options for prometheus: ```nix homelab.services.prometheus = { alertmanager.enable = true; # Enable integration with Alertmanager alertmanager.url = alertmanager.lab:9093; # Alertmanager URL description = Prometheus Monitoring Server; # No description enable = false; # Whether to enable Prometheus Monitoring Server. extraAlertingRules = []; # Additional alerting rules extraFlags = []; # Extra command line flags extraScrapeConfigs = []; # Additional scrape configurations globalConfig = { "evaluation_interval": "15s", "scrape_interval": "15s" }; # Global Prometheus configuration port = 9090; # No description retention = 15d; # How long to retain metrics data ruleFiles = []; # Additional rule files to load systemdServices = [ "prometheus.service", "prometheus" ]; # Systemd services to monitor }; ``` #### Feature Integrations ##### 📊 Monitoring Integration Available monitoring options: ```nix homelab.services.prometheus = { # ... core options above ... monitoring.enable = true; # Enable monitoring for prometheus monitoring.extraLabels = {}; # No description monitoring.healthCheck.conditions = [ "[STATUS] == 200" ]; # Health check conditions. Setting conditions enables health checks. monitoring.healthCheck.enable = true; # No description monitoring.healthCheck.extraChecks = []; # Additional health checks. Adding checks enables health monitoring. # monitoring.healthCheck.path = ; # Health check endpoint path. Setting this enables health checks. monitoring.metrics.enable = false; # No description monitoring.metrics.extraEndpoints = []; # Additional metrics endpoints. Adding endpoints enables metrics collection. # monitoring.metrics.path = ; # Metrics endpoint path. Setting this enables metrics collection. }; ``` **prometheus sets these monitoring defaults:** ```nix enable = true; extraLabels = {}; healthCheck = {"conditions":["[STATUS] == 200"],"enable":true,"extraChecks":[],"path":null}; metrics = {"enable":false,"extraEndpoints":[],"path":null}; ``` ##### 📝 Logging Integration Available logging options: ```nix homelab.services.prometheus = { # ... core options above ... logging.enable = false; # Enable logging for prometheus logging.extraLabels = {}; # No description logging.extraSources = []; # No description logging.files = []; # No description # logging.multiline = ; # No description logging.parsing.extractFields = []; # No description # logging.parsing.regex = ; # No description }; ``` **prometheus sets these logging defaults:** ```nix enable = false; extraLabels = {}; extraSources = []; files = []; multiline = null; parsing = {"extractFields":[],"regex":null}; ``` ##### 🔀 Proxy Integration Available proxy options: ```nix homelab.services.prometheus = { # ... core options above ... proxy.additionalSubdomains = []; # No description proxy.enable = true; # Enable reverse proxy for prometheus proxy.enableAuth = false; # No description proxy.subdomain = prometheus; # No description }; ``` **prometheus sets these proxy defaults:** ```nix additionalSubdomains = []; enable = true; enableAuth = false; subdomain = prometheus; ``` --- ## Feature Reference ### Integration Features Homelab services can integrate with three main features: - **📊 Monitoring**: Prometheus metrics and health checks - **📝 Logging**: Centralized log collection with Promtail/Loki - **🔀 Proxy**: Reverse proxy with SSL and authentication Each service can import these features and set service-specific defaults. --- *This documentation is generated from actual NixOS module evaluations.*