anchor.diff:            default = null;
             description = lib.mdDoc "APIs to enable over WebSocket";
             example = ["net" "eth"];
  +        };
  +      };
  +
  +      authrpc = {
  +        enable = lib.mkEnableOption "Go Ethereum Auth RPC API";
  +        address = mkOption {
  +          type = types.str;
  +          default = "127.0.0.1";
  +          description = lib.mdDoc "Listen address of Go Ethereum Auth RPC API.";
  +        };
  +
  +        port = mkOption {
  +          type = types.port;
  +          default = 8551;
  +          description = lib.mdDoc "Port number of Go Ethereum Auth RPC API.";
  +        };
  +
  +        vhosts = mkOption {
  +          type = types.nullOr (types.listOf types.str);
  +          default = ["localhost"];
  +          description = lib.mdDoc "List of virtual hostnames from which to accept requests.";
  +          example = ["localhost" "geth.example.org"];
  +        };
  +
  +        jwtsecret = mkOption {
  +          type = types.str;
  +          default = "";
  +          description = lib.mdDoc "Path to a JWT secret for authenticated RPC endpoint.";
  +          example = "/var/run/geth/jwtsecret";
           };
         };
   
  
positive.code:       cfg.package
      ]) eachGeth);
  
      systemd.services = mapAttrs' (gethName: cfg: (
        nameValuePair "geth-${gethName}" (mkIf cfg.enable {
        description = "Go Ethereum node (${gethName})";
        wantedBy = [ "multi-user.target" ];
  
negative.code:           ${if cfg.websocket.enable then ''--ws --ws.addr ${cfg.websocket.address} --ws.port ${toString cfg.websocket.port}'' else ""} \
            ${optionalString (cfg.websocket.apis != null) ''--ws.api ${lib.concatStringsSep "," cfg.websocket.apis}''} \
            ${optionalString cfg.metrics.enable ''--metrics --metrics.addr ${cfg.metrics.address} --metrics.port ${toString cfg.metrics.port}''} \
            --authrpc.addr ${cfg.authrpc.address} --authrpc.port ${toString cfg.authrpc.port} --authrpc.vhosts ${lib.concatStringsSep "," cfg.authrpc.vhosts} \
            ${if (cfg.authrpc.jwtsecret != "") then ''--authrpc.jwtsecret ${cfg.authrpc.jwtsecret}'' else ''--authrpc.jwtsecret ${dataDir}/geth/jwtsecret''} \
            ${lib.escapeShellArgs cfg.extraArgs} \
            --datadir ${dataDir}
        '';
      }))) eachGeth;
  
  