summaryrefslogtreecommitdiff
path: root/services/uptimekuma.nix
diff options
context:
space:
mode:
Diffstat (limited to 'services/uptimekuma.nix')
-rw-r--r--services/uptimekuma.nix78
1 files changed, 78 insertions, 0 deletions
diff --git a/services/uptimekuma.nix b/services/uptimekuma.nix
new file mode 100644
index 0000000..4cdd5f2
--- /dev/null
+++ b/services/uptimekuma.nix
@@ -0,0 +1,78 @@
+{config, lib, pkgs, ...}:
+let
+ cfg = config.wilkuu.services.uptimekuma;
+ hostname = config.networking.hostName;
+in
+{
+ options.wilkuu.services.uptimekuma = with lib; {
+ domain = mkOption {
+ type = types.str;
+ default = "uptime.${hostname}.local";
+ example = "uptime.wilkuu.xyz";
+ description = "Domain for http connections.";
+ };
+ doACME = mkEnableOption "Enable ACME for uptime kuma here";
+ enable = mkEnableOption "Enable the uptime-kuma service";
+ dataDir = mkOption {
+ type = types.path;
+ description = "Storage localtion for uptime kuma data, currently ignored, because nixpkgs sucks";
+ default = "/srv/data/uptimekuma";
+ example = "/srv/data/uptimekuma";
+ };
+ };
+
+ config = lib.mkIf cfg.enable (let
+ # sopsPath = ../secrets/${hostname}/vaultwarden.yaml;
+ # secrets = [];
+ # toSops = (sname: "uptime-kuma/${sname}");
+ in {
+ networking.hosts = {
+ "127.0.0.1" = [cfg.domain];
+ };
+
+ users.users.uptimekuma = {
+ isSystemUser = true;
+ group = "uptimekuma";
+ };
+ users.groups.uptimekuma = {};
+
+ systemd.services.uptime-kuma.serviceConfig.User = "uptimekuma";
+
+ # sops.secrets =
+ # (lib.genAttrs (map toSops secrets)
+ # (name: {
+ # sopsFile = sopsPath;
+ # mode = "0440";
+ # owner = "uptime-kuma";
+ # }));
+
+ services.nginx.virtualHosts."${cfg.domain}" = {
+ addSSL = cfg.doACME;
+ enableACME = cfg.doACME;
+ locations."/" = {
+ proxyPass = "http://localhost:3111";
+ recommendedProxySettings = true;
+ };
+ };
+
+ wilkuu.services.mysql = let
+ user = config.systemd.services.uptime-kuma.serviceConfig.User;
+ in {
+ unix_users = [user];
+ databases.uptimekuma = {
+ enable = true;
+ allowedUsers = [user];
+ };
+ };
+
+ services.uptime-kuma = {
+ enable = true;
+ settings = {
+ UPTIME_KUMA_PORT = "3111";
+ UPTIME_KUMA_HOST="127.0.0.1";
+ UPTIME_KUMA_DB_TYPE = "sqlite";
+ UPTIME_KUMA_DB_SOCKET = "/var/lib/mysql/mysql.sock";
+ };
+ };
+ });
+}