{ lib, stdenv, fetchFromGitHub, automake, autoconf, libtool # Optional Dependencies , lz4 ? null, snappy ? null, zlib ? null, bzip2 ? null, db ? null , gperftools ? null, leveldb ? null }: let shouldUsePkg = pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; optLz4 = shouldUsePkg lz4; optSnappy = shouldUsePkg snappy; optZlib = shouldUsePkg zlib; optBzip2 = shouldUsePkg bzip2; optDb = shouldUsePkg db; optGperftools = shouldUsePkg gperftools; optLeveldb = shouldUsePkg leveldb; in stdenv.mkDerivation rec { pname = "wiredtiger"; version = "3.2.1"; src = fetchFromGitHub { repo = "wiredtiger"; owner = "wiredtiger"; rev = version; sha256 = "04j2zw8b9jym43r682rh4kpdippxx7iw3ry16nxlbybzar9kgk83"; }; nativeBuildInputs = [ automake autoconf libtool ]; buildInputs = [ optLz4 optSnappy optZlib optBzip2 optDb optGperftools optLeveldb ]; configureFlags = [ (lib.withFeature false "attach") (lib.withFeatureAs true "builtins" "") (lib.enableFeature (optBzip2 != null) "bzip2") (lib.enableFeature false "diagnostic") (lib.enableFeature false "java") (lib.enableFeature (optLeveldb != null) "leveldb") (lib.enableFeature false "python") (lib.enableFeature (optSnappy != null) "snappy") (lib.enableFeature (optLz4 != null) "lz4") (lib.enableFeature (optGperftools != null) "tcmalloc") (lib.enableFeature (optZlib != null) "zlib") (lib.withFeatureAs (optDb != null) "berkeleydb" optDb) (lib.withFeature false "helium") ]; preConfigure = '' ./autogen.sh ''; meta = with lib; { homepage = "http://wiredtiger.com/"; description = ""; mainProgram = "wt"; license = licenses.gpl2; platforms = intersectLists platforms.unix platforms.x86_64; }; }