45 lines
1.4 KiB
Nix
45 lines
1.4 KiB
Nix
{ 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}" ];
|
|
}];
|
|
}
|
|
];
|
|
}
|