{ config, lib, ... }: { options.tv.iana.services = lib.mkOption { default = let inherit (config.krebs.iana-etc) services; in builtins.foldl' (result: port: lib.recursiveUpdate result { ${services.${port}.tcp.name or null}.tcp.port = lib.toInt port; ${services.${port}.udp.name or null}.udp.port = lib.toInt port; }) {} (builtins.attrNames services); readOnly = true; type = lib.types.attrsOf (lib.types.submodule { options.tcp.port = lib.mkOption { type = lib.types.port; }; options.udp.port = lib.mkOption { type = lib.types.port; }; }); }; }