{ pkgs, lib, ... }: let pillar = import ./salt-support/salt-pillar.nix { inherit pkgs; }; 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 ( [ (builtins.mapAttrs (_: switch: { inherit (switch) model location password; role = "switch"; }) pillar.switches) (builtins.mapAttrs (_: ap: { inherit (ap) model location password; role = "ap"; }) pillar.cpe) ] ++ (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)) ); }