summary refs log tree commit diff
path: root/nixos/modules/services/monitoring/sensu/dashboard.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/monitoring/sensu/dashboard.nix')
-rw-r--r--nixos/modules/services/monitoring/sensu/dashboard.nix112
1 files changed, 112 insertions, 0 deletions
diff --git a/nixos/modules/services/monitoring/sensu/dashboard.nix b/nixos/modules/services/monitoring/sensu/dashboard.nix
new file mode 100644
index 000000000000..dda38f2f8c43
--- /dev/null
+++ b/nixos/modules/services/monitoring/sensu/dashboard.nix
@@ -0,0 +1,112 @@
+{ config, lib, cfg }:
+
+{
+  options = with lib; with types; {
+    enable = mkOption {
+      type = bool;
+      default = (cfg.role == "server");
+      description = "Enable the dashboard";
+    };
+
+    host = mkOption {
+      type = str;
+      default = "127.0.0.1";
+      description = "The IP address on which Uchiwa will listen.";
+    };
+
+    port = mkOption {
+      type = int;
+      default = 3000;
+      description = "The port on which Uchiwa will listen.";
+    };
+
+    refresh = mkOption {
+      type = int;
+      default = 5;
+      description = "UI refresh interval.";
+    };
+
+    proxy = mkOption {
+      description = "Proxy traffic to/from the sensu dashboard.";
+      default = {};
+      type = submodule {
+        options = {
+          enable = mkOption {
+            type = bool;
+            default = false;
+            description = "Enable proxy.";
+          };
+
+          path = mkOption {
+            type = str;
+            default = "/";
+            description = "The path to the dashboard if behind a proxy.";
+          };
+
+          name = mkOption {
+            type = str;
+            default = config.networking.hostName;
+            description = "Hostname on which to repond.";
+          };
+
+          enableSSL = mkOption {
+            type = bool;
+            default = false;
+            description = "Force SSL.";
+          };
+        };
+      };
+    };
+
+    users = mkOption {
+      description = "Users";
+      default = {};
+      type = listOf(submodule {
+        options = {
+          username = mkOption {
+            description = "User name.";
+            type = str;
+          };
+
+          password = mkOption {
+            description = "Password.";
+            type = str;
+          };
+
+          accessToken = mkOption {
+            default = "";
+            description = "Access token.";
+            type = str;
+          };
+
+          readonly = mkOption {
+            default = false;
+            description = "Read only.";
+            type = bool;
+          };
+        };
+      });
+    };
+
+    usersOptions = mkOption {
+      description = "Options relevant to all users";
+      default = {};
+      type = submodule {
+        options = {
+
+          defaultTheme = mkOption {
+            type = enum [ "uchiwa-default" "uchiwa-dark" ];
+            default = "uchiwa-dark";
+            description = "The theme to use.";
+          };
+
+          logoUrl = mkOption {
+            type = str;
+            default = "";
+            description = "The logo to use.";
+          };
+        };
+      };
+    };
+  };
+}