glance: Refactor site widgets

This commit is contained in:
SebastianStork 2026-03-17 18:38:34 +01:00
parent 5f8b5c04b3
commit c25c4341b3
Signed by: SebastianStork
SSH key fingerprint: SHA256:tRrGdjYOwgHxpSc/wTOZQZEjxcb15P0tyXRsbAfd+2Q

View file

@ -8,18 +8,33 @@
let let
cfg = config.custom.web-services.glance; cfg = config.custom.web-services.glance;
observabilityTitles = [ perHostDomains =
"Alloy" perHostSitesWidget.widgets |> lib.concatMap (widget: widget.sites) |> lib.map (site: site.domain);
"Prometheus"
"Alertmanager"
];
hosts = allHosts |> lib.attrValues; perHostSitesWidget =
allHosts
|> lib.attrValues
|> lib.map (host: {
type = "monitor";
cache = "1m";
title = host.config.networking.hostName;
sites =
host.config.custom.meta.sites
|> lib.attrValues
|> lib.filter (site: site.domain |> lib.hasSuffix host.config.custom.networking.overlay.fqdn);
})
|> lib.filter ({ sites, ... }: sites != [ ])
|> (widgets: {
type = "split-column";
max-columns = widgets |> lib.length;
inherit widgets;
});
applicationSitesWidget = applicationSitesWidget =
hosts allHosts
|> lib.attrValues
|> lib.concatMap (host: host.config.custom.meta.sites |> lib.attrValues) |> lib.concatMap (host: host.config.custom.meta.sites |> lib.attrValues)
|> lib.filter (service: !lib.elem service.title observabilityTitles) |> lib.filter (service: !lib.elem service.domain perHostDomains)
|> lib.groupBy ( |> lib.groupBy (
service: service:
service.domain |> self.lib.isPrivateDomain |> (isPrivate: if isPrivate then "Private" else "Public") service.domain |> self.lib.isPrivateDomain |> (isPrivate: if isPrivate then "Private" else "Public")
@ -38,24 +53,6 @@ let
inherit widgets; inherit widgets;
}); });
observabilitySitesWidget =
hosts
|> lib.map (host: {
type = "monitor";
cache = "1m";
title = host.config.networking.hostName;
sites =
host.config.custom.meta.sites
|> lib.attrValues
|> lib.filter (service: lib.elem service.title observabilityTitles);
})
|> lib.filter ({ sites, ... }: sites != [ ])
|> (widgets: {
type = "split-column";
max-columns = widgets |> lib.length;
inherit widgets;
});
githubWorkflowFiles = githubWorkflowFiles =
"${self}/.github/workflows" "${self}/.github/workflows"
|> builtins.readDir |> builtins.readDir
@ -129,7 +126,7 @@ in
autofocus = false; autofocus = false;
} }
applicationSitesWidget applicationSitesWidget
observabilitySitesWidget perHostSitesWidget
]; ];
} }
{ {