anchor.diff:      (mkWith   false                        "profiler"          null)
       (mkWith   false                        "debug"             null)
       (mkEnable false                        "coverage"          null)
  -    (mkWith   (optFuse != null)            "fuse"              null)
  -    (mkWith   (malloc == optJemalloc)      "jemalloc"          null)
  -    (mkWith   (malloc == optGperftools)    "tcmalloc"          null)
  +    (mkWith   (fuse != null)               "fuse"              null)
  +    (mkWith   (malloc == jemalloc)         "jemalloc"          null)
  +    (mkWith   (malloc == gperftools)       "tcmalloc"          null)
       (mkEnable false                        "pgrefdebugging"    null)
       (mkEnable false                        "cephfs-java"       null)
       (mkEnable hasXio                       "xio"               null)
  -    (mkWith   (optLibatomic_ops != null)   "libatomic-ops"     null)
  +    (mkWith   (libatomic_ops != null)      "libatomic-ops"     null)
       (mkWith   true                         "ocf"               null)
       (mkWith   hasKinetic                   "kinetic"           null)
       (mkWith   hasRocksdb                   "librocksdb"        null)
       (mkWith   false                        "librocksdb-static" null)
  -    (mkWith   (optLibs3 != null)           "system-libs3"      null)
  +    (mkWith   (libs3 != null)              "system-libs3"      null)
       (mkWith   true                         "rest-bench"        null)
     ] ++ optional stdenv.isLinux [
  -    (mkWith   (optLibaio != null)             "libaio"            null)
  -    (mkWith   (optLibxfs != null)             "libxfs"            null)
  -    (mkWith   (optZfs != null)                "libzfs"            null)
  +    (mkWith   (libaio != null)             "libaio"            null)
  +    (mkWith   (libxfs != null)             "libxfs"            null)
  +    (mkWith   (zfs != null)                "libzfs"            null)
     ] ++ optional (versionAtLeast version "10.0.0") [
       (mkWith   true                         "man-pages"         null)
       (mkWith   false                        "tcmalloc-minimal"  null)
  
positive.code: 
    nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which ];
    buildInputs = buildInputs ++ cryptoLibsMap.${cryptoStr} ++ [
      boost python libxml2 optYasm optLibatomic_ops optLibs3 malloc pythonPackages.flask zlib
    ] ++ optional (versionAtLeast version "9.0.0") [
      git                   # Used for the gitversion string
      pythonPackages.sphinx # Used for docs
    ] ++ optional stdenv.isLinux [
      linuxHeaders libuuid udev keyutils optLibaio optLibxfs optZfs
    ] ++ optional hasServer [
      optSnappy optLeveldb
    ] ++ optional hasRadosgw [
      optFcgi optExpat optCurl optFuse optLibedit
    ] ++ optional hasXio [
      optAccelio optLibibverbs optLibrdmacm
    ] ++ optional hasRocksdb [
      optRocksdb
    ] ++ optional hasKinetic [
      optKinetic-cpp-client
    ];
  
    postPatch = ''
  
negative.code: # We must have one crypto library
  assert cryptopp != null || (nss != null && nspr != null);
  
  with stdenv.lib;
  let
    hasServer = snappy != null && leveldb != null;
    hasMon = hasServer;
    hasMds = hasServer;
    hasOsd = hasServer;
    hasRadosgw = fcgi != null && expat != null && curl != null && libedit != null;
  
    hasXio = (stdenv.isLinux || stdenv.isFreeBSD) &&
      versionAtLeast version "0.95" &&
      accelio != null && libibverbs != null && librdmacm != null;
  
    hasRocksdb = versionAtLeast version "0.95" && rocksdb != null;
  
    # TODO: Reenable when kinetic support is fixed
    hasKinetic = versionAtLeast version "0.95" && kinetic-cpp-client != null && false;
  
    # Malloc implementation (can be jemalloc, tcmalloc or null)
    malloc = if jemalloc != null then jemalloc else gperftools;
  
    # We prefer nss over cryptopp
    cryptoStr = if nss != null && nspr != null then "nss" else
      if cryptopp != null then "cryptopp" else "none";
    cryptoLibsMap = {
      nss = [ nss nspr ];
      cryptopp = [ cryptopp ];
      none = [ ];
    };
  
  