anchor.diff:          type = with types; nullOr int;
           default = null;
           description = ''
  -	        I2P listen port. If no one is given the router will pick between 9111 and 30777.
  +          I2P listen port. If no one is given the router will pick between 9111 and 30777.
           '';
         };
   
  
positive.code:         '';
        };
  
        unreachable = mkOption {
          type = types.bool;
          default = false;
          description = ''
            If the router is declared to be unreachable and needs introduction nodes.
          '';
        };
  
  
negative.code:         '';
        };
  
        proto.http = mkEndpointOpt "http" "127.0.0.1" 7070;
        proto.sam = mkEndpointOpt "sam" "127.0.0.1" 7656;
        proto.bob = mkEndpointOpt "bob" "127.0.0.1" 2827;
        proto.i2pControl = mkEndpointOpt "i2pcontrol" "127.0.0.1" 7650;
        proto.httpProxy = mkEndpointOpt "httpproxy" "127.0.0.1" 4446;
        proto.socksProxy = mkEndpointOpt "socksproxy" "127.0.0.1" 4447;
  
        outTunnels = mkOption {
          default = {};
          type = with types; loaOf optionSet;
          description = ''
            Connect to someone as a client and establish a local accept endpoint
          '';
          options = [ ({ name, config, ... }: {
            options = commonTunOpts name;
            config = {
              name = mkDefault name;
            };
          }) ];
        };
  
        inTunnels = mkOption {
          default = {};
          type = with types; loaOf optionSet;
          description = ''
            Serve something on I2P network at port and delegate requests to address inPort.
          '';
          options = [ ({ name, config, ... }: {
  
            options = {
              inPort = mkOption {
                type = types.int;
                default = 0;
                description = "Service port. Default to the tunnel's listen port.";
              };
              accessList = mkOption {
                type = with types; listOf str;
                default = [];
                description = "I2P nodes that are allowed to connect to this service.";
              };
            } // commonTunOpts name;
  
            config = {
              name = mkDefault name;
            };
  
          }) ];
        };
      };
    };
  