{ config, lib, pkgs, ... }: let # occ bin occ = config.services.nextcloud.occ + "/bin/nextcloud-occ"; nextcloudSetupServerinfoToken = pkgs.writeShellScript "nextcloud-setup-serverinfo-token.sh" '' # set serverinfo_token SERVERINFO_TOKEN="$(cat $CREDENTIALS_DIRECTORY/nextcloud-serverinfo-token)" ${occ} config:app:set serverinfo token --value "$SERVERINFO_TOKEN" > /dev/null 2>&1 ''; in { systemd.services.nextcloud-setup = { # runs this after all the main nextcloud-setup stuff script = lib.mkAfter '' ${nextcloudSetupServerinfoToken} ''; # setup credentials for service serviceConfig.LoadCredential = [ "nextcloud-serverinfo-token:${config.age.secrets.nextcloud-serverinfo-token.path}" ]; }; services.prometheus.exporters.nextcloud = { enable = true; listenAddress = "localhost"; tokenFile = config.age.secrets.nextcloud-serverinfo-token.path; url = let scheme = if config.services.nextcloud.https then "https" else "http"; in "${scheme}://${config.services.nextcloud.hostName}"; }; # setup permissions age.secrets.nextcloud-serverinfo-token.owner = config.services.prometheus.exporters.nextcloud.user; services.prometheus.scrapeConfigs = [ { job_name = "nextcloud"; static_configs = [{ targets = [ "localhost:${builtins.toString config.services.prometheus.exporters.nextcloud.port}" ]; }]; } ]; }