{ config, pkgs, lib, self, ... }: let mainServer = "server1"; pillar = self.lib.saltPillarFor mainServer; in { options.salt-pillar = lib.mkOption {}; config.salt-pillar = pillar; config.site.net = lib.mkMerge ([ (builtins.mapAttrs (_: vlan: { vlan = vlan; }) pillar.vlans) (builtins.mapAttrs (_: subnet: { subnet4 = subnet; }) pillar.subnets-inet) ] ++ ( map (ctx: builtins.mapAttrs (_: subnet: { subnets6.${ctx} = subnet; }) pillar.subnets-inet6.${ctx} ) (builtins.attrNames pillar.subnets-inet6) )); config.site.hosts = lib.mkMerge ( [ { "${mainServer}".role = "server"; } (builtins.mapAttrs (_: switch: { inherit (switch) model location password; role = "switch"; }) pillar.switches) (builtins.mapAttrs (_: ap: { inherit (ap) model location password; role = "ap"; }) pillar.cpe) (builtins.mapAttrs (_: container: { role = "container"; location = mainServer; }) pillar.containers) ] ++ (map (net: builtins.mapAttrs (_: addr4: { }) pillar.hosts-inet.${net} ) (builtins.attrNames pillar.hosts-inet)) ++ (builtins.concatMap (ctx: map (net: builtins.mapAttrs (_: addr6: { }) pillar.hosts-inet6.${ctx}.${net} ) (builtins.attrNames pillar.hosts-inet6.${ctx}) ) (builtins.attrNames pillar.hosts-inet6)) ); }