cleaner shared services file

This commit is contained in:
William 2025-11-30 09:46:47 -03:00
parent b80fe6604e
commit fdf14765fd
2 changed files with 24 additions and 19 deletions

View file

@ -1,48 +1,43 @@
# Shared service definitions for cross-host configuration
# Used by:
# - alexandria: DNS server (LAN) + service hosting (vaultwarden, nextcloud, jellyfin, kanidm)
# - trantor: DNS server (Tailnet) + service hosting (forgejo)
{
# Host IP definitions
hosts = {
alexandria = {
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
};
trantor = {
tailscaleIP = "100.108.5.90";
};
};
# Service definitions - IPs are inherited from host
services = [
{
name = "kanidm";
domain = "auth.baduhai.dev";
host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 8443;
}
{
name = "vaultwarden";
domain = "pass.baduhai.dev";
host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 8222;
}
{
name = "forgejo";
domain = "git.baduhai.dev";
host = "trantor";
public = true;
tailscaleIP = "100.108.5.90";
port = 3000;
}
{
name = "nextcloud";
domain = "cloud.baduhai.dev";
host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 443;
}
{
name = "jellyfin";
domain = "jellyfin.baduhai.dev";
host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 8096;
}
];
}

View file

@ -11,11 +11,21 @@ let
# Import shared service definitions
sharedServices = import ./shared/services.nix;
# Enrich services with host IP information
enrichedServices = builtins.map (svc:
let
hostInfo = sharedServices.hosts.${svc.host} or {};
in
svc // lib.optionalAttrs (hostInfo ? lanIP) { inherit (hostInfo) lanIP; }
// lib.optionalAttrs (hostInfo ? tailscaleIP) { inherit (hostInfo) tailscaleIP; }
) sharedServices.services;
in
{
# Re-export shared services for use in host configs
inherit (sharedServices) services;
# Re-export enriched services and hosts for use in host configs
services = enrichedServices;
inherit (sharedServices) hosts;
# Tag-based host configuration system
mkHost =
{