glance: Add github action badges widget

This commit is contained in:
SebastianStork 2026-03-12 21:12:55 +01:00
parent 52580f096d
commit 1bb4b6db32
Signed by: SebastianStork
SSH key fingerprint: SHA256:tRrGdjYOwgHxpSc/wTOZQZEjxcb15P0tyXRsbAfd+2Q

View file

@ -16,7 +16,7 @@ let
hosts = allHosts |> lib.attrValues; hosts = allHosts |> lib.attrValues;
applicationSites = applicationSitesWidget =
hosts hosts
|> 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.title observabilityTitles)
@ -36,10 +36,9 @@ let
type = "split-column"; type = "split-column";
max-columns = 2; max-columns = 2;
inherit widgets; inherit widgets;
}) });
|> lib.singleton;
observabilitySites = observabilitySitesWidget =
hosts hosts
|> lib.map (host: { |> lib.map (host: {
type = "monitor"; type = "monitor";
@ -55,8 +54,163 @@ let
type = "split-column"; type = "split-column";
max-columns = widgets |> lib.length; max-columns = widgets |> lib.length;
inherit widgets; inherit widgets;
}) });
|> lib.singleton;
githubWorkflowFiles =
"${self}/.github/workflows"
|> builtins.readDir
|> lib.attrNames
|> lib.filter (file: file |> lib.hasSuffix ".yml")
|> lib.filter (file: file |> lib.hasPrefix "_" |> (hasPrefix: !hasPrefix));
mkGithubWorkflowBadge =
workflowFile:
let
workflowName = workflowFile |> lib.removeSuffix ".yml";
workflowUrl = "https://github.com/SebastianStork/nixos-config/actions/workflows/${workflowFile}";
in
''
<a class="block" href="${workflowUrl}" target="_blank" rel="noopener noreferrer">
<img
class="block"
src="${workflowUrl}/badge.svg"
alt="${workflowName} workflow status"
/>
</a>
'';
githubWorkflowBadges =
githubWorkflowFiles |> lib.map mkGithubWorkflowBadge |> lib.concatStringsSep "\n";
githubBadgeWidget = {
type = "custom-api";
title = "nixos-config";
title-url = "https://github.com/SebastianStork/nixos-config";
template = ''
<div class="flex flex-col items-start gap-10">
<div class="flex flex-wrap gap-10">
${githubWorkflowBadges}
</div>
</div>
'';
};
bookmarksWidget = {
type = "bookmarks";
groups = [
{
links = [
{
title = "YouTube";
url = "https://www.youtube.com/";
}
{
title = "DeepL";
url = "https://www.deepl.com/en/translator";
}
{
title = "GitHub";
url = "https://github.com/SebastianStork";
}
{
title = "ChatGBT";
url = "https://chatgpt.com/";
}
];
}
{
title = "Email";
links = [
{
title = "Mailbox";
url = "https://app.mailbox.org/appsuite/#!!&app=io.ox/mail&folder=default0/INBOX";
}
{
title = "Proton";
url = "https://mail.proton.me/u/1/inbox";
}
{
title = "h_da";
url = "https://webmail.stud.h-da.de/stud/?_task=mail&_mbox=INBOX";
}
];
}
{
title = "Nix";
color = "200 50 50";
links = [
{
title = "Wiki";
url = "https://wiki.nixos.org/wiki/Main_Page";
}
{
title = "NixOS Manual";
url = "https://nixos.org/manual/nixos/stable/";
}
{
title = "Packages Search";
url = "https://search.nixos.org/packages";
}
{
title = "NixOS Options Search";
url = "https://search.nixos.org/options";
}
{
title = "HM Options Search";
url = "https://home-manager-options.extranix.com/";
}
{
title = "Function Search";
url = "https://noogle.dev/";
}
{
title = "GitHub Code Search";
url = "https://github.com/search?q=lang%3Anix%20&type=code";
}
];
}
{
title = "Infra";
color = "140 70 50";
links = [
{
title = "Backblaze";
url = "https://secure.backblaze.com/b2_buckets.htm";
}
{
title = "Healthchecks";
url = "https://healthchecks.io/projects/ed5214d3-971f-4b66-997d-8ffd0d8cd4ca/checks/";
}
{
title = "Hetzner";
url = "https://console.hetzner.cloud/projects/10289618/servers";
}
{
title = "Porkbun";
url = "https://porkbun.com/";
}
];
}
{
title = "Uni";
color = "10 70 50";
links = [
{
title = "My";
url = "https://my.h-da.de/";
}
{
title = "Moodle";
url = "https://lernen.h-da.de/";
}
{
title = "GitLab";
url = "https://code.fbi.h-da.de/";
}
];
}
];
};
in in
{ {
options.custom.web-services.glance = { options.custom.web-services.glance = {
@ -85,133 +239,22 @@ in
columns = [ columns = [
{ {
size = "full"; size = "full";
widgets = widgets = [
lib.singleton { {
type = "search"; type = "search";
search-engine = "https://search.splitleaf.de/search?q={QUERY}"; search-engine = "https://search.splitleaf.de/search?q={QUERY}";
autofocus = true; autofocus = true;
} }
++ applicationSites applicationSitesWidget
++ observabilitySites; observabilitySitesWidget
];
} }
{ {
size = "small"; size = "small";
widgets = lib.singleton { widgets = [
type = "bookmarks"; githubBadgeWidget
groups = [ bookmarksWidget
{ ];
links = [
{
title = "YouTube";
url = "https://www.youtube.com/";
}
{
title = "DeepL";
url = "https://www.deepl.com/en/translator";
}
{
title = "GitHub";
url = "https://github.com/SebastianStork";
}
{
title = "ChatGBT";
url = "https://chatgpt.com/";
}
];
}
{
title = "Email";
links = [
{
title = "Mailbox";
url = "https://app.mailbox.org/appsuite/#!!&app=io.ox/mail&folder=default0/INBOX";
}
{
title = "Proton";
url = "https://mail.proton.me/u/1/inbox";
}
{
title = "h_da";
url = "https://webmail.stud.h-da.de/stud/?_task=mail&_mbox=INBOX";
}
];
}
{
title = "Nix";
color = "200 50 50";
links = [
{
title = "Wiki";
url = "https://wiki.nixos.org/wiki/Main_Page";
}
{
title = "NixOS Manual";
url = "https://nixos.org/manual/nixos/stable/";
}
{
title = "Packages Search";
url = "https://search.nixos.org/packages";
}
{
title = "NixOS Options Search";
url = "https://search.nixos.org/options";
}
{
title = "HM Options Search";
url = "https://home-manager-options.extranix.com/";
}
{
title = "Function Search";
url = "https://home-manager-options.extranix.com/";
}
{
title = "GitHub Code Search";
url = "https://github.com/search?q=lang%3Anix%20&type=code";
}
];
}
{
title = "Infra";
color = "140 70 50";
links = [
{
title = "Backblaze";
url = "https://secure.backblaze.com/b2_buckets.htm";
}
{
title = "Healthchecks";
url = "https://healthchecks.io/projects/ed5214d3-971f-4b66-997d-8ffd0d8cd4ca/checks/";
}
{
title = "Hetzner";
url = "https://console.hetzner.cloud/projects/10289618/servers";
}
{
title = "Porkbun";
url = "https://porkbun.com/";
}
];
}
{
title = "Uni";
color = "10 70 50";
links = [
{
title = "My";
url = "https://my.h-da.de/";
}
{
title = "Moodle";
url = "https://lernen.h-da.de/";
}
{
title = "GitLab";
url = "https://code.fbi.h-da.de/";
}
];
}
];
};
} }
]; ];
}; };