anchor.diff:          example = "/var/run/redis.sock";
         };
   
  -      unixSocketPerm = mkOption {
  -        default = null;
  -        description = "Permissions for the socket";
  -      };
  -
  -      timeout = mkOption {
  -        default = 0;
  -        description = "Close the connection after a client is idle for N seconds (0 to disable)";
  -        type = with types; int;
  -      };
  -
  -      tcpKeepAlive = mkOption {
  -        default = 0;
  -        description = "If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence of communication.";
  -        example = 60;
  -        type = with types; int;
  -      };
  -
         logLevel = mkOption {
           default = "notice"; # debug, verbose, notice, warning
           example = "debug";
  
positive.code:         process, otherwise the master will refuse the slave request.'';
        };
  
        slaveServeStaleData = mkOption {
          default = true;
          description = "Whether or not to serve data (as a slave) when data is still (not yet in sync)";
          type = with types; bool;
        };
  
        slaveReadOnly = mkOption {
          default = true;
          description = "Configure whether this slave instance should accept writes or not";
          type = with types; bool;
        };
  
        replPingSlavePeriod = mkOption {
          default = 10;
          description = "Slaves send PINGs to server in a predefined interval, configure the number of seconds that this PING should occur.";
          type = with types; int;
        };
  
        replTimeout = mkOption {
          default = 60;
          description = "Sets a timeout for both Bulk transfer I/O timeout and master data or ping response timeout";
          type = with types; int;
        };
  
        replDisableTcpNodelay = mkOption {
          default = false;
          description = "Disable TCP_NODELAY on the slave socket after SYNC";
          type = with types; bool;
        };
  
        slavePriority = mkOption {
          default = 100;
          description = "Priority to be promoted to new master by Redis sentinel";
          type = with types; int;
        };
  
        requirePass = mkOption {
          default = null;
          description = "Password for database";
          example = "letmein!";
        };
  
        renameCommand = mkOption {
          default = {}; # oldname = newname
          description = "Attribute set to rename commands e.g. for security reasons.";
          example = { config = "123haefhahefconfig"; };
        };
  
        maxClients = mkOption {
          default = 10000;
          description = "Maximum number of concurrent clients.";
          type = with types; int;
        };
  
        maxMemory = mkOption {
          default = null; # in bytes
          description = "Maximum number of bytes of memory to use";
        };
  
        maxMemoryPolicy = mkOption {
          default = "volatile-lru";
          description = "Policy to handle running out of memory, options: allkeys-lru, volatile-random, allkeys-random, volatile-ttl, noeviction";
          type = with types; string;
        };
  
        appendOnly = mkOption {
          default = false;
          description = "By default data is only periodically persisted to disk, enable this option to use an append-only file for improved persistence.";
  
negative.code:         default = 128;
          description = "Maximum number of items to keep in slow log";
          type = with types; int;
        };
  
        extraConfig = mkOption {
          default = "";
          description = "Extra configuration options for redis.conf";
          type = with types; string;
        };
      };
  
  