diff --git a/modules/nixos/web-services/glance.nix b/modules/nixos/web-services/glance.nix index a6b1f43..e7876d5 100644 --- a/modules/nixos/web-services/glance.nix +++ b/modules/nixos/web-services/glance.nix @@ -16,7 +16,7 @@ let hosts = allHosts |> lib.attrValues; - applicationSites = + applicationSitesWidget = hosts |> lib.concatMap (host: host.config.custom.meta.sites |> lib.attrValues) |> lib.filter (service: !lib.elem service.title observabilityTitles) @@ -36,10 +36,9 @@ let type = "split-column"; max-columns = 2; inherit widgets; - }) - |> lib.singleton; + }); - observabilitySites = + observabilitySitesWidget = hosts |> lib.map (host: { type = "monitor"; @@ -55,8 +54,163 @@ let type = "split-column"; max-columns = widgets |> lib.length; 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 + '' + + ${workflowName} workflow status + + ''; + + githubWorkflowBadges = + githubWorkflowFiles |> lib.map mkGithubWorkflowBadge |> lib.concatStringsSep "\n"; + + githubBadgeWidget = { + type = "custom-api"; + title = "nixos-config"; + title-url = "https://github.com/SebastianStork/nixos-config"; + template = '' +
+
+ ${githubWorkflowBadges} +
+
+ ''; + }; + + 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 { options.custom.web-services.glance = { @@ -85,133 +239,22 @@ in columns = [ { size = "full"; - widgets = - lib.singleton { + widgets = [ + { type = "search"; search-engine = "https://search.splitleaf.de/search?q={QUERY}"; autofocus = true; } - ++ applicationSites - ++ observabilitySites; + applicationSitesWidget + observabilitySitesWidget + ]; } { size = "small"; - widgets = lib.singleton { - 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://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/"; - } - ]; - } - ]; - }; + widgets = [ + githubBadgeWidget + bookmarksWidget + ]; } ]; };