anchor.diff:        })
       else "";
   
  +  parseModules = x:
  +    x // { connectTo = mapAttrs (name: value: { inherit (value) password publicKey; }) x.connectTo; };
  +
     # would be nice to  merge 'cfg' with a //,
     # but the json nesting is wacky.
     cjdrouteConf = builtins.toJSON ( {
  
positive.code: 
        ETHInterface = {
          bind = mkOption {
          default = "";
          example = "eth0";
          description = ''
            Bind to this device for native ethernet operation.
          '';
        };
  
          beacon = mkOption {
            type = types.int;
  
negative.code:     };
      authorizedPasswords = map (p: { password = p; }) cfg.authorizedPasswords;
      interfaces = {
        ETHInterface = if (cfg.ETHInterface.bind != "") then [ (parseModules cfg.ETHInterface) ] else [ ];
        UDPInterface = if (cfg.UDPInterface.bind != "") then [ (parseModules cfg.UDPInterface) ] else [ ];
      };
  
      privateKey = "@CJDNS_PRIVATE_KEY@";
  