{ config, pkgs, lib, ... }: with lib; let # Container config name = "uptimeKuma"; # Version tagging uptimeKumaVersion = "2.2.0-rootless"; # Storage optimization spindown = config.numbus-server.hardware.HddSpindown; optimizedDir = if spindown.enable && (spindown.optimize == "compatible" || (isList spindown.optimize && elem name spindown.optimize)) then cfg.configDir else cfg.dataDir; # Helper helper = import ../service-helper.nix { inherit config pkgs lib; }; cfg = config.numbus-server.services.uptimeKuma; in helper.mkPodmanService { inherit name; description = "Uptime-Kuma, \"don't let your server down !\" monitoring tools"; defaultPort = "3001"; scheme = "http"; middlewares = [ "secureHeaders" ]; dirPermissions = [ "100999:100 ${optimizedDir}" ]; composeText = '' services: uptimekuma: image: docker.io/louislam/uptime-kuma:${uptimeKumaVersion} container_name: uptime-kuma hostname: uptime-kuma user: '1000:1000' networks: uptime-kuma: ipv4_address: 10.89.100.253 ports: - "${cfg.port}:3001/tcp" volumes: - ${optimizedDir}:/app/data security_opt: - no-new-privileges:true restart: unless-stopped networks: uptime-kuma: driver: bridge ipam: config: - subnet: "10.89.100.0/24" gateway: "10.89.100.254" ''; }