51 lines
1.8 KiB
Nix
51 lines
1.8 KiB
Nix
{ 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;
|
|
};
|
|
};
|
|
}
|