with import <stockholm/lib>; { config, ... }: { config = { # Implements environment.etc."zones/<zone-name>" environment.etc = let stripEmptyLines = s: (concatStringsSep "\n" (remove "\n" (remove "" (splitString "\n" s)))) + "\n"; all-zones = foldAttrs (sum: current: sum + "\n" +current ) "" ([config.krebs.zone-head-config] ++ combined-hosts); combined-hosts = mapAttrsToList (name: getAttr "extraZones") config.krebs.hosts; in mapAttrs' (name: value: { name = "zones/${name}"; value.text = stripEmptyLines value; }) all-zones; }; }