inputs:

with inputs.nixpkgs.lib;

rec {
  monitoringIdForHost = host: let
    evalResult = builtins.tryEval (attrByPath [ "clerie" "monitoring" "id" ] null host.config);
  in
    if evalResult.success then evalResult.value else null;
  monitoringIdsByHost = hosts: filterAttrs (name: id: id != null) (mapAttrs (name: host: monitoringIdForHost host) hosts);
  hostsByMonitoringIds = hosts: mapAttrs' (name: id: nameValuePair id name) (monitoringIdsByHost hosts);
  monitoringIds =  hosts: attrNames (hostsByMonitoringIds hosts);
}