{ config, lib, pkgs, ... }: with lib; { config = let local-host = config.instance.hostname; local-domain = config.fudo.hosts.${local-host}.domain; local-site = config.fudo.hosts.${local-host}.site; local-zone = config.fudo.domains.${local-domain}.zone; host = config.fudo.hosts.${local-host}; host-user-list = host.local-users; domain-user-list = config.fudo.domains."${local-domain}".local-users; site-user-list = config.fudo.sites."${local-site}".local-users; all-users = getAttrs (host-user-list ++ domain-user-list ++ site-user-list) config.fudo.users; host-admin-list = host.local-admins; domain-admin-list = config.fudo.domains."${local-domain}".local-admins; site-admin-list = config.fudo.sites."${local-site}".local-admins; local-admins = host-admin-list ++ domain-admin-list ++ site-admin-list; host-group-list = host.local-groups; domain-group-list = config.fudo.domains."${local-domain}".local-groups; site-group-list = config.fudo.sites."${local-site}".local-groups; local-groups = getAttrs (host-group-list ++ domain-group-list ++ site-group-list) config.fudo.groups; local-hosts = filterAttrs (host: hostOpts: hostOpts.site == local-site) config.fudo.hosts; local-networks = host.local-networks ++ config.fudo.domains.${local-domain}.local-networks ++ config.fudo.sites.${local-site}.local-networks; local-profile = host.profile; host-fqdn = "${config.instance.hostname}.${local-domain}"; local-users = if (host.hardened) then getAttrs local-admins all-users else all-users; in { instance = { inherit host-fqdn local-domain local-site local-users local-admins local-groups local-hosts local-profile local-networks local-zone; }; }; }