Compare commits

..

No commits in common. "fdf14765fd8bf4efd3031d7e17fd6e272ab33d1a" and "53bce23a05b974de409f31ab033de1117f89ed44" have entirely different histories.

3 changed files with 19 additions and 33 deletions

View file

@ -87,15 +87,6 @@
flatpak = { flatpak = {
enable = true; enable = true;
packages = [ packages = [
### Office & Productivity ###
rec {
appId = "com.collabora.Office";
sha256 = "1im6s8p6wvj2hblr4mhn1g2rry77giccsi6mk76nk8d6bjp1fwa4";
bundle = "${pkgs.fetchurl {
url = "https://cdn.collaboraoffice.com/collaboraoffice-v25.04.7.2_final.flatpak";
inherit sha256;
}}";
}
### Graphics & Design ### ### Graphics & Design ###
"com.boxy_svg.BoxySVG" "com.boxy_svg.BoxySVG"
rec { rec {

View file

@ -1,43 +1,48 @@
# Shared service definitions for cross-host configuration # 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 = [ services = [
{ {
name = "kanidm"; name = "kanidm";
domain = "auth.baduhai.dev"; domain = "auth.baduhai.dev";
host = "alexandria"; host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 8443;
} }
{ {
name = "vaultwarden"; name = "vaultwarden";
domain = "pass.baduhai.dev"; domain = "pass.baduhai.dev";
host = "alexandria"; host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 8222;
} }
{ {
name = "forgejo"; name = "forgejo";
domain = "git.baduhai.dev"; domain = "git.baduhai.dev";
host = "trantor"; host = "trantor";
public = true; public = true;
tailscaleIP = "100.108.5.90";
port = 3000;
} }
{ {
name = "nextcloud"; name = "nextcloud";
domain = "cloud.baduhai.dev"; domain = "cloud.baduhai.dev";
host = "alexandria"; host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 443;
} }
{ {
name = "jellyfin"; name = "jellyfin";
domain = "jellyfin.baduhai.dev"; domain = "jellyfin.baduhai.dev";
host = "alexandria"; host = "alexandria";
lanIP = "192.168.15.142";
tailscaleIP = "100.76.19.50";
port = 8096;
} }
]; ];
} }

View file

@ -11,21 +11,11 @@ let
# Import shared service definitions # Import shared service definitions
sharedServices = import ./shared/services.nix; 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 in
{ {
# Re-export enriched services and hosts for use in host configs # Re-export shared services for use in host configs
services = enrichedServices; inherit (sharedServices) services;
inherit (sharedServices) hosts;
# Tag-based host configuration system # Tag-based host configuration system
mkHost = mkHost =
{ {