diff --git a/modules/nixos/meta/sites.nix b/modules/nixos/meta/services.nix similarity index 66% rename from modules/nixos/meta/sites.nix rename to modules/nixos/meta/services.nix index 8f34e21..fee970a 100644 --- a/modules/nixos/meta/sites.nix +++ b/modules/nixos/meta/services.nix @@ -1,22 +1,18 @@ { lib, ... }: { - options.custom.meta.sites = lib.mkOption { + options.custom.meta.services = lib.mkOption { type = lib.types.attrsOf ( lib.types.submodule ( - { name, config, ... }: + { name, ... }: { options = { title = lib.mkOption { type = lib.types.nonEmptyStr; default = name; }; - domain = lib.mkOption { - type = lib.types.nonEmptyStr; - default = name; - }; url = lib.mkOption { type = lib.types.nonEmptyStr; - default = "https://${config.domain}"; + default = "https://${name}"; }; icon = lib.mkOption { type = lib.types.nonEmptyStr; diff --git a/modules/nixos/services/alertmanager.nix b/modules/nixos/services/alertmanager.nix index 88bb9b7..977b3a5 100644 --- a/modules/nixos/services/alertmanager.nix +++ b/modules/nixos/services/alertmanager.nix @@ -101,7 +101,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = cfg.port; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Alertmanager"; icon = "sh:prometheus"; }; diff --git a/modules/nixos/services/alloy.nix b/modules/nixos/services/alloy.nix index 9445f85..24543d4 100644 --- a/modules/nixos/services/alloy.nix +++ b/modules/nixos/services/alloy.nix @@ -131,7 +131,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = lib.mkIf (cfg.domain != null) cfg.port; - meta.sites.${cfg.domain} = lib.mkIf (cfg.domain != null) { + meta.services.${cfg.domain} = lib.mkIf (cfg.domain != null) { title = "Alloy"; icon = "sh:grafana-alloy"; }; diff --git a/modules/nixos/services/prometheus.nix b/modules/nixos/services/prometheus.nix index ef20489..5139fe8 100644 --- a/modules/nixos/services/prometheus.nix +++ b/modules/nixos/services/prometheus.nix @@ -126,7 +126,7 @@ in persistence.directories = [ "/var/lib/${config.services.prometheus.stateDir}" ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Prometheus"; icon = "sh:prometheus"; }; diff --git a/modules/nixos/services/syncthing.nix b/modules/nixos/services/syncthing.nix index 1505b3f..27703c0 100644 --- a/modules/nixos/services/syncthing.nix +++ b/modules/nixos/services/syncthing.nix @@ -171,7 +171,7 @@ in persistence.directories = [ dataDir ]; - meta.sites.${cfg.gui.domain} = lib.mkIf (cfg.gui.domain != null) { + meta.services.${cfg.gui.domain} = lib.mkIf (cfg.gui.domain != null) { title = "Syncthing"; icon = "sh:syncthing"; }; diff --git a/modules/nixos/web-services/actualbudget.nix b/modules/nixos/web-services/actualbudget.nix index 6b6b59b..ec1a616 100644 --- a/modules/nixos/web-services/actualbudget.nix +++ b/modules/nixos/web-services/actualbudget.nix @@ -53,7 +53,7 @@ in persistence.directories = [ dataDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Actual Budget"; icon = "sh:actual-budget"; }; diff --git a/modules/nixos/web-services/atuin.nix b/modules/nixos/web-services/atuin.nix index 73fcca4..f655aae 100644 --- a/modules/nixos/web-services/atuin.nix +++ b/modules/nixos/web-services/atuin.nix @@ -48,7 +48,7 @@ in persistence.directories = [ dataDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Atuin"; icon = "sh:atuin"; }; diff --git a/modules/nixos/web-services/filebrowser.nix b/modules/nixos/web-services/filebrowser.nix index b0d5b7b..0683e7c 100644 --- a/modules/nixos/web-services/filebrowser.nix +++ b/modules/nixos/web-services/filebrowser.nix @@ -49,7 +49,7 @@ in persistence.directories = [ dataDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "File Browser"; icon = "sh:file-browser"; }; diff --git a/modules/nixos/web-services/forgejo.nix b/modules/nixos/web-services/forgejo.nix index 2c7859a..4a2083a 100644 --- a/modules/nixos/web-services/forgejo.nix +++ b/modules/nixos/web-services/forgejo.nix @@ -84,7 +84,7 @@ in persistence.directories = [ config.services.forgejo.stateDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Forgejo"; icon = "sh:forgejo"; }; diff --git a/modules/nixos/web-services/freshrss.nix b/modules/nixos/web-services/freshrss.nix index 5b73c1f..bb749e6 100644 --- a/modules/nixos/web-services/freshrss.nix +++ b/modules/nixos/web-services/freshrss.nix @@ -50,7 +50,7 @@ in persistence.directories = [ dataDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "FreshRSS"; icon = "sh:freshrss"; }; diff --git a/modules/nixos/web-services/gatus.nix b/modules/nixos/web-services/gatus.nix index 1779501..c1e049e 100644 --- a/modules/nixos/web-services/gatus.nix +++ b/modules/nixos/web-services/gatus.nix @@ -211,7 +211,7 @@ in persistence.directories = [ dataDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Gatus"; icon = "sh:gatus"; }; diff --git a/modules/nixos/web-services/glance.nix b/modules/nixos/web-services/glance.nix index a3f2e13..498e91c 100644 --- a/modules/nixos/web-services/glance.nix +++ b/modules/nixos/web-services/glance.nix @@ -1,6 +1,5 @@ { config, - self, lib, allHosts, ... @@ -8,55 +7,23 @@ let cfg = config.custom.web-services.glance; - observabilityTitles = [ - "Alloy" - "Prometheus" - "Alertmanager" - ]; - - hosts = allHosts |> lib.attrValues; - - applicationSites = - hosts - |> lib.concatMap (host: host.config.custom.meta.sites |> lib.attrValues) - |> lib.filter (service: !lib.elem service.title observabilityTitles) - |> lib.groupBy ( - service: - service.domain |> self.lib.isPrivateDomain |> (isPrivate: if isPrivate then "Private" else "Public") - ) - |> lib.mapAttrsToList ( - name: value: { + servicesWidgets = + allHosts + |> lib.attrValues + |> lib.map (host: { + hostName = host.config.networking.hostName; + services = host.config.custom.meta.services |> lib.attrValues; + }) + |> lib.filter ({ services, ... }: services != [ ]) + |> lib.map ( + { hostName, services }: + { type = "monitor"; cache = "1m"; - title = "${name} Services"; - sites = value; + title = "Services - ${hostName}"; + sites = services; } - ) - |> (widgets: { - type = "split-column"; - max-columns = 2; - inherit widgets; - }) - |> lib.singleton; - - observabilitySites = - 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; - }) - |> lib.singleton; + ); in { options.custom.web-services.glance = { @@ -90,8 +57,7 @@ in search-engine = "google"; autofocus = true; } - ++ applicationSites - ++ observabilitySites; + ++ servicesWidgets; }; }; }; diff --git a/modules/nixos/web-services/grafana.nix b/modules/nixos/web-services/grafana.nix index 7f77d36..e3c3909 100644 --- a/modules/nixos/web-services/grafana.nix +++ b/modules/nixos/web-services/grafana.nix @@ -88,7 +88,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = cfg.port; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Grafana"; icon = "sh:grafana"; }; diff --git a/modules/nixos/web-services/it-tools.nix b/modules/nixos/web-services/it-tools.nix index eaf4a56..6ad12a2 100644 --- a/modules/nixos/web-services/it-tools.nix +++ b/modules/nixos/web-services/it-tools.nix @@ -20,7 +20,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.files = "${pkgs.it-tools}/lib"; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "IT-Tools"; icon = "sh:it-tools"; }; diff --git a/modules/nixos/web-services/karakeep.nix b/modules/nixos/web-services/karakeep.nix index 645a309..a796faf 100644 --- a/modules/nixos/web-services/karakeep.nix +++ b/modules/nixos/web-services/karakeep.nix @@ -58,7 +58,7 @@ in "/var/lib/meilisearch" ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Karakeep"; icon = "sh:karakeep"; }; diff --git a/modules/nixos/web-services/networking-toolbox.nix b/modules/nixos/web-services/networking-toolbox.nix index 571d4fe..fee4ba3 100644 --- a/modules/nixos/web-services/networking-toolbox.nix +++ b/modules/nixos/web-services/networking-toolbox.nix @@ -25,7 +25,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = cfg.port; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Networking Toolbox"; icon = "sh:networking-toolbox"; }; diff --git a/modules/nixos/web-services/ntfy.nix b/modules/nixos/web-services/ntfy.nix index 9020244..5067d4f 100644 --- a/modules/nixos/web-services/ntfy.nix +++ b/modules/nixos/web-services/ntfy.nix @@ -29,7 +29,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = cfg.port; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "ntfy"; icon = "sh:ntfy"; }; diff --git a/modules/nixos/web-services/outline.nix b/modules/nixos/web-services/outline.nix index b87f5a3..767c0e5 100644 --- a/modules/nixos/web-services/outline.nix +++ b/modules/nixos/web-services/outline.nix @@ -86,7 +86,7 @@ in config.services.postgresql.dataDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Outline"; icon = "sh:outline"; }; diff --git a/modules/nixos/web-services/personal-blog.nix b/modules/nixos/web-services/personal-blog.nix index aa6ad14..18e37b8 100644 --- a/modules/nixos/web-services/personal-blog.nix +++ b/modules/nixos/web-services/personal-blog.nix @@ -30,7 +30,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.files = dataDir; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Blog"; icon = "sh:hugo"; }; diff --git a/modules/nixos/web-services/privatebin.nix b/modules/nixos/web-services/privatebin.nix index bac9069..a708bb6 100644 --- a/modules/nixos/web-services/privatebin.nix +++ b/modules/nixos/web-services/privatebin.nix @@ -40,7 +40,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = cfg.port; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "PrivateBin"; icon = "sh:privatebin"; }; diff --git a/modules/nixos/web-services/radicale.nix b/modules/nixos/web-services/radicale.nix index 5b7af72..ab87975 100644 --- a/modules/nixos/web-services/radicale.nix +++ b/modules/nixos/web-services/radicale.nix @@ -110,7 +110,7 @@ in persistence.directories = [ dataDir ]; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Radicale"; icon = "sh:radicale"; }; diff --git a/modules/nixos/web-services/screego.nix b/modules/nixos/web-services/screego.nix index 3f38bb6..1f8d820 100644 --- a/modules/nixos/web-services/screego.nix +++ b/modules/nixos/web-services/screego.nix @@ -29,7 +29,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = cfg.port; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Screego"; icon = "mdi:projector-screen-outline"; }; diff --git a/modules/nixos/web-services/stirling-pdf.nix b/modules/nixos/web-services/stirling-pdf.nix index 269e6e1..97382e4 100644 --- a/modules/nixos/web-services/stirling-pdf.nix +++ b/modules/nixos/web-services/stirling-pdf.nix @@ -43,7 +43,7 @@ in custom = { services.caddy.virtualHosts.${cfg.domain}.port = cfg.port; - meta.sites.${cfg.domain} = { + meta.services.${cfg.domain} = { title = "Stirling PDF"; icon = "sh:stirling-pdf"; };