about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/package-management
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/package-management')
-rw-r--r--nixpkgs/pkgs/tools/package-management/appimage-run/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/package-management/appimagekit/default.nix123
-rw-r--r--nixpkgs/pkgs/tools/package-management/appimagekit/nix.patch174
-rw-r--r--nixpkgs/pkgs/tools/package-management/apt-dater/default.nix50
-rw-r--r--nixpkgs/pkgs/tools/package-management/apt/default.nix54
-rw-r--r--nixpkgs/pkgs/tools/package-management/bunny/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-about/default.nix22
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-audit/default.nix28
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-deb/default.nix38
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-deps/default.nix23
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-download/Cargo.nix675
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-download/crates-io.nix5289
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-download/default.nix14
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-edit/default.nix30
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-graph/default.nix23
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-license/add-Cargo.lock.patch435
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-license/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-outdated/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-release/default.nix26
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-tree/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-update/0001-Generate-lockfile-for-cargo-update-v3.0.0.patch651
-rw-r--r--nixpkgs/pkgs/tools/package-management/cargo-update/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/package-management/cde/default.nix39
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/default.nix74
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/empty-dirs.patch49
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/etc-dirs.patch25
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/glibc-check.patch71
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/missing-functions.patch162
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/readlink-types.patch19
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/scandir.patch75
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/set-buildroot.patch15
-rw-r--r--nixpkgs/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch12
-rw-r--r--nixpkgs/pkgs/tools/package-management/clib/default.nix27
-rw-r--r--nixpkgs/pkgs/tools/package-management/conda/default.nix74
-rw-r--r--nixpkgs/pkgs/tools/package-management/createrepo_c/default.nix38
-rw-r--r--nixpkgs/pkgs/tools/package-management/createrepo_c/fix-bash-completion-path.patch11
-rw-r--r--nixpkgs/pkgs/tools/package-management/createrepo_c/fix-python-install-path.patch11
-rw-r--r--nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix28
-rw-r--r--nixpkgs/pkgs/tools/package-management/disnix/default.nix24
-rw-r--r--nixpkgs/pkgs/tools/package-management/disnix/disnixos/default.nix20
-rw-r--r--nixpkgs/pkgs/tools/package-management/disnix/dysnomia/default.nix61
-rw-r--r--nixpkgs/pkgs/tools/package-management/dpkg/default.nix74
-rw-r--r--nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile2
-rw-r--r--nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile.lock39
-rw-r--r--nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix21
-rw-r--r--nixpkgs/pkgs/tools/package-management/elm-github-install/gemset.nix114
-rw-r--r--nixpkgs/pkgs/tools/package-management/emplace/default.nix22
-rw-r--r--nixpkgs/pkgs/tools/package-management/fpm/Gemfile3
-rw-r--r--nixpkgs/pkgs/tools/package-management/fpm/Gemfile.lock47
-rw-r--r--nixpkgs/pkgs/tools/package-management/fpm/default.nix17
-rw-r--r--nixpkgs/pkgs/tools/package-management/fpm/gemset.nix157
-rw-r--r--nixpkgs/pkgs/tools/package-management/gx/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/package-management/gx/deps.nix246
-rw-r--r--nixpkgs/pkgs/tools/package-management/gx/go/default.nix34
-rw-r--r--nixpkgs/pkgs/tools/package-management/gx/go/deps.nix246
-rw-r--r--nixpkgs/pkgs/tools/package-management/home-manager/default.nix43
-rw-r--r--nixpkgs/pkgs/tools/package-management/librepo/default.nix66
-rw-r--r--nixpkgs/pkgs/tools/package-management/morph/default.nix44
-rw-r--r--nixpkgs/pkgs/tools/package-management/morph/deps.nix66
-rw-r--r--nixpkgs/pkgs/tools/package-management/mynewt-newt/default.nix39
-rw-r--r--nixpkgs/pkgs/tools/package-management/nfpm/default.nix24
-rw-r--r--nixpkgs/pkgs/tools/package-management/niff/default.nix34
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-bundle/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-du/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-index/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-pin/default.nix52
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-prefetch-scripts/default.nix46
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix74
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-serve/default.nix45
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix23
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-top/default.nix53
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix51
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-update/default.nix34
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix/default.nix239
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-compute/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-network/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-nspkg/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-resource/default.nix38
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-storage/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/azure-storage/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/deps.nix20
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/generic.nix55
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/nixops-dns.nix25
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/nixops-v1_6_1.nix32
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixops/unstable.nix13
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixpkgs-review/default.nix30
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixui/default.nix44
-rwxr-xr-xnixpkgs/pkgs/tools/package-management/nixui/generate.sh4
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixui/nixui.nix17
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixui/node-packages.nix108
-rw-r--r--nixpkgs/pkgs/tools/package-management/nixui/pkg.json3
-rw-r--r--nixpkgs/pkgs/tools/package-management/nox/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/package-management/nox/nox-review-wip.patch11
-rw-r--r--nixpkgs/pkgs/tools/package-management/opkg-utils/default.nix24
-rw-r--r--nixpkgs/pkgs/tools/package-management/opkg/default.nix22
-rw-r--r--nixpkgs/pkgs/tools/package-management/packagekit/default.nix75
-rw-r--r--nixpkgs/pkgs/tools/package-management/packagekit/qt.nix24
-rw-r--r--nixpkgs/pkgs/tools/package-management/pacman/default.nix41
-rw-r--r--nixpkgs/pkgs/tools/package-management/protontricks/default.nix53
-rw-r--r--nixpkgs/pkgs/tools/package-management/python2nix/default.nix19
-rw-r--r--nixpkgs/pkgs/tools/package-management/reuse/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/package-management/rpm/default.nix70
-rw-r--r--nixpkgs/pkgs/tools/package-management/xbps/cert-paths.patch25
-rw-r--r--nixpkgs/pkgs/tools/package-management/xbps/default.nix41
106 files changed, 11803 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/package-management/appimage-run/default.nix b/nixpkgs/pkgs/tools/package-management/appimage-run/default.nix
new file mode 100644
index 000000000000..3bc59f2ad148
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/appimage-run/default.nix
@@ -0,0 +1,11 @@
+{ appimageTools, buildFHSUserEnv, extraPkgs ? pkgs: [] }:
+
+let
+  fhsArgs = appimageTools.defaultFhsEnvArgs;
+in buildFHSUserEnv (fhsArgs // {
+  name = "appimage-run";
+
+  targetPkgs = pkgs: [ appimageTools.appimage-exec ]
+    ++ fhsArgs.targetPkgs pkgs ++ extraPkgs pkgs;
+  runScript = "appimage-exec.sh";
+})
diff --git a/nixpkgs/pkgs/tools/package-management/appimagekit/default.nix b/nixpkgs/pkgs/tools/package-management/appimagekit/default.nix
new file mode 100644
index 000000000000..21e869b7b01e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/appimagekit/default.nix
@@ -0,0 +1,123 @@
+{ stdenv, fetchFromGitHub
+, pkgconfig, cmake, autoconf, automake, libtool, makeWrapper
+, wget, xxd, desktop-file-utils, file
+, gnupg, glib, zlib, cairo, openssl, fuse, xz, squashfuse, inotify-tools, libarchive
+, squashfsTools
+, gtest
+}:
+
+let
+
+  appimagekit_src = fetchFromGitHub {
+    owner = "AppImage";
+    repo = "AppImageKit";
+    rev = "b0859501df61cde198b54a317c03b41dbafc98b1";
+    sha256 = "0qqg79jw9w9rs8c2w3lla4kz62ihafrf7jm370pp1dl8y2i81jzg";
+  };
+
+  # squashfuse adapted to nix from cmake experession in "${appimagekit_src}/cmake/dependencies.cmake"
+  appimagekit_squashfuse = squashfuse.overrideAttrs (attrs: rec {
+    name = "squashfuse-${version}";
+    version = "20161009";
+
+    src = fetchFromGitHub {
+      owner = "vasi";
+      repo  = "squashfuse";
+      rev   = "1f980303b89c779eabfd0a0fdd36d6a7a311bf92";
+      sha256 = "0lrw9ff8k15l34wjwyllw3i35hl0cms97jj2hpnr2q8ipgxpb5q5";
+    };
+
+    patches = [
+      "${appimagekit_src}/squashfuse.patch"
+      "${appimagekit_src}/squashfuse_dlopen.patch"
+    ];
+
+    postPatch = ''
+      cp -v ${appimagekit_src}/squashfuse_dlopen.[hc] .
+    '';
+
+    preConfigure = ''
+      sed -i "/PKG_CHECK_MODULES.*/,/,:./d" configure
+      sed -i "s/typedef off_t sqfs_off_t/typedef int64_t sqfs_off_t/g" common.h
+    '';
+
+    configureFlags = [
+      "--disable-demo" "--disable-high-level" "--without-lzo" "--without-lz4"
+    ];
+
+    postConfigure = ''
+      sed -i "s|XZ_LIBS = -llzma |XZ_LIBS = -Bstatic -llzma/|g" Makefile
+    '';
+
+    # only static libs and header files
+    installPhase = ''
+      mkdir -p $out/lib $out/include
+      cp -v ./.libs/*.a $out/lib
+      cp -v ./*.h $out/include
+    '';
+  });
+
+in stdenv.mkDerivation rec {
+  name = "appimagekit-20180727";
+
+  src = appimagekit_src;
+
+  patches = [ ./nix.patch ];
+
+  nativeBuildInputs = [
+    pkgconfig cmake autoconf automake libtool wget xxd
+    desktop-file-utils
+  ];
+
+  buildInputs = [
+    glib zlib cairo openssl fuse
+    xz inotify-tools libarchive
+    squashfsTools makeWrapper
+  ];
+
+  postPatch = ''
+    substituteInPlace src/appimagetool.c --replace "/usr/bin/file" "${file}/bin/file"
+  '';
+
+  preConfigure = ''
+    export HOME=$(pwd)
+  '';
+
+  cmakeFlags = [
+    "-DUSE_SYSTEM_XZ=ON"
+    "-DUSE_SYSTEM_SQUASHFUSE=ON"
+    "-DSQUASHFUSE=${appimagekit_squashfuse}"
+    "-DUSE_SYSTEM_INOTIFY_TOOLS=ON"
+    "-DUSE_SYSTEM_LIBARCHIVE=ON"
+    "-DUSE_SYSTEM_GTEST=ON"
+    "-DUSE_SYSTEM_MKSQUASHFS=ON"
+  ];
+
+  postInstall = ''
+    cp "${squashfsTools}/bin/mksquashfs" "$out/lib/appimagekit/"
+    cp "${desktop-file-utils}/bin/desktop-file-validate" "$out/bin"
+
+    wrapProgram "$out/bin/appimagetool" \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ file gnupg ]}"
+  '';
+
+  checkInputs = [ gtest ];
+  doCheck = false; # fails 1 out of 4 tests, I'm too lazy to debug why
+
+  # for debugging
+  passthru = {
+    squashfuse = appimagekit_squashfuse;
+  };
+
+  meta = with stdenv.lib; {
+    description = "A tool to package desktop applications as AppImages";
+    longDescription = ''
+      AppImageKit is an implementation of the AppImage format that
+      provides tools such as appimagetool and appimaged for handling
+      AppImages.
+    '';
+    license = licenses.mit;
+    homepage = src.meta.homepage;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/appimagekit/nix.patch b/nixpkgs/pkgs/tools/package-management/appimagekit/nix.patch
new file mode 100644
index 000000000000..9725cef5ba7d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/appimagekit/nix.patch
@@ -0,0 +1,174 @@
+diff --git a/cmake/dependencies.cmake b/cmake/dependencies.cmake
+index ea133a3..916606c 100644
+--- a/cmake/dependencies.cmake
++++ b/cmake/dependencies.cmake
+@@ -224,21 +224,23 @@ if(NOT USE_SYSTEM_XZ)
+         LIBRARY_DIRS <INSTALL_DIR>/lib/
+         LIBRARIES "<INSTALL_DIR>/lib/liblzma.a"
+         INCLUDE_DIRS "<SOURCE_DIR>/src/liblzma/api/"
+     )
+ else()
+     message(STATUS "Using system xz")
+ 
+     import_pkgconfig_target(TARGET_NAME xz PKGCONFIG_TARGET liblzma STATIC)
+ endif()
+ 
++set(USE_SYSTEM_SQUASHFUSE OFF CACHE BOOL "Use system squashfuse instead of building our own")
+ 
++if(NOT USE_SYSTEM_SQUASHFUSE)
+ # as distros don't provide suitable squashfuse and squashfs-tools, those dependencies are bundled in, can, and should
+ # be used from this repository
+ # TODO: implement out-of-source builds for squashfuse, as for the other dependencies
+ configure_file(
+     ${CMAKE_CURRENT_SOURCE_DIR}/src/patch-squashfuse.sh.in
+     ${CMAKE_CURRENT_BINARY_DIR}/patch-squashfuse.sh
+     @ONLY
+ )
+ 
+ ExternalProject_Add(squashfuse-EXTERNAL
+@@ -259,20 +261,34 @@ ExternalProject_Add(squashfuse-EXTERNAL
+     BUILD_IN_SOURCE ON
+     INSTALL_COMMAND ${MAKE} install
+ )
+ 
+ import_external_project(
+     TARGET_NAME squashfuse
+     EXT_PROJECT_NAME squashfuse-EXTERNAL
+     LIBRARIES "<SOURCE_DIR>/.libs/libsquashfuse.a;<SOURCE_DIR>/.libs/libsquashfuse_ll.a;<SOURCE_DIR>/.libs/libfuseprivate.a"
+     INCLUDE_DIRS "<SOURCE_DIR>"
+ )
++else()
++    message(STATUS "Using system squashfsfuse from ${SQUASHFUSE}")
++
++    add_library(squashfuse INTERFACE IMPORTED GLOBAL)
++
++    set(squashfuse_INCLUDE_DIRS "${SQUASHFUSE}/include")
++    set(squashfuse_LIBRARIES "${SQUASHFUSE}/lib/libsquashfuse.a;${SQUASHFUSE}/lib/libsquashfuse_ll.a;${SQUASHFUSE}/lib/libfuseprivate.a")
++
++    set_property(
++      TARGET squashfuse
++      PROPERTY INTERFACE_LINK_LIBRARIES ${squashfuse_LIBRARIES}
++    )
++    include_directories(${squashfuse_INCLUDE_DIRS})
++endif()
+ 
+ 
+ set(USE_SYSTEM_INOTIFY_TOOLS OFF CACHE BOOL "Use system libinotifytools instead of building our own")
+ 
+ if(NOT USE_SYSTEM_INOTIFY_TOOLS)
+     message(STATUS "Downloading and building inotify-tools")
+ 
+     # TODO: build out of source
+     ExternalProject_Add(inotify-tools-EXTERNAL
+         URL https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
+@@ -345,20 +361,23 @@ if(NOT USE_SYSTEM_GTEST)
+             INCLUDE_DIRS "<INSTALL_DIR>/include/"
+         )
+     else()
+         message(STATUS "Using system GTest")
+ 
+         import_find_pkg_target(gtest GTest GTEST)
+     endif()
+ endif()
+ 
+ 
++set(USE_SYSTEM_MKSQUASHFS OFF CACHE BOOL "Use system mksquashfs instead of downloading and building our own")
++
++if(NOT USE_SYSTEM_MKSQUASHFS)
+ # TODO: allow using system wide mksquashfs
+ set(mksquashfs_cflags "-DXZ_SUPPORT ${CFLAGS}")
+ 
+ if(xz_LIBRARIES MATCHES "\\.a$")
+     set(mksquashfs_ldflags "${xz_LIBRARIES}")
+ else()
+     set(mksquashfs_ldflags "-l${xz_LIBRARIES}")
+ endif()
+ 
+ if(xz_INCLUDE_DIRS)
+@@ -385,20 +404,25 @@ ExternalProject_Add(mksquashfs
+     INSTALL_COMMAND ${MAKE} -C squashfs-tools/ install INSTALL_DIR=<INSTALL_DIR>
+ )
+ 
+ ExternalProject_Get_Property(mksquashfs INSTALL_DIR)
+ set(mksquashfs_INSTALL_DIR "${INSTALL_DIR}")
+ mark_as_advanced(mksquashfs_INSTALL_DIR)
+ 
+ # for later use when packaging as an AppImage
+ set(mksquashfs_BINARY "${mksquashfs_INSTALL_DIR}/mksquashfs")
+ mark_as_advanced(mksquashfs_BINARY)
++else()
++    message(STATUS "Using system mksquashfs")
++
++    set(mksquashfs_BINARY "mksquashfs")
++endif()
+ 
+ 
+ #### build dependency configuration ####
+ 
+ # only have to build custom xz when not using system libxz
+ if(TARGET xz-EXTERNAL)
+     if(TARGET squashfuse-EXTERNAL)
+         ExternalProject_Add_StepDependencies(squashfuse-EXTERNAL configure xz-EXTERNAL)
+     endif()
+     if(TARGET mksquashfs)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 3f25442..974ed0e 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -197,27 +197,27 @@ target_include_directories(digest_md5
+ 
+ target_link_libraries(digest_md5
+     PRIVATE
+     libglib
+ )
+ 
+ 
+ # install binaries
+ if(AUXILIARY_FILES_DESTINATION)
+     install(
+-        PROGRAMS ${mksquashfs_INSTALL_DIR}/mksquashfs ${CMAKE_CURRENT_BINARY_DIR}/runtime
++        PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/runtime
+         DESTINATION ${AUXILIARY_FILES_DESTINATION}
+         COMPONENT applications
+     )
+ else()
+     install(
+-        PROGRAMS ${mksquashfs_INSTALL_DIR}/mksquashfs ${CMAKE_CURRENT_BINARY_DIR}/runtime
++        PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/runtime
+         DESTINATION bin
+         COMPONENT applications
+     )
+ endif()
+ 
+ install(
+     TARGETS AppRun appimagetool digest validate
+     RUNTIME DESTINATION bin COMPONENT applications
+     LIBRARY DESTINATION lib COMPONENT applications
+     ARCHIVE DESTINATION lib/static COMPONENT applications
+diff --git a/src/shared.c b/src/shared.c
+index cf5fd5c..4f48dbc 100644
+--- a/src/shared.c
++++ b/src/shared.c
+@@ -34,21 +34,21 @@
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <dirent.h>
+ #include <errno.h>
+ 
+ #include <glib.h>
+ #include <glib/gprintf.h>
+ #include <glib/gstdio.h>
+ #include <gio/gio.h>
+ 
+-#include "squashfuse.h"
++#include <squashfuse.h>
+ #include <squashfs_fs.h>
+ #include "getsection.h"
+ #include "elf.h"
+ 
+ #include "xdg-basedir.h"
+ 
+ // own header
+ #include "shared.h"
+ 
+ #if HAVE_LIBARCHIVE3 == 1 // CentOS
diff --git a/nixpkgs/pkgs/tools/package-management/apt-dater/default.nix b/nixpkgs/pkgs/tools/package-management/apt-dater/default.nix
new file mode 100644
index 000000000000..49669cba40a9
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/apt-dater/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub
+, autoreconfHook, pkgconfig, gettext
+, vim, glib, libxml2, ncurses, popt, screen
+}:
+
+stdenv.mkDerivation rec {
+  pname = "apt-dater";
+  version = "1.0.4";
+
+  src = fetchFromGitHub {
+    owner = "DE-IBH";
+    repo = "apt-dater";
+    rev = "v${version}";
+    sha256 = "1r6gz9jkh1wxi11mcq5p9mqg0szclsaq8ic79vnfnbjdrmmdfi4y";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig autoreconfHook gettext
+  ];
+
+  buildInputs = [
+    libxml2 ncurses vim glib popt screen
+  ];
+
+  configureFlags = [ "--disable-history" ];
+
+  prePatch = ''
+    substituteInPlace etc/Makefile.am \
+      --replace 02770 0770
+  '';
+
+  postPatch = ''
+    substituteInPlace configure.ac \
+      --replace "/usr/bin/screen" "${screen}/bin/screen"
+  '';
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/DE-IBH/apt-dater";
+    description = "Terminal-based remote package update manager";
+    longDescription = ''
+      Provides an ncurses frontend for managing package updates on a large
+      number of remote hosts using SSH. It supports Debian-based managed hosts
+      as well as rug (e.g. openSUSE) and yum (e.g. CentOS) based systems.
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ c0bw3b ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/apt/default.nix b/nixpkgs/pkgs/tools/package-management/apt/default.nix
new file mode 100644
index 000000000000..b83c49029b38
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/apt/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, lib, fetchurl, pkgconfig, cmake, perlPackages, curl, gtest
+, gnutls, libtasn1, lzma, bzip2, lz4, zstd, libseccomp, udev
+, db, dpkg, libxslt, docbook_xsl, docbook_xml_dtd_45
+
+# used when WITH_DOC=ON
+, w3m
+, doxygen
+
+# used when WITH_NLS=ON
+, gettext
+
+# opts
+, withDocs ? true
+, withNLS ? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "apt";
+  version = "1.8.4";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/a/apt/apt_${version}.tar.xz";
+    sha256 = "0gn4srqaaym85gc8nldqkv01477kdwr136an2nlpbdrsbx3y83zl";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake gtest libxslt.bin ];
+
+  buildInputs = [
+    perlPackages.perl curl gnutls libtasn1 lzma bzip2 lz4 zstd libseccomp udev db dpkg
+  ] ++ lib.optionals withDocs [
+    doxygen perlPackages.Po4a w3m docbook_xml_dtd_45
+  ] ++ lib.optionals withNLS [
+    gettext
+  ];
+
+  cmakeFlags = [
+    "-DBERKELEY_DB_INCLUDE_DIRS=${db.dev}/include"
+    "-DGNUTLS_INCLUDE_DIR=${gnutls.dev}/include"
+    "-DDOCBOOK_XSL=${docbook_xsl}/share/xml/docbook-xsl"
+    "-DROOT_GROUP=root"
+    "-DWITH_DOC=${if withDocs then "ON" else "OFF"}"
+    "-DUSE_NLS=${if withNLS then "ON" else "OFF"}"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "Command-line package management tools used on Debian-based systems";
+    homepage = "https://salsa.debian.org/apt-team/apt";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/bunny/default.nix b/nixpkgs/pkgs/tools/package-management/bunny/default.nix
new file mode 100644
index 000000000000..33c6249ebd47
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/bunny/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitLab }:
+
+stdenv.mkDerivation rec {
+  pname = "bunny";
+  version = "1.3";
+
+  src = fetchFromGitLab {
+    owner = "tim241";
+    repo = "bunny";
+    rev = version;
+    sha256 = "0nh2h5kj9b0nkb6yrzf4if7anfdmy9vijzy4bl3s7qck0nzbpy8s";
+  };
+
+  dontBuild = true;
+
+  makeFlags = [ "prefix=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "A simple shell script wrapper around multiple package managers";
+    homepage = "https://gitlab.com/tim241/bunny";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ buffet ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-about/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-about/default.nix
new file mode 100644
index 000000000000..84bea234c20f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-about/default.nix
@@ -0,0 +1,22 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-about";
+  version = "0.2.2";
+
+  src = fetchFromGitHub {
+    owner = "EmbarkStudios";
+    repo = "cargo-about";
+    rev = "${version}";
+    sha256 = "00ing1v6vjqfvirp3mbayn8rwvxf72wnhz9249k2iifw8bl2r2hd";
+  };
+
+  cargoSha256 = "1wmw7knkx79fbwizaj9qkcnw0ld1lsfhca8mfpn5f0daxa5v5y97";
+
+  meta = with lib; {
+    description = "Cargo plugin to generate list of all licenses for a crate";
+    homepage = "https://github.com/EmbarkStudios/cargo-about";
+    license = with licenses; [ mit /* or */ asl20 ];
+    maintainers = with maintainers; [ evanjs ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-audit/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-audit/default.nix
new file mode 100644
index 000000000000..01acc2ed6ed8
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-audit/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, rustPlatform, fetchFromGitHub, openssl, pkg-config, Security, libiconv }:
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-audit";
+  version = "0.12.0";
+
+  src = fetchFromGitHub {
+    owner = "RustSec";
+    repo = "cargo-audit";
+    rev = "v${version}";
+    sha256 = "0zby9bd64bmrkb229ic7ckn2ycf9bpwsisx2a7z0id0j4mjaca4k";
+  };
+
+  cargoSha256 = "1w4618w5yj1205d7s2hq273fb35qfcd7cnxdwxn4pq8x3ahgy4kx";
+
+  buildInputs = [ openssl libiconv ] ++ lib.optionals stdenv.isDarwin [ Security ];
+  nativeBuildInputs = [ pkg-config ];
+
+  # The tests require network access which is not available in sandboxed Nix builds.
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Audit Cargo.lock files for crates with security vulnerabilities";
+    homepage = "https://rustsec.org";
+    license = with licenses; [ mit asl20 ];
+    maintainers = with maintainers; [ basvandijk ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-deb/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-deb/default.nix
new file mode 100644
index 000000000000..96ef0eef8c5a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-deb/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, rustPlatform
+, rust
+, Security
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-deb";
+  version = "1.24.0";
+
+  src = fetchFromGitHub {
+    owner = "mmstick";
+    repo = pname;
+    rev = "b49351f6770aa7aeb053dd1d4a02d6b086caad2a";
+    sha256 = "1hs96yv0awgi7ggpxp7k3n21jpv642sm0529b21hs9ib6kp4vs8s";
+  };
+
+  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
+
+  cargoSha256 = "1vqnnqn6rzkdi239bh3lk7gaxr7w6v3c4ws4ya1ah04g6v9hkzlw";
+
+  checkType = "debug";
+
+  preCheck = ''
+    substituteInPlace tests/command.rs \
+      --replace 'target/debug' "target/${rust.toRustTarget stdenv.buildPlatform}/debug"
+  '';
+
+  meta = with lib; {
+    description = "Generate Debian packages from information in Cargo.toml";
+    homepage = "https://github.com/mmstick/cargo-deb";
+    license = licenses.mit;
+    maintainers = with maintainers; [ filalex77 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-deps/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-deps/default.nix
new file mode 100644
index 000000000000..d90d0fe79796
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-deps/default.nix
@@ -0,0 +1,23 @@
+{ lib, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-deps";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "m-cat";
+    repo = pname;
+    rev = "4033018eaa53134fd6169653b709b195a5f5958b";
+    sha256 = "1cdmgdag9chjifsp2hxr9j15hb6l6anqq38y8srj1nk047a3kbcw";
+  };
+
+  cargoSha256 = "1gjbvgpicy9n311qh9a5n0gdyd2rnc0b9zypnzk2ibn1pgaikafy";
+
+  meta = with lib; {
+    description = "Cargo subcommand for building dependency graphs of Rust projects";
+    homepage = "https://github.com/m-cat/cargo-deps";
+    license = licenses.mit;
+    maintainers = with maintainers; [ arcnmx ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-download/Cargo.nix b/nixpkgs/pkgs/tools/package-management/cargo-download/Cargo.nix
new file mode 100644
index 000000000000..217a7ecb3245
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-download/Cargo.nix
@@ -0,0 +1,675 @@
+# Generated by carnix 0.10.0: carnix generate-nix
+{ lib, buildPlatform, buildRustCrate, buildRustCrateHelpers, cratesIO, fetchgit }:
+with buildRustCrateHelpers;
+let inherit (lib.lists) fold;
+    inherit (lib.attrsets) recursiveUpdate;
+in
+rec {
+  crates = cratesIO;
+  cargo_download = crates.crates.cargo_download."0.1.2" deps;
+  __all = [ (cargo_download {}) ];
+  deps.adler32."1.0.2" = {};
+  deps.aho_corasick."0.5.3" = {
+    memchr = "0.1.11";
+  };
+  deps.ansi_term."0.9.0" = {};
+  deps.arrayvec."0.4.8" = {
+    nodrop = "0.1.13";
+  };
+  deps.atty."0.2.3" = {
+    termion = "1.5.1";
+    libc = "0.2.44";
+    kernel32_sys = "0.2.2";
+    winapi = "0.2.8";
+  };
+  deps.base64."0.9.3" = {
+    byteorder = "1.1.0";
+    safemem = "0.3.0";
+  };
+  deps.bitflags."0.7.0" = {};
+  deps.bitflags."0.9.1" = {};
+  deps.bitflags."1.0.4" = {};
+  deps.byteorder."1.1.0" = {};
+  deps.bytes."0.4.11" = {
+    byteorder = "1.1.0";
+    iovec = "0.1.1";
+  };
+  deps.cargo_download."0.1.2" = {
+    ansi_term = "0.9.0";
+    clap = "2.27.1";
+    conv = "0.3.3";
+    derive_error = "0.0.3";
+    exitcode = "1.1.2";
+    flate2 = "0.2.20";
+    isatty = "0.1.5";
+    itertools = "0.6.5";
+    lazy_static = "0.2.10";
+    log = "0.3.8";
+    maplit = "0.1.6";
+    reqwest = "0.9.5";
+    semver = "0.9.0";
+    serde_json = "1.0.6";
+    slog = "1.7.1";
+    slog_envlogger = "0.5.0";
+    slog_stdlog = "1.1.0";
+    slog_stream = "1.2.1";
+    tar = "0.4.13";
+    time = "0.1.38";
+  };
+  deps.case."0.1.0" = {};
+  deps.cc."1.0.3" = {};
+  deps.cfg_if."0.1.2" = {};
+  deps.chrono."0.2.25" = {
+    num = "0.1.40";
+    time = "0.1.38";
+  };
+  deps.clap."2.27.1" = {
+    ansi_term = "0.9.0";
+    atty = "0.2.3";
+    bitflags = "0.9.1";
+    strsim = "0.6.0";
+    textwrap = "0.9.0";
+    unicode_width = "0.1.4";
+    vec_map = "0.8.0";
+  };
+  deps.cloudabi."0.0.3" = {
+    bitflags = "1.0.4";
+  };
+  deps.conv."0.3.3" = {
+    custom_derive = "0.1.7";
+  };
+  deps.core_foundation."0.5.1" = {
+    core_foundation_sys = "0.5.1";
+    libc = "0.2.44";
+  };
+  deps.core_foundation_sys."0.5.1" = {
+    libc = "0.2.44";
+  };
+  deps.crc32fast."1.1.1" = {};
+  deps.crossbeam."0.2.10" = {};
+  deps.crossbeam_deque."0.6.2" = {
+    crossbeam_epoch = "0.6.1";
+    crossbeam_utils = "0.6.1";
+  };
+  deps.crossbeam_epoch."0.6.1" = {
+    arrayvec = "0.4.8";
+    cfg_if = "0.1.2";
+    crossbeam_utils = "0.6.1";
+    lazy_static = "1.2.0";
+    memoffset = "0.2.1";
+    scopeguard = "0.3.3";
+  };
+  deps.crossbeam_utils."0.6.1" = {
+    cfg_if = "0.1.2";
+  };
+  deps.custom_derive."0.1.7" = {};
+  deps.derive_error."0.0.3" = {
+    case = "0.1.0";
+    quote = "0.3.15";
+    syn = "0.11.11";
+  };
+  deps.dtoa."0.4.2" = {};
+  deps.either."1.4.0" = {};
+  deps.encoding_rs."0.8.13" = {
+    cfg_if = "0.1.2";
+  };
+  deps.exitcode."1.1.2" = {};
+  deps.filetime."0.1.14" = {
+    cfg_if = "0.1.2";
+    redox_syscall = "0.1.31";
+    libc = "0.2.44";
+  };
+  deps.flate2."0.2.20" = {
+    libc = "0.2.44";
+    miniz_sys = "0.1.10";
+  };
+  deps.fnv."1.0.6" = {};
+  deps.foreign_types."0.3.2" = {
+    foreign_types_shared = "0.1.1";
+  };
+  deps.foreign_types_shared."0.1.1" = {};
+  deps.fuchsia_zircon."0.2.1" = {
+    fuchsia_zircon_sys = "0.2.0";
+  };
+  deps.fuchsia_zircon."0.3.3" = {
+    bitflags = "1.0.4";
+    fuchsia_zircon_sys = "0.3.3";
+  };
+  deps.fuchsia_zircon_sys."0.2.0" = {
+    bitflags = "0.7.0";
+  };
+  deps.fuchsia_zircon_sys."0.3.3" = {};
+  deps.futures."0.1.25" = {};
+  deps.futures_cpupool."0.1.7" = {
+    futures = "0.1.25";
+    num_cpus = "1.8.0";
+  };
+  deps.h2."0.1.13" = {
+    byteorder = "1.1.0";
+    bytes = "0.4.11";
+    fnv = "1.0.6";
+    futures = "0.1.25";
+    http = "0.1.14";
+    indexmap = "1.0.2";
+    log = "0.4.6";
+    slab = "0.4.0";
+    string = "0.1.2";
+    tokio_io = "0.1.10";
+  };
+  deps.http."0.1.14" = {
+    bytes = "0.4.11";
+    fnv = "1.0.6";
+    itoa = "0.4.3";
+  };
+  deps.httparse."1.2.3" = {};
+  deps.hyper."0.12.16" = {
+    bytes = "0.4.11";
+    futures = "0.1.25";
+    futures_cpupool = "0.1.7";
+    h2 = "0.1.13";
+    http = "0.1.14";
+    httparse = "1.2.3";
+    iovec = "0.1.1";
+    itoa = "0.4.3";
+    log = "0.4.6";
+    net2 = "0.2.33";
+    time = "0.1.38";
+    tokio = "0.1.7";
+    tokio_executor = "0.1.5";
+    tokio_io = "0.1.10";
+    tokio_reactor = "0.1.7";
+    tokio_tcp = "0.1.2";
+    tokio_threadpool = "0.1.9";
+    tokio_timer = "0.2.5";
+    want = "0.0.6";
+  };
+  deps.hyper_tls."0.3.1" = {
+    bytes = "0.4.11";
+    futures = "0.1.25";
+    hyper = "0.12.16";
+    native_tls = "0.2.2";
+    tokio_io = "0.1.10";
+  };
+  deps.idna."0.1.4" = {
+    matches = "0.1.6";
+    unicode_bidi = "0.3.4";
+    unicode_normalization = "0.1.5";
+  };
+  deps.indexmap."1.0.2" = {};
+  deps.iovec."0.1.1" = {
+    libc = "0.2.44";
+    winapi = "0.2.8";
+  };
+  deps.isatty."0.1.5" = {
+    libc = "0.2.44";
+    kernel32_sys = "0.2.2";
+    winapi = "0.2.8";
+  };
+  deps.itertools."0.6.5" = {
+    either = "1.4.0";
+  };
+  deps.itoa."0.3.4" = {};
+  deps.itoa."0.4.3" = {};
+  deps.kernel32_sys."0.2.2" = {
+    winapi = "0.2.8";
+    winapi_build = "0.1.1";
+  };
+  deps.lazy_static."0.2.10" = {};
+  deps.lazy_static."1.2.0" = {};
+  deps.lazycell."1.2.0" = {};
+  deps.libc."0.2.44" = {};
+  deps.libflate."0.1.19" = {
+    adler32 = "1.0.2";
+    byteorder = "1.1.0";
+    crc32fast = "1.1.1";
+  };
+  deps.lock_api."0.1.5" = {
+    owning_ref = "0.4.0";
+    scopeguard = "0.3.3";
+  };
+  deps.log."0.3.8" = {};
+  deps.log."0.4.6" = {
+    cfg_if = "0.1.2";
+  };
+  deps.maplit."0.1.6" = {};
+  deps.matches."0.1.6" = {};
+  deps.memchr."0.1.11" = {
+    libc = "0.2.44";
+  };
+  deps.memoffset."0.2.1" = {};
+  deps.mime."0.3.12" = {
+    unicase = "2.1.0";
+  };
+  deps.mime_guess."2.0.0-alpha.6" = {
+    mime = "0.3.12";
+    phf = "0.7.21";
+    unicase = "1.4.2";
+    phf_codegen = "0.7.21";
+  };
+  deps.miniz_sys."0.1.10" = {
+    libc = "0.2.44";
+    cc = "1.0.3";
+  };
+  deps.mio."0.6.16" = {
+    iovec = "0.1.1";
+    lazycell = "1.2.0";
+    log = "0.4.6";
+    net2 = "0.2.33";
+    slab = "0.4.0";
+    fuchsia_zircon = "0.3.3";
+    fuchsia_zircon_sys = "0.3.3";
+    libc = "0.2.44";
+    kernel32_sys = "0.2.2";
+    miow = "0.2.1";
+    winapi = "0.2.8";
+  };
+  deps.miow."0.2.1" = {
+    kernel32_sys = "0.2.2";
+    net2 = "0.2.33";
+    winapi = "0.2.8";
+    ws2_32_sys = "0.2.1";
+  };
+  deps.native_tls."0.2.2" = {
+    lazy_static = "1.2.0";
+    libc = "0.2.44";
+    security_framework = "0.2.1";
+    security_framework_sys = "0.2.1";
+    tempfile = "3.0.5";
+    openssl = "0.10.15";
+    openssl_probe = "0.1.2";
+    openssl_sys = "0.9.39";
+    log = "0.4.6";
+    schannel = "0.1.14";
+  };
+  deps.net2."0.2.33" = {
+    cfg_if = "0.1.2";
+    libc = "0.2.44";
+    winapi = "0.3.6";
+  };
+  deps.nodrop."0.1.13" = {};
+  deps.num."0.1.40" = {
+    num_integer = "0.1.35";
+    num_iter = "0.1.34";
+    num_traits = "0.1.40";
+  };
+  deps.num_integer."0.1.35" = {
+    num_traits = "0.1.40";
+  };
+  deps.num_iter."0.1.34" = {
+    num_integer = "0.1.35";
+    num_traits = "0.1.40";
+  };
+  deps.num_traits."0.1.40" = {};
+  deps.num_cpus."1.8.0" = {
+    libc = "0.2.44";
+  };
+  deps.openssl."0.10.15" = {
+    bitflags = "1.0.4";
+    cfg_if = "0.1.2";
+    foreign_types = "0.3.2";
+    lazy_static = "1.2.0";
+    libc = "0.2.44";
+    openssl_sys = "0.9.39";
+  };
+  deps.openssl_probe."0.1.2" = {};
+  deps.openssl_sys."0.9.39" = {
+    libc = "0.2.44";
+    cc = "1.0.3";
+    pkg_config = "0.3.9";
+  };
+  deps.owning_ref."0.4.0" = {
+    stable_deref_trait = "1.1.1";
+  };
+  deps.parking_lot."0.6.4" = {
+    lock_api = "0.1.5";
+    parking_lot_core = "0.3.1";
+  };
+  deps.parking_lot_core."0.3.1" = {
+    rand = "0.5.5";
+    smallvec = "0.6.7";
+    rustc_version = "0.2.3";
+    libc = "0.2.44";
+    winapi = "0.3.6";
+  };
+  deps.percent_encoding."1.0.1" = {};
+  deps.phf."0.7.21" = {
+    phf_shared = "0.7.21";
+  };
+  deps.phf_codegen."0.7.21" = {
+    phf_generator = "0.7.21";
+    phf_shared = "0.7.21";
+  };
+  deps.phf_generator."0.7.21" = {
+    phf_shared = "0.7.21";
+    rand = "0.3.18";
+  };
+  deps.phf_shared."0.7.21" = {
+    siphasher = "0.2.2";
+    unicase = "1.4.2";
+  };
+  deps.pkg_config."0.3.9" = {};
+  deps.quote."0.3.15" = {};
+  deps.rand."0.3.18" = {
+    libc = "0.2.44";
+    fuchsia_zircon = "0.2.1";
+  };
+  deps.rand."0.5.5" = {
+    rand_core = "0.2.2";
+    cloudabi = "0.0.3";
+    fuchsia_zircon = "0.3.3";
+    libc = "0.2.44";
+    winapi = "0.3.6";
+  };
+  deps.rand."0.6.1" = {
+    rand_chacha = "0.1.0";
+    rand_core = "0.3.0";
+    rand_hc = "0.1.0";
+    rand_isaac = "0.1.1";
+    rand_pcg = "0.1.1";
+    rand_xorshift = "0.1.0";
+    rustc_version = "0.2.3";
+    cloudabi = "0.0.3";
+    fuchsia_zircon = "0.3.3";
+    libc = "0.2.44";
+    winapi = "0.3.6";
+  };
+  deps.rand_chacha."0.1.0" = {
+    rand_core = "0.3.0";
+    rustc_version = "0.2.3";
+  };
+  deps.rand_core."0.2.2" = {
+    rand_core = "0.3.0";
+  };
+  deps.rand_core."0.3.0" = {};
+  deps.rand_hc."0.1.0" = {
+    rand_core = "0.3.0";
+  };
+  deps.rand_isaac."0.1.1" = {
+    rand_core = "0.3.0";
+  };
+  deps.rand_pcg."0.1.1" = {
+    rand_core = "0.3.0";
+    rustc_version = "0.2.3";
+  };
+  deps.rand_xorshift."0.1.0" = {
+    rand_core = "0.3.0";
+  };
+  deps.redox_syscall."0.1.31" = {};
+  deps.redox_termios."0.1.1" = {
+    redox_syscall = "0.1.31";
+  };
+  deps.regex."0.1.80" = {
+    aho_corasick = "0.5.3";
+    memchr = "0.1.11";
+    regex_syntax = "0.3.9";
+    thread_local = "0.2.7";
+    utf8_ranges = "0.1.3";
+  };
+  deps.regex_syntax."0.3.9" = {};
+  deps.remove_dir_all."0.5.1" = {
+    winapi = "0.3.6";
+  };
+  deps.reqwest."0.9.5" = {
+    base64 = "0.9.3";
+    bytes = "0.4.11";
+    encoding_rs = "0.8.13";
+    futures = "0.1.25";
+    http = "0.1.14";
+    hyper = "0.12.16";
+    hyper_tls = "0.3.1";
+    libflate = "0.1.19";
+    log = "0.4.6";
+    mime = "0.3.12";
+    mime_guess = "2.0.0-alpha.6";
+    native_tls = "0.2.2";
+    serde = "1.0.21";
+    serde_json = "1.0.6";
+    serde_urlencoded = "0.5.1";
+    tokio = "0.1.7";
+    tokio_io = "0.1.10";
+    url = "1.7.2";
+    uuid = "0.7.1";
+  };
+  deps.rustc_version."0.2.3" = {
+    semver = "0.9.0";
+  };
+  deps.safemem."0.3.0" = {};
+  deps.schannel."0.1.14" = {
+    lazy_static = "1.2.0";
+    winapi = "0.3.6";
+  };
+  deps.scopeguard."0.3.3" = {};
+  deps.security_framework."0.2.1" = {
+    core_foundation = "0.5.1";
+    core_foundation_sys = "0.5.1";
+    libc = "0.2.44";
+    security_framework_sys = "0.2.1";
+  };
+  deps.security_framework_sys."0.2.1" = {
+    core_foundation_sys = "0.5.1";
+    libc = "0.2.44";
+  };
+  deps.semver."0.9.0" = {
+    semver_parser = "0.7.0";
+  };
+  deps.semver_parser."0.7.0" = {};
+  deps.serde."1.0.21" = {};
+  deps.serde_json."1.0.6" = {
+    dtoa = "0.4.2";
+    itoa = "0.3.4";
+    num_traits = "0.1.40";
+    serde = "1.0.21";
+  };
+  deps.serde_urlencoded."0.5.1" = {
+    dtoa = "0.4.2";
+    itoa = "0.3.4";
+    serde = "1.0.21";
+    url = "1.7.2";
+  };
+  deps.siphasher."0.2.2" = {};
+  deps.slab."0.4.0" = {};
+  deps.slog."1.7.1" = {};
+  deps.slog_envlogger."0.5.0" = {
+    log = "0.3.8";
+    regex = "0.1.80";
+    slog = "1.7.1";
+    slog_stdlog = "1.1.0";
+    slog_term = "1.5.0";
+  };
+  deps.slog_extra."0.1.2" = {
+    slog = "1.7.1";
+    thread_local = "0.3.4";
+  };
+  deps.slog_stdlog."1.1.0" = {
+    crossbeam = "0.2.10";
+    lazy_static = "0.2.10";
+    log = "0.3.8";
+    slog = "1.7.1";
+    slog_term = "1.5.0";
+  };
+  deps.slog_stream."1.2.1" = {
+    slog = "1.7.1";
+    slog_extra = "0.1.2";
+    thread_local = "0.3.4";
+  };
+  deps.slog_term."1.5.0" = {
+    chrono = "0.2.25";
+    isatty = "0.1.5";
+    slog = "1.7.1";
+    slog_stream = "1.2.1";
+    thread_local = "0.3.4";
+  };
+  deps.smallvec."0.6.7" = {
+    unreachable = "1.0.0";
+  };
+  deps.stable_deref_trait."1.1.1" = {};
+  deps.string."0.1.2" = {};
+  deps.strsim."0.6.0" = {};
+  deps.syn."0.11.11" = {
+    quote = "0.3.15";
+    synom = "0.11.3";
+    unicode_xid = "0.0.4";
+  };
+  deps.synom."0.11.3" = {
+    unicode_xid = "0.0.4";
+  };
+  deps.tar."0.4.13" = {
+    filetime = "0.1.14";
+    libc = "0.2.44";
+    xattr = "0.1.11";
+  };
+  deps.tempfile."3.0.5" = {
+    cfg_if = "0.1.2";
+    rand = "0.6.1";
+    remove_dir_all = "0.5.1";
+    redox_syscall = "0.1.31";
+    libc = "0.2.44";
+    winapi = "0.3.6";
+  };
+  deps.termion."1.5.1" = {
+    libc = "0.2.44";
+    redox_syscall = "0.1.31";
+    redox_termios = "0.1.1";
+  };
+  deps.textwrap."0.9.0" = {
+    unicode_width = "0.1.4";
+  };
+  deps.thread_id."2.0.0" = {
+    kernel32_sys = "0.2.2";
+    libc = "0.2.44";
+  };
+  deps.thread_local."0.2.7" = {
+    thread_id = "2.0.0";
+  };
+  deps.thread_local."0.3.4" = {
+    lazy_static = "0.2.10";
+    unreachable = "1.0.0";
+  };
+  deps.time."0.1.38" = {
+    libc = "0.2.44";
+    redox_syscall = "0.1.31";
+    kernel32_sys = "0.2.2";
+    winapi = "0.2.8";
+  };
+  deps.tokio."0.1.7" = {
+    futures = "0.1.25";
+    mio = "0.6.16";
+    tokio_executor = "0.1.5";
+    tokio_fs = "0.1.4";
+    tokio_io = "0.1.10";
+    tokio_reactor = "0.1.7";
+    tokio_tcp = "0.1.2";
+    tokio_threadpool = "0.1.9";
+    tokio_timer = "0.2.5";
+    tokio_udp = "0.1.3";
+  };
+  deps.tokio_codec."0.1.1" = {
+    bytes = "0.4.11";
+    futures = "0.1.25";
+    tokio_io = "0.1.10";
+  };
+  deps.tokio_executor."0.1.5" = {
+    futures = "0.1.25";
+  };
+  deps.tokio_fs."0.1.4" = {
+    futures = "0.1.25";
+    tokio_io = "0.1.10";
+    tokio_threadpool = "0.1.9";
+  };
+  deps.tokio_io."0.1.10" = {
+    bytes = "0.4.11";
+    futures = "0.1.25";
+    log = "0.4.6";
+  };
+  deps.tokio_reactor."0.1.7" = {
+    crossbeam_utils = "0.6.1";
+    futures = "0.1.25";
+    lazy_static = "1.2.0";
+    log = "0.4.6";
+    mio = "0.6.16";
+    num_cpus = "1.8.0";
+    parking_lot = "0.6.4";
+    slab = "0.4.0";
+    tokio_executor = "0.1.5";
+    tokio_io = "0.1.10";
+  };
+  deps.tokio_tcp."0.1.2" = {
+    bytes = "0.4.11";
+    futures = "0.1.25";
+    iovec = "0.1.1";
+    mio = "0.6.16";
+    tokio_io = "0.1.10";
+    tokio_reactor = "0.1.7";
+  };
+  deps.tokio_threadpool."0.1.9" = {
+    crossbeam_deque = "0.6.2";
+    crossbeam_utils = "0.6.1";
+    futures = "0.1.25";
+    log = "0.4.6";
+    num_cpus = "1.8.0";
+    rand = "0.6.1";
+    tokio_executor = "0.1.5";
+  };
+  deps.tokio_timer."0.2.5" = {
+    futures = "0.1.25";
+    tokio_executor = "0.1.5";
+  };
+  deps.tokio_udp."0.1.3" = {
+    bytes = "0.4.11";
+    futures = "0.1.25";
+    log = "0.4.6";
+    mio = "0.6.16";
+    tokio_codec = "0.1.1";
+    tokio_io = "0.1.10";
+    tokio_reactor = "0.1.7";
+  };
+  deps.try_lock."0.2.2" = {};
+  deps.unicase."1.4.2" = {
+    version_check = "0.1.3";
+  };
+  deps.unicase."2.1.0" = {
+    version_check = "0.1.3";
+  };
+  deps.unicode_bidi."0.3.4" = {
+    matches = "0.1.6";
+  };
+  deps.unicode_normalization."0.1.5" = {};
+  deps.unicode_width."0.1.4" = {};
+  deps.unicode_xid."0.0.4" = {};
+  deps.unreachable."1.0.0" = {
+    void = "1.0.2";
+  };
+  deps.url."1.7.2" = {
+    idna = "0.1.4";
+    matches = "0.1.6";
+    percent_encoding = "1.0.1";
+  };
+  deps.utf8_ranges."0.1.3" = {};
+  deps.uuid."0.7.1" = {
+    rand = "0.5.5";
+  };
+  deps.vcpkg."0.2.2" = {};
+  deps.vec_map."0.8.0" = {};
+  deps.version_check."0.1.3" = {};
+  deps.void."1.0.2" = {};
+  deps.want."0.0.6" = {
+    futures = "0.1.25";
+    log = "0.4.6";
+    try_lock = "0.2.2";
+  };
+  deps.winapi."0.2.8" = {};
+  deps.winapi."0.3.6" = {
+    winapi_i686_pc_windows_gnu = "0.4.0";
+    winapi_x86_64_pc_windows_gnu = "0.4.0";
+  };
+  deps.winapi_build."0.1.1" = {};
+  deps.winapi_i686_pc_windows_gnu."0.4.0" = {};
+  deps.winapi_x86_64_pc_windows_gnu."0.4.0" = {};
+  deps.ws2_32_sys."0.2.1" = {
+    winapi = "0.2.8";
+    winapi_build = "0.1.1";
+  };
+  deps.xattr."0.1.11" = {
+    libc = "0.2.44";
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-download/crates-io.nix b/nixpkgs/pkgs/tools/package-management/cargo-download/crates-io.nix
new file mode 100644
index 000000000000..ff2f34022738
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-download/crates-io.nix
@@ -0,0 +1,5289 @@
+{ lib, buildRustCrate, buildRustCrateHelpers }:
+with buildRustCrateHelpers;
+let inherit (lib.lists) fold;
+    inherit (lib.attrsets) recursiveUpdate;
+in
+rec {
+
+# adler32-1.0.2
+
+  crates.adler32."1.0.2" = deps: { features?(features_.adler32."1.0.2" deps {}) }: buildRustCrate {
+    crateName = "adler32";
+    version = "1.0.2";
+    description = "Minimal Adler32 implementation for Rust.";
+    authors = [ "Remi Rampin <remirampin@gmail.com>" ];
+    sha256 = "1974q3nysai026zhz24df506cxwi09jdzqksll4h7ibpb5n9g1d4";
+  };
+  features_.adler32."1.0.2" = deps: f: updateFeatures f (rec {
+    adler32."1.0.2".default = (f.adler32."1.0.2".default or true);
+  }) [];
+
+
+# end
+# aho-corasick-0.5.3
+
+  crates.aho_corasick."0.5.3" = deps: { features?(features_.aho_corasick."0.5.3" deps {}) }: buildRustCrate {
+    crateName = "aho-corasick";
+    version = "0.5.3";
+    description = "Fast multiple substring searching with finite state machines.";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "1igab46mvgknga3sxkqc917yfff0wsjxjzabdigmh240p5qxqlnn";
+    libName = "aho_corasick";
+    crateBin =
+      [{  name = "aho-corasick-dot"; }];
+    dependencies = mapFeatures features ([
+      (crates."memchr"."${deps."aho_corasick"."0.5.3"."memchr"}" deps)
+    ]);
+  };
+  features_.aho_corasick."0.5.3" = deps: f: updateFeatures f (rec {
+    aho_corasick."0.5.3".default = (f.aho_corasick."0.5.3".default or true);
+    memchr."${deps.aho_corasick."0.5.3".memchr}".default = true;
+  }) [
+    (features_.memchr."${deps."aho_corasick"."0.5.3"."memchr"}" deps)
+  ];
+
+
+# end
+# ansi_term-0.9.0
+
+  crates.ansi_term."0.9.0" = deps: { features?(features_.ansi_term."0.9.0" deps {}) }: buildRustCrate {
+    crateName = "ansi_term";
+    version = "0.9.0";
+    description = "Library for ANSI terminal colours and styles (bold, underline)";
+    authors = [ "ogham@bsago.me" "Ryan Scheel (Havvy) <ryan.havvy@gmail.com>" ];
+    sha256 = "1vcd8m2hglrdi4zmqnkkz5zy3c73ifgii245k7vj6qr5dzpn9hij";
+  };
+  features_.ansi_term."0.9.0" = deps: f: updateFeatures f (rec {
+    ansi_term."0.9.0".default = (f.ansi_term."0.9.0".default or true);
+  }) [];
+
+
+# end
+# arrayvec-0.4.8
+
+  crates.arrayvec."0.4.8" = deps: { features?(features_.arrayvec."0.4.8" deps {}) }: buildRustCrate {
+    crateName = "arrayvec";
+    version = "0.4.8";
+    description = "A vector with fixed capacity, backed by an array (it can be stored on the stack too). Implements fixed capacity ArrayVec and ArrayString.";
+    authors = [ "bluss" ];
+    sha256 = "0zwpjdxgr0a11h9x7mkrif4wyx3c81b90paxjf326i86s13kib1g";
+    dependencies = mapFeatures features ([
+      (crates."nodrop"."${deps."arrayvec"."0.4.8"."nodrop"}" deps)
+    ]);
+    features = mkFeatures (features."arrayvec"."0.4.8" or {});
+  };
+  features_.arrayvec."0.4.8" = deps: f: updateFeatures f (rec {
+    arrayvec = fold recursiveUpdate {} [
+      { "0.4.8"."serde" =
+        (f.arrayvec."0.4.8"."serde" or false) ||
+        (f.arrayvec."0.4.8".serde-1 or false) ||
+        (arrayvec."0.4.8"."serde-1" or false); }
+      { "0.4.8"."std" =
+        (f.arrayvec."0.4.8"."std" or false) ||
+        (f.arrayvec."0.4.8".default or false) ||
+        (arrayvec."0.4.8"."default" or false); }
+      { "0.4.8".default = (f.arrayvec."0.4.8".default or true); }
+    ];
+    nodrop."${deps.arrayvec."0.4.8".nodrop}".default = (f.nodrop."${deps.arrayvec."0.4.8".nodrop}".default or false);
+  }) [
+    (features_.nodrop."${deps."arrayvec"."0.4.8"."nodrop"}" deps)
+  ];
+
+
+# end
+# atty-0.2.3
+
+  crates.atty."0.2.3" = deps: { features?(features_.atty."0.2.3" deps {}) }: buildRustCrate {
+    crateName = "atty";
+    version = "0.2.3";
+    description = "A simple interface for querying atty";
+    authors = [ "softprops <d.tangren@gmail.com>" ];
+    sha256 = "0zl0cjfgarp5y78nd755lpki5bbkj4hgmi88v265m543yg29i88f";
+    dependencies = (if kernel == "redox" then mapFeatures features ([
+      (crates."termion"."${deps."atty"."0.2.3"."termion"}" deps)
+    ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."atty"."0.2.3"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."kernel32_sys"."${deps."atty"."0.2.3"."kernel32_sys"}" deps)
+      (crates."winapi"."${deps."atty"."0.2.3"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.atty."0.2.3" = deps: f: updateFeatures f (rec {
+    atty."0.2.3".default = (f.atty."0.2.3".default or true);
+    kernel32_sys."${deps.atty."0.2.3".kernel32_sys}".default = true;
+    libc."${deps.atty."0.2.3".libc}".default = (f.libc."${deps.atty."0.2.3".libc}".default or false);
+    termion."${deps.atty."0.2.3".termion}".default = true;
+    winapi."${deps.atty."0.2.3".winapi}".default = true;
+  }) [
+    (features_.termion."${deps."atty"."0.2.3"."termion"}" deps)
+    (features_.libc."${deps."atty"."0.2.3"."libc"}" deps)
+    (features_.kernel32_sys."${deps."atty"."0.2.3"."kernel32_sys"}" deps)
+    (features_.winapi."${deps."atty"."0.2.3"."winapi"}" deps)
+  ];
+
+
+# end
+# base64-0.9.3
+
+  crates.base64."0.9.3" = deps: { features?(features_.base64."0.9.3" deps {}) }: buildRustCrate {
+    crateName = "base64";
+    version = "0.9.3";
+    description = "encodes and decodes base64 as bytes or utf8";
+    authors = [ "Alice Maz <alice@alicemaz.com>" "Marshall Pierce <marshall@mpierce.org>" ];
+    sha256 = "11hhz8ln4zbpn2h2gm9fbbb9j254wrd4fpmddlyah2rrnqsmmqkd";
+    dependencies = mapFeatures features ([
+      (crates."byteorder"."${deps."base64"."0.9.3"."byteorder"}" deps)
+      (crates."safemem"."${deps."base64"."0.9.3"."safemem"}" deps)
+    ]);
+  };
+  features_.base64."0.9.3" = deps: f: updateFeatures f (rec {
+    base64."0.9.3".default = (f.base64."0.9.3".default or true);
+    byteorder."${deps.base64."0.9.3".byteorder}".default = true;
+    safemem."${deps.base64."0.9.3".safemem}".default = true;
+  }) [
+    (features_.byteorder."${deps."base64"."0.9.3"."byteorder"}" deps)
+    (features_.safemem."${deps."base64"."0.9.3"."safemem"}" deps)
+  ];
+
+
+# end
+# bitflags-0.7.0
+
+  crates.bitflags."0.7.0" = deps: { features?(features_.bitflags."0.7.0" deps {}) }: buildRustCrate {
+    crateName = "bitflags";
+    version = "0.7.0";
+    description = "A macro to generate structures which behave like bitflags.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1hr72xg5slm0z4pxs2hiy4wcyx3jva70h58b7mid8l0a4c8f7gn5";
+  };
+  features_.bitflags."0.7.0" = deps: f: updateFeatures f (rec {
+    bitflags."0.7.0".default = (f.bitflags."0.7.0".default or true);
+  }) [];
+
+
+# end
+# bitflags-0.9.1
+
+  crates.bitflags."0.9.1" = deps: { features?(features_.bitflags."0.9.1" deps {}) }: buildRustCrate {
+    crateName = "bitflags";
+    version = "0.9.1";
+    description = "A macro to generate structures which behave like bitflags.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "18h073l5jd88rx4qdr95fjddr9rk79pb1aqnshzdnw16cfmb9rws";
+    features = mkFeatures (features."bitflags"."0.9.1" or {});
+  };
+  features_.bitflags."0.9.1" = deps: f: updateFeatures f (rec {
+    bitflags = fold recursiveUpdate {} [
+      { "0.9.1"."example_generated" =
+        (f.bitflags."0.9.1"."example_generated" or false) ||
+        (f.bitflags."0.9.1".default or false) ||
+        (bitflags."0.9.1"."default" or false); }
+      { "0.9.1".default = (f.bitflags."0.9.1".default or true); }
+    ];
+  }) [];
+
+
+# end
+# bitflags-1.0.4
+
+  crates.bitflags."1.0.4" = deps: { features?(features_.bitflags."1.0.4" deps {}) }: buildRustCrate {
+    crateName = "bitflags";
+    version = "1.0.4";
+    description = "A macro to generate structures which behave like bitflags.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1g1wmz2001qmfrd37dnd5qiss5njrw26aywmg6yhkmkbyrhjxb08";
+    features = mkFeatures (features."bitflags"."1.0.4" or {});
+  };
+  features_.bitflags."1.0.4" = deps: f: updateFeatures f (rec {
+    bitflags."1.0.4".default = (f.bitflags."1.0.4".default or true);
+  }) [];
+
+
+# end
+# byteorder-1.1.0
+
+  crates.byteorder."1.1.0" = deps: { features?(features_.byteorder."1.1.0" deps {}) }: buildRustCrate {
+    crateName = "byteorder";
+    version = "1.1.0";
+    description = "Library for reading/writing numbers in big-endian and little-endian.";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "1i2n0161jm00zvzh4bncgv9zrwa6ydbxdn5j4bx0wwn7rvi9zycp";
+    features = mkFeatures (features."byteorder"."1.1.0" or {});
+  };
+  features_.byteorder."1.1.0" = deps: f: updateFeatures f (rec {
+    byteorder = fold recursiveUpdate {} [
+      { "1.1.0"."std" =
+        (f.byteorder."1.1.0"."std" or false) ||
+        (f.byteorder."1.1.0".default or false) ||
+        (byteorder."1.1.0"."default" or false); }
+      { "1.1.0".default = (f.byteorder."1.1.0".default or true); }
+    ];
+  }) [];
+
+
+# end
+# bytes-0.4.11
+
+  crates.bytes."0.4.11" = deps: { features?(features_.bytes."0.4.11" deps {}) }: buildRustCrate {
+    crateName = "bytes";
+    version = "0.4.11";
+    description = "Types and traits for working with bytes";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "1lk8bnxcd8shiizarf0n6ljmj1542n90jw6lz6i270gxl7rzplmh";
+    dependencies = mapFeatures features ([
+      (crates."byteorder"."${deps."bytes"."0.4.11"."byteorder"}" deps)
+      (crates."iovec"."${deps."bytes"."0.4.11"."iovec"}" deps)
+    ]);
+    features = mkFeatures (features."bytes"."0.4.11" or {});
+  };
+  features_.bytes."0.4.11" = deps: f: updateFeatures f (rec {
+    byteorder = fold recursiveUpdate {} [
+      { "${deps.bytes."0.4.11".byteorder}"."i128" =
+        (f.byteorder."${deps.bytes."0.4.11".byteorder}"."i128" or false) ||
+        (bytes."0.4.11"."i128" or false) ||
+        (f."bytes"."0.4.11"."i128" or false); }
+      { "${deps.bytes."0.4.11".byteorder}".default = true; }
+    ];
+    bytes."0.4.11".default = (f.bytes."0.4.11".default or true);
+    iovec."${deps.bytes."0.4.11".iovec}".default = true;
+  }) [
+    (features_.byteorder."${deps."bytes"."0.4.11"."byteorder"}" deps)
+    (features_.iovec."${deps."bytes"."0.4.11"."iovec"}" deps)
+  ];
+
+
+# end
+# cargo-download-0.1.2
+
+  crates.cargo_download."0.1.2" = deps: { features?(features_.cargo_download."0.1.2" deps {}) }: buildRustCrate {
+    crateName = "cargo-download";
+    version = "0.1.2";
+    description = "Cargo subcommand for downloading crate sources";
+    authors = [ "Karol Kuczmarski <karol.kuczmarski@gmail.com>" ];
+    sha256 = "1gfn0iabiriq0n9sqkyp2g73rw12mr9ng61fx198xaffflxk7g36";
+    crateBin =
+      [{  name = "cargo-download"; }];
+    dependencies = mapFeatures features ([
+      (crates."ansi_term"."${deps."cargo_download"."0.1.2"."ansi_term"}" deps)
+      (crates."clap"."${deps."cargo_download"."0.1.2"."clap"}" deps)
+      (crates."conv"."${deps."cargo_download"."0.1.2"."conv"}" deps)
+      (crates."derive_error"."${deps."cargo_download"."0.1.2"."derive_error"}" deps)
+      (crates."exitcode"."${deps."cargo_download"."0.1.2"."exitcode"}" deps)
+      (crates."flate2"."${deps."cargo_download"."0.1.2"."flate2"}" deps)
+      (crates."isatty"."${deps."cargo_download"."0.1.2"."isatty"}" deps)
+      (crates."itertools"."${deps."cargo_download"."0.1.2"."itertools"}" deps)
+      (crates."lazy_static"."${deps."cargo_download"."0.1.2"."lazy_static"}" deps)
+      (crates."log"."${deps."cargo_download"."0.1.2"."log"}" deps)
+      (crates."maplit"."${deps."cargo_download"."0.1.2"."maplit"}" deps)
+      (crates."reqwest"."${deps."cargo_download"."0.1.2"."reqwest"}" deps)
+      (crates."semver"."${deps."cargo_download"."0.1.2"."semver"}" deps)
+      (crates."serde_json"."${deps."cargo_download"."0.1.2"."serde_json"}" deps)
+      (crates."slog"."${deps."cargo_download"."0.1.2"."slog"}" deps)
+      (crates."slog_envlogger"."${deps."cargo_download"."0.1.2"."slog_envlogger"}" deps)
+      (crates."slog_stdlog"."${deps."cargo_download"."0.1.2"."slog_stdlog"}" deps)
+      (crates."slog_stream"."${deps."cargo_download"."0.1.2"."slog_stream"}" deps)
+      (crates."tar"."${deps."cargo_download"."0.1.2"."tar"}" deps)
+      (crates."time"."${deps."cargo_download"."0.1.2"."time"}" deps)
+    ]);
+  };
+  features_.cargo_download."0.1.2" = deps: f: updateFeatures f (rec {
+    ansi_term."${deps.cargo_download."0.1.2".ansi_term}".default = true;
+    cargo_download."0.1.2".default = (f.cargo_download."0.1.2".default or true);
+    clap."${deps.cargo_download."0.1.2".clap}".default = true;
+    conv."${deps.cargo_download."0.1.2".conv}".default = true;
+    derive_error."${deps.cargo_download."0.1.2".derive_error}".default = true;
+    exitcode."${deps.cargo_download."0.1.2".exitcode}".default = true;
+    flate2."${deps.cargo_download."0.1.2".flate2}".default = true;
+    isatty."${deps.cargo_download."0.1.2".isatty}".default = true;
+    itertools."${deps.cargo_download."0.1.2".itertools}".default = true;
+    lazy_static."${deps.cargo_download."0.1.2".lazy_static}".default = true;
+    log."${deps.cargo_download."0.1.2".log}".default = true;
+    maplit."${deps.cargo_download."0.1.2".maplit}".default = true;
+    reqwest."${deps.cargo_download."0.1.2".reqwest}".default = true;
+    semver."${deps.cargo_download."0.1.2".semver}".default = true;
+    serde_json."${deps.cargo_download."0.1.2".serde_json}".default = true;
+    slog."${deps.cargo_download."0.1.2".slog}".default = true;
+    slog_envlogger."${deps.cargo_download."0.1.2".slog_envlogger}".default = true;
+    slog_stdlog."${deps.cargo_download."0.1.2".slog_stdlog}".default = true;
+    slog_stream."${deps.cargo_download."0.1.2".slog_stream}".default = true;
+    tar."${deps.cargo_download."0.1.2".tar}".default = true;
+    time."${deps.cargo_download."0.1.2".time}".default = true;
+  }) [
+    (features_.ansi_term."${deps."cargo_download"."0.1.2"."ansi_term"}" deps)
+    (features_.clap."${deps."cargo_download"."0.1.2"."clap"}" deps)
+    (features_.conv."${deps."cargo_download"."0.1.2"."conv"}" deps)
+    (features_.derive_error."${deps."cargo_download"."0.1.2"."derive_error"}" deps)
+    (features_.exitcode."${deps."cargo_download"."0.1.2"."exitcode"}" deps)
+    (features_.flate2."${deps."cargo_download"."0.1.2"."flate2"}" deps)
+    (features_.isatty."${deps."cargo_download"."0.1.2"."isatty"}" deps)
+    (features_.itertools."${deps."cargo_download"."0.1.2"."itertools"}" deps)
+    (features_.lazy_static."${deps."cargo_download"."0.1.2"."lazy_static"}" deps)
+    (features_.log."${deps."cargo_download"."0.1.2"."log"}" deps)
+    (features_.maplit."${deps."cargo_download"."0.1.2"."maplit"}" deps)
+    (features_.reqwest."${deps."cargo_download"."0.1.2"."reqwest"}" deps)
+    (features_.semver."${deps."cargo_download"."0.1.2"."semver"}" deps)
+    (features_.serde_json."${deps."cargo_download"."0.1.2"."serde_json"}" deps)
+    (features_.slog."${deps."cargo_download"."0.1.2"."slog"}" deps)
+    (features_.slog_envlogger."${deps."cargo_download"."0.1.2"."slog_envlogger"}" deps)
+    (features_.slog_stdlog."${deps."cargo_download"."0.1.2"."slog_stdlog"}" deps)
+    (features_.slog_stream."${deps."cargo_download"."0.1.2"."slog_stream"}" deps)
+    (features_.tar."${deps."cargo_download"."0.1.2"."tar"}" deps)
+    (features_.time."${deps."cargo_download"."0.1.2"."time"}" deps)
+  ];
+
+
+# end
+# case-0.1.0
+
+  crates.case."0.1.0" = deps: { features?(features_.case."0.1.0" deps {}) }: buildRustCrate {
+    crateName = "case";
+    version = "0.1.0";
+    description = "A set of letter case string helpers";
+    authors = [ "Skyler Lipthay <skyler.lipthay@gmail.com>" ];
+    sha256 = "06i1x3wqv30rkvlgj134qf9vzxhzz28bz41mm0rgki0i0f7gf96n";
+  };
+  features_.case."0.1.0" = deps: f: updateFeatures f (rec {
+    case."0.1.0".default = (f.case."0.1.0".default or true);
+  }) [];
+
+
+# end
+# cc-1.0.3
+
+  crates.cc."1.0.3" = deps: { features?(features_.cc."1.0.3" deps {}) }: buildRustCrate {
+    crateName = "cc";
+    version = "1.0.3";
+    description = "A build-time dependency for Cargo build scripts to assist in invoking the native\nC compiler to compile native C code into a static archive to be linked into Rust\ncode.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "193pwqgh79w6k0k29svyds5nnlrwx44myqyrw605d5jj4yk2zmpr";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."cc"."1.0.3" or {});
+  };
+  features_.cc."1.0.3" = deps: f: updateFeatures f (rec {
+    cc = fold recursiveUpdate {} [
+      { "1.0.3"."rayon" =
+        (f.cc."1.0.3"."rayon" or false) ||
+        (f.cc."1.0.3".parallel or false) ||
+        (cc."1.0.3"."parallel" or false); }
+      { "1.0.3".default = (f.cc."1.0.3".default or true); }
+    ];
+  }) [];
+
+
+# end
+# cfg-if-0.1.2
+
+  crates.cfg_if."0.1.2" = deps: { features?(features_.cfg_if."0.1.2" deps {}) }: buildRustCrate {
+    crateName = "cfg-if";
+    version = "0.1.2";
+    description = "A macro to ergonomically define an item depending on a large number of #[cfg]\nparameters. Structured like an if-else chain, the first matching branch is the\nitem that gets emitted.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "0x06hvrrqy96m97593823vvxcgvjaxckghwyy2jcyc8qc7c6cyhi";
+  };
+  features_.cfg_if."0.1.2" = deps: f: updateFeatures f (rec {
+    cfg_if."0.1.2".default = (f.cfg_if."0.1.2".default or true);
+  }) [];
+
+
+# end
+# chrono-0.2.25
+
+  crates.chrono."0.2.25" = deps: { features?(features_.chrono."0.2.25" deps {}) }: buildRustCrate {
+    crateName = "chrono";
+    version = "0.2.25";
+    description = "Date and time library for Rust";
+    authors = [ "Kang Seonghoon <public+rust@mearie.org>" ];
+    sha256 = "0gsvqk8cnmm43qj3xyngqvfqh50cbdbqas7ik0wjgnvknirmmca7";
+    dependencies = mapFeatures features ([
+      (crates."num"."${deps."chrono"."0.2.25"."num"}" deps)
+      (crates."time"."${deps."chrono"."0.2.25"."time"}" deps)
+    ]);
+  };
+  features_.chrono."0.2.25" = deps: f: updateFeatures f (rec {
+    chrono."0.2.25".default = (f.chrono."0.2.25".default or true);
+    num."${deps.chrono."0.2.25".num}".default = (f.num."${deps.chrono."0.2.25".num}".default or false);
+    time."${deps.chrono."0.2.25".time}".default = true;
+  }) [
+    (features_.num."${deps."chrono"."0.2.25"."num"}" deps)
+    (features_.time."${deps."chrono"."0.2.25"."time"}" deps)
+  ];
+
+
+# end
+# clap-2.27.1
+
+  crates.clap."2.27.1" = deps: { features?(features_.clap."2.27.1" deps {}) }: buildRustCrate {
+    crateName = "clap";
+    version = "2.27.1";
+    description = "A simple to use, efficient, and full featured  Command Line Argument Parser\n";
+    authors = [ "Kevin K. <kbknapp@gmail.com>" ];
+    sha256 = "0zx8rskqfl3iqn3vlyxzyd99hpifa7bm871akhxpz9wvrm688zaj";
+    dependencies = mapFeatures features ([
+      (crates."bitflags"."${deps."clap"."2.27.1"."bitflags"}" deps)
+      (crates."textwrap"."${deps."clap"."2.27.1"."textwrap"}" deps)
+      (crates."unicode_width"."${deps."clap"."2.27.1"."unicode_width"}" deps)
+    ]
+      ++ (if features.clap."2.27.1".ansi_term or false then [ (crates.ansi_term."${deps."clap"."2.27.1".ansi_term}" deps) ] else [])
+      ++ (if features.clap."2.27.1".atty or false then [ (crates.atty."${deps."clap"."2.27.1".atty}" deps) ] else [])
+      ++ (if features.clap."2.27.1".strsim or false then [ (crates.strsim."${deps."clap"."2.27.1".strsim}" deps) ] else [])
+      ++ (if features.clap."2.27.1".vec_map or false then [ (crates.vec_map."${deps."clap"."2.27.1".vec_map}" deps) ] else []));
+    features = mkFeatures (features."clap"."2.27.1" or {});
+  };
+  features_.clap."2.27.1" = deps: f: updateFeatures f (rec {
+    ansi_term."${deps.clap."2.27.1".ansi_term}".default = true;
+    atty."${deps.clap."2.27.1".atty}".default = true;
+    bitflags."${deps.clap."2.27.1".bitflags}".default = true;
+    clap = fold recursiveUpdate {} [
+      { "2.27.1"."ansi_term" =
+        (f.clap."2.27.1"."ansi_term" or false) ||
+        (f.clap."2.27.1".color or false) ||
+        (clap."2.27.1"."color" or false); }
+      { "2.27.1"."atty" =
+        (f.clap."2.27.1"."atty" or false) ||
+        (f.clap."2.27.1".color or false) ||
+        (clap."2.27.1"."color" or false); }
+      { "2.27.1"."clippy" =
+        (f.clap."2.27.1"."clippy" or false) ||
+        (f.clap."2.27.1".lints or false) ||
+        (clap."2.27.1"."lints" or false); }
+      { "2.27.1"."color" =
+        (f.clap."2.27.1"."color" or false) ||
+        (f.clap."2.27.1".default or false) ||
+        (clap."2.27.1"."default" or false); }
+      { "2.27.1"."strsim" =
+        (f.clap."2.27.1"."strsim" or false) ||
+        (f.clap."2.27.1".suggestions or false) ||
+        (clap."2.27.1"."suggestions" or false); }
+      { "2.27.1"."suggestions" =
+        (f.clap."2.27.1"."suggestions" or false) ||
+        (f.clap."2.27.1".default or false) ||
+        (clap."2.27.1"."default" or false); }
+      { "2.27.1"."term_size" =
+        (f.clap."2.27.1"."term_size" or false) ||
+        (f.clap."2.27.1".wrap_help or false) ||
+        (clap."2.27.1"."wrap_help" or false); }
+      { "2.27.1"."vec_map" =
+        (f.clap."2.27.1"."vec_map" or false) ||
+        (f.clap."2.27.1".default or false) ||
+        (clap."2.27.1"."default" or false); }
+      { "2.27.1"."yaml" =
+        (f.clap."2.27.1"."yaml" or false) ||
+        (f.clap."2.27.1".doc or false) ||
+        (clap."2.27.1"."doc" or false); }
+      { "2.27.1"."yaml-rust" =
+        (f.clap."2.27.1"."yaml-rust" or false) ||
+        (f.clap."2.27.1".yaml or false) ||
+        (clap."2.27.1"."yaml" or false); }
+      { "2.27.1".default = (f.clap."2.27.1".default or true); }
+    ];
+    strsim."${deps.clap."2.27.1".strsim}".default = true;
+    textwrap = fold recursiveUpdate {} [
+      { "${deps.clap."2.27.1".textwrap}"."term_size" =
+        (f.textwrap."${deps.clap."2.27.1".textwrap}"."term_size" or false) ||
+        (clap."2.27.1"."wrap_help" or false) ||
+        (f."clap"."2.27.1"."wrap_help" or false); }
+      { "${deps.clap."2.27.1".textwrap}".default = true; }
+    ];
+    unicode_width."${deps.clap."2.27.1".unicode_width}".default = true;
+    vec_map."${deps.clap."2.27.1".vec_map}".default = true;
+  }) [
+    (features_.ansi_term."${deps."clap"."2.27.1"."ansi_term"}" deps)
+    (features_.atty."${deps."clap"."2.27.1"."atty"}" deps)
+    (features_.bitflags."${deps."clap"."2.27.1"."bitflags"}" deps)
+    (features_.strsim."${deps."clap"."2.27.1"."strsim"}" deps)
+    (features_.textwrap."${deps."clap"."2.27.1"."textwrap"}" deps)
+    (features_.unicode_width."${deps."clap"."2.27.1"."unicode_width"}" deps)
+    (features_.vec_map."${deps."clap"."2.27.1"."vec_map"}" deps)
+  ];
+
+
+# end
+# cloudabi-0.0.3
+
+  crates.cloudabi."0.0.3" = deps: { features?(features_.cloudabi."0.0.3" deps {}) }: buildRustCrate {
+    crateName = "cloudabi";
+    version = "0.0.3";
+    description = "Low level interface to CloudABI. Contains all syscalls and related types.";
+    authors = [ "Nuxi (https://nuxi.nl/) and contributors" ];
+    sha256 = "1z9lby5sr6vslfd14d6igk03s7awf91mxpsfmsp3prxbxlk0x7h5";
+    libPath = "cloudabi.rs";
+    dependencies = mapFeatures features ([
+    ]
+      ++ (if features.cloudabi."0.0.3".bitflags or false then [ (crates.bitflags."${deps."cloudabi"."0.0.3".bitflags}" deps) ] else []));
+    features = mkFeatures (features."cloudabi"."0.0.3" or {});
+  };
+  features_.cloudabi."0.0.3" = deps: f: updateFeatures f (rec {
+    bitflags."${deps.cloudabi."0.0.3".bitflags}".default = true;
+    cloudabi = fold recursiveUpdate {} [
+      { "0.0.3"."bitflags" =
+        (f.cloudabi."0.0.3"."bitflags" or false) ||
+        (f.cloudabi."0.0.3".default or false) ||
+        (cloudabi."0.0.3"."default" or false); }
+      { "0.0.3".default = (f.cloudabi."0.0.3".default or true); }
+    ];
+  }) [
+    (features_.bitflags."${deps."cloudabi"."0.0.3"."bitflags"}" deps)
+  ];
+
+
+# end
+# conv-0.3.3
+
+  crates.conv."0.3.3" = deps: { features?(features_.conv."0.3.3" deps {}) }: buildRustCrate {
+    crateName = "conv";
+    version = "0.3.3";
+    description = "This crate provides a number of conversion traits with more specific semantics than those provided by 'as' or 'From'/'Into'.";
+    authors = [ "Daniel Keep <daniel.keep@gmail.com>" ];
+    sha256 = "08rl72k1a48xah0ar5l9v1bw19pp8jdw2pdkd3vvj9ijsyyg9yik";
+    dependencies = mapFeatures features ([
+      (crates."custom_derive"."${deps."conv"."0.3.3"."custom_derive"}" deps)
+    ]);
+  };
+  features_.conv."0.3.3" = deps: f: updateFeatures f (rec {
+    conv."0.3.3".default = (f.conv."0.3.3".default or true);
+    custom_derive."${deps.conv."0.3.3".custom_derive}".default = true;
+  }) [
+    (features_.custom_derive."${deps."conv"."0.3.3"."custom_derive"}" deps)
+  ];
+
+
+# end
+# core-foundation-0.5.1
+
+  crates.core_foundation."0.5.1" = deps: { features?(features_.core_foundation."0.5.1" deps {}) }: buildRustCrate {
+    crateName = "core-foundation";
+    version = "0.5.1";
+    description = "Bindings to Core Foundation for OS X";
+    authors = [ "The Servo Project Developers" ];
+    sha256 = "03s11z23rb1kk325c34rmsbd7k0l5rkzk4q6id55n174z28zqln1";
+    dependencies = mapFeatures features ([
+      (crates."core_foundation_sys"."${deps."core_foundation"."0.5.1"."core_foundation_sys"}" deps)
+      (crates."libc"."${deps."core_foundation"."0.5.1"."libc"}" deps)
+    ]);
+    features = mkFeatures (features."core_foundation"."0.5.1" or {});
+  };
+  features_.core_foundation."0.5.1" = deps: f: updateFeatures f (rec {
+    core_foundation = fold recursiveUpdate {} [
+      { "0.5.1"."chrono" =
+        (f.core_foundation."0.5.1"."chrono" or false) ||
+        (f.core_foundation."0.5.1".with-chrono or false) ||
+        (core_foundation."0.5.1"."with-chrono" or false); }
+      { "0.5.1"."uuid" =
+        (f.core_foundation."0.5.1"."uuid" or false) ||
+        (f.core_foundation."0.5.1".with-uuid or false) ||
+        (core_foundation."0.5.1"."with-uuid" or false); }
+      { "0.5.1".default = (f.core_foundation."0.5.1".default or true); }
+    ];
+    core_foundation_sys = fold recursiveUpdate {} [
+      { "${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_7_support" =
+        (f.core_foundation_sys."${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_7_support" or false) ||
+        (core_foundation."0.5.1"."mac_os_10_7_support" or false) ||
+        (f."core_foundation"."0.5.1"."mac_os_10_7_support" or false); }
+      { "${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_8_features" =
+        (f.core_foundation_sys."${deps.core_foundation."0.5.1".core_foundation_sys}"."mac_os_10_8_features" or false) ||
+        (core_foundation."0.5.1"."mac_os_10_8_features" or false) ||
+        (f."core_foundation"."0.5.1"."mac_os_10_8_features" or false); }
+      { "${deps.core_foundation."0.5.1".core_foundation_sys}".default = true; }
+    ];
+    libc."${deps.core_foundation."0.5.1".libc}".default = true;
+  }) [
+    (features_.core_foundation_sys."${deps."core_foundation"."0.5.1"."core_foundation_sys"}" deps)
+    (features_.libc."${deps."core_foundation"."0.5.1"."libc"}" deps)
+  ];
+
+
+# end
+# core-foundation-sys-0.5.1
+
+  crates.core_foundation_sys."0.5.1" = deps: { features?(features_.core_foundation_sys."0.5.1" deps {}) }: buildRustCrate {
+    crateName = "core-foundation-sys";
+    version = "0.5.1";
+    description = "Bindings to Core Foundation for OS X";
+    authors = [ "The Servo Project Developers" ];
+    sha256 = "0qbrasll5nw1bgr071i8s8jc975d0y4qfysf868bh9xp0f6vcypa";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."core_foundation_sys"."0.5.1"."libc"}" deps)
+    ]);
+    features = mkFeatures (features."core_foundation_sys"."0.5.1" or {});
+  };
+  features_.core_foundation_sys."0.5.1" = deps: f: updateFeatures f (rec {
+    core_foundation_sys."0.5.1".default = (f.core_foundation_sys."0.5.1".default or true);
+    libc."${deps.core_foundation_sys."0.5.1".libc}".default = true;
+  }) [
+    (features_.libc."${deps."core_foundation_sys"."0.5.1"."libc"}" deps)
+  ];
+
+
+# end
+# crc32fast-1.1.1
+
+  crates.crc32fast."1.1.1" = deps: { features?(features_.crc32fast."1.1.1" deps {}) }: buildRustCrate {
+    crateName = "crc32fast";
+    version = "1.1.1";
+    description = "Fast, SIMD-accelerated CRC32 (IEEE) checksum computation";
+    authors = [ "Sam Rijs <srijs@airpost.net>" "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1rwvhb98w41mk5phr84mryally58f68h0v933772gdxqvqbcayqy";
+  };
+  features_.crc32fast."1.1.1" = deps: f: updateFeatures f (rec {
+    crc32fast."1.1.1".default = (f.crc32fast."1.1.1".default or true);
+  }) [];
+
+
+# end
+# crossbeam-0.2.10
+
+  crates.crossbeam."0.2.10" = deps: { features?(features_.crossbeam."0.2.10" deps {}) }: buildRustCrate {
+    crateName = "crossbeam";
+    version = "0.2.10";
+    description = "Support for lock-free data structures, synchronizers, and parallel programming";
+    authors = [ "Aaron Turon <aturon@mozilla.com>" ];
+    sha256 = "1k1a4q5gy7zakiw39hdzrblnw3kk4nsqmkdp1dpzh8h558140rhq";
+    features = mkFeatures (features."crossbeam"."0.2.10" or {});
+  };
+  features_.crossbeam."0.2.10" = deps: f: updateFeatures f (rec {
+    crossbeam."0.2.10".default = (f.crossbeam."0.2.10".default or true);
+  }) [];
+
+
+# end
+# crossbeam-deque-0.6.2
+
+  crates.crossbeam_deque."0.6.2" = deps: { features?(features_.crossbeam_deque."0.6.2" deps {}) }: buildRustCrate {
+    crateName = "crossbeam-deque";
+    version = "0.6.2";
+    description = "Concurrent work-stealing deque";
+    authors = [ "The Crossbeam Project Developers" ];
+    sha256 = "0qjdpq03snj6xp5gydgy1bdd5zzwpdxa57vhky3mf4djxiq81ara";
+    dependencies = mapFeatures features ([
+      (crates."crossbeam_epoch"."${deps."crossbeam_deque"."0.6.2"."crossbeam_epoch"}" deps)
+      (crates."crossbeam_utils"."${deps."crossbeam_deque"."0.6.2"."crossbeam_utils"}" deps)
+    ]);
+  };
+  features_.crossbeam_deque."0.6.2" = deps: f: updateFeatures f (rec {
+    crossbeam_deque."0.6.2".default = (f.crossbeam_deque."0.6.2".default or true);
+    crossbeam_epoch."${deps.crossbeam_deque."0.6.2".crossbeam_epoch}".default = true;
+    crossbeam_utils."${deps.crossbeam_deque."0.6.2".crossbeam_utils}".default = true;
+  }) [
+    (features_.crossbeam_epoch."${deps."crossbeam_deque"."0.6.2"."crossbeam_epoch"}" deps)
+    (features_.crossbeam_utils."${deps."crossbeam_deque"."0.6.2"."crossbeam_utils"}" deps)
+  ];
+
+
+# end
+# crossbeam-epoch-0.6.1
+
+  crates.crossbeam_epoch."0.6.1" = deps: { features?(features_.crossbeam_epoch."0.6.1" deps {}) }: buildRustCrate {
+    crateName = "crossbeam-epoch";
+    version = "0.6.1";
+    description = "Epoch-based garbage collection";
+    authors = [ "The Crossbeam Project Developers" ];
+    sha256 = "0qlwzsf2xmdjbh6pv9bxra2qdq72cmywq4fq1q114zw2s06zr039";
+    dependencies = mapFeatures features ([
+      (crates."arrayvec"."${deps."crossbeam_epoch"."0.6.1"."arrayvec"}" deps)
+      (crates."cfg_if"."${deps."crossbeam_epoch"."0.6.1"."cfg_if"}" deps)
+      (crates."crossbeam_utils"."${deps."crossbeam_epoch"."0.6.1"."crossbeam_utils"}" deps)
+      (crates."memoffset"."${deps."crossbeam_epoch"."0.6.1"."memoffset"}" deps)
+      (crates."scopeguard"."${deps."crossbeam_epoch"."0.6.1"."scopeguard"}" deps)
+    ]
+      ++ (if features.crossbeam_epoch."0.6.1".lazy_static or false then [ (crates.lazy_static."${deps."crossbeam_epoch"."0.6.1".lazy_static}" deps) ] else []));
+    features = mkFeatures (features."crossbeam_epoch"."0.6.1" or {});
+  };
+  features_.crossbeam_epoch."0.6.1" = deps: f: updateFeatures f (rec {
+    arrayvec = fold recursiveUpdate {} [
+      { "${deps.crossbeam_epoch."0.6.1".arrayvec}"."use_union" =
+        (f.arrayvec."${deps.crossbeam_epoch."0.6.1".arrayvec}"."use_union" or false) ||
+        (crossbeam_epoch."0.6.1"."nightly" or false) ||
+        (f."crossbeam_epoch"."0.6.1"."nightly" or false); }
+      { "${deps.crossbeam_epoch."0.6.1".arrayvec}".default = (f.arrayvec."${deps.crossbeam_epoch."0.6.1".arrayvec}".default or false); }
+    ];
+    cfg_if."${deps.crossbeam_epoch."0.6.1".cfg_if}".default = true;
+    crossbeam_epoch = fold recursiveUpdate {} [
+      { "0.6.1"."lazy_static" =
+        (f.crossbeam_epoch."0.6.1"."lazy_static" or false) ||
+        (f.crossbeam_epoch."0.6.1".std or false) ||
+        (crossbeam_epoch."0.6.1"."std" or false); }
+      { "0.6.1"."std" =
+        (f.crossbeam_epoch."0.6.1"."std" or false) ||
+        (f.crossbeam_epoch."0.6.1".default or false) ||
+        (crossbeam_epoch."0.6.1"."default" or false); }
+      { "0.6.1".default = (f.crossbeam_epoch."0.6.1".default or true); }
+    ];
+    crossbeam_utils = fold recursiveUpdate {} [
+      { "${deps.crossbeam_epoch."0.6.1".crossbeam_utils}"."std" =
+        (f.crossbeam_utils."${deps.crossbeam_epoch."0.6.1".crossbeam_utils}"."std" or false) ||
+        (crossbeam_epoch."0.6.1"."std" or false) ||
+        (f."crossbeam_epoch"."0.6.1"."std" or false); }
+      { "${deps.crossbeam_epoch."0.6.1".crossbeam_utils}".default = (f.crossbeam_utils."${deps.crossbeam_epoch."0.6.1".crossbeam_utils}".default or false); }
+    ];
+    lazy_static."${deps.crossbeam_epoch."0.6.1".lazy_static}".default = true;
+    memoffset."${deps.crossbeam_epoch."0.6.1".memoffset}".default = true;
+    scopeguard."${deps.crossbeam_epoch."0.6.1".scopeguard}".default = (f.scopeguard."${deps.crossbeam_epoch."0.6.1".scopeguard}".default or false);
+  }) [
+    (features_.arrayvec."${deps."crossbeam_epoch"."0.6.1"."arrayvec"}" deps)
+    (features_.cfg_if."${deps."crossbeam_epoch"."0.6.1"."cfg_if"}" deps)
+    (features_.crossbeam_utils."${deps."crossbeam_epoch"."0.6.1"."crossbeam_utils"}" deps)
+    (features_.lazy_static."${deps."crossbeam_epoch"."0.6.1"."lazy_static"}" deps)
+    (features_.memoffset."${deps."crossbeam_epoch"."0.6.1"."memoffset"}" deps)
+    (features_.scopeguard."${deps."crossbeam_epoch"."0.6.1"."scopeguard"}" deps)
+  ];
+
+
+# end
+# crossbeam-utils-0.6.1
+
+  crates.crossbeam_utils."0.6.1" = deps: { features?(features_.crossbeam_utils."0.6.1" deps {}) }: buildRustCrate {
+    crateName = "crossbeam-utils";
+    version = "0.6.1";
+    description = "Utilities for concurrent programming";
+    authors = [ "The Crossbeam Project Developers" ];
+    sha256 = "031lk6ls49yvwkdxhjm4fvg81iww01h108jq1cnlh88yzbcnwn2c";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."crossbeam_utils"."0.6.1"."cfg_if"}" deps)
+    ]);
+    features = mkFeatures (features."crossbeam_utils"."0.6.1" or {});
+  };
+  features_.crossbeam_utils."0.6.1" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.crossbeam_utils."0.6.1".cfg_if}".default = true;
+    crossbeam_utils = fold recursiveUpdate {} [
+      { "0.6.1"."std" =
+        (f.crossbeam_utils."0.6.1"."std" or false) ||
+        (f.crossbeam_utils."0.6.1".default or false) ||
+        (crossbeam_utils."0.6.1"."default" or false); }
+      { "0.6.1".default = (f.crossbeam_utils."0.6.1".default or true); }
+    ];
+  }) [
+    (features_.cfg_if."${deps."crossbeam_utils"."0.6.1"."cfg_if"}" deps)
+  ];
+
+
+# end
+# custom_derive-0.1.7
+
+  crates.custom_derive."0.1.7" = deps: { features?(features_.custom_derive."0.1.7" deps {}) }: buildRustCrate {
+    crateName = "custom_derive";
+    version = "0.1.7";
+    description = "(Note: superseded by `macro-attr`) This crate provides a macro that enables the use of custom derive attributes.";
+    authors = [ "Daniel Keep <daniel.keep@gmail.com>" ];
+    sha256 = "160q3pzri2fgrr6czfdkwy1sbddki2za96r7ivvyii52qp1523zs";
+    features = mkFeatures (features."custom_derive"."0.1.7" or {});
+  };
+  features_.custom_derive."0.1.7" = deps: f: updateFeatures f (rec {
+    custom_derive = fold recursiveUpdate {} [
+      { "0.1.7"."std" =
+        (f.custom_derive."0.1.7"."std" or false) ||
+        (f.custom_derive."0.1.7".default or false) ||
+        (custom_derive."0.1.7"."default" or false); }
+      { "0.1.7".default = (f.custom_derive."0.1.7".default or true); }
+    ];
+  }) [];
+
+
+# end
+# derive-error-0.0.3
+
+  crates.derive_error."0.0.3" = deps: { features?(features_.derive_error."0.0.3" deps {}) }: buildRustCrate {
+    crateName = "derive-error";
+    version = "0.0.3";
+    description = "Derive macro for Error using macros 1.1";
+    authors = [ "rushmorem <rushmore@webenchanter.com>" ];
+    sha256 = "0239vzxn5xr9nm3i4d6hmqy7dv8llcjblgh1xixfk5dcgcqan77y";
+    procMacro = true;
+    dependencies = mapFeatures features ([
+      (crates."case"."${deps."derive_error"."0.0.3"."case"}" deps)
+      (crates."quote"."${deps."derive_error"."0.0.3"."quote"}" deps)
+      (crates."syn"."${deps."derive_error"."0.0.3"."syn"}" deps)
+    ]);
+  };
+  features_.derive_error."0.0.3" = deps: f: updateFeatures f (rec {
+    case."${deps.derive_error."0.0.3".case}".default = true;
+    derive_error."0.0.3".default = (f.derive_error."0.0.3".default or true);
+    quote."${deps.derive_error."0.0.3".quote}".default = true;
+    syn."${deps.derive_error."0.0.3".syn}".default = true;
+  }) [
+    (features_.case."${deps."derive_error"."0.0.3"."case"}" deps)
+    (features_.quote."${deps."derive_error"."0.0.3"."quote"}" deps)
+    (features_.syn."${deps."derive_error"."0.0.3"."syn"}" deps)
+  ];
+
+
+# end
+# dtoa-0.4.2
+
+  crates.dtoa."0.4.2" = deps: { features?(features_.dtoa."0.4.2" deps {}) }: buildRustCrate {
+    crateName = "dtoa";
+    version = "0.4.2";
+    description = "Fast functions for printing floating-point primitives to an io::Write";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1bxsh6fags7nr36vlz07ik2a1rzyipc8x1y30kjk832hf2pzadmw";
+  };
+  features_.dtoa."0.4.2" = deps: f: updateFeatures f (rec {
+    dtoa."0.4.2".default = (f.dtoa."0.4.2".default or true);
+  }) [];
+
+
+# end
+# either-1.4.0
+
+  crates.either."1.4.0" = deps: { features?(features_.either."1.4.0" deps {}) }: buildRustCrate {
+    crateName = "either";
+    version = "1.4.0";
+    description = "The enum [`Either`] with variants `Left` and `Right` is a general purpose sum type with two cases.\n";
+    authors = [ "bluss" ];
+    sha256 = "04kpfd84lvyrkb2z4sljlz2d3d5qczd0sb1yy37fgijq2yx3vb37";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."either"."1.4.0" or {});
+  };
+  features_.either."1.4.0" = deps: f: updateFeatures f (rec {
+    either = fold recursiveUpdate {} [
+      { "1.4.0"."use_std" =
+        (f.either."1.4.0"."use_std" or false) ||
+        (f.either."1.4.0".default or false) ||
+        (either."1.4.0"."default" or false); }
+      { "1.4.0".default = (f.either."1.4.0".default or true); }
+    ];
+  }) [];
+
+
+# end
+# encoding_rs-0.8.13
+
+  crates.encoding_rs."0.8.13" = deps: { features?(features_.encoding_rs."0.8.13" deps {}) }: buildRustCrate {
+    crateName = "encoding_rs";
+    version = "0.8.13";
+    description = "A Gecko-oriented implementation of the Encoding Standard";
+    authors = [ "Henri Sivonen <hsivonen@hsivonen.fi>" ];
+    sha256 = "1a91x1cnw1iz3hc32mvdmwhbqcfx36kk04pnil17mcii1ni6xyy5";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."encoding_rs"."0.8.13"."cfg_if"}" deps)
+    ]);
+    features = mkFeatures (features."encoding_rs"."0.8.13" or {});
+  };
+  features_.encoding_rs."0.8.13" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.encoding_rs."0.8.13".cfg_if}".default = true;
+    encoding_rs = fold recursiveUpdate {} [
+      { "0.8.13"."fast-big5-hanzi-encode" =
+        (f.encoding_rs."0.8.13"."fast-big5-hanzi-encode" or false) ||
+        (f.encoding_rs."0.8.13".fast-legacy-encode or false) ||
+        (encoding_rs."0.8.13"."fast-legacy-encode" or false); }
+      { "0.8.13"."fast-gb-hanzi-encode" =
+        (f.encoding_rs."0.8.13"."fast-gb-hanzi-encode" or false) ||
+        (f.encoding_rs."0.8.13".fast-legacy-encode or false) ||
+        (encoding_rs."0.8.13"."fast-legacy-encode" or false); }
+      { "0.8.13"."fast-hangul-encode" =
+        (f.encoding_rs."0.8.13"."fast-hangul-encode" or false) ||
+        (f.encoding_rs."0.8.13".fast-legacy-encode or false) ||
+        (encoding_rs."0.8.13"."fast-legacy-encode" or false); }
+      { "0.8.13"."fast-hanja-encode" =
+        (f.encoding_rs."0.8.13"."fast-hanja-encode" or false) ||
+        (f.encoding_rs."0.8.13".fast-legacy-encode or false) ||
+        (encoding_rs."0.8.13"."fast-legacy-encode" or false); }
+      { "0.8.13"."fast-kanji-encode" =
+        (f.encoding_rs."0.8.13"."fast-kanji-encode" or false) ||
+        (f.encoding_rs."0.8.13".fast-legacy-encode or false) ||
+        (encoding_rs."0.8.13"."fast-legacy-encode" or false); }
+      { "0.8.13"."simd" =
+        (f.encoding_rs."0.8.13"."simd" or false) ||
+        (f.encoding_rs."0.8.13".simd-accel or false) ||
+        (encoding_rs."0.8.13"."simd-accel" or false); }
+      { "0.8.13".default = (f.encoding_rs."0.8.13".default or true); }
+    ];
+  }) [
+    (features_.cfg_if."${deps."encoding_rs"."0.8.13"."cfg_if"}" deps)
+  ];
+
+
+# end
+# exitcode-1.1.2
+
+  crates.exitcode."1.1.2" = deps: { features?(features_.exitcode."1.1.2" deps {}) }: buildRustCrate {
+    crateName = "exitcode";
+    version = "1.1.2";
+    description = "Preferred system exit codes as defined by sysexits.h";
+    authors = [ "Ben Wilber <benwilber@gmail.com>" ];
+    sha256 = "1cw9p4vzbscvyrbzv7z68gv2cairrns2d4wcb4nkahkcjk25phip";
+  };
+  features_.exitcode."1.1.2" = deps: f: updateFeatures f (rec {
+    exitcode."1.1.2".default = (f.exitcode."1.1.2".default or true);
+  }) [];
+
+
+# end
+# filetime-0.1.14
+
+  crates.filetime."0.1.14" = deps: { features?(features_.filetime."0.1.14" deps {}) }: buildRustCrate {
+    crateName = "filetime";
+    version = "0.1.14";
+    description = "Platform-agnostic accessors of timestamps in File metadata\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "0i6dvc3ba7vl1iccc91k7c9bv9j5md98mbvlmfy0kicikx0ffn08";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."filetime"."0.1.14"."cfg_if"}" deps)
+    ])
+      ++ (if kernel == "redox" then mapFeatures features ([
+      (crates."redox_syscall"."${deps."filetime"."0.1.14"."redox_syscall"}" deps)
+    ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."filetime"."0.1.14"."libc"}" deps)
+    ]) else []);
+  };
+  features_.filetime."0.1.14" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.filetime."0.1.14".cfg_if}".default = true;
+    filetime."0.1.14".default = (f.filetime."0.1.14".default or true);
+    libc."${deps.filetime."0.1.14".libc}".default = true;
+    redox_syscall."${deps.filetime."0.1.14".redox_syscall}".default = true;
+  }) [
+    (features_.cfg_if."${deps."filetime"."0.1.14"."cfg_if"}" deps)
+    (features_.redox_syscall."${deps."filetime"."0.1.14"."redox_syscall"}" deps)
+    (features_.libc."${deps."filetime"."0.1.14"."libc"}" deps)
+  ];
+
+
+# end
+# flate2-0.2.20
+
+  crates.flate2."0.2.20" = deps: { features?(features_.flate2."0.2.20" deps {}) }: buildRustCrate {
+    crateName = "flate2";
+    version = "0.2.20";
+    description = "Bindings to miniz.c for DEFLATE compression and decompression exposed as\nReader/Writer streams. Contains bindings for zlib, deflate, and gzip-based\nstreams.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1am0d2vmqym1vcg7rvv516vpcrbhdn1jisy0q03r3nbzdzh54ppl";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."flate2"."0.2.20"."libc"}" deps)
+    ]
+      ++ (if features.flate2."0.2.20".miniz-sys or false then [ (crates.miniz_sys."${deps."flate2"."0.2.20".miniz_sys}" deps) ] else []));
+    features = mkFeatures (features."flate2"."0.2.20" or {});
+  };
+  features_.flate2."0.2.20" = deps: f: updateFeatures f (rec {
+    flate2 = fold recursiveUpdate {} [
+      { "0.2.20"."futures" =
+        (f.flate2."0.2.20"."futures" or false) ||
+        (f.flate2."0.2.20".tokio or false) ||
+        (flate2."0.2.20"."tokio" or false); }
+      { "0.2.20"."libz-sys" =
+        (f.flate2."0.2.20"."libz-sys" or false) ||
+        (f.flate2."0.2.20".zlib or false) ||
+        (flate2."0.2.20"."zlib" or false); }
+      { "0.2.20"."miniz-sys" =
+        (f.flate2."0.2.20"."miniz-sys" or false) ||
+        (f.flate2."0.2.20".default or false) ||
+        (flate2."0.2.20"."default" or false); }
+      { "0.2.20"."tokio-io" =
+        (f.flate2."0.2.20"."tokio-io" or false) ||
+        (f.flate2."0.2.20".tokio or false) ||
+        (flate2."0.2.20"."tokio" or false); }
+      { "0.2.20".default = (f.flate2."0.2.20".default or true); }
+    ];
+    libc."${deps.flate2."0.2.20".libc}".default = true;
+    miniz_sys."${deps.flate2."0.2.20".miniz_sys}".default = true;
+  }) [
+    (features_.libc."${deps."flate2"."0.2.20"."libc"}" deps)
+    (features_.miniz_sys."${deps."flate2"."0.2.20"."miniz_sys"}" deps)
+  ];
+
+
+# end
+# fnv-1.0.6
+
+  crates.fnv."1.0.6" = deps: { features?(features_.fnv."1.0.6" deps {}) }: buildRustCrate {
+    crateName = "fnv";
+    version = "1.0.6";
+    description = "Fowler–Noll–Vo hash function";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "128mlh23y3gg6ag5h8iiqlcbl59smisdzraqy88ldrf75kbw27ip";
+    libPath = "lib.rs";
+  };
+  features_.fnv."1.0.6" = deps: f: updateFeatures f (rec {
+    fnv."1.0.6".default = (f.fnv."1.0.6".default or true);
+  }) [];
+
+
+# end
+# foreign-types-0.3.2
+
+  crates.foreign_types."0.3.2" = deps: { features?(features_.foreign_types."0.3.2" deps {}) }: buildRustCrate {
+    crateName = "foreign-types";
+    version = "0.3.2";
+    description = "A framework for Rust wrappers over C APIs";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "105n8sp2djb1s5lzrw04p7ss3dchr5qa3canmynx396nh3vwm2p8";
+    dependencies = mapFeatures features ([
+      (crates."foreign_types_shared"."${deps."foreign_types"."0.3.2"."foreign_types_shared"}" deps)
+    ]);
+  };
+  features_.foreign_types."0.3.2" = deps: f: updateFeatures f (rec {
+    foreign_types."0.3.2".default = (f.foreign_types."0.3.2".default or true);
+    foreign_types_shared."${deps.foreign_types."0.3.2".foreign_types_shared}".default = true;
+  }) [
+    (features_.foreign_types_shared."${deps."foreign_types"."0.3.2"."foreign_types_shared"}" deps)
+  ];
+
+
+# end
+# foreign-types-shared-0.1.1
+
+  crates.foreign_types_shared."0.1.1" = deps: { features?(features_.foreign_types_shared."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "foreign-types-shared";
+    version = "0.1.1";
+    description = "An internal crate used by foreign-types";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "0b6cnvqbflws8dxywk4589vgbz80049lz4x1g9dfy4s1ppd3g4z5";
+  };
+  features_.foreign_types_shared."0.1.1" = deps: f: updateFeatures f (rec {
+    foreign_types_shared."0.1.1".default = (f.foreign_types_shared."0.1.1".default or true);
+  }) [];
+
+
+# end
+# fuchsia-zircon-0.2.1
+
+  crates.fuchsia_zircon."0.2.1" = deps: { features?(features_.fuchsia_zircon."0.2.1" deps {}) }: buildRustCrate {
+    crateName = "fuchsia-zircon";
+    version = "0.2.1";
+    description = "Rust bindings for the Zircon kernel";
+    authors = [ "Raph Levien <raph@google.com>" ];
+    sha256 = "0yd4rd7ql1vdr349p6vgq2dnwmpylky1kjp8g1zgvp250jxrhddb";
+    dependencies = mapFeatures features ([
+      (crates."fuchsia_zircon_sys"."${deps."fuchsia_zircon"."0.2.1"."fuchsia_zircon_sys"}" deps)
+    ]);
+  };
+  features_.fuchsia_zircon."0.2.1" = deps: f: updateFeatures f (rec {
+    fuchsia_zircon."0.2.1".default = (f.fuchsia_zircon."0.2.1".default or true);
+    fuchsia_zircon_sys."${deps.fuchsia_zircon."0.2.1".fuchsia_zircon_sys}".default = true;
+  }) [
+    (features_.fuchsia_zircon_sys."${deps."fuchsia_zircon"."0.2.1"."fuchsia_zircon_sys"}" deps)
+  ];
+
+
+# end
+# fuchsia-zircon-0.3.3
+
+  crates.fuchsia_zircon."0.3.3" = deps: { features?(features_.fuchsia_zircon."0.3.3" deps {}) }: buildRustCrate {
+    crateName = "fuchsia-zircon";
+    version = "0.3.3";
+    description = "Rust bindings for the Zircon kernel";
+    authors = [ "Raph Levien <raph@google.com>" ];
+    sha256 = "0jrf4shb1699r4la8z358vri8318w4mdi6qzfqy30p2ymjlca4gk";
+    dependencies = mapFeatures features ([
+      (crates."bitflags"."${deps."fuchsia_zircon"."0.3.3"."bitflags"}" deps)
+      (crates."fuchsia_zircon_sys"."${deps."fuchsia_zircon"."0.3.3"."fuchsia_zircon_sys"}" deps)
+    ]);
+  };
+  features_.fuchsia_zircon."0.3.3" = deps: f: updateFeatures f (rec {
+    bitflags."${deps.fuchsia_zircon."0.3.3".bitflags}".default = true;
+    fuchsia_zircon."0.3.3".default = (f.fuchsia_zircon."0.3.3".default or true);
+    fuchsia_zircon_sys."${deps.fuchsia_zircon."0.3.3".fuchsia_zircon_sys}".default = true;
+  }) [
+    (features_.bitflags."${deps."fuchsia_zircon"."0.3.3"."bitflags"}" deps)
+    (features_.fuchsia_zircon_sys."${deps."fuchsia_zircon"."0.3.3"."fuchsia_zircon_sys"}" deps)
+  ];
+
+
+# end
+# fuchsia-zircon-sys-0.2.0
+
+  crates.fuchsia_zircon_sys."0.2.0" = deps: { features?(features_.fuchsia_zircon_sys."0.2.0" deps {}) }: buildRustCrate {
+    crateName = "fuchsia-zircon-sys";
+    version = "0.2.0";
+    description = "Low-level Rust bindings for the Zircon kernel";
+    authors = [ "Raph Levien <raph@google.com>" ];
+    sha256 = "1yrqsrjwlhl3di6prxf5xmyd82gyjaysldbka5wwk83z11mpqh4w";
+    dependencies = mapFeatures features ([
+      (crates."bitflags"."${deps."fuchsia_zircon_sys"."0.2.0"."bitflags"}" deps)
+    ]);
+  };
+  features_.fuchsia_zircon_sys."0.2.0" = deps: f: updateFeatures f (rec {
+    bitflags."${deps.fuchsia_zircon_sys."0.2.0".bitflags}".default = true;
+    fuchsia_zircon_sys."0.2.0".default = (f.fuchsia_zircon_sys."0.2.0".default or true);
+  }) [
+    (features_.bitflags."${deps."fuchsia_zircon_sys"."0.2.0"."bitflags"}" deps)
+  ];
+
+
+# end
+# fuchsia-zircon-sys-0.3.3
+
+  crates.fuchsia_zircon_sys."0.3.3" = deps: { features?(features_.fuchsia_zircon_sys."0.3.3" deps {}) }: buildRustCrate {
+    crateName = "fuchsia-zircon-sys";
+    version = "0.3.3";
+    description = "Low-level Rust bindings for the Zircon kernel";
+    authors = [ "Raph Levien <raph@google.com>" ];
+    sha256 = "08jp1zxrm9jbrr6l26bjal4dbm8bxfy57ickdgibsqxr1n9j3hf5";
+  };
+  features_.fuchsia_zircon_sys."0.3.3" = deps: f: updateFeatures f (rec {
+    fuchsia_zircon_sys."0.3.3".default = (f.fuchsia_zircon_sys."0.3.3".default or true);
+  }) [];
+
+
+# end
+# futures-0.1.25
+
+  crates.futures."0.1.25" = deps: { features?(features_.futures."0.1.25" deps {}) }: buildRustCrate {
+    crateName = "futures";
+    version = "0.1.25";
+    description = "An implementation of futures and streams featuring zero allocations,\ncomposability, and iterator-like interfaces.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1gdn9z3mi3jjzbxgvawqh90895130c3ydks55rshja0ncpn985q3";
+    features = mkFeatures (features."futures"."0.1.25" or {});
+  };
+  features_.futures."0.1.25" = deps: f: updateFeatures f (rec {
+    futures = fold recursiveUpdate {} [
+      { "0.1.25"."use_std" =
+        (f.futures."0.1.25"."use_std" or false) ||
+        (f.futures."0.1.25".default or false) ||
+        (futures."0.1.25"."default" or false); }
+      { "0.1.25"."with-deprecated" =
+        (f.futures."0.1.25"."with-deprecated" or false) ||
+        (f.futures."0.1.25".default or false) ||
+        (futures."0.1.25"."default" or false); }
+      { "0.1.25".default = (f.futures."0.1.25".default or true); }
+    ];
+  }) [];
+
+
+# end
+# futures-cpupool-0.1.7
+
+  crates.futures_cpupool."0.1.7" = deps: { features?(features_.futures_cpupool."0.1.7" deps {}) }: buildRustCrate {
+    crateName = "futures-cpupool";
+    version = "0.1.7";
+    description = "An implementation of thread pools which hand out futures to the results of the\ncomputation on the threads themselves.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1m0z5d54q1zr687acb4fh5fb3x692vr5ais6135lvp7vxap6p0xb";
+    dependencies = mapFeatures features ([
+      (crates."futures"."${deps."futures_cpupool"."0.1.7"."futures"}" deps)
+      (crates."num_cpus"."${deps."futures_cpupool"."0.1.7"."num_cpus"}" deps)
+    ]);
+    features = mkFeatures (features."futures_cpupool"."0.1.7" or {});
+  };
+  features_.futures_cpupool."0.1.7" = deps: f: updateFeatures f (rec {
+    futures = fold recursiveUpdate {} [
+      { "${deps.futures_cpupool."0.1.7".futures}"."use_std" = true; }
+      { "${deps.futures_cpupool."0.1.7".futures}"."with-deprecated" =
+        (f.futures."${deps.futures_cpupool."0.1.7".futures}"."with-deprecated" or false) ||
+        (futures_cpupool."0.1.7"."with-deprecated" or false) ||
+        (f."futures_cpupool"."0.1.7"."with-deprecated" or false); }
+      { "${deps.futures_cpupool."0.1.7".futures}".default = (f.futures."${deps.futures_cpupool."0.1.7".futures}".default or false); }
+    ];
+    futures_cpupool = fold recursiveUpdate {} [
+      { "0.1.7"."with-deprecated" =
+        (f.futures_cpupool."0.1.7"."with-deprecated" or false) ||
+        (f.futures_cpupool."0.1.7".default or false) ||
+        (futures_cpupool."0.1.7"."default" or false); }
+      { "0.1.7".default = (f.futures_cpupool."0.1.7".default or true); }
+    ];
+    num_cpus."${deps.futures_cpupool."0.1.7".num_cpus}".default = true;
+  }) [
+    (features_.futures."${deps."futures_cpupool"."0.1.7"."futures"}" deps)
+    (features_.num_cpus."${deps."futures_cpupool"."0.1.7"."num_cpus"}" deps)
+  ];
+
+
+# end
+# h2-0.1.13
+
+  crates.h2."0.1.13" = deps: { features?(features_.h2."0.1.13" deps {}) }: buildRustCrate {
+    crateName = "h2";
+    version = "0.1.13";
+    description = "An HTTP/2.0 client and server";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "1nmbr5i1ssqbnfwmkgsfzghzr4m8676z38s2dmzs9gchha7n8wv7";
+    dependencies = mapFeatures features ([
+      (crates."byteorder"."${deps."h2"."0.1.13"."byteorder"}" deps)
+      (crates."bytes"."${deps."h2"."0.1.13"."bytes"}" deps)
+      (crates."fnv"."${deps."h2"."0.1.13"."fnv"}" deps)
+      (crates."futures"."${deps."h2"."0.1.13"."futures"}" deps)
+      (crates."http"."${deps."h2"."0.1.13"."http"}" deps)
+      (crates."indexmap"."${deps."h2"."0.1.13"."indexmap"}" deps)
+      (crates."log"."${deps."h2"."0.1.13"."log"}" deps)
+      (crates."slab"."${deps."h2"."0.1.13"."slab"}" deps)
+      (crates."string"."${deps."h2"."0.1.13"."string"}" deps)
+      (crates."tokio_io"."${deps."h2"."0.1.13"."tokio_io"}" deps)
+    ]);
+    features = mkFeatures (features."h2"."0.1.13" or {});
+  };
+  features_.h2."0.1.13" = deps: f: updateFeatures f (rec {
+    byteorder."${deps.h2."0.1.13".byteorder}".default = true;
+    bytes."${deps.h2."0.1.13".bytes}".default = true;
+    fnv."${deps.h2."0.1.13".fnv}".default = true;
+    futures."${deps.h2."0.1.13".futures}".default = true;
+    h2."0.1.13".default = (f.h2."0.1.13".default or true);
+    http."${deps.h2."0.1.13".http}".default = true;
+    indexmap."${deps.h2."0.1.13".indexmap}".default = true;
+    log."${deps.h2."0.1.13".log}".default = true;
+    slab."${deps.h2."0.1.13".slab}".default = true;
+    string."${deps.h2."0.1.13".string}".default = true;
+    tokio_io."${deps.h2."0.1.13".tokio_io}".default = true;
+  }) [
+    (features_.byteorder."${deps."h2"."0.1.13"."byteorder"}" deps)
+    (features_.bytes."${deps."h2"."0.1.13"."bytes"}" deps)
+    (features_.fnv."${deps."h2"."0.1.13"."fnv"}" deps)
+    (features_.futures."${deps."h2"."0.1.13"."futures"}" deps)
+    (features_.http."${deps."h2"."0.1.13"."http"}" deps)
+    (features_.indexmap."${deps."h2"."0.1.13"."indexmap"}" deps)
+    (features_.log."${deps."h2"."0.1.13"."log"}" deps)
+    (features_.slab."${deps."h2"."0.1.13"."slab"}" deps)
+    (features_.string."${deps."h2"."0.1.13"."string"}" deps)
+    (features_.tokio_io."${deps."h2"."0.1.13"."tokio_io"}" deps)
+  ];
+
+
+# end
+# http-0.1.14
+
+  crates.http."0.1.14" = deps: { features?(features_.http."0.1.14" deps {}) }: buildRustCrate {
+    crateName = "http";
+    version = "0.1.14";
+    description = "A set of types for representing HTTP requests and responses.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" "Carl Lerche <me@carllerche.com>" "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "1828cz2fh25nmp9rca0yzr548phsvkmzsqhspjnscqg1l9yc1557";
+    dependencies = mapFeatures features ([
+      (crates."bytes"."${deps."http"."0.1.14"."bytes"}" deps)
+      (crates."fnv"."${deps."http"."0.1.14"."fnv"}" deps)
+      (crates."itoa"."${deps."http"."0.1.14"."itoa"}" deps)
+    ]);
+  };
+  features_.http."0.1.14" = deps: f: updateFeatures f (rec {
+    bytes."${deps.http."0.1.14".bytes}".default = true;
+    fnv."${deps.http."0.1.14".fnv}".default = true;
+    http."0.1.14".default = (f.http."0.1.14".default or true);
+    itoa."${deps.http."0.1.14".itoa}".default = true;
+  }) [
+    (features_.bytes."${deps."http"."0.1.14"."bytes"}" deps)
+    (features_.fnv."${deps."http"."0.1.14"."fnv"}" deps)
+    (features_.itoa."${deps."http"."0.1.14"."itoa"}" deps)
+  ];
+
+
+# end
+# httparse-1.2.3
+
+  crates.httparse."1.2.3" = deps: { features?(features_.httparse."1.2.3" deps {}) }: buildRustCrate {
+    crateName = "httparse";
+    version = "1.2.3";
+    description = "A tiny, safe, speedy, zero-copy HTTP/1.x parser.";
+    authors = [ "Sean McArthur <sean.monstar@gmail.com>" ];
+    sha256 = "13x17y9bip0bija06y4vwpgh8jdmdi2gsvjq02kyfy0fbp5cqa93";
+    features = mkFeatures (features."httparse"."1.2.3" or {});
+  };
+  features_.httparse."1.2.3" = deps: f: updateFeatures f (rec {
+    httparse = fold recursiveUpdate {} [
+      { "1.2.3"."std" =
+        (f.httparse."1.2.3"."std" or false) ||
+        (f.httparse."1.2.3".default or false) ||
+        (httparse."1.2.3"."default" or false); }
+      { "1.2.3".default = (f.httparse."1.2.3".default or true); }
+    ];
+  }) [];
+
+
+# end
+# hyper-0.12.16
+
+  crates.hyper."0.12.16" = deps: { features?(features_.hyper."0.12.16" deps {}) }: buildRustCrate {
+    crateName = "hyper";
+    version = "0.12.16";
+    description = "A fast and correct HTTP library.";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "1h5h9swxh02jcg1m4cvwb5nmkb8z9g4b0p4wfbhfvsd7wf14qr0y";
+    dependencies = mapFeatures features ([
+      (crates."bytes"."${deps."hyper"."0.12.16"."bytes"}" deps)
+      (crates."futures"."${deps."hyper"."0.12.16"."futures"}" deps)
+      (crates."h2"."${deps."hyper"."0.12.16"."h2"}" deps)
+      (crates."http"."${deps."hyper"."0.12.16"."http"}" deps)
+      (crates."httparse"."${deps."hyper"."0.12.16"."httparse"}" deps)
+      (crates."iovec"."${deps."hyper"."0.12.16"."iovec"}" deps)
+      (crates."itoa"."${deps."hyper"."0.12.16"."itoa"}" deps)
+      (crates."log"."${deps."hyper"."0.12.16"."log"}" deps)
+      (crates."time"."${deps."hyper"."0.12.16"."time"}" deps)
+      (crates."tokio_io"."${deps."hyper"."0.12.16"."tokio_io"}" deps)
+      (crates."want"."${deps."hyper"."0.12.16"."want"}" deps)
+    ]
+      ++ (if features.hyper."0.12.16".futures-cpupool or false then [ (crates.futures_cpupool."${deps."hyper"."0.12.16".futures_cpupool}" deps) ] else [])
+      ++ (if features.hyper."0.12.16".net2 or false then [ (crates.net2."${deps."hyper"."0.12.16".net2}" deps) ] else [])
+      ++ (if features.hyper."0.12.16".tokio or false then [ (crates.tokio."${deps."hyper"."0.12.16".tokio}" deps) ] else [])
+      ++ (if features.hyper."0.12.16".tokio-executor or false then [ (crates.tokio_executor."${deps."hyper"."0.12.16".tokio_executor}" deps) ] else [])
+      ++ (if features.hyper."0.12.16".tokio-reactor or false then [ (crates.tokio_reactor."${deps."hyper"."0.12.16".tokio_reactor}" deps) ] else [])
+      ++ (if features.hyper."0.12.16".tokio-tcp or false then [ (crates.tokio_tcp."${deps."hyper"."0.12.16".tokio_tcp}" deps) ] else [])
+      ++ (if features.hyper."0.12.16".tokio-threadpool or false then [ (crates.tokio_threadpool."${deps."hyper"."0.12.16".tokio_threadpool}" deps) ] else [])
+      ++ (if features.hyper."0.12.16".tokio-timer or false then [ (crates.tokio_timer."${deps."hyper"."0.12.16".tokio_timer}" deps) ] else []));
+    features = mkFeatures (features."hyper"."0.12.16" or {});
+  };
+  features_.hyper."0.12.16" = deps: f: updateFeatures f (rec {
+    bytes."${deps.hyper."0.12.16".bytes}".default = true;
+    futures."${deps.hyper."0.12.16".futures}".default = true;
+    futures_cpupool."${deps.hyper."0.12.16".futures_cpupool}".default = true;
+    h2."${deps.hyper."0.12.16".h2}".default = true;
+    http."${deps.hyper."0.12.16".http}".default = true;
+    httparse."${deps.hyper."0.12.16".httparse}".default = true;
+    hyper = fold recursiveUpdate {} [
+      { "0.12.16"."__internal_flaky_tests" =
+        (f.hyper."0.12.16"."__internal_flaky_tests" or false) ||
+        (f.hyper."0.12.16".default or false) ||
+        (hyper."0.12.16"."default" or false); }
+      { "0.12.16"."futures-cpupool" =
+        (f.hyper."0.12.16"."futures-cpupool" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16"."net2" =
+        (f.hyper."0.12.16"."net2" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16"."runtime" =
+        (f.hyper."0.12.16"."runtime" or false) ||
+        (f.hyper."0.12.16".default or false) ||
+        (hyper."0.12.16"."default" or false); }
+      { "0.12.16"."tokio" =
+        (f.hyper."0.12.16"."tokio" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16"."tokio-executor" =
+        (f.hyper."0.12.16"."tokio-executor" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16"."tokio-reactor" =
+        (f.hyper."0.12.16"."tokio-reactor" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16"."tokio-tcp" =
+        (f.hyper."0.12.16"."tokio-tcp" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16"."tokio-threadpool" =
+        (f.hyper."0.12.16"."tokio-threadpool" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16"."tokio-timer" =
+        (f.hyper."0.12.16"."tokio-timer" or false) ||
+        (f.hyper."0.12.16".runtime or false) ||
+        (hyper."0.12.16"."runtime" or false); }
+      { "0.12.16".default = (f.hyper."0.12.16".default or true); }
+    ];
+    iovec."${deps.hyper."0.12.16".iovec}".default = true;
+    itoa."${deps.hyper."0.12.16".itoa}".default = true;
+    log."${deps.hyper."0.12.16".log}".default = true;
+    net2."${deps.hyper."0.12.16".net2}".default = true;
+    time."${deps.hyper."0.12.16".time}".default = true;
+    tokio."${deps.hyper."0.12.16".tokio}".default = true;
+    tokio_executor."${deps.hyper."0.12.16".tokio_executor}".default = true;
+    tokio_io."${deps.hyper."0.12.16".tokio_io}".default = true;
+    tokio_reactor."${deps.hyper."0.12.16".tokio_reactor}".default = true;
+    tokio_tcp."${deps.hyper."0.12.16".tokio_tcp}".default = true;
+    tokio_threadpool."${deps.hyper."0.12.16".tokio_threadpool}".default = true;
+    tokio_timer."${deps.hyper."0.12.16".tokio_timer}".default = true;
+    want."${deps.hyper."0.12.16".want}".default = true;
+  }) [
+    (features_.bytes."${deps."hyper"."0.12.16"."bytes"}" deps)
+    (features_.futures."${deps."hyper"."0.12.16"."futures"}" deps)
+    (features_.futures_cpupool."${deps."hyper"."0.12.16"."futures_cpupool"}" deps)
+    (features_.h2."${deps."hyper"."0.12.16"."h2"}" deps)
+    (features_.http."${deps."hyper"."0.12.16"."http"}" deps)
+    (features_.httparse."${deps."hyper"."0.12.16"."httparse"}" deps)
+    (features_.iovec."${deps."hyper"."0.12.16"."iovec"}" deps)
+    (features_.itoa."${deps."hyper"."0.12.16"."itoa"}" deps)
+    (features_.log."${deps."hyper"."0.12.16"."log"}" deps)
+    (features_.net2."${deps."hyper"."0.12.16"."net2"}" deps)
+    (features_.time."${deps."hyper"."0.12.16"."time"}" deps)
+    (features_.tokio."${deps."hyper"."0.12.16"."tokio"}" deps)
+    (features_.tokio_executor."${deps."hyper"."0.12.16"."tokio_executor"}" deps)
+    (features_.tokio_io."${deps."hyper"."0.12.16"."tokio_io"}" deps)
+    (features_.tokio_reactor."${deps."hyper"."0.12.16"."tokio_reactor"}" deps)
+    (features_.tokio_tcp."${deps."hyper"."0.12.16"."tokio_tcp"}" deps)
+    (features_.tokio_threadpool."${deps."hyper"."0.12.16"."tokio_threadpool"}" deps)
+    (features_.tokio_timer."${deps."hyper"."0.12.16"."tokio_timer"}" deps)
+    (features_.want."${deps."hyper"."0.12.16"."want"}" deps)
+  ];
+
+
+# end
+# hyper-tls-0.3.1
+
+  crates.hyper_tls."0.3.1" = deps: { features?(features_.hyper_tls."0.3.1" deps {}) }: buildRustCrate {
+    crateName = "hyper-tls";
+    version = "0.3.1";
+    description = "Default TLS implementation for use with hyper";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "0sk46mmnccxgxwn62rl5m58c2ivwgxgd590cjwg60pjkhx9qn5r7";
+    dependencies = mapFeatures features ([
+      (crates."bytes"."${deps."hyper_tls"."0.3.1"."bytes"}" deps)
+      (crates."futures"."${deps."hyper_tls"."0.3.1"."futures"}" deps)
+      (crates."hyper"."${deps."hyper_tls"."0.3.1"."hyper"}" deps)
+      (crates."native_tls"."${deps."hyper_tls"."0.3.1"."native_tls"}" deps)
+      (crates."tokio_io"."${deps."hyper_tls"."0.3.1"."tokio_io"}" deps)
+    ]);
+    features = mkFeatures (features."hyper_tls"."0.3.1" or {});
+  };
+  features_.hyper_tls."0.3.1" = deps: f: updateFeatures f (rec {
+    bytes."${deps.hyper_tls."0.3.1".bytes}".default = true;
+    futures."${deps.hyper_tls."0.3.1".futures}".default = true;
+    hyper."${deps.hyper_tls."0.3.1".hyper}".default = true;
+    hyper_tls."0.3.1".default = (f.hyper_tls."0.3.1".default or true);
+    native_tls = fold recursiveUpdate {} [
+      { "${deps.hyper_tls."0.3.1".native_tls}"."vendored" =
+        (f.native_tls."${deps.hyper_tls."0.3.1".native_tls}"."vendored" or false) ||
+        (hyper_tls."0.3.1"."vendored" or false) ||
+        (f."hyper_tls"."0.3.1"."vendored" or false); }
+      { "${deps.hyper_tls."0.3.1".native_tls}".default = true; }
+    ];
+    tokio_io."${deps.hyper_tls."0.3.1".tokio_io}".default = true;
+  }) [
+    (features_.bytes."${deps."hyper_tls"."0.3.1"."bytes"}" deps)
+    (features_.futures."${deps."hyper_tls"."0.3.1"."futures"}" deps)
+    (features_.hyper."${deps."hyper_tls"."0.3.1"."hyper"}" deps)
+    (features_.native_tls."${deps."hyper_tls"."0.3.1"."native_tls"}" deps)
+    (features_.tokio_io."${deps."hyper_tls"."0.3.1"."tokio_io"}" deps)
+  ];
+
+
+# end
+# idna-0.1.4
+
+  crates.idna."0.1.4" = deps: { features?(features_.idna."0.1.4" deps {}) }: buildRustCrate {
+    crateName = "idna";
+    version = "0.1.4";
+    description = "IDNA (Internationalizing Domain Names in Applications) and Punycode.";
+    authors = [ "The rust-url developers" ];
+    sha256 = "15j44qgjx1skwg9i7f4cm36ni4n99b1ayx23yxx7axxcw8vjf336";
+    dependencies = mapFeatures features ([
+      (crates."matches"."${deps."idna"."0.1.4"."matches"}" deps)
+      (crates."unicode_bidi"."${deps."idna"."0.1.4"."unicode_bidi"}" deps)
+      (crates."unicode_normalization"."${deps."idna"."0.1.4"."unicode_normalization"}" deps)
+    ]);
+  };
+  features_.idna."0.1.4" = deps: f: updateFeatures f (rec {
+    idna."0.1.4".default = (f.idna."0.1.4".default or true);
+    matches."${deps.idna."0.1.4".matches}".default = true;
+    unicode_bidi."${deps.idna."0.1.4".unicode_bidi}".default = true;
+    unicode_normalization."${deps.idna."0.1.4".unicode_normalization}".default = true;
+  }) [
+    (features_.matches."${deps."idna"."0.1.4"."matches"}" deps)
+    (features_.unicode_bidi."${deps."idna"."0.1.4"."unicode_bidi"}" deps)
+    (features_.unicode_normalization."${deps."idna"."0.1.4"."unicode_normalization"}" deps)
+  ];
+
+
+# end
+# indexmap-1.0.2
+
+  crates.indexmap."1.0.2" = deps: { features?(features_.indexmap."1.0.2" deps {}) }: buildRustCrate {
+    crateName = "indexmap";
+    version = "1.0.2";
+    description = "A hash table with consistent order and fast iteration.\n\nThe indexmap is a hash table where the iteration order of the key-value\npairs is independent of the hash values of the keys. It has the usual\nhash table functionality, it preserves insertion order except after\nremovals, and it allows lookup of its elements by either hash table key\nor numerical index. A corresponding hash set type is also provided.\n\nThis crate was initially published under the name ordermap, but it was renamed to\nindexmap.\n";
+    authors = [ "bluss" "Josh Stone <cuviper@gmail.com>" ];
+    sha256 = "18a0cn5xy3a7wswxg5lwfg3j4sh5blk28ykw0ysgr486djd353gf";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."indexmap"."1.0.2" or {});
+  };
+  features_.indexmap."1.0.2" = deps: f: updateFeatures f (rec {
+    indexmap = fold recursiveUpdate {} [
+      { "1.0.2"."serde" =
+        (f.indexmap."1.0.2"."serde" or false) ||
+        (f.indexmap."1.0.2".serde-1 or false) ||
+        (indexmap."1.0.2"."serde-1" or false); }
+      { "1.0.2".default = (f.indexmap."1.0.2".default or true); }
+    ];
+  }) [];
+
+
+# end
+# iovec-0.1.1
+
+  crates.iovec."0.1.1" = deps: { features?(features_.iovec."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "iovec";
+    version = "0.1.1";
+    description = "Portable buffer type for scatter/gather I/O operations\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "14fns3g3arbql6lkczf2gbbzaqh22mfv7y1wq5rr2y8jhh5m8jmm";
+    dependencies = (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."iovec"."0.1.1"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."iovec"."0.1.1"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.iovec."0.1.1" = deps: f: updateFeatures f (rec {
+    iovec."0.1.1".default = (f.iovec."0.1.1".default or true);
+    libc."${deps.iovec."0.1.1".libc}".default = true;
+    winapi."${deps.iovec."0.1.1".winapi}".default = true;
+  }) [
+    (features_.libc."${deps."iovec"."0.1.1"."libc"}" deps)
+    (features_.winapi."${deps."iovec"."0.1.1"."winapi"}" deps)
+  ];
+
+
+# end
+# isatty-0.1.5
+
+  crates.isatty."0.1.5" = deps: { features?(features_.isatty."0.1.5" deps {}) }: buildRustCrate {
+    crateName = "isatty";
+    version = "0.1.5";
+    description = "libc::isatty that also works on Windows";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "0gp781mgqmvsp6a3iyhwk2sqis2ys8jfg3grq40m135zgb4d2cvj";
+    dependencies = (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."isatty"."0.1.5"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."kernel32_sys"."${deps."isatty"."0.1.5"."kernel32_sys"}" deps)
+      (crates."winapi"."${deps."isatty"."0.1.5"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.isatty."0.1.5" = deps: f: updateFeatures f (rec {
+    isatty."0.1.5".default = (f.isatty."0.1.5".default or true);
+    kernel32_sys."${deps.isatty."0.1.5".kernel32_sys}".default = true;
+    libc."${deps.isatty."0.1.5".libc}".default = true;
+    winapi."${deps.isatty."0.1.5".winapi}".default = true;
+  }) [
+    (features_.libc."${deps."isatty"."0.1.5"."libc"}" deps)
+    (features_.kernel32_sys."${deps."isatty"."0.1.5"."kernel32_sys"}" deps)
+    (features_.winapi."${deps."isatty"."0.1.5"."winapi"}" deps)
+  ];
+
+
+# end
+# itertools-0.6.5
+
+  crates.itertools."0.6.5" = deps: { features?(features_.itertools."0.6.5" deps {}) }: buildRustCrate {
+    crateName = "itertools";
+    version = "0.6.5";
+    description = "Extra iterator adaptors, iterator methods, free functions, and macros.";
+    authors = [ "bluss" ];
+    sha256 = "0gbhgn7s8qkxxw10i514fzpqnc3aissn4kcgylm2cvnv9zmg8mw1";
+    dependencies = mapFeatures features ([
+      (crates."either"."${deps."itertools"."0.6.5"."either"}" deps)
+    ]);
+  };
+  features_.itertools."0.6.5" = deps: f: updateFeatures f (rec {
+    either."${deps.itertools."0.6.5".either}".default = (f.either."${deps.itertools."0.6.5".either}".default or false);
+    itertools."0.6.5".default = (f.itertools."0.6.5".default or true);
+  }) [
+    (features_.either."${deps."itertools"."0.6.5"."either"}" deps)
+  ];
+
+
+# end
+# itoa-0.3.4
+
+  crates.itoa."0.3.4" = deps: { features?(features_.itoa."0.3.4" deps {}) }: buildRustCrate {
+    crateName = "itoa";
+    version = "0.3.4";
+    description = "Fast functions for printing integer primitives to an io::Write";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1nfkzz6vrgj0d9l3yzjkkkqzdgs68y294fjdbl7jq118qi8xc9d9";
+    features = mkFeatures (features."itoa"."0.3.4" or {});
+  };
+  features_.itoa."0.3.4" = deps: f: updateFeatures f (rec {
+    itoa."0.3.4".default = (f.itoa."0.3.4".default or true);
+  }) [];
+
+
+# end
+# itoa-0.4.3
+
+  crates.itoa."0.4.3" = deps: { features?(features_.itoa."0.4.3" deps {}) }: buildRustCrate {
+    crateName = "itoa";
+    version = "0.4.3";
+    description = "Fast functions for printing integer primitives to an io::Write";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "0zadimmdgvili3gdwxqg7ljv3r4wcdg1kkdfp9nl15vnm23vrhy1";
+    features = mkFeatures (features."itoa"."0.4.3" or {});
+  };
+  features_.itoa."0.4.3" = deps: f: updateFeatures f (rec {
+    itoa = fold recursiveUpdate {} [
+      { "0.4.3"."std" =
+        (f.itoa."0.4.3"."std" or false) ||
+        (f.itoa."0.4.3".default or false) ||
+        (itoa."0.4.3"."default" or false); }
+      { "0.4.3".default = (f.itoa."0.4.3".default or true); }
+    ];
+  }) [];
+
+
+# end
+# kernel32-sys-0.2.2
+
+  crates.kernel32_sys."0.2.2" = deps: { features?(features_.kernel32_sys."0.2.2" deps {}) }: buildRustCrate {
+    crateName = "kernel32-sys";
+    version = "0.2.2";
+    description = "Contains function definitions for the Windows API library kernel32. See winapi for types and constants.";
+    authors = [ "Peter Atashian <retep998@gmail.com>" ];
+    sha256 = "1lrw1hbinyvr6cp28g60z97w32w8vsk6pahk64pmrv2fmby8srfj";
+    libName = "kernel32";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."winapi"."${deps."kernel32_sys"."0.2.2"."winapi"}" deps)
+    ]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."winapi_build"."${deps."kernel32_sys"."0.2.2"."winapi_build"}" deps)
+    ]);
+  };
+  features_.kernel32_sys."0.2.2" = deps: f: updateFeatures f (rec {
+    kernel32_sys."0.2.2".default = (f.kernel32_sys."0.2.2".default or true);
+    winapi."${deps.kernel32_sys."0.2.2".winapi}".default = true;
+    winapi_build."${deps.kernel32_sys."0.2.2".winapi_build}".default = true;
+  }) [
+    (features_.winapi."${deps."kernel32_sys"."0.2.2"."winapi"}" deps)
+    (features_.winapi_build."${deps."kernel32_sys"."0.2.2"."winapi_build"}" deps)
+  ];
+
+
+# end
+# lazy_static-0.2.10
+
+  crates.lazy_static."0.2.10" = deps: { features?(features_.lazy_static."0.2.10" deps {}) }: buildRustCrate {
+    crateName = "lazy_static";
+    version = "0.2.10";
+    description = "A macro for declaring lazily evaluated statics in Rust.";
+    authors = [ "Marvin Löbel <loebel.marvin@gmail.com>" ];
+    sha256 = "0ylwjvppsm56fpv32l4br7zw0pwn81wbfb1abalyyr1d9c94vg8r";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."lazy_static"."0.2.10" or {});
+  };
+  features_.lazy_static."0.2.10" = deps: f: updateFeatures f (rec {
+    lazy_static = fold recursiveUpdate {} [
+      { "0.2.10"."compiletest_rs" =
+        (f.lazy_static."0.2.10"."compiletest_rs" or false) ||
+        (f.lazy_static."0.2.10".compiletest or false) ||
+        (lazy_static."0.2.10"."compiletest" or false); }
+      { "0.2.10"."nightly" =
+        (f.lazy_static."0.2.10"."nightly" or false) ||
+        (f.lazy_static."0.2.10".spin_no_std or false) ||
+        (lazy_static."0.2.10"."spin_no_std" or false); }
+      { "0.2.10"."spin" =
+        (f.lazy_static."0.2.10"."spin" or false) ||
+        (f.lazy_static."0.2.10".spin_no_std or false) ||
+        (lazy_static."0.2.10"."spin_no_std" or false); }
+      { "0.2.10".default = (f.lazy_static."0.2.10".default or true); }
+    ];
+  }) [];
+
+
+# end
+# lazy_static-1.2.0
+
+  crates.lazy_static."1.2.0" = deps: { features?(features_.lazy_static."1.2.0" deps {}) }: buildRustCrate {
+    crateName = "lazy_static";
+    version = "1.2.0";
+    description = "A macro for declaring lazily evaluated statics in Rust.";
+    authors = [ "Marvin Löbel <loebel.marvin@gmail.com>" ];
+    sha256 = "07p3b30k2akyr6xw08ggd5qiz5nw3vd3agggj360fcc1njz7d0ss";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."lazy_static"."1.2.0" or {});
+  };
+  features_.lazy_static."1.2.0" = deps: f: updateFeatures f (rec {
+    lazy_static = fold recursiveUpdate {} [
+      { "1.2.0"."spin" =
+        (f.lazy_static."1.2.0"."spin" or false) ||
+        (f.lazy_static."1.2.0".spin_no_std or false) ||
+        (lazy_static."1.2.0"."spin_no_std" or false); }
+      { "1.2.0".default = (f.lazy_static."1.2.0".default or true); }
+    ];
+  }) [];
+
+
+# end
+# lazycell-1.2.0
+
+  crates.lazycell."1.2.0" = deps: { features?(features_.lazycell."1.2.0" deps {}) }: buildRustCrate {
+    crateName = "lazycell";
+    version = "1.2.0";
+    description = "A library providing a lazily filled Cell struct";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" "Nikita Pekin <contact@nikitapek.in>" ];
+    sha256 = "1lzdb3q17yjihw9hksynxgyg8wbph1h791wff8rrf1c2aqjwhmax";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."lazycell"."1.2.0" or {});
+  };
+  features_.lazycell."1.2.0" = deps: f: updateFeatures f (rec {
+    lazycell = fold recursiveUpdate {} [
+      { "1.2.0"."clippy" =
+        (f.lazycell."1.2.0"."clippy" or false) ||
+        (f.lazycell."1.2.0".nightly-testing or false) ||
+        (lazycell."1.2.0"."nightly-testing" or false); }
+      { "1.2.0"."nightly" =
+        (f.lazycell."1.2.0"."nightly" or false) ||
+        (f.lazycell."1.2.0".nightly-testing or false) ||
+        (lazycell."1.2.0"."nightly-testing" or false); }
+      { "1.2.0".default = (f.lazycell."1.2.0".default or true); }
+    ];
+  }) [];
+
+
+# end
+# libc-0.2.44
+
+  crates.libc."0.2.44" = deps: { features?(features_.libc."0.2.44" deps {}) }: buildRustCrate {
+    crateName = "libc";
+    version = "0.2.44";
+    description = "A library for types and bindings to native C functions often found in libc or\nother common platform libraries.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "17a7p0lcf3qwl1pcxffdflgnx8zr2659mgzzg4zi5fnv1mlj3q6z";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."libc"."0.2.44" or {});
+  };
+  features_.libc."0.2.44" = deps: f: updateFeatures f (rec {
+    libc = fold recursiveUpdate {} [
+      { "0.2.44"."align" =
+        (f.libc."0.2.44"."align" or false) ||
+        (f.libc."0.2.44".rustc-dep-of-std or false) ||
+        (libc."0.2.44"."rustc-dep-of-std" or false); }
+      { "0.2.44"."rustc-std-workspace-core" =
+        (f.libc."0.2.44"."rustc-std-workspace-core" or false) ||
+        (f.libc."0.2.44".rustc-dep-of-std or false) ||
+        (libc."0.2.44"."rustc-dep-of-std" or false); }
+      { "0.2.44"."use_std" =
+        (f.libc."0.2.44"."use_std" or false) ||
+        (f.libc."0.2.44".default or false) ||
+        (libc."0.2.44"."default" or false); }
+      { "0.2.44".default = (f.libc."0.2.44".default or true); }
+    ];
+  }) [];
+
+
+# end
+# libflate-0.1.19
+
+  crates.libflate."0.1.19" = deps: { features?(features_.libflate."0.1.19" deps {}) }: buildRustCrate {
+    crateName = "libflate";
+    version = "0.1.19";
+    description = "A Rust implementation of DEFLATE algorithm and related formats (ZLIB, GZIP)";
+    authors = [ "Takeru Ohta <phjgt308@gmail.com>" ];
+    sha256 = "1klhvys9541xrwspyyv41qbr37xnwx4bdaspk6gbiprhrsqqkjp0";
+    dependencies = mapFeatures features ([
+      (crates."adler32"."${deps."libflate"."0.1.19"."adler32"}" deps)
+      (crates."byteorder"."${deps."libflate"."0.1.19"."byteorder"}" deps)
+      (crates."crc32fast"."${deps."libflate"."0.1.19"."crc32fast"}" deps)
+    ]);
+  };
+  features_.libflate."0.1.19" = deps: f: updateFeatures f (rec {
+    adler32."${deps.libflate."0.1.19".adler32}".default = true;
+    byteorder."${deps.libflate."0.1.19".byteorder}".default = true;
+    crc32fast."${deps.libflate."0.1.19".crc32fast}".default = true;
+    libflate."0.1.19".default = (f.libflate."0.1.19".default or true);
+  }) [
+    (features_.adler32."${deps."libflate"."0.1.19"."adler32"}" deps)
+    (features_.byteorder."${deps."libflate"."0.1.19"."byteorder"}" deps)
+    (features_.crc32fast."${deps."libflate"."0.1.19"."crc32fast"}" deps)
+  ];
+
+
+# end
+# lock_api-0.1.5
+
+  crates.lock_api."0.1.5" = deps: { features?(features_.lock_api."0.1.5" deps {}) }: buildRustCrate {
+    crateName = "lock_api";
+    version = "0.1.5";
+    description = "Wrappers to create fully-featured Mutex and RwLock types. Compatible with no_std.";
+    authors = [ "Amanieu d'Antras <amanieu@gmail.com>" ];
+    sha256 = "132sidr5hvjfkaqm3l95zpcpi8yk5ddd0g79zf1ad4v65sxirqqm";
+    dependencies = mapFeatures features ([
+      (crates."scopeguard"."${deps."lock_api"."0.1.5"."scopeguard"}" deps)
+    ]
+      ++ (if features.lock_api."0.1.5".owning_ref or false then [ (crates.owning_ref."${deps."lock_api"."0.1.5".owning_ref}" deps) ] else []));
+    features = mkFeatures (features."lock_api"."0.1.5" or {});
+  };
+  features_.lock_api."0.1.5" = deps: f: updateFeatures f (rec {
+    lock_api."0.1.5".default = (f.lock_api."0.1.5".default or true);
+    owning_ref."${deps.lock_api."0.1.5".owning_ref}".default = true;
+    scopeguard."${deps.lock_api."0.1.5".scopeguard}".default = (f.scopeguard."${deps.lock_api."0.1.5".scopeguard}".default or false);
+  }) [
+    (features_.owning_ref."${deps."lock_api"."0.1.5"."owning_ref"}" deps)
+    (features_.scopeguard."${deps."lock_api"."0.1.5"."scopeguard"}" deps)
+  ];
+
+
+# end
+# log-0.3.8
+
+  crates.log."0.3.8" = deps: { features?(features_.log."0.3.8" deps {}) }: buildRustCrate {
+    crateName = "log";
+    version = "0.3.8";
+    description = "A lightweight logging facade for Rust\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1c43z4z85sxrsgir4s1hi84558ab5ic7jrn5qgmsiqcv90vvn006";
+    features = mkFeatures (features."log"."0.3.8" or {});
+  };
+  features_.log."0.3.8" = deps: f: updateFeatures f (rec {
+    log = fold recursiveUpdate {} [
+      { "0.3.8"."use_std" =
+        (f.log."0.3.8"."use_std" or false) ||
+        (f.log."0.3.8".default or false) ||
+        (log."0.3.8"."default" or false); }
+      { "0.3.8".default = (f.log."0.3.8".default or true); }
+    ];
+  }) [];
+
+
+# end
+# log-0.4.6
+
+  crates.log."0.4.6" = deps: { features?(features_.log."0.4.6" deps {}) }: buildRustCrate {
+    crateName = "log";
+    version = "0.4.6";
+    description = "A lightweight logging facade for Rust\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1nd8dl9mvc9vd6fks5d4gsxaz990xi6rzlb8ymllshmwi153vngr";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."log"."0.4.6"."cfg_if"}" deps)
+    ]);
+    features = mkFeatures (features."log"."0.4.6" or {});
+  };
+  features_.log."0.4.6" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.log."0.4.6".cfg_if}".default = true;
+    log."0.4.6".default = (f.log."0.4.6".default or true);
+  }) [
+    (features_.cfg_if."${deps."log"."0.4.6"."cfg_if"}" deps)
+  ];
+
+
+# end
+# maplit-0.1.6
+
+  crates.maplit."0.1.6" = deps: { features?(features_.maplit."0.1.6" deps {}) }: buildRustCrate {
+    crateName = "maplit";
+    version = "0.1.6";
+    description = "Container / collection literal macros for HashMap, HashSet, BTreeMap, BTreeSet.";
+    authors = [ "bluss" ];
+    sha256 = "1f8kf5v7xra8ssvh5c10qlacbk4l0z2817pkscflx5s5q6y7925h";
+  };
+  features_.maplit."0.1.6" = deps: f: updateFeatures f (rec {
+    maplit."0.1.6".default = (f.maplit."0.1.6".default or true);
+  }) [];
+
+
+# end
+# matches-0.1.6
+
+  crates.matches."0.1.6" = deps: { features?(features_.matches."0.1.6" deps {}) }: buildRustCrate {
+    crateName = "matches";
+    version = "0.1.6";
+    description = "A macro to evaluate, as a boolean, whether an expression matches a pattern.";
+    authors = [ "Simon Sapin <simon.sapin@exyr.org>" ];
+    sha256 = "1zlrqlbvzxdil8z8ial2ihvxjwvlvg3g8dr0lcdpsjclkclasjan";
+    libPath = "lib.rs";
+  };
+  features_.matches."0.1.6" = deps: f: updateFeatures f (rec {
+    matches."0.1.6".default = (f.matches."0.1.6".default or true);
+  }) [];
+
+
+# end
+# memchr-0.1.11
+
+  crates.memchr."0.1.11" = deps: { features?(features_.memchr."0.1.11" deps {}) }: buildRustCrate {
+    crateName = "memchr";
+    version = "0.1.11";
+    description = "Safe interface to memchr.";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" "bluss" ];
+    sha256 = "0x73jghamvxxq5fsw9wb0shk5m6qp3q6fsf0nibn0i6bbqkw91s8";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."memchr"."0.1.11"."libc"}" deps)
+    ]);
+  };
+  features_.memchr."0.1.11" = deps: f: updateFeatures f (rec {
+    libc."${deps.memchr."0.1.11".libc}".default = true;
+    memchr."0.1.11".default = (f.memchr."0.1.11".default or true);
+  }) [
+    (features_.libc."${deps."memchr"."0.1.11"."libc"}" deps)
+  ];
+
+
+# end
+# memoffset-0.2.1
+
+  crates.memoffset."0.2.1" = deps: { features?(features_.memoffset."0.2.1" deps {}) }: buildRustCrate {
+    crateName = "memoffset";
+    version = "0.2.1";
+    description = "offset_of functionality for Rust structs.";
+    authors = [ "Gilad Naaman <gilad.naaman@gmail.com>" ];
+    sha256 = "00vym01jk9slibq2nsiilgffp7n6k52a4q3n4dqp0xf5kzxvffcf";
+  };
+  features_.memoffset."0.2.1" = deps: f: updateFeatures f (rec {
+    memoffset."0.2.1".default = (f.memoffset."0.2.1".default or true);
+  }) [];
+
+
+# end
+# mime-0.3.12
+
+  crates.mime."0.3.12" = deps: { features?(features_.mime."0.3.12" deps {}) }: buildRustCrate {
+    crateName = "mime";
+    version = "0.3.12";
+    description = "Strongly Typed Mimes";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "0lmcwkmxwbla9457w9ak13cfgqxfyn5wa1syjy1kll2ras5xifvh";
+    dependencies = mapFeatures features ([
+      (crates."unicase"."${deps."mime"."0.3.12"."unicase"}" deps)
+    ]);
+  };
+  features_.mime."0.3.12" = deps: f: updateFeatures f (rec {
+    mime."0.3.12".default = (f.mime."0.3.12".default or true);
+    unicase."${deps.mime."0.3.12".unicase}".default = true;
+  }) [
+    (features_.unicase."${deps."mime"."0.3.12"."unicase"}" deps)
+  ];
+
+
+# end
+# mime_guess-2.0.0-alpha.6
+
+  crates.mime_guess."2.0.0-alpha.6" = deps: { features?(features_.mime_guess."2.0.0-alpha.6" deps {}) }: buildRustCrate {
+    crateName = "mime_guess";
+    version = "2.0.0-alpha.6";
+    description = "A simple crate for detection of a file's MIME type by its extension.";
+    authors = [ "Austin Bonander <austin.bonander@gmail.com>" ];
+    sha256 = "1k2mdq43gi2qr63b7m5zs624rfi40ysk33cay49jlhq97jwnk9db";
+    dependencies = mapFeatures features ([
+      (crates."mime"."${deps."mime_guess"."2.0.0-alpha.6"."mime"}" deps)
+      (crates."phf"."${deps."mime_guess"."2.0.0-alpha.6"."phf"}" deps)
+      (crates."unicase"."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps)
+    ]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."phf_codegen"."${deps."mime_guess"."2.0.0-alpha.6"."phf_codegen"}" deps)
+      (crates."unicase"."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps)
+    ]);
+    features = mkFeatures (features."mime_guess"."2.0.0-alpha.6" or {});
+  };
+  features_.mime_guess."2.0.0-alpha.6" = deps: f: updateFeatures f (rec {
+    mime."${deps.mime_guess."2.0.0-alpha.6".mime}".default = true;
+    mime_guess."2.0.0-alpha.6".default = (f.mime_guess."2.0.0-alpha.6".default or true);
+    phf = fold recursiveUpdate {} [
+      { "${deps.mime_guess."2.0.0-alpha.6".phf}"."unicase" = true; }
+      { "${deps.mime_guess."2.0.0-alpha.6".phf}".default = true; }
+    ];
+    phf_codegen."${deps.mime_guess."2.0.0-alpha.6".phf_codegen}".default = true;
+    unicase."${deps.mime_guess."2.0.0-alpha.6".unicase}".default = true;
+  }) [
+    (features_.mime."${deps."mime_guess"."2.0.0-alpha.6"."mime"}" deps)
+    (features_.phf."${deps."mime_guess"."2.0.0-alpha.6"."phf"}" deps)
+    (features_.unicase."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps)
+    (features_.phf_codegen."${deps."mime_guess"."2.0.0-alpha.6"."phf_codegen"}" deps)
+    (features_.unicase."${deps."mime_guess"."2.0.0-alpha.6"."unicase"}" deps)
+  ];
+
+
+# end
+# miniz-sys-0.1.10
+
+  crates.miniz_sys."0.1.10" = deps: { features?(features_.miniz_sys."0.1.10" deps {}) }: buildRustCrate {
+    crateName = "miniz-sys";
+    version = "0.1.10";
+    description = "Bindings to the miniz.c library.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "11vg6phafxil87nbxgrlhcx5hjr3145wsbwwkfmibvnmzxfdmvln";
+    libPath = "lib.rs";
+    libName = "miniz_sys";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."miniz_sys"."0.1.10"."libc"}" deps)
+    ]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."cc"."${deps."miniz_sys"."0.1.10"."cc"}" deps)
+    ]);
+  };
+  features_.miniz_sys."0.1.10" = deps: f: updateFeatures f (rec {
+    cc."${deps.miniz_sys."0.1.10".cc}".default = true;
+    libc."${deps.miniz_sys."0.1.10".libc}".default = true;
+    miniz_sys."0.1.10".default = (f.miniz_sys."0.1.10".default or true);
+  }) [
+    (features_.libc."${deps."miniz_sys"."0.1.10"."libc"}" deps)
+    (features_.cc."${deps."miniz_sys"."0.1.10"."cc"}" deps)
+  ];
+
+
+# end
+# mio-0.6.16
+
+  crates.mio."0.6.16" = deps: { features?(features_.mio."0.6.16" deps {}) }: buildRustCrate {
+    crateName = "mio";
+    version = "0.6.16";
+    description = "Lightweight non-blocking IO";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "14vyrlmf0w984pi7ad9qvmlfj6vrb0wn6i8ik9j87w5za2r3rban";
+    dependencies = mapFeatures features ([
+      (crates."iovec"."${deps."mio"."0.6.16"."iovec"}" deps)
+      (crates."lazycell"."${deps."mio"."0.6.16"."lazycell"}" deps)
+      (crates."log"."${deps."mio"."0.6.16"."log"}" deps)
+      (crates."net2"."${deps."mio"."0.6.16"."net2"}" deps)
+      (crates."slab"."${deps."mio"."0.6.16"."slab"}" deps)
+    ])
+      ++ (if kernel == "fuchsia" then mapFeatures features ([
+      (crates."fuchsia_zircon"."${deps."mio"."0.6.16"."fuchsia_zircon"}" deps)
+      (crates."fuchsia_zircon_sys"."${deps."mio"."0.6.16"."fuchsia_zircon_sys"}" deps)
+    ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."mio"."0.6.16"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."kernel32_sys"."${deps."mio"."0.6.16"."kernel32_sys"}" deps)
+      (crates."miow"."${deps."mio"."0.6.16"."miow"}" deps)
+      (crates."winapi"."${deps."mio"."0.6.16"."winapi"}" deps)
+    ]) else []);
+    features = mkFeatures (features."mio"."0.6.16" or {});
+  };
+  features_.mio."0.6.16" = deps: f: updateFeatures f (rec {
+    fuchsia_zircon."${deps.mio."0.6.16".fuchsia_zircon}".default = true;
+    fuchsia_zircon_sys."${deps.mio."0.6.16".fuchsia_zircon_sys}".default = true;
+    iovec."${deps.mio."0.6.16".iovec}".default = true;
+    kernel32_sys."${deps.mio."0.6.16".kernel32_sys}".default = true;
+    lazycell."${deps.mio."0.6.16".lazycell}".default = true;
+    libc."${deps.mio."0.6.16".libc}".default = true;
+    log."${deps.mio."0.6.16".log}".default = true;
+    mio = fold recursiveUpdate {} [
+      { "0.6.16"."with-deprecated" =
+        (f.mio."0.6.16"."with-deprecated" or false) ||
+        (f.mio."0.6.16".default or false) ||
+        (mio."0.6.16"."default" or false); }
+      { "0.6.16".default = (f.mio."0.6.16".default or true); }
+    ];
+    miow."${deps.mio."0.6.16".miow}".default = true;
+    net2."${deps.mio."0.6.16".net2}".default = true;
+    slab."${deps.mio."0.6.16".slab}".default = true;
+    winapi."${deps.mio."0.6.16".winapi}".default = true;
+  }) [
+    (features_.iovec."${deps."mio"."0.6.16"."iovec"}" deps)
+    (features_.lazycell."${deps."mio"."0.6.16"."lazycell"}" deps)
+    (features_.log."${deps."mio"."0.6.16"."log"}" deps)
+    (features_.net2."${deps."mio"."0.6.16"."net2"}" deps)
+    (features_.slab."${deps."mio"."0.6.16"."slab"}" deps)
+    (features_.fuchsia_zircon."${deps."mio"."0.6.16"."fuchsia_zircon"}" deps)
+    (features_.fuchsia_zircon_sys."${deps."mio"."0.6.16"."fuchsia_zircon_sys"}" deps)
+    (features_.libc."${deps."mio"."0.6.16"."libc"}" deps)
+    (features_.kernel32_sys."${deps."mio"."0.6.16"."kernel32_sys"}" deps)
+    (features_.miow."${deps."mio"."0.6.16"."miow"}" deps)
+    (features_.winapi."${deps."mio"."0.6.16"."winapi"}" deps)
+  ];
+
+
+# end
+# miow-0.2.1
+
+  crates.miow."0.2.1" = deps: { features?(features_.miow."0.2.1" deps {}) }: buildRustCrate {
+    crateName = "miow";
+    version = "0.2.1";
+    description = "A zero overhead I/O library for Windows, focusing on IOCP and Async I/O\nabstractions.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "14f8zkc6ix7mkyis1vsqnim8m29b6l55abkba3p2yz7j1ibcvrl0";
+    dependencies = mapFeatures features ([
+      (crates."kernel32_sys"."${deps."miow"."0.2.1"."kernel32_sys"}" deps)
+      (crates."net2"."${deps."miow"."0.2.1"."net2"}" deps)
+      (crates."winapi"."${deps."miow"."0.2.1"."winapi"}" deps)
+      (crates."ws2_32_sys"."${deps."miow"."0.2.1"."ws2_32_sys"}" deps)
+    ]);
+  };
+  features_.miow."0.2.1" = deps: f: updateFeatures f (rec {
+    kernel32_sys."${deps.miow."0.2.1".kernel32_sys}".default = true;
+    miow."0.2.1".default = (f.miow."0.2.1".default or true);
+    net2."${deps.miow."0.2.1".net2}".default = (f.net2."${deps.miow."0.2.1".net2}".default or false);
+    winapi."${deps.miow."0.2.1".winapi}".default = true;
+    ws2_32_sys."${deps.miow."0.2.1".ws2_32_sys}".default = true;
+  }) [
+    (features_.kernel32_sys."${deps."miow"."0.2.1"."kernel32_sys"}" deps)
+    (features_.net2."${deps."miow"."0.2.1"."net2"}" deps)
+    (features_.winapi."${deps."miow"."0.2.1"."winapi"}" deps)
+    (features_.ws2_32_sys."${deps."miow"."0.2.1"."ws2_32_sys"}" deps)
+  ];
+
+
+# end
+# native-tls-0.2.2
+
+  crates.native_tls."0.2.2" = deps: { features?(features_.native_tls."0.2.2" deps {}) }: buildRustCrate {
+    crateName = "native-tls";
+    version = "0.2.2";
+    description = "A wrapper over a platform's native TLS implementation";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "0vl2hmmnrcjfylzjfsbnav20ri2n1qjgxn7bklb4mk3fyxfqm1m9";
+    dependencies = (if kernel == "darwin" || kernel == "ios" then mapFeatures features ([
+      (crates."lazy_static"."${deps."native_tls"."0.2.2"."lazy_static"}" deps)
+      (crates."libc"."${deps."native_tls"."0.2.2"."libc"}" deps)
+      (crates."security_framework"."${deps."native_tls"."0.2.2"."security_framework"}" deps)
+      (crates."security_framework_sys"."${deps."native_tls"."0.2.2"."security_framework_sys"}" deps)
+      (crates."tempfile"."${deps."native_tls"."0.2.2"."tempfile"}" deps)
+    ]) else [])
+      ++ (if !(kernel == "windows" || kernel == "darwin" || kernel == "ios") then mapFeatures features ([
+      (crates."openssl"."${deps."native_tls"."0.2.2"."openssl"}" deps)
+      (crates."openssl_probe"."${deps."native_tls"."0.2.2"."openssl_probe"}" deps)
+      (crates."openssl_sys"."${deps."native_tls"."0.2.2"."openssl_sys"}" deps)
+    ]) else [])
+      ++ (if kernel == "android" then mapFeatures features ([
+      (crates."log"."${deps."native_tls"."0.2.2"."log"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."schannel"."${deps."native_tls"."0.2.2"."schannel"}" deps)
+    ]) else []);
+    features = mkFeatures (features."native_tls"."0.2.2" or {});
+  };
+  features_.native_tls."0.2.2" = deps: f: updateFeatures f (rec {
+    lazy_static."${deps.native_tls."0.2.2".lazy_static}".default = true;
+    libc."${deps.native_tls."0.2.2".libc}".default = true;
+    log."${deps.native_tls."0.2.2".log}".default = true;
+    native_tls."0.2.2".default = (f.native_tls."0.2.2".default or true);
+    openssl."${deps.native_tls."0.2.2".openssl}".default = true;
+    openssl_probe."${deps.native_tls."0.2.2".openssl_probe}".default = true;
+    openssl_sys."${deps.native_tls."0.2.2".openssl_sys}".default = true;
+    schannel."${deps.native_tls."0.2.2".schannel}".default = true;
+    security_framework."${deps.native_tls."0.2.2".security_framework}".default = true;
+    security_framework_sys."${deps.native_tls."0.2.2".security_framework_sys}".default = true;
+    tempfile."${deps.native_tls."0.2.2".tempfile}".default = true;
+  }) [
+    (features_.lazy_static."${deps."native_tls"."0.2.2"."lazy_static"}" deps)
+    (features_.libc."${deps."native_tls"."0.2.2"."libc"}" deps)
+    (features_.security_framework."${deps."native_tls"."0.2.2"."security_framework"}" deps)
+    (features_.security_framework_sys."${deps."native_tls"."0.2.2"."security_framework_sys"}" deps)
+    (features_.tempfile."${deps."native_tls"."0.2.2"."tempfile"}" deps)
+    (features_.openssl."${deps."native_tls"."0.2.2"."openssl"}" deps)
+    (features_.openssl_probe."${deps."native_tls"."0.2.2"."openssl_probe"}" deps)
+    (features_.openssl_sys."${deps."native_tls"."0.2.2"."openssl_sys"}" deps)
+    (features_.log."${deps."native_tls"."0.2.2"."log"}" deps)
+    (features_.schannel."${deps."native_tls"."0.2.2"."schannel"}" deps)
+  ];
+
+
+# end
+# net2-0.2.33
+
+  crates.net2."0.2.33" = deps: { features?(features_.net2."0.2.33" deps {}) }: buildRustCrate {
+    crateName = "net2";
+    version = "0.2.33";
+    description = "Extensions to the standard library's networking types as proposed in RFC 1158.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1qnmajafgybj5wyxz9iffa8x5wgbwd2znfklmhqj7vl6lw1m65mq";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."net2"."0.2.33"."cfg_if"}" deps)
+    ])
+      ++ (if kernel == "redox" || (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."net2"."0.2.33"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."net2"."0.2.33"."winapi"}" deps)
+    ]) else []);
+    features = mkFeatures (features."net2"."0.2.33" or {});
+  };
+  features_.net2."0.2.33" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.net2."0.2.33".cfg_if}".default = true;
+    libc."${deps.net2."0.2.33".libc}".default = true;
+    net2 = fold recursiveUpdate {} [
+      { "0.2.33"."duration" =
+        (f.net2."0.2.33"."duration" or false) ||
+        (f.net2."0.2.33".default or false) ||
+        (net2."0.2.33"."default" or false); }
+      { "0.2.33".default = (f.net2."0.2.33".default or true); }
+    ];
+    winapi = fold recursiveUpdate {} [
+      { "${deps.net2."0.2.33".winapi}"."handleapi" = true; }
+      { "${deps.net2."0.2.33".winapi}"."winsock2" = true; }
+      { "${deps.net2."0.2.33".winapi}"."ws2def" = true; }
+      { "${deps.net2."0.2.33".winapi}"."ws2ipdef" = true; }
+      { "${deps.net2."0.2.33".winapi}"."ws2tcpip" = true; }
+      { "${deps.net2."0.2.33".winapi}".default = true; }
+    ];
+  }) [
+    (features_.cfg_if."${deps."net2"."0.2.33"."cfg_if"}" deps)
+    (features_.libc."${deps."net2"."0.2.33"."libc"}" deps)
+    (features_.winapi."${deps."net2"."0.2.33"."winapi"}" deps)
+  ];
+
+
+# end
+# nodrop-0.1.13
+
+  crates.nodrop."0.1.13" = deps: { features?(features_.nodrop."0.1.13" deps {}) }: buildRustCrate {
+    crateName = "nodrop";
+    version = "0.1.13";
+    description = "A wrapper type to inhibit drop (destructor). Use std::mem::ManuallyDrop instead!";
+    authors = [ "bluss" ];
+    sha256 = "0gkfx6wihr9z0m8nbdhma5pyvbipznjpkzny2d4zkc05b0vnhinb";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."nodrop"."0.1.13" or {});
+  };
+  features_.nodrop."0.1.13" = deps: f: updateFeatures f (rec {
+    nodrop = fold recursiveUpdate {} [
+      { "0.1.13"."nodrop-union" =
+        (f.nodrop."0.1.13"."nodrop-union" or false) ||
+        (f.nodrop."0.1.13".use_union or false) ||
+        (nodrop."0.1.13"."use_union" or false); }
+      { "0.1.13"."std" =
+        (f.nodrop."0.1.13"."std" or false) ||
+        (f.nodrop."0.1.13".default or false) ||
+        (nodrop."0.1.13"."default" or false); }
+      { "0.1.13".default = (f.nodrop."0.1.13".default or true); }
+    ];
+  }) [];
+
+
+# end
+# num-0.1.40
+
+  crates.num."0.1.40" = deps: { features?(features_.num."0.1.40" deps {}) }: buildRustCrate {
+    crateName = "num";
+    version = "0.1.40";
+    description = "A collection of numeric types and traits for Rust, including bigint,\ncomplex, rational, range iterators, generic integers, and more!\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0b29c25n9mpf6a921khj7a6y3hz5va4vgwppcd2if975qq1shakg";
+    dependencies = mapFeatures features ([
+      (crates."num_integer"."${deps."num"."0.1.40"."num_integer"}" deps)
+      (crates."num_iter"."${deps."num"."0.1.40"."num_iter"}" deps)
+      (crates."num_traits"."${deps."num"."0.1.40"."num_traits"}" deps)
+    ]);
+    features = mkFeatures (features."num"."0.1.40" or {});
+  };
+  features_.num."0.1.40" = deps: f: updateFeatures f (rec {
+    num = fold recursiveUpdate {} [
+      { "0.1.40"."bigint" =
+        (f.num."0.1.40"."bigint" or false) ||
+        (f.num."0.1.40".default or false) ||
+        (num."0.1.40"."default" or false); }
+      { "0.1.40"."complex" =
+        (f.num."0.1.40"."complex" or false) ||
+        (f.num."0.1.40".default or false) ||
+        (num."0.1.40"."default" or false); }
+      { "0.1.40"."num-bigint" =
+        (f.num."0.1.40"."num-bigint" or false) ||
+        (f.num."0.1.40".bigint or false) ||
+        (num."0.1.40"."bigint" or false); }
+      { "0.1.40"."num-complex" =
+        (f.num."0.1.40"."num-complex" or false) ||
+        (f.num."0.1.40".complex or false) ||
+        (num."0.1.40"."complex" or false); }
+      { "0.1.40"."num-rational" =
+        (f.num."0.1.40"."num-rational" or false) ||
+        (f.num."0.1.40".rational or false) ||
+        (num."0.1.40"."rational" or false); }
+      { "0.1.40"."rational" =
+        (f.num."0.1.40"."rational" or false) ||
+        (f.num."0.1.40".default or false) ||
+        (num."0.1.40"."default" or false); }
+      { "0.1.40"."rustc-serialize" =
+        (f.num."0.1.40"."rustc-serialize" or false) ||
+        (f.num."0.1.40".default or false) ||
+        (num."0.1.40"."default" or false); }
+      { "0.1.40".default = (f.num."0.1.40".default or true); }
+    ];
+    num_integer."${deps.num."0.1.40".num_integer}".default = true;
+    num_iter."${deps.num."0.1.40".num_iter}".default = true;
+    num_traits."${deps.num."0.1.40".num_traits}".default = true;
+  }) [
+    (features_.num_integer."${deps."num"."0.1.40"."num_integer"}" deps)
+    (features_.num_iter."${deps."num"."0.1.40"."num_iter"}" deps)
+    (features_.num_traits."${deps."num"."0.1.40"."num_traits"}" deps)
+  ];
+
+
+# end
+# num-integer-0.1.35
+
+  crates.num_integer."0.1.35" = deps: { features?(features_.num_integer."0.1.35" deps {}) }: buildRustCrate {
+    crateName = "num-integer";
+    version = "0.1.35";
+    description = "Integer traits and functions";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0xybj8isi9b6wc646d5rc043i8l8j6wy0vrl4pn995qms9fxbbcc";
+    dependencies = mapFeatures features ([
+      (crates."num_traits"."${deps."num_integer"."0.1.35"."num_traits"}" deps)
+    ]);
+  };
+  features_.num_integer."0.1.35" = deps: f: updateFeatures f (rec {
+    num_integer."0.1.35".default = (f.num_integer."0.1.35".default or true);
+    num_traits."${deps.num_integer."0.1.35".num_traits}".default = true;
+  }) [
+    (features_.num_traits."${deps."num_integer"."0.1.35"."num_traits"}" deps)
+  ];
+
+
+# end
+# num-iter-0.1.34
+
+  crates.num_iter."0.1.34" = deps: { features?(features_.num_iter."0.1.34" deps {}) }: buildRustCrate {
+    crateName = "num-iter";
+    version = "0.1.34";
+    description = "External iterators for generic mathematics";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "02cld7x9dzbqbs6sxxzq1i22z3awlcd6ljkgvhkfr9rsnaxphzl9";
+    dependencies = mapFeatures features ([
+      (crates."num_integer"."${deps."num_iter"."0.1.34"."num_integer"}" deps)
+      (crates."num_traits"."${deps."num_iter"."0.1.34"."num_traits"}" deps)
+    ]);
+  };
+  features_.num_iter."0.1.34" = deps: f: updateFeatures f (rec {
+    num_integer."${deps.num_iter."0.1.34".num_integer}".default = true;
+    num_iter."0.1.34".default = (f.num_iter."0.1.34".default or true);
+    num_traits."${deps.num_iter."0.1.34".num_traits}".default = true;
+  }) [
+    (features_.num_integer."${deps."num_iter"."0.1.34"."num_integer"}" deps)
+    (features_.num_traits."${deps."num_iter"."0.1.34"."num_traits"}" deps)
+  ];
+
+
+# end
+# num-traits-0.1.40
+
+  crates.num_traits."0.1.40" = deps: { features?(features_.num_traits."0.1.40" deps {}) }: buildRustCrate {
+    crateName = "num-traits";
+    version = "0.1.40";
+    description = "Numeric traits for generic mathematics";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1fr8ghp4i97q3agki54i0hpmqxv3s65i2mqd1pinc7w7arc3fplw";
+  };
+  features_.num_traits."0.1.40" = deps: f: updateFeatures f (rec {
+    num_traits."0.1.40".default = (f.num_traits."0.1.40".default or true);
+  }) [];
+
+
+# end
+# num_cpus-1.8.0
+
+  crates.num_cpus."1.8.0" = deps: { features?(features_.num_cpus."1.8.0" deps {}) }: buildRustCrate {
+    crateName = "num_cpus";
+    version = "1.8.0";
+    description = "Get the number of CPUs on a machine.";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "1y6qnd9r8ga6y8mvlabdrr73nc8cshjjlzbvnanzyj9b8zzkfwk2";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."num_cpus"."1.8.0"."libc"}" deps)
+    ]);
+  };
+  features_.num_cpus."1.8.0" = deps: f: updateFeatures f (rec {
+    libc."${deps.num_cpus."1.8.0".libc}".default = true;
+    num_cpus."1.8.0".default = (f.num_cpus."1.8.0".default or true);
+  }) [
+    (features_.libc."${deps."num_cpus"."1.8.0"."libc"}" deps)
+  ];
+
+
+# end
+# openssl-0.10.15
+
+  crates.openssl."0.10.15" = deps: { features?(features_.openssl."0.10.15" deps {}) }: buildRustCrate {
+    crateName = "openssl";
+    version = "0.10.15";
+    description = "OpenSSL bindings";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "0fj5g66ibkyb6vfdfjgaypfn45vpj2cdv7d7qpq653sv57glcqri";
+    dependencies = mapFeatures features ([
+      (crates."bitflags"."${deps."openssl"."0.10.15"."bitflags"}" deps)
+      (crates."cfg_if"."${deps."openssl"."0.10.15"."cfg_if"}" deps)
+      (crates."foreign_types"."${deps."openssl"."0.10.15"."foreign_types"}" deps)
+      (crates."lazy_static"."${deps."openssl"."0.10.15"."lazy_static"}" deps)
+      (crates."libc"."${deps."openssl"."0.10.15"."libc"}" deps)
+      (crates."openssl_sys"."${deps."openssl"."0.10.15"."openssl_sys"}" deps)
+    ]);
+    features = mkFeatures (features."openssl"."0.10.15" or {});
+  };
+  features_.openssl."0.10.15" = deps: f: updateFeatures f (rec {
+    bitflags."${deps.openssl."0.10.15".bitflags}".default = true;
+    cfg_if."${deps.openssl."0.10.15".cfg_if}".default = true;
+    foreign_types."${deps.openssl."0.10.15".foreign_types}".default = true;
+    lazy_static."${deps.openssl."0.10.15".lazy_static}".default = true;
+    libc."${deps.openssl."0.10.15".libc}".default = true;
+    openssl."0.10.15".default = (f.openssl."0.10.15".default or true);
+    openssl_sys = fold recursiveUpdate {} [
+      { "${deps.openssl."0.10.15".openssl_sys}"."vendored" =
+        (f.openssl_sys."${deps.openssl."0.10.15".openssl_sys}"."vendored" or false) ||
+        (openssl."0.10.15"."vendored" or false) ||
+        (f."openssl"."0.10.15"."vendored" or false); }
+      { "${deps.openssl."0.10.15".openssl_sys}".default = true; }
+    ];
+  }) [
+    (features_.bitflags."${deps."openssl"."0.10.15"."bitflags"}" deps)
+    (features_.cfg_if."${deps."openssl"."0.10.15"."cfg_if"}" deps)
+    (features_.foreign_types."${deps."openssl"."0.10.15"."foreign_types"}" deps)
+    (features_.lazy_static."${deps."openssl"."0.10.15"."lazy_static"}" deps)
+    (features_.libc."${deps."openssl"."0.10.15"."libc"}" deps)
+    (features_.openssl_sys."${deps."openssl"."0.10.15"."openssl_sys"}" deps)
+  ];
+
+
+# end
+# openssl-probe-0.1.2
+
+  crates.openssl_probe."0.1.2" = deps: { features?(features_.openssl_probe."0.1.2" deps {}) }: buildRustCrate {
+    crateName = "openssl-probe";
+    version = "0.1.2";
+    description = "Tool for helping to find SSL certificate locations on the system for OpenSSL\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1a89fznx26vvaxyrxdvgf6iwai5xvs6xjvpjin68fgvrslv6n15a";
+  };
+  features_.openssl_probe."0.1.2" = deps: f: updateFeatures f (rec {
+    openssl_probe."0.1.2".default = (f.openssl_probe."0.1.2".default or true);
+  }) [];
+
+
+# end
+# openssl-sys-0.9.39
+
+  crates.openssl_sys."0.9.39" = deps: { features?(features_.openssl_sys."0.9.39" deps {}) }: buildRustCrate {
+    crateName = "openssl-sys";
+    version = "0.9.39";
+    description = "FFI bindings to OpenSSL";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "1lraqg3xz4jxrc99na17kn6srfhsgnj1yjk29mgsh803w40s2056";
+    build = "build/main.rs";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."openssl_sys"."0.9.39"."libc"}" deps)
+    ])
+      ++ (if abi == "msvc" then mapFeatures features ([
+]) else []);
+
+    buildDependencies = mapFeatures features ([
+      (crates."cc"."${deps."openssl_sys"."0.9.39"."cc"}" deps)
+      (crates."pkg_config"."${deps."openssl_sys"."0.9.39"."pkg_config"}" deps)
+    ]);
+    features = mkFeatures (features."openssl_sys"."0.9.39" or {});
+  };
+  features_.openssl_sys."0.9.39" = deps: f: updateFeatures f (rec {
+    cc."${deps.openssl_sys."0.9.39".cc}".default = true;
+    libc."${deps.openssl_sys."0.9.39".libc}".default = true;
+    openssl_sys = fold recursiveUpdate {} [
+      { "0.9.39"."openssl-src" =
+        (f.openssl_sys."0.9.39"."openssl-src" or false) ||
+        (f.openssl_sys."0.9.39".vendored or false) ||
+        (openssl_sys."0.9.39"."vendored" or false); }
+      { "0.9.39".default = (f.openssl_sys."0.9.39".default or true); }
+    ];
+    pkg_config."${deps.openssl_sys."0.9.39".pkg_config}".default = true;
+  }) [
+    (features_.libc."${deps."openssl_sys"."0.9.39"."libc"}" deps)
+    (features_.cc."${deps."openssl_sys"."0.9.39"."cc"}" deps)
+    (features_.pkg_config."${deps."openssl_sys"."0.9.39"."pkg_config"}" deps)
+  ];
+
+
+# end
+# owning_ref-0.4.0
+
+  crates.owning_ref."0.4.0" = deps: { features?(features_.owning_ref."0.4.0" deps {}) }: buildRustCrate {
+    crateName = "owning_ref";
+    version = "0.4.0";
+    description = "A library for creating references that carry their owner with them.";
+    authors = [ "Marvin Löbel <loebel.marvin@gmail.com>" ];
+    sha256 = "1m95qpc3hamkw9wlbfzqkzk7h6skyj40zr6sa3ps151slcfnnchm";
+    dependencies = mapFeatures features ([
+      (crates."stable_deref_trait"."${deps."owning_ref"."0.4.0"."stable_deref_trait"}" deps)
+    ]);
+  };
+  features_.owning_ref."0.4.0" = deps: f: updateFeatures f (rec {
+    owning_ref."0.4.0".default = (f.owning_ref."0.4.0".default or true);
+    stable_deref_trait."${deps.owning_ref."0.4.0".stable_deref_trait}".default = true;
+  }) [
+    (features_.stable_deref_trait."${deps."owning_ref"."0.4.0"."stable_deref_trait"}" deps)
+  ];
+
+
+# end
+# parking_lot-0.6.4
+
+  crates.parking_lot."0.6.4" = deps: { features?(features_.parking_lot."0.6.4" deps {}) }: buildRustCrate {
+    crateName = "parking_lot";
+    version = "0.6.4";
+    description = "More compact and efficient implementations of the standard synchronization primitives.";
+    authors = [ "Amanieu d'Antras <amanieu@gmail.com>" ];
+    sha256 = "0qwfysx8zfkj72sfcrqvd6pp7lgjmklyixsi3y0g6xjspw876rax";
+    dependencies = mapFeatures features ([
+      (crates."lock_api"."${deps."parking_lot"."0.6.4"."lock_api"}" deps)
+      (crates."parking_lot_core"."${deps."parking_lot"."0.6.4"."parking_lot_core"}" deps)
+    ]);
+    features = mkFeatures (features."parking_lot"."0.6.4" or {});
+  };
+  features_.parking_lot."0.6.4" = deps: f: updateFeatures f (rec {
+    lock_api = fold recursiveUpdate {} [
+      { "${deps.parking_lot."0.6.4".lock_api}"."nightly" =
+        (f.lock_api."${deps.parking_lot."0.6.4".lock_api}"."nightly" or false) ||
+        (parking_lot."0.6.4"."nightly" or false) ||
+        (f."parking_lot"."0.6.4"."nightly" or false); }
+      { "${deps.parking_lot."0.6.4".lock_api}"."owning_ref" =
+        (f.lock_api."${deps.parking_lot."0.6.4".lock_api}"."owning_ref" or false) ||
+        (parking_lot."0.6.4"."owning_ref" or false) ||
+        (f."parking_lot"."0.6.4"."owning_ref" or false); }
+      { "${deps.parking_lot."0.6.4".lock_api}".default = true; }
+    ];
+    parking_lot = fold recursiveUpdate {} [
+      { "0.6.4"."owning_ref" =
+        (f.parking_lot."0.6.4"."owning_ref" or false) ||
+        (f.parking_lot."0.6.4".default or false) ||
+        (parking_lot."0.6.4"."default" or false); }
+      { "0.6.4".default = (f.parking_lot."0.6.4".default or true); }
+    ];
+    parking_lot_core = fold recursiveUpdate {} [
+      { "${deps.parking_lot."0.6.4".parking_lot_core}"."deadlock_detection" =
+        (f.parking_lot_core."${deps.parking_lot."0.6.4".parking_lot_core}"."deadlock_detection" or false) ||
+        (parking_lot."0.6.4"."deadlock_detection" or false) ||
+        (f."parking_lot"."0.6.4"."deadlock_detection" or false); }
+      { "${deps.parking_lot."0.6.4".parking_lot_core}"."nightly" =
+        (f.parking_lot_core."${deps.parking_lot."0.6.4".parking_lot_core}"."nightly" or false) ||
+        (parking_lot."0.6.4"."nightly" or false) ||
+        (f."parking_lot"."0.6.4"."nightly" or false); }
+      { "${deps.parking_lot."0.6.4".parking_lot_core}".default = true; }
+    ];
+  }) [
+    (features_.lock_api."${deps."parking_lot"."0.6.4"."lock_api"}" deps)
+    (features_.parking_lot_core."${deps."parking_lot"."0.6.4"."parking_lot_core"}" deps)
+  ];
+
+
+# end
+# parking_lot_core-0.3.1
+
+  crates.parking_lot_core."0.3.1" = deps: { features?(features_.parking_lot_core."0.3.1" deps {}) }: buildRustCrate {
+    crateName = "parking_lot_core";
+    version = "0.3.1";
+    description = "An advanced API for creating custom synchronization primitives.";
+    authors = [ "Amanieu d'Antras <amanieu@gmail.com>" ];
+    sha256 = "0h5p7dys8cx9y6ii4i57ampf7qdr8zmkpn543kd3h7nkhml8bw72";
+    dependencies = mapFeatures features ([
+      (crates."rand"."${deps."parking_lot_core"."0.3.1"."rand"}" deps)
+      (crates."smallvec"."${deps."parking_lot_core"."0.3.1"."smallvec"}" deps)
+    ])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."parking_lot_core"."0.3.1"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."parking_lot_core"."0.3.1"."winapi"}" deps)
+    ]) else []);
+
+    buildDependencies = mapFeatures features ([
+      (crates."rustc_version"."${deps."parking_lot_core"."0.3.1"."rustc_version"}" deps)
+    ]);
+    features = mkFeatures (features."parking_lot_core"."0.3.1" or {});
+  };
+  features_.parking_lot_core."0.3.1" = deps: f: updateFeatures f (rec {
+    libc."${deps.parking_lot_core."0.3.1".libc}".default = true;
+    parking_lot_core = fold recursiveUpdate {} [
+      { "0.3.1"."backtrace" =
+        (f.parking_lot_core."0.3.1"."backtrace" or false) ||
+        (f.parking_lot_core."0.3.1".deadlock_detection or false) ||
+        (parking_lot_core."0.3.1"."deadlock_detection" or false); }
+      { "0.3.1"."petgraph" =
+        (f.parking_lot_core."0.3.1"."petgraph" or false) ||
+        (f.parking_lot_core."0.3.1".deadlock_detection or false) ||
+        (parking_lot_core."0.3.1"."deadlock_detection" or false); }
+      { "0.3.1"."thread-id" =
+        (f.parking_lot_core."0.3.1"."thread-id" or false) ||
+        (f.parking_lot_core."0.3.1".deadlock_detection or false) ||
+        (parking_lot_core."0.3.1"."deadlock_detection" or false); }
+      { "0.3.1".default = (f.parking_lot_core."0.3.1".default or true); }
+    ];
+    rand."${deps.parking_lot_core."0.3.1".rand}".default = true;
+    rustc_version."${deps.parking_lot_core."0.3.1".rustc_version}".default = true;
+    smallvec."${deps.parking_lot_core."0.3.1".smallvec}".default = true;
+    winapi = fold recursiveUpdate {} [
+      { "${deps.parking_lot_core."0.3.1".winapi}"."errhandlingapi" = true; }
+      { "${deps.parking_lot_core."0.3.1".winapi}"."handleapi" = true; }
+      { "${deps.parking_lot_core."0.3.1".winapi}"."minwindef" = true; }
+      { "${deps.parking_lot_core."0.3.1".winapi}"."ntstatus" = true; }
+      { "${deps.parking_lot_core."0.3.1".winapi}"."winbase" = true; }
+      { "${deps.parking_lot_core."0.3.1".winapi}"."winerror" = true; }
+      { "${deps.parking_lot_core."0.3.1".winapi}"."winnt" = true; }
+      { "${deps.parking_lot_core."0.3.1".winapi}".default = true; }
+    ];
+  }) [
+    (features_.rand."${deps."parking_lot_core"."0.3.1"."rand"}" deps)
+    (features_.smallvec."${deps."parking_lot_core"."0.3.1"."smallvec"}" deps)
+    (features_.rustc_version."${deps."parking_lot_core"."0.3.1"."rustc_version"}" deps)
+    (features_.libc."${deps."parking_lot_core"."0.3.1"."libc"}" deps)
+    (features_.winapi."${deps."parking_lot_core"."0.3.1"."winapi"}" deps)
+  ];
+
+
+# end
+# percent-encoding-1.0.1
+
+  crates.percent_encoding."1.0.1" = deps: { features?(features_.percent_encoding."1.0.1" deps {}) }: buildRustCrate {
+    crateName = "percent-encoding";
+    version = "1.0.1";
+    description = "Percent encoding and decoding";
+    authors = [ "The rust-url developers" ];
+    sha256 = "04ahrp7aw4ip7fmadb0bknybmkfav0kk0gw4ps3ydq5w6hr0ib5i";
+    libPath = "lib.rs";
+  };
+  features_.percent_encoding."1.0.1" = deps: f: updateFeatures f (rec {
+    percent_encoding."1.0.1".default = (f.percent_encoding."1.0.1".default or true);
+  }) [];
+
+
+# end
+# phf-0.7.21
+
+  crates.phf."0.7.21" = deps: { features?(features_.phf."0.7.21" deps {}) }: buildRustCrate {
+    crateName = "phf";
+    version = "0.7.21";
+    description = "Runtime support for perfect hash function data structures";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "11m2rzm2s8s35m0s97gjxxb181xz352kjlhr387xj5c8q3qp5afg";
+    libPath = "src/lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."phf_shared"."${deps."phf"."0.7.21"."phf_shared"}" deps)
+    ]);
+    features = mkFeatures (features."phf"."0.7.21" or {});
+  };
+  features_.phf."0.7.21" = deps: f: updateFeatures f (rec {
+    phf."0.7.21".default = (f.phf."0.7.21".default or true);
+    phf_shared = fold recursiveUpdate {} [
+      { "${deps.phf."0.7.21".phf_shared}"."core" =
+        (f.phf_shared."${deps.phf."0.7.21".phf_shared}"."core" or false) ||
+        (phf."0.7.21"."core" or false) ||
+        (f."phf"."0.7.21"."core" or false); }
+      { "${deps.phf."0.7.21".phf_shared}"."unicase" =
+        (f.phf_shared."${deps.phf."0.7.21".phf_shared}"."unicase" or false) ||
+        (phf."0.7.21"."unicase" or false) ||
+        (f."phf"."0.7.21"."unicase" or false); }
+      { "${deps.phf."0.7.21".phf_shared}".default = true; }
+    ];
+  }) [
+    (features_.phf_shared."${deps."phf"."0.7.21"."phf_shared"}" deps)
+  ];
+
+
+# end
+# phf_codegen-0.7.21
+
+  crates.phf_codegen."0.7.21" = deps: { features?(features_.phf_codegen."0.7.21" deps {}) }: buildRustCrate {
+    crateName = "phf_codegen";
+    version = "0.7.21";
+    description = "Codegen library for PHF types";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "0kgy8s2q4zr0iqcm21mgq4ppc45wy6z7b5wn98xyfsrcad6lwmmj";
+    dependencies = mapFeatures features ([
+      (crates."phf_generator"."${deps."phf_codegen"."0.7.21"."phf_generator"}" deps)
+      (crates."phf_shared"."${deps."phf_codegen"."0.7.21"."phf_shared"}" deps)
+    ]);
+  };
+  features_.phf_codegen."0.7.21" = deps: f: updateFeatures f (rec {
+    phf_codegen."0.7.21".default = (f.phf_codegen."0.7.21".default or true);
+    phf_generator."${deps.phf_codegen."0.7.21".phf_generator}".default = true;
+    phf_shared."${deps.phf_codegen."0.7.21".phf_shared}".default = true;
+  }) [
+    (features_.phf_generator."${deps."phf_codegen"."0.7.21"."phf_generator"}" deps)
+    (features_.phf_shared."${deps."phf_codegen"."0.7.21"."phf_shared"}" deps)
+  ];
+
+
+# end
+# phf_generator-0.7.21
+
+  crates.phf_generator."0.7.21" = deps: { features?(features_.phf_generator."0.7.21" deps {}) }: buildRustCrate {
+    crateName = "phf_generator";
+    version = "0.7.21";
+    description = "PHF generation logic";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "1jxjfzc6d6d4l9nv0r2bb66if5brk9lnncmg4dpjjifn6zhhqd9g";
+    dependencies = mapFeatures features ([
+      (crates."phf_shared"."${deps."phf_generator"."0.7.21"."phf_shared"}" deps)
+      (crates."rand"."${deps."phf_generator"."0.7.21"."rand"}" deps)
+    ]);
+  };
+  features_.phf_generator."0.7.21" = deps: f: updateFeatures f (rec {
+    phf_generator."0.7.21".default = (f.phf_generator."0.7.21".default or true);
+    phf_shared."${deps.phf_generator."0.7.21".phf_shared}".default = true;
+    rand."${deps.phf_generator."0.7.21".rand}".default = true;
+  }) [
+    (features_.phf_shared."${deps."phf_generator"."0.7.21"."phf_shared"}" deps)
+    (features_.rand."${deps."phf_generator"."0.7.21"."rand"}" deps)
+  ];
+
+
+# end
+# phf_shared-0.7.21
+
+  crates.phf_shared."0.7.21" = deps: { features?(features_.phf_shared."0.7.21" deps {}) }: buildRustCrate {
+    crateName = "phf_shared";
+    version = "0.7.21";
+    description = "Support code shared by PHF libraries";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "0lxpg3wgxfhzfalmf9ha9my1lsvfjy74ah9f6mfw88xlp545jlln";
+    libPath = "src/lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."siphasher"."${deps."phf_shared"."0.7.21"."siphasher"}" deps)
+    ]
+      ++ (if features.phf_shared."0.7.21".unicase or false then [ (crates.unicase."${deps."phf_shared"."0.7.21".unicase}" deps) ] else []));
+    features = mkFeatures (features."phf_shared"."0.7.21" or {});
+  };
+  features_.phf_shared."0.7.21" = deps: f: updateFeatures f (rec {
+    phf_shared."0.7.21".default = (f.phf_shared."0.7.21".default or true);
+    siphasher."${deps.phf_shared."0.7.21".siphasher}".default = true;
+    unicase."${deps.phf_shared."0.7.21".unicase}".default = true;
+  }) [
+    (features_.siphasher."${deps."phf_shared"."0.7.21"."siphasher"}" deps)
+    (features_.unicase."${deps."phf_shared"."0.7.21"."unicase"}" deps)
+  ];
+
+
+# end
+# pkg-config-0.3.9
+
+  crates.pkg_config."0.3.9" = deps: { features?(features_.pkg_config."0.3.9" deps {}) }: buildRustCrate {
+    crateName = "pkg-config";
+    version = "0.3.9";
+    description = "A library to run the pkg-config system tool at build time in order to be used in\nCargo build scripts.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "06k8fxgrsrxj8mjpjcq1n7mn2p1shpxif4zg9y5h09c7vy20s146";
+  };
+  features_.pkg_config."0.3.9" = deps: f: updateFeatures f (rec {
+    pkg_config."0.3.9".default = (f.pkg_config."0.3.9".default or true);
+  }) [];
+
+
+# end
+# quote-0.3.15
+
+  crates.quote."0.3.15" = deps: { features?(features_.quote."0.3.15" deps {}) }: buildRustCrate {
+    crateName = "quote";
+    version = "0.3.15";
+    description = "Quasi-quoting macro quote!(...)";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "09il61jv4kd1360spaj46qwyl21fv1qz18fsv2jra8wdnlgl5jsg";
+  };
+  features_.quote."0.3.15" = deps: f: updateFeatures f (rec {
+    quote."0.3.15".default = (f.quote."0.3.15".default or true);
+  }) [];
+
+
+# end
+# rand-0.3.18
+
+  crates.rand."0.3.18" = deps: { features?(features_.rand."0.3.18" deps {}) }: buildRustCrate {
+    crateName = "rand";
+    version = "0.3.18";
+    description = "Random number generators and other randomness functionality.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "15d7c3myn968dzjs0a2pgv58hzdavxnq6swgj032lw2v966ir4xv";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."rand"."0.3.18"."libc"}" deps)
+    ])
+      ++ (if kernel == "fuchsia" then mapFeatures features ([
+      (crates."fuchsia_zircon"."${deps."rand"."0.3.18"."fuchsia_zircon"}" deps)
+    ]) else []);
+    features = mkFeatures (features."rand"."0.3.18" or {});
+  };
+  features_.rand."0.3.18" = deps: f: updateFeatures f (rec {
+    fuchsia_zircon."${deps.rand."0.3.18".fuchsia_zircon}".default = true;
+    libc."${deps.rand."0.3.18".libc}".default = true;
+    rand = fold recursiveUpdate {} [
+      { "0.3.18"."i128_support" =
+        (f.rand."0.3.18"."i128_support" or false) ||
+        (f.rand."0.3.18".nightly or false) ||
+        (rand."0.3.18"."nightly" or false); }
+      { "0.3.18".default = (f.rand."0.3.18".default or true); }
+    ];
+  }) [
+    (features_.libc."${deps."rand"."0.3.18"."libc"}" deps)
+    (features_.fuchsia_zircon."${deps."rand"."0.3.18"."fuchsia_zircon"}" deps)
+  ];
+
+
+# end
+# rand-0.5.5
+
+  crates.rand."0.5.5" = deps: { features?(features_.rand."0.5.5" deps {}) }: buildRustCrate {
+    crateName = "rand";
+    version = "0.5.5";
+    description = "Random number generators and other randomness functionality.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0d7pnsh57qxhz1ghrzk113ddkn13kf2g758ffnbxq4nhwjfzhlc9";
+    dependencies = mapFeatures features ([
+      (crates."rand_core"."${deps."rand"."0.5.5"."rand_core"}" deps)
+    ])
+      ++ (if kernel == "cloudabi" then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.5.5".cloudabi or false then [ (crates.cloudabi."${deps."rand"."0.5.5".cloudabi}" deps) ] else [])) else [])
+      ++ (if kernel == "fuchsia" then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.5.5".fuchsia-zircon or false then [ (crates.fuchsia_zircon."${deps."rand"."0.5.5".fuchsia_zircon}" deps) ] else [])) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.5.5".libc or false then [ (crates.libc."${deps."rand"."0.5.5".libc}" deps) ] else [])) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.5.5".winapi or false then [ (crates.winapi."${deps."rand"."0.5.5".winapi}" deps) ] else [])) else [])
+      ++ (if kernel == "wasm32-unknown-unknown" then mapFeatures features ([
+]) else []);
+    features = mkFeatures (features."rand"."0.5.5" or {});
+  };
+  features_.rand."0.5.5" = deps: f: updateFeatures f (rec {
+    cloudabi."${deps.rand."0.5.5".cloudabi}".default = true;
+    fuchsia_zircon."${deps.rand."0.5.5".fuchsia_zircon}".default = true;
+    libc."${deps.rand."0.5.5".libc}".default = true;
+    rand = fold recursiveUpdate {} [
+      { "0.5.5"."alloc" =
+        (f.rand."0.5.5"."alloc" or false) ||
+        (f.rand."0.5.5".std or false) ||
+        (rand."0.5.5"."std" or false); }
+      { "0.5.5"."cloudabi" =
+        (f.rand."0.5.5"."cloudabi" or false) ||
+        (f.rand."0.5.5".std or false) ||
+        (rand."0.5.5"."std" or false); }
+      { "0.5.5"."fuchsia-zircon" =
+        (f.rand."0.5.5"."fuchsia-zircon" or false) ||
+        (f.rand."0.5.5".std or false) ||
+        (rand."0.5.5"."std" or false); }
+      { "0.5.5"."i128_support" =
+        (f.rand."0.5.5"."i128_support" or false) ||
+        (f.rand."0.5.5".nightly or false) ||
+        (rand."0.5.5"."nightly" or false); }
+      { "0.5.5"."libc" =
+        (f.rand."0.5.5"."libc" or false) ||
+        (f.rand."0.5.5".std or false) ||
+        (rand."0.5.5"."std" or false); }
+      { "0.5.5"."serde" =
+        (f.rand."0.5.5"."serde" or false) ||
+        (f.rand."0.5.5".serde1 or false) ||
+        (rand."0.5.5"."serde1" or false); }
+      { "0.5.5"."serde_derive" =
+        (f.rand."0.5.5"."serde_derive" or false) ||
+        (f.rand."0.5.5".serde1 or false) ||
+        (rand."0.5.5"."serde1" or false); }
+      { "0.5.5"."std" =
+        (f.rand."0.5.5"."std" or false) ||
+        (f.rand."0.5.5".default or false) ||
+        (rand."0.5.5"."default" or false); }
+      { "0.5.5"."winapi" =
+        (f.rand."0.5.5"."winapi" or false) ||
+        (f.rand."0.5.5".std or false) ||
+        (rand."0.5.5"."std" or false); }
+      { "0.5.5".default = (f.rand."0.5.5".default or true); }
+    ];
+    rand_core = fold recursiveUpdate {} [
+      { "${deps.rand."0.5.5".rand_core}"."alloc" =
+        (f.rand_core."${deps.rand."0.5.5".rand_core}"."alloc" or false) ||
+        (rand."0.5.5"."alloc" or false) ||
+        (f."rand"."0.5.5"."alloc" or false); }
+      { "${deps.rand."0.5.5".rand_core}"."serde1" =
+        (f.rand_core."${deps.rand."0.5.5".rand_core}"."serde1" or false) ||
+        (rand."0.5.5"."serde1" or false) ||
+        (f."rand"."0.5.5"."serde1" or false); }
+      { "${deps.rand."0.5.5".rand_core}"."std" =
+        (f.rand_core."${deps.rand."0.5.5".rand_core}"."std" or false) ||
+        (rand."0.5.5"."std" or false) ||
+        (f."rand"."0.5.5"."std" or false); }
+      { "${deps.rand."0.5.5".rand_core}".default = (f.rand_core."${deps.rand."0.5.5".rand_core}".default or false); }
+    ];
+    winapi = fold recursiveUpdate {} [
+      { "${deps.rand."0.5.5".winapi}"."minwindef" = true; }
+      { "${deps.rand."0.5.5".winapi}"."ntsecapi" = true; }
+      { "${deps.rand."0.5.5".winapi}"."profileapi" = true; }
+      { "${deps.rand."0.5.5".winapi}"."winnt" = true; }
+      { "${deps.rand."0.5.5".winapi}".default = true; }
+    ];
+  }) [
+    (features_.rand_core."${deps."rand"."0.5.5"."rand_core"}" deps)
+    (features_.cloudabi."${deps."rand"."0.5.5"."cloudabi"}" deps)
+    (features_.fuchsia_zircon."${deps."rand"."0.5.5"."fuchsia_zircon"}" deps)
+    (features_.libc."${deps."rand"."0.5.5"."libc"}" deps)
+    (features_.winapi."${deps."rand"."0.5.5"."winapi"}" deps)
+  ];
+
+
+# end
+# rand-0.6.1
+
+  crates.rand."0.6.1" = deps: { features?(features_.rand."0.6.1" deps {}) }: buildRustCrate {
+    crateName = "rand";
+    version = "0.6.1";
+    description = "Random number generators and other randomness functionality.\n";
+    authors = [ "The Rand Project Developers" "The Rust Project Developers" ];
+    sha256 = "123s3w165iiifmf475lisqkd0kbr7nwnn3k4b1zg2cwap5v9m9bz";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."rand_chacha"."${deps."rand"."0.6.1"."rand_chacha"}" deps)
+      (crates."rand_core"."${deps."rand"."0.6.1"."rand_core"}" deps)
+      (crates."rand_hc"."${deps."rand"."0.6.1"."rand_hc"}" deps)
+      (crates."rand_isaac"."${deps."rand"."0.6.1"."rand_isaac"}" deps)
+      (crates."rand_pcg"."${deps."rand"."0.6.1"."rand_pcg"}" deps)
+      (crates."rand_xorshift"."${deps."rand"."0.6.1"."rand_xorshift"}" deps)
+    ])
+      ++ (if kernel == "cloudabi" then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.6.1".cloudabi or false then [ (crates.cloudabi."${deps."rand"."0.6.1".cloudabi}" deps) ] else [])) else [])
+      ++ (if kernel == "fuchsia" then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.6.1".fuchsia-zircon or false then [ (crates.fuchsia_zircon."${deps."rand"."0.6.1".fuchsia_zircon}" deps) ] else [])) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.6.1".libc or false then [ (crates.libc."${deps."rand"."0.6.1".libc}" deps) ] else [])) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.6.1".winapi or false then [ (crates.winapi."${deps."rand"."0.6.1".winapi}" deps) ] else [])) else [])
+      ++ (if kernel == "wasm32-unknown-unknown" then mapFeatures features ([
+]) else []);
+
+    buildDependencies = mapFeatures features ([
+      (crates."rustc_version"."${deps."rand"."0.6.1"."rustc_version"}" deps)
+    ]);
+    features = mkFeatures (features."rand"."0.6.1" or {});
+  };
+  features_.rand."0.6.1" = deps: f: updateFeatures f (rec {
+    cloudabi."${deps.rand."0.6.1".cloudabi}".default = true;
+    fuchsia_zircon."${deps.rand."0.6.1".fuchsia_zircon}".default = true;
+    libc."${deps.rand."0.6.1".libc}".default = (f.libc."${deps.rand."0.6.1".libc}".default or false);
+    rand = fold recursiveUpdate {} [
+      { "0.6.1"."alloc" =
+        (f.rand."0.6.1"."alloc" or false) ||
+        (f.rand."0.6.1".std or false) ||
+        (rand."0.6.1"."std" or false); }
+      { "0.6.1"."cloudabi" =
+        (f.rand."0.6.1"."cloudabi" or false) ||
+        (f.rand."0.6.1".std or false) ||
+        (rand."0.6.1"."std" or false); }
+      { "0.6.1"."fuchsia-zircon" =
+        (f.rand."0.6.1"."fuchsia-zircon" or false) ||
+        (f.rand."0.6.1".std or false) ||
+        (rand."0.6.1"."std" or false); }
+      { "0.6.1"."libc" =
+        (f.rand."0.6.1"."libc" or false) ||
+        (f.rand."0.6.1".std or false) ||
+        (rand."0.6.1"."std" or false); }
+      { "0.6.1"."packed_simd" =
+        (f.rand."0.6.1"."packed_simd" or false) ||
+        (f.rand."0.6.1".simd_support or false) ||
+        (rand."0.6.1"."simd_support" or false); }
+      { "0.6.1"."simd_support" =
+        (f.rand."0.6.1"."simd_support" or false) ||
+        (f.rand."0.6.1".nightly or false) ||
+        (rand."0.6.1"."nightly" or false); }
+      { "0.6.1"."std" =
+        (f.rand."0.6.1"."std" or false) ||
+        (f.rand."0.6.1".default or false) ||
+        (rand."0.6.1"."default" or false); }
+      { "0.6.1"."winapi" =
+        (f.rand."0.6.1"."winapi" or false) ||
+        (f.rand."0.6.1".std or false) ||
+        (rand."0.6.1"."std" or false); }
+      { "0.6.1".default = (f.rand."0.6.1".default or true); }
+    ];
+    rand_chacha."${deps.rand."0.6.1".rand_chacha}".default = true;
+    rand_core = fold recursiveUpdate {} [
+      { "${deps.rand."0.6.1".rand_core}"."alloc" =
+        (f.rand_core."${deps.rand."0.6.1".rand_core}"."alloc" or false) ||
+        (rand."0.6.1"."alloc" or false) ||
+        (f."rand"."0.6.1"."alloc" or false); }
+      { "${deps.rand."0.6.1".rand_core}"."serde1" =
+        (f.rand_core."${deps.rand."0.6.1".rand_core}"."serde1" or false) ||
+        (rand."0.6.1"."serde1" or false) ||
+        (f."rand"."0.6.1"."serde1" or false); }
+      { "${deps.rand."0.6.1".rand_core}"."std" =
+        (f.rand_core."${deps.rand."0.6.1".rand_core}"."std" or false) ||
+        (rand."0.6.1"."std" or false) ||
+        (f."rand"."0.6.1"."std" or false); }
+      { "${deps.rand."0.6.1".rand_core}".default = (f.rand_core."${deps.rand."0.6.1".rand_core}".default or false); }
+    ];
+    rand_hc."${deps.rand."0.6.1".rand_hc}".default = true;
+    rand_isaac = fold recursiveUpdate {} [
+      { "${deps.rand."0.6.1".rand_isaac}"."serde1" =
+        (f.rand_isaac."${deps.rand."0.6.1".rand_isaac}"."serde1" or false) ||
+        (rand."0.6.1"."serde1" or false) ||
+        (f."rand"."0.6.1"."serde1" or false); }
+      { "${deps.rand."0.6.1".rand_isaac}".default = true; }
+    ];
+    rand_pcg."${deps.rand."0.6.1".rand_pcg}".default = true;
+    rand_xorshift = fold recursiveUpdate {} [
+      { "${deps.rand."0.6.1".rand_xorshift}"."serde1" =
+        (f.rand_xorshift."${deps.rand."0.6.1".rand_xorshift}"."serde1" or false) ||
+        (rand."0.6.1"."serde1" or false) ||
+        (f."rand"."0.6.1"."serde1" or false); }
+      { "${deps.rand."0.6.1".rand_xorshift}".default = true; }
+    ];
+    rustc_version."${deps.rand."0.6.1".rustc_version}".default = true;
+    winapi = fold recursiveUpdate {} [
+      { "${deps.rand."0.6.1".winapi}"."minwindef" = true; }
+      { "${deps.rand."0.6.1".winapi}"."ntsecapi" = true; }
+      { "${deps.rand."0.6.1".winapi}"."profileapi" = true; }
+      { "${deps.rand."0.6.1".winapi}"."winnt" = true; }
+      { "${deps.rand."0.6.1".winapi}".default = true; }
+    ];
+  }) [
+    (features_.rand_chacha."${deps."rand"."0.6.1"."rand_chacha"}" deps)
+    (features_.rand_core."${deps."rand"."0.6.1"."rand_core"}" deps)
+    (features_.rand_hc."${deps."rand"."0.6.1"."rand_hc"}" deps)
+    (features_.rand_isaac."${deps."rand"."0.6.1"."rand_isaac"}" deps)
+    (features_.rand_pcg."${deps."rand"."0.6.1"."rand_pcg"}" deps)
+    (features_.rand_xorshift."${deps."rand"."0.6.1"."rand_xorshift"}" deps)
+    (features_.rustc_version."${deps."rand"."0.6.1"."rustc_version"}" deps)
+    (features_.cloudabi."${deps."rand"."0.6.1"."cloudabi"}" deps)
+    (features_.fuchsia_zircon."${deps."rand"."0.6.1"."fuchsia_zircon"}" deps)
+    (features_.libc."${deps."rand"."0.6.1"."libc"}" deps)
+    (features_.winapi."${deps."rand"."0.6.1"."winapi"}" deps)
+  ];
+
+
+# end
+# rand_chacha-0.1.0
+
+  crates.rand_chacha."0.1.0" = deps: { features?(features_.rand_chacha."0.1.0" deps {}) }: buildRustCrate {
+    crateName = "rand_chacha";
+    version = "0.1.0";
+    description = "ChaCha random number generator\n";
+    authors = [ "The Rand Project Developers" "The Rust Project Developers" ];
+    sha256 = "0q5pq34cqv1mnibgzd1cmx9q49vkr2lvalkkvizmlld217jmlqc6";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."rand_core"."${deps."rand_chacha"."0.1.0"."rand_core"}" deps)
+    ]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."rustc_version"."${deps."rand_chacha"."0.1.0"."rustc_version"}" deps)
+    ]);
+  };
+  features_.rand_chacha."0.1.0" = deps: f: updateFeatures f (rec {
+    rand_chacha."0.1.0".default = (f.rand_chacha."0.1.0".default or true);
+    rand_core."${deps.rand_chacha."0.1.0".rand_core}".default = (f.rand_core."${deps.rand_chacha."0.1.0".rand_core}".default or false);
+    rustc_version."${deps.rand_chacha."0.1.0".rustc_version}".default = true;
+  }) [
+    (features_.rand_core."${deps."rand_chacha"."0.1.0"."rand_core"}" deps)
+    (features_.rustc_version."${deps."rand_chacha"."0.1.0"."rustc_version"}" deps)
+  ];
+
+
+# end
+# rand_core-0.2.2
+
+  crates.rand_core."0.2.2" = deps: { features?(features_.rand_core."0.2.2" deps {}) }: buildRustCrate {
+    crateName = "rand_core";
+    version = "0.2.2";
+    description = "Core random number generator traits and tools for implementation.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1cxnaxmsirz2wxsajsjkd1wk6lqfqbcprqkha4bq3didznrl22sc";
+    dependencies = mapFeatures features ([
+      (crates."rand_core"."${deps."rand_core"."0.2.2"."rand_core"}" deps)
+    ]);
+    features = mkFeatures (features."rand_core"."0.2.2" or {});
+  };
+  features_.rand_core."0.2.2" = deps: f: updateFeatures f (rec {
+    rand_core = fold recursiveUpdate {} [
+      { "${deps.rand_core."0.2.2".rand_core}"."alloc" =
+        (f.rand_core."${deps.rand_core."0.2.2".rand_core}"."alloc" or false) ||
+        (rand_core."0.2.2"."alloc" or false) ||
+        (f."rand_core"."0.2.2"."alloc" or false); }
+      { "${deps.rand_core."0.2.2".rand_core}"."serde1" =
+        (f.rand_core."${deps.rand_core."0.2.2".rand_core}"."serde1" or false) ||
+        (rand_core."0.2.2"."serde1" or false) ||
+        (f."rand_core"."0.2.2"."serde1" or false); }
+      { "${deps.rand_core."0.2.2".rand_core}"."std" =
+        (f.rand_core."${deps.rand_core."0.2.2".rand_core}"."std" or false) ||
+        (rand_core."0.2.2"."std" or false) ||
+        (f."rand_core"."0.2.2"."std" or false); }
+      { "${deps.rand_core."0.2.2".rand_core}".default = (f.rand_core."${deps.rand_core."0.2.2".rand_core}".default or false); }
+      { "0.2.2".default = (f.rand_core."0.2.2".default or true); }
+    ];
+  }) [
+    (features_.rand_core."${deps."rand_core"."0.2.2"."rand_core"}" deps)
+  ];
+
+
+# end
+# rand_core-0.3.0
+
+  crates.rand_core."0.3.0" = deps: { features?(features_.rand_core."0.3.0" deps {}) }: buildRustCrate {
+    crateName = "rand_core";
+    version = "0.3.0";
+    description = "Core random number generator traits and tools for implementation.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1vafw316apjys9va3j987s02djhqp7y21v671v3ix0p5j9bjq339";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."rand_core"."0.3.0" or {});
+  };
+  features_.rand_core."0.3.0" = deps: f: updateFeatures f (rec {
+    rand_core = fold recursiveUpdate {} [
+      { "0.3.0"."alloc" =
+        (f.rand_core."0.3.0"."alloc" or false) ||
+        (f.rand_core."0.3.0".std or false) ||
+        (rand_core."0.3.0"."std" or false); }
+      { "0.3.0"."serde" =
+        (f.rand_core."0.3.0"."serde" or false) ||
+        (f.rand_core."0.3.0".serde1 or false) ||
+        (rand_core."0.3.0"."serde1" or false); }
+      { "0.3.0"."serde_derive" =
+        (f.rand_core."0.3.0"."serde_derive" or false) ||
+        (f.rand_core."0.3.0".serde1 or false) ||
+        (rand_core."0.3.0"."serde1" or false); }
+      { "0.3.0"."std" =
+        (f.rand_core."0.3.0"."std" or false) ||
+        (f.rand_core."0.3.0".default or false) ||
+        (rand_core."0.3.0"."default" or false); }
+      { "0.3.0".default = (f.rand_core."0.3.0".default or true); }
+    ];
+  }) [];
+
+
+# end
+# rand_hc-0.1.0
+
+  crates.rand_hc."0.1.0" = deps: { features?(features_.rand_hc."0.1.0" deps {}) }: buildRustCrate {
+    crateName = "rand_hc";
+    version = "0.1.0";
+    description = "HC128 random number generator\n";
+    authors = [ "The Rand Project Developers" ];
+    sha256 = "05agb75j87yp7y1zk8yf7bpm66hc0673r3dlypn0kazynr6fdgkz";
+    dependencies = mapFeatures features ([
+      (crates."rand_core"."${deps."rand_hc"."0.1.0"."rand_core"}" deps)
+    ]);
+  };
+  features_.rand_hc."0.1.0" = deps: f: updateFeatures f (rec {
+    rand_core."${deps.rand_hc."0.1.0".rand_core}".default = (f.rand_core."${deps.rand_hc."0.1.0".rand_core}".default or false);
+    rand_hc."0.1.0".default = (f.rand_hc."0.1.0".default or true);
+  }) [
+    (features_.rand_core."${deps."rand_hc"."0.1.0"."rand_core"}" deps)
+  ];
+
+
+# end
+# rand_isaac-0.1.1
+
+  crates.rand_isaac."0.1.1" = deps: { features?(features_.rand_isaac."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "rand_isaac";
+    version = "0.1.1";
+    description = "ISAAC random number generator\n";
+    authors = [ "The Rand Project Developers" "The Rust Project Developers" ];
+    sha256 = "10hhdh5b5sa03s6b63y9bafm956jwilx41s71jbrzl63ccx8lxdq";
+    dependencies = mapFeatures features ([
+      (crates."rand_core"."${deps."rand_isaac"."0.1.1"."rand_core"}" deps)
+    ]);
+    features = mkFeatures (features."rand_isaac"."0.1.1" or {});
+  };
+  features_.rand_isaac."0.1.1" = deps: f: updateFeatures f (rec {
+    rand_core = fold recursiveUpdate {} [
+      { "${deps.rand_isaac."0.1.1".rand_core}"."serde1" =
+        (f.rand_core."${deps.rand_isaac."0.1.1".rand_core}"."serde1" or false) ||
+        (rand_isaac."0.1.1"."serde1" or false) ||
+        (f."rand_isaac"."0.1.1"."serde1" or false); }
+      { "${deps.rand_isaac."0.1.1".rand_core}".default = (f.rand_core."${deps.rand_isaac."0.1.1".rand_core}".default or false); }
+    ];
+    rand_isaac = fold recursiveUpdate {} [
+      { "0.1.1"."serde" =
+        (f.rand_isaac."0.1.1"."serde" or false) ||
+        (f.rand_isaac."0.1.1".serde1 or false) ||
+        (rand_isaac."0.1.1"."serde1" or false); }
+      { "0.1.1"."serde_derive" =
+        (f.rand_isaac."0.1.1"."serde_derive" or false) ||
+        (f.rand_isaac."0.1.1".serde1 or false) ||
+        (rand_isaac."0.1.1"."serde1" or false); }
+      { "0.1.1".default = (f.rand_isaac."0.1.1".default or true); }
+    ];
+  }) [
+    (features_.rand_core."${deps."rand_isaac"."0.1.1"."rand_core"}" deps)
+  ];
+
+
+# end
+# rand_pcg-0.1.1
+
+  crates.rand_pcg."0.1.1" = deps: { features?(features_.rand_pcg."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "rand_pcg";
+    version = "0.1.1";
+    description = "Selected PCG random number generators\n";
+    authors = [ "The Rand Project Developers" ];
+    sha256 = "0x6pzldj0c8c7gmr67ni5i7w2f7n7idvs3ckx0fc3wkhwl7wrbza";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."rand_core"."${deps."rand_pcg"."0.1.1"."rand_core"}" deps)
+    ]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."rustc_version"."${deps."rand_pcg"."0.1.1"."rustc_version"}" deps)
+    ]);
+    features = mkFeatures (features."rand_pcg"."0.1.1" or {});
+  };
+  features_.rand_pcg."0.1.1" = deps: f: updateFeatures f (rec {
+    rand_core."${deps.rand_pcg."0.1.1".rand_core}".default = (f.rand_core."${deps.rand_pcg."0.1.1".rand_core}".default or false);
+    rand_pcg = fold recursiveUpdate {} [
+      { "0.1.1"."serde" =
+        (f.rand_pcg."0.1.1"."serde" or false) ||
+        (f.rand_pcg."0.1.1".serde1 or false) ||
+        (rand_pcg."0.1.1"."serde1" or false); }
+      { "0.1.1"."serde_derive" =
+        (f.rand_pcg."0.1.1"."serde_derive" or false) ||
+        (f.rand_pcg."0.1.1".serde1 or false) ||
+        (rand_pcg."0.1.1"."serde1" or false); }
+      { "0.1.1".default = (f.rand_pcg."0.1.1".default or true); }
+    ];
+    rustc_version."${deps.rand_pcg."0.1.1".rustc_version}".default = true;
+  }) [
+    (features_.rand_core."${deps."rand_pcg"."0.1.1"."rand_core"}" deps)
+    (features_.rustc_version."${deps."rand_pcg"."0.1.1"."rustc_version"}" deps)
+  ];
+
+
+# end
+# rand_xorshift-0.1.0
+
+  crates.rand_xorshift."0.1.0" = deps: { features?(features_.rand_xorshift."0.1.0" deps {}) }: buildRustCrate {
+    crateName = "rand_xorshift";
+    version = "0.1.0";
+    description = "Xorshift random number generator\n";
+    authors = [ "The Rand Project Developers" "The Rust Project Developers" ];
+    sha256 = "063vxb678ki8gq4rx9w7yg5f9i29ig1zwykl67mfsxn0kxlkv2ih";
+    dependencies = mapFeatures features ([
+      (crates."rand_core"."${deps."rand_xorshift"."0.1.0"."rand_core"}" deps)
+    ]);
+    features = mkFeatures (features."rand_xorshift"."0.1.0" or {});
+  };
+  features_.rand_xorshift."0.1.0" = deps: f: updateFeatures f (rec {
+    rand_core."${deps.rand_xorshift."0.1.0".rand_core}".default = (f.rand_core."${deps.rand_xorshift."0.1.0".rand_core}".default or false);
+    rand_xorshift = fold recursiveUpdate {} [
+      { "0.1.0"."serde" =
+        (f.rand_xorshift."0.1.0"."serde" or false) ||
+        (f.rand_xorshift."0.1.0".serde1 or false) ||
+        (rand_xorshift."0.1.0"."serde1" or false); }
+      { "0.1.0"."serde_derive" =
+        (f.rand_xorshift."0.1.0"."serde_derive" or false) ||
+        (f.rand_xorshift."0.1.0".serde1 or false) ||
+        (rand_xorshift."0.1.0"."serde1" or false); }
+      { "0.1.0".default = (f.rand_xorshift."0.1.0".default or true); }
+    ];
+  }) [
+    (features_.rand_core."${deps."rand_xorshift"."0.1.0"."rand_core"}" deps)
+  ];
+
+
+# end
+# redox_syscall-0.1.31
+
+  crates.redox_syscall."0.1.31" = deps: { features?(features_.redox_syscall."0.1.31" deps {}) }: buildRustCrate {
+    crateName = "redox_syscall";
+    version = "0.1.31";
+    description = "A Rust library to access raw Redox system calls";
+    authors = [ "Jeremy Soller <jackpot51@gmail.com>" ];
+    sha256 = "0kipd9qslzin4fgj4jrxv6yz5l3l71gnbd7fq1jhk2j7f2sq33j4";
+    libName = "syscall";
+  };
+  features_.redox_syscall."0.1.31" = deps: f: updateFeatures f (rec {
+    redox_syscall."0.1.31".default = (f.redox_syscall."0.1.31".default or true);
+  }) [];
+
+
+# end
+# redox_termios-0.1.1
+
+  crates.redox_termios."0.1.1" = deps: { features?(features_.redox_termios."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "redox_termios";
+    version = "0.1.1";
+    description = "A Rust library to access Redox termios functions";
+    authors = [ "Jeremy Soller <jackpot51@gmail.com>" ];
+    sha256 = "04s6yyzjca552hdaqlvqhp3vw0zqbc304md5czyd3axh56iry8wh";
+    libPath = "src/lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."redox_syscall"."${deps."redox_termios"."0.1.1"."redox_syscall"}" deps)
+    ]);
+  };
+  features_.redox_termios."0.1.1" = deps: f: updateFeatures f (rec {
+    redox_syscall."${deps.redox_termios."0.1.1".redox_syscall}".default = true;
+    redox_termios."0.1.1".default = (f.redox_termios."0.1.1".default or true);
+  }) [
+    (features_.redox_syscall."${deps."redox_termios"."0.1.1"."redox_syscall"}" deps)
+  ];
+
+
+# end
+# regex-0.1.80
+
+  crates.regex."0.1.80" = deps: { features?(features_.regex."0.1.80" deps {}) }: buildRustCrate {
+    crateName = "regex";
+    version = "0.1.80";
+    description = "An implementation of regular expressions for Rust. This implementation uses\nfinite automata and guarantees linear time matching on all inputs.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0y4s8ghhx6sgzb35irwivm3w0l2hhqhmdcd2px9hirqnkagal9l6";
+    dependencies = mapFeatures features ([
+      (crates."aho_corasick"."${deps."regex"."0.1.80"."aho_corasick"}" deps)
+      (crates."memchr"."${deps."regex"."0.1.80"."memchr"}" deps)
+      (crates."regex_syntax"."${deps."regex"."0.1.80"."regex_syntax"}" deps)
+      (crates."thread_local"."${deps."regex"."0.1.80"."thread_local"}" deps)
+      (crates."utf8_ranges"."${deps."regex"."0.1.80"."utf8_ranges"}" deps)
+    ]);
+    features = mkFeatures (features."regex"."0.1.80" or {});
+  };
+  features_.regex."0.1.80" = deps: f: updateFeatures f (rec {
+    aho_corasick."${deps.regex."0.1.80".aho_corasick}".default = true;
+    memchr."${deps.regex."0.1.80".memchr}".default = true;
+    regex = fold recursiveUpdate {} [
+      { "0.1.80"."simd" =
+        (f.regex."0.1.80"."simd" or false) ||
+        (f.regex."0.1.80".simd-accel or false) ||
+        (regex."0.1.80"."simd-accel" or false); }
+      { "0.1.80".default = (f.regex."0.1.80".default or true); }
+    ];
+    regex_syntax."${deps.regex."0.1.80".regex_syntax}".default = true;
+    thread_local."${deps.regex."0.1.80".thread_local}".default = true;
+    utf8_ranges."${deps.regex."0.1.80".utf8_ranges}".default = true;
+  }) [
+    (features_.aho_corasick."${deps."regex"."0.1.80"."aho_corasick"}" deps)
+    (features_.memchr."${deps."regex"."0.1.80"."memchr"}" deps)
+    (features_.regex_syntax."${deps."regex"."0.1.80"."regex_syntax"}" deps)
+    (features_.thread_local."${deps."regex"."0.1.80"."thread_local"}" deps)
+    (features_.utf8_ranges."${deps."regex"."0.1.80"."utf8_ranges"}" deps)
+  ];
+
+
+# end
+# regex-syntax-0.3.9
+
+  crates.regex_syntax."0.3.9" = deps: { features?(features_.regex_syntax."0.3.9" deps {}) }: buildRustCrate {
+    crateName = "regex-syntax";
+    version = "0.3.9";
+    description = "A regular expression parser.";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1mzhphkbwppwd1zam2jkgjk550cqgf6506i87bw2yzrvcsraiw7m";
+  };
+  features_.regex_syntax."0.3.9" = deps: f: updateFeatures f (rec {
+    regex_syntax."0.3.9".default = (f.regex_syntax."0.3.9".default or true);
+  }) [];
+
+
+# end
+# remove_dir_all-0.5.1
+
+  crates.remove_dir_all."0.5.1" = deps: { features?(features_.remove_dir_all."0.5.1" deps {}) }: buildRustCrate {
+    crateName = "remove_dir_all";
+    version = "0.5.1";
+    description = "A safe, reliable implementation of remove_dir_all for Windows";
+    authors = [ "Aaronepower <theaaronepower@gmail.com>" ];
+    sha256 = "1chx3yvfbj46xjz4bzsvps208l46hfbcy0sm98gpiya454n4rrl7";
+    dependencies = (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."remove_dir_all"."0.5.1"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.remove_dir_all."0.5.1" = deps: f: updateFeatures f (rec {
+    remove_dir_all."0.5.1".default = (f.remove_dir_all."0.5.1".default or true);
+    winapi = fold recursiveUpdate {} [
+      { "${deps.remove_dir_all."0.5.1".winapi}"."errhandlingapi" = true; }
+      { "${deps.remove_dir_all."0.5.1".winapi}"."fileapi" = true; }
+      { "${deps.remove_dir_all."0.5.1".winapi}"."std" = true; }
+      { "${deps.remove_dir_all."0.5.1".winapi}"."winbase" = true; }
+      { "${deps.remove_dir_all."0.5.1".winapi}"."winerror" = true; }
+      { "${deps.remove_dir_all."0.5.1".winapi}".default = true; }
+    ];
+  }) [
+    (features_.winapi."${deps."remove_dir_all"."0.5.1"."winapi"}" deps)
+  ];
+
+
+# end
+# reqwest-0.9.5
+
+  crates.reqwest."0.9.5" = deps: { features?(features_.reqwest."0.9.5" deps {}) }: buildRustCrate {
+    crateName = "reqwest";
+    version = "0.9.5";
+    description = "higher level HTTP client library";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "1y0fq8ifhbgn6bfvjq831svirqszszj7f73ykbd28inwc0xiv2ix";
+    dependencies = mapFeatures features ([
+      (crates."base64"."${deps."reqwest"."0.9.5"."base64"}" deps)
+      (crates."bytes"."${deps."reqwest"."0.9.5"."bytes"}" deps)
+      (crates."encoding_rs"."${deps."reqwest"."0.9.5"."encoding_rs"}" deps)
+      (crates."futures"."${deps."reqwest"."0.9.5"."futures"}" deps)
+      (crates."http"."${deps."reqwest"."0.9.5"."http"}" deps)
+      (crates."hyper"."${deps."reqwest"."0.9.5"."hyper"}" deps)
+      (crates."libflate"."${deps."reqwest"."0.9.5"."libflate"}" deps)
+      (crates."log"."${deps."reqwest"."0.9.5"."log"}" deps)
+      (crates."mime"."${deps."reqwest"."0.9.5"."mime"}" deps)
+      (crates."mime_guess"."${deps."reqwest"."0.9.5"."mime_guess"}" deps)
+      (crates."serde"."${deps."reqwest"."0.9.5"."serde"}" deps)
+      (crates."serde_json"."${deps."reqwest"."0.9.5"."serde_json"}" deps)
+      (crates."serde_urlencoded"."${deps."reqwest"."0.9.5"."serde_urlencoded"}" deps)
+      (crates."tokio"."${deps."reqwest"."0.9.5"."tokio"}" deps)
+      (crates."tokio_io"."${deps."reqwest"."0.9.5"."tokio_io"}" deps)
+      (crates."url"."${deps."reqwest"."0.9.5"."url"}" deps)
+      (crates."uuid"."${deps."reqwest"."0.9.5"."uuid"}" deps)
+    ]
+      ++ (if features.reqwest."0.9.5".hyper-tls or false then [ (crates.hyper_tls."${deps."reqwest"."0.9.5".hyper_tls}" deps) ] else [])
+      ++ (if features.reqwest."0.9.5".native-tls or false then [ (crates.native_tls."${deps."reqwest"."0.9.5".native_tls}" deps) ] else []));
+    features = mkFeatures (features."reqwest"."0.9.5" or {});
+  };
+  features_.reqwest."0.9.5" = deps: f: updateFeatures f (rec {
+    base64."${deps.reqwest."0.9.5".base64}".default = true;
+    bytes."${deps.reqwest."0.9.5".bytes}".default = true;
+    encoding_rs."${deps.reqwest."0.9.5".encoding_rs}".default = true;
+    futures."${deps.reqwest."0.9.5".futures}".default = true;
+    http."${deps.reqwest."0.9.5".http}".default = true;
+    hyper."${deps.reqwest."0.9.5".hyper}".default = true;
+    hyper_tls."${deps.reqwest."0.9.5".hyper_tls}".default = true;
+    libflate."${deps.reqwest."0.9.5".libflate}".default = true;
+    log."${deps.reqwest."0.9.5".log}".default = true;
+    mime."${deps.reqwest."0.9.5".mime}".default = true;
+    mime_guess."${deps.reqwest."0.9.5".mime_guess}".default = true;
+    native_tls."${deps.reqwest."0.9.5".native_tls}".default = true;
+    reqwest = fold recursiveUpdate {} [
+      { "0.9.5"."default-tls" =
+        (f.reqwest."0.9.5"."default-tls" or false) ||
+        (f.reqwest."0.9.5".default or false) ||
+        (reqwest."0.9.5"."default" or false); }
+      { "0.9.5"."hyper-old-types" =
+        (f.reqwest."0.9.5"."hyper-old-types" or false) ||
+        (f.reqwest."0.9.5".hyper-011 or false) ||
+        (reqwest."0.9.5"."hyper-011" or false); }
+      { "0.9.5"."hyper-tls" =
+        (f.reqwest."0.9.5"."hyper-tls" or false) ||
+        (f.reqwest."0.9.5".default-tls or false) ||
+        (reqwest."0.9.5"."default-tls" or false); }
+      { "0.9.5"."native-tls" =
+        (f.reqwest."0.9.5"."native-tls" or false) ||
+        (f.reqwest."0.9.5".default-tls or false) ||
+        (reqwest."0.9.5"."default-tls" or false); }
+      { "0.9.5".default = (f.reqwest."0.9.5".default or true); }
+    ];
+    serde."${deps.reqwest."0.9.5".serde}".default = true;
+    serde_json."${deps.reqwest."0.9.5".serde_json}".default = true;
+    serde_urlencoded."${deps.reqwest."0.9.5".serde_urlencoded}".default = true;
+    tokio."${deps.reqwest."0.9.5".tokio}".default = true;
+    tokio_io."${deps.reqwest."0.9.5".tokio_io}".default = true;
+    url."${deps.reqwest."0.9.5".url}".default = true;
+    uuid = fold recursiveUpdate {} [
+      { "${deps.reqwest."0.9.5".uuid}"."v4" = true; }
+      { "${deps.reqwest."0.9.5".uuid}".default = true; }
+    ];
+  }) [
+    (features_.base64."${deps."reqwest"."0.9.5"."base64"}" deps)
+    (features_.bytes."${deps."reqwest"."0.9.5"."bytes"}" deps)
+    (features_.encoding_rs."${deps."reqwest"."0.9.5"."encoding_rs"}" deps)
+    (features_.futures."${deps."reqwest"."0.9.5"."futures"}" deps)
+    (features_.http."${deps."reqwest"."0.9.5"."http"}" deps)
+    (features_.hyper."${deps."reqwest"."0.9.5"."hyper"}" deps)
+    (features_.hyper_tls."${deps."reqwest"."0.9.5"."hyper_tls"}" deps)
+    (features_.libflate."${deps."reqwest"."0.9.5"."libflate"}" deps)
+    (features_.log."${deps."reqwest"."0.9.5"."log"}" deps)
+    (features_.mime."${deps."reqwest"."0.9.5"."mime"}" deps)
+    (features_.mime_guess."${deps."reqwest"."0.9.5"."mime_guess"}" deps)
+    (features_.native_tls."${deps."reqwest"."0.9.5"."native_tls"}" deps)
+    (features_.serde."${deps."reqwest"."0.9.5"."serde"}" deps)
+    (features_.serde_json."${deps."reqwest"."0.9.5"."serde_json"}" deps)
+    (features_.serde_urlencoded."${deps."reqwest"."0.9.5"."serde_urlencoded"}" deps)
+    (features_.tokio."${deps."reqwest"."0.9.5"."tokio"}" deps)
+    (features_.tokio_io."${deps."reqwest"."0.9.5"."tokio_io"}" deps)
+    (features_.url."${deps."reqwest"."0.9.5"."url"}" deps)
+    (features_.uuid."${deps."reqwest"."0.9.5"."uuid"}" deps)
+  ];
+
+
+# end
+# rustc_version-0.2.3
+
+  crates.rustc_version."0.2.3" = deps: { features?(features_.rustc_version."0.2.3" deps {}) }: buildRustCrate {
+    crateName = "rustc_version";
+    version = "0.2.3";
+    description = "A library for querying the version of a installed rustc compiler";
+    authors = [ "Marvin Löbel <loebel.marvin@gmail.com>" ];
+    sha256 = "0rgwzbgs3i9fqjm1p4ra3n7frafmpwl29c8lw85kv1rxn7n2zaa7";
+    dependencies = mapFeatures features ([
+      (crates."semver"."${deps."rustc_version"."0.2.3"."semver"}" deps)
+    ]);
+  };
+  features_.rustc_version."0.2.3" = deps: f: updateFeatures f (rec {
+    rustc_version."0.2.3".default = (f.rustc_version."0.2.3".default or true);
+    semver."${deps.rustc_version."0.2.3".semver}".default = true;
+  }) [
+    (features_.semver."${deps."rustc_version"."0.2.3"."semver"}" deps)
+  ];
+
+
+# end
+# safemem-0.3.0
+
+  crates.safemem."0.3.0" = deps: { features?(features_.safemem."0.3.0" deps {}) }: buildRustCrate {
+    crateName = "safemem";
+    version = "0.3.0";
+    description = "Safe wrappers for memory-accessing functions, like `std::ptr::copy()`.";
+    authors = [ "Austin Bonander <austin.bonander@gmail.com>" ];
+    sha256 = "0pr39b468d05f6m7m4alsngmj5p7an8df21apsxbi57k0lmwrr18";
+    features = mkFeatures (features."safemem"."0.3.0" or {});
+  };
+  features_.safemem."0.3.0" = deps: f: updateFeatures f (rec {
+    safemem = fold recursiveUpdate {} [
+      { "0.3.0"."std" =
+        (f.safemem."0.3.0"."std" or false) ||
+        (f.safemem."0.3.0".default or false) ||
+        (safemem."0.3.0"."default" or false); }
+      { "0.3.0".default = (f.safemem."0.3.0".default or true); }
+    ];
+  }) [];
+
+
+# end
+# schannel-0.1.14
+
+  crates.schannel."0.1.14" = deps: { features?(features_.schannel."0.1.14" deps {}) }: buildRustCrate {
+    crateName = "schannel";
+    version = "0.1.14";
+    description = "Schannel bindings for rust, allowing SSL/TLS (e.g. https) without openssl";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" "Steffen Butzer <steffen.butzer@outlook.com>" ];
+    sha256 = "1g0a88jknns1kwn3x1k3ci5y5zvg58pwdg1xrxkrw3cwd2hynm9k";
+    dependencies = mapFeatures features ([
+      (crates."lazy_static"."${deps."schannel"."0.1.14"."lazy_static"}" deps)
+      (crates."winapi"."${deps."schannel"."0.1.14"."winapi"}" deps)
+    ]);
+  };
+  features_.schannel."0.1.14" = deps: f: updateFeatures f (rec {
+    lazy_static."${deps.schannel."0.1.14".lazy_static}".default = true;
+    schannel."0.1.14".default = (f.schannel."0.1.14".default or true);
+    winapi = fold recursiveUpdate {} [
+      { "${deps.schannel."0.1.14".winapi}"."lmcons" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."minschannel" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."schannel" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."securitybaseapi" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."sspi" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."sysinfoapi" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."timezoneapi" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."winbase" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."wincrypt" = true; }
+      { "${deps.schannel."0.1.14".winapi}"."winerror" = true; }
+      { "${deps.schannel."0.1.14".winapi}".default = true; }
+    ];
+  }) [
+    (features_.lazy_static."${deps."schannel"."0.1.14"."lazy_static"}" deps)
+    (features_.winapi."${deps."schannel"."0.1.14"."winapi"}" deps)
+  ];
+
+
+# end
+# scopeguard-0.3.3
+
+  crates.scopeguard."0.3.3" = deps: { features?(features_.scopeguard."0.3.3" deps {}) }: buildRustCrate {
+    crateName = "scopeguard";
+    version = "0.3.3";
+    description = "A RAII scope guard that will run a given closure when it goes out of scope,\neven if the code between panics (assuming unwinding panic).\n\nDefines the macros `defer!` and `defer_on_unwind!`; the latter only runs\nif the scope is extited through unwinding on panic.\n";
+    authors = [ "bluss" ];
+    sha256 = "0i1l013csrqzfz6c68pr5pi01hg5v5yahq8fsdmaxy6p8ygsjf3r";
+    features = mkFeatures (features."scopeguard"."0.3.3" or {});
+  };
+  features_.scopeguard."0.3.3" = deps: f: updateFeatures f (rec {
+    scopeguard = fold recursiveUpdate {} [
+      { "0.3.3"."use_std" =
+        (f.scopeguard."0.3.3"."use_std" or false) ||
+        (f.scopeguard."0.3.3".default or false) ||
+        (scopeguard."0.3.3"."default" or false); }
+      { "0.3.3".default = (f.scopeguard."0.3.3".default or true); }
+    ];
+  }) [];
+
+
+# end
+# security-framework-0.2.1
+
+  crates.security_framework."0.2.1" = deps: { features?(features_.security_framework."0.2.1" deps {}) }: buildRustCrate {
+    crateName = "security-framework";
+    version = "0.2.1";
+    description = "Security Framework bindings";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "0qia5g66zmjn57m9swhrkz3cll3bs4061qim6w72v08c2w0pkvsw";
+    dependencies = mapFeatures features ([
+      (crates."core_foundation"."${deps."security_framework"."0.2.1"."core_foundation"}" deps)
+      (crates."core_foundation_sys"."${deps."security_framework"."0.2.1"."core_foundation_sys"}" deps)
+      (crates."libc"."${deps."security_framework"."0.2.1"."libc"}" deps)
+      (crates."security_framework_sys"."${deps."security_framework"."0.2.1"."security_framework_sys"}" deps)
+    ]);
+    features = mkFeatures (features."security_framework"."0.2.1" or {});
+  };
+  features_.security_framework."0.2.1" = deps: f: updateFeatures f (rec {
+    core_foundation."${deps.security_framework."0.2.1".core_foundation}".default = true;
+    core_foundation_sys."${deps.security_framework."0.2.1".core_foundation_sys}".default = true;
+    libc."${deps.security_framework."0.2.1".libc}".default = true;
+    security_framework = fold recursiveUpdate {} [
+      { "0.2.1"."OSX_10_10" =
+        (f.security_framework."0.2.1"."OSX_10_10" or false) ||
+        (f.security_framework."0.2.1".OSX_10_11 or false) ||
+        (security_framework."0.2.1"."OSX_10_11" or false); }
+      { "0.2.1"."OSX_10_11" =
+        (f.security_framework."0.2.1"."OSX_10_11" or false) ||
+        (f.security_framework."0.2.1".OSX_10_12 or false) ||
+        (security_framework."0.2.1"."OSX_10_12" or false); }
+      { "0.2.1"."OSX_10_9" =
+        (f.security_framework."0.2.1"."OSX_10_9" or false) ||
+        (f.security_framework."0.2.1".OSX_10_10 or false) ||
+        (security_framework."0.2.1"."OSX_10_10" or false); }
+      { "0.2.1".default = (f.security_framework."0.2.1".default or true); }
+    ];
+    security_framework_sys = fold recursiveUpdate {} [
+      { "${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_10" =
+        (f.security_framework_sys."${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_10" or false) ||
+        (security_framework."0.2.1"."OSX_10_10" or false) ||
+        (f."security_framework"."0.2.1"."OSX_10_10" or false); }
+      { "${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_11" =
+        (f.security_framework_sys."${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_11" or false) ||
+        (security_framework."0.2.1"."OSX_10_11" or false) ||
+        (f."security_framework"."0.2.1"."OSX_10_11" or false) ||
+        (security_framework."0.2.1"."OSX_10_12" or false) ||
+        (f."security_framework"."0.2.1"."OSX_10_12" or false); }
+      { "${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_9" =
+        (f.security_framework_sys."${deps.security_framework."0.2.1".security_framework_sys}"."OSX_10_9" or false) ||
+        (security_framework."0.2.1"."OSX_10_9" or false) ||
+        (f."security_framework"."0.2.1"."OSX_10_9" or false); }
+      { "${deps.security_framework."0.2.1".security_framework_sys}".default = true; }
+    ];
+  }) [
+    (features_.core_foundation."${deps."security_framework"."0.2.1"."core_foundation"}" deps)
+    (features_.core_foundation_sys."${deps."security_framework"."0.2.1"."core_foundation_sys"}" deps)
+    (features_.libc."${deps."security_framework"."0.2.1"."libc"}" deps)
+    (features_.security_framework_sys."${deps."security_framework"."0.2.1"."security_framework_sys"}" deps)
+  ];
+
+
+# end
+# security-framework-sys-0.2.1
+
+  crates.security_framework_sys."0.2.1" = deps: { features?(features_.security_framework_sys."0.2.1" deps {}) }: buildRustCrate {
+    crateName = "security-framework-sys";
+    version = "0.2.1";
+    description = "Security Framework bindings";
+    authors = [ "Steven Fackler <sfackler@gmail.com>" ];
+    sha256 = "0ijxy7bdi4am092hrhm645hcv36xprdx1gjcjmnyw6n78x8sv2iz";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."core_foundation_sys"."${deps."security_framework_sys"."0.2.1"."core_foundation_sys"}" deps)
+      (crates."libc"."${deps."security_framework_sys"."0.2.1"."libc"}" deps)
+    ]);
+    features = mkFeatures (features."security_framework_sys"."0.2.1" or {});
+  };
+  features_.security_framework_sys."0.2.1" = deps: f: updateFeatures f (rec {
+    core_foundation_sys."${deps.security_framework_sys."0.2.1".core_foundation_sys}".default = true;
+    libc."${deps.security_framework_sys."0.2.1".libc}".default = true;
+    security_framework_sys = fold recursiveUpdate {} [
+      { "0.2.1"."OSX_10_10" =
+        (f.security_framework_sys."0.2.1"."OSX_10_10" or false) ||
+        (f.security_framework_sys."0.2.1".OSX_10_11 or false) ||
+        (security_framework_sys."0.2.1"."OSX_10_11" or false); }
+      { "0.2.1"."OSX_10_11" =
+        (f.security_framework_sys."0.2.1"."OSX_10_11" or false) ||
+        (f.security_framework_sys."0.2.1".OSX_10_12 or false) ||
+        (security_framework_sys."0.2.1"."OSX_10_12" or false); }
+      { "0.2.1"."OSX_10_9" =
+        (f.security_framework_sys."0.2.1"."OSX_10_9" or false) ||
+        (f.security_framework_sys."0.2.1".OSX_10_10 or false) ||
+        (security_framework_sys."0.2.1"."OSX_10_10" or false); }
+      { "0.2.1".default = (f.security_framework_sys."0.2.1".default or true); }
+    ];
+  }) [
+    (features_.core_foundation_sys."${deps."security_framework_sys"."0.2.1"."core_foundation_sys"}" deps)
+    (features_.libc."${deps."security_framework_sys"."0.2.1"."libc"}" deps)
+  ];
+
+
+# end
+# semver-0.9.0
+
+  crates.semver."0.9.0" = deps: { features?(features_.semver."0.9.0" deps {}) }: buildRustCrate {
+    crateName = "semver";
+    version = "0.9.0";
+    description = "Semantic version parsing and comparison.\n";
+    authors = [ "Steve Klabnik <steve@steveklabnik.com>" "The Rust Project Developers" ];
+    sha256 = "0azak2lb2wc36s3x15az886kck7rpnksrw14lalm157rg9sc9z63";
+    dependencies = mapFeatures features ([
+      (crates."semver_parser"."${deps."semver"."0.9.0"."semver_parser"}" deps)
+    ]);
+    features = mkFeatures (features."semver"."0.9.0" or {});
+  };
+  features_.semver."0.9.0" = deps: f: updateFeatures f (rec {
+    semver = fold recursiveUpdate {} [
+      { "0.9.0"."serde" =
+        (f.semver."0.9.0"."serde" or false) ||
+        (f.semver."0.9.0".ci or false) ||
+        (semver."0.9.0"."ci" or false); }
+      { "0.9.0".default = (f.semver."0.9.0".default or true); }
+    ];
+    semver_parser."${deps.semver."0.9.0".semver_parser}".default = true;
+  }) [
+    (features_.semver_parser."${deps."semver"."0.9.0"."semver_parser"}" deps)
+  ];
+
+
+# end
+# semver-parser-0.7.0
+
+  crates.semver_parser."0.7.0" = deps: { features?(features_.semver_parser."0.7.0" deps {}) }: buildRustCrate {
+    crateName = "semver-parser";
+    version = "0.7.0";
+    description = "Parsing of the semver spec.\n";
+    authors = [ "Steve Klabnik <steve@steveklabnik.com>" ];
+    sha256 = "1da66c8413yakx0y15k8c055yna5lyb6fr0fw9318kdwkrk5k12h";
+  };
+  features_.semver_parser."0.7.0" = deps: f: updateFeatures f (rec {
+    semver_parser."0.7.0".default = (f.semver_parser."0.7.0".default or true);
+  }) [];
+
+
+# end
+# serde-1.0.21
+
+  crates.serde."1.0.21" = deps: { features?(features_.serde."1.0.21" deps {}) }: buildRustCrate {
+    crateName = "serde";
+    version = "1.0.21";
+    description = "A generic serialization/deserialization framework";
+    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "10almq7pvx8s4ryiqk8gf7fj5igl0yq6dcjknwc67rkmxd8q50w3";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."serde"."1.0.21" or {});
+  };
+  features_.serde."1.0.21" = deps: f: updateFeatures f (rec {
+    serde = fold recursiveUpdate {} [
+      { "1.0.21"."serde_derive" =
+        (f.serde."1.0.21"."serde_derive" or false) ||
+        (f.serde."1.0.21".derive or false) ||
+        (serde."1.0.21"."derive" or false) ||
+        (f.serde."1.0.21".playground or false) ||
+        (serde."1.0.21"."playground" or false); }
+      { "1.0.21"."std" =
+        (f.serde."1.0.21"."std" or false) ||
+        (f.serde."1.0.21".default or false) ||
+        (serde."1.0.21"."default" or false); }
+      { "1.0.21"."unstable" =
+        (f.serde."1.0.21"."unstable" or false) ||
+        (f.serde."1.0.21".alloc or false) ||
+        (serde."1.0.21"."alloc" or false); }
+      { "1.0.21".default = (f.serde."1.0.21".default or true); }
+    ];
+  }) [];
+
+
+# end
+# serde_json-1.0.6
+
+  crates.serde_json."1.0.6" = deps: { features?(features_.serde_json."1.0.6" deps {}) }: buildRustCrate {
+    crateName = "serde_json";
+    version = "1.0.6";
+    description = "A JSON serialization file format";
+    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1kacyc59splwbg8gr7qs32pp9smgy1khq0ggnv07yxhs7h355vjz";
+    dependencies = mapFeatures features ([
+      (crates."dtoa"."${deps."serde_json"."1.0.6"."dtoa"}" deps)
+      (crates."itoa"."${deps."serde_json"."1.0.6"."itoa"}" deps)
+      (crates."num_traits"."${deps."serde_json"."1.0.6"."num_traits"}" deps)
+      (crates."serde"."${deps."serde_json"."1.0.6"."serde"}" deps)
+    ]);
+    features = mkFeatures (features."serde_json"."1.0.6" or {});
+  };
+  features_.serde_json."1.0.6" = deps: f: updateFeatures f (rec {
+    dtoa."${deps.serde_json."1.0.6".dtoa}".default = true;
+    itoa."${deps.serde_json."1.0.6".itoa}".default = true;
+    num_traits."${deps.serde_json."1.0.6".num_traits}".default = true;
+    serde."${deps.serde_json."1.0.6".serde}".default = true;
+    serde_json = fold recursiveUpdate {} [
+      { "1.0.6"."linked-hash-map" =
+        (f.serde_json."1.0.6"."linked-hash-map" or false) ||
+        (f.serde_json."1.0.6".preserve_order or false) ||
+        (serde_json."1.0.6"."preserve_order" or false); }
+      { "1.0.6".default = (f.serde_json."1.0.6".default or true); }
+    ];
+  }) [
+    (features_.dtoa."${deps."serde_json"."1.0.6"."dtoa"}" deps)
+    (features_.itoa."${deps."serde_json"."1.0.6"."itoa"}" deps)
+    (features_.num_traits."${deps."serde_json"."1.0.6"."num_traits"}" deps)
+    (features_.serde."${deps."serde_json"."1.0.6"."serde"}" deps)
+  ];
+
+
+# end
+# serde_urlencoded-0.5.1
+
+  crates.serde_urlencoded."0.5.1" = deps: { features?(features_.serde_urlencoded."0.5.1" deps {}) }: buildRustCrate {
+    crateName = "serde_urlencoded";
+    version = "0.5.1";
+    description = "`x-www-form-urlencoded` meets Serde";
+    authors = [ "Anthony Ramine <n.oxyde@gmail.com>" ];
+    sha256 = "0zh2wlnapmcwqhxnnq1mdlmg8vily7j54wvj01s7cvapzg5jphdl";
+    dependencies = mapFeatures features ([
+      (crates."dtoa"."${deps."serde_urlencoded"."0.5.1"."dtoa"}" deps)
+      (crates."itoa"."${deps."serde_urlencoded"."0.5.1"."itoa"}" deps)
+      (crates."serde"."${deps."serde_urlencoded"."0.5.1"."serde"}" deps)
+      (crates."url"."${deps."serde_urlencoded"."0.5.1"."url"}" deps)
+    ]);
+  };
+  features_.serde_urlencoded."0.5.1" = deps: f: updateFeatures f (rec {
+    dtoa."${deps.serde_urlencoded."0.5.1".dtoa}".default = true;
+    itoa."${deps.serde_urlencoded."0.5.1".itoa}".default = true;
+    serde."${deps.serde_urlencoded."0.5.1".serde}".default = true;
+    serde_urlencoded."0.5.1".default = (f.serde_urlencoded."0.5.1".default or true);
+    url."${deps.serde_urlencoded."0.5.1".url}".default = true;
+  }) [
+    (features_.dtoa."${deps."serde_urlencoded"."0.5.1"."dtoa"}" deps)
+    (features_.itoa."${deps."serde_urlencoded"."0.5.1"."itoa"}" deps)
+    (features_.serde."${deps."serde_urlencoded"."0.5.1"."serde"}" deps)
+    (features_.url."${deps."serde_urlencoded"."0.5.1"."url"}" deps)
+  ];
+
+
+# end
+# siphasher-0.2.2
+
+  crates.siphasher."0.2.2" = deps: { features?(features_.siphasher."0.2.2" deps {}) }: buildRustCrate {
+    crateName = "siphasher";
+    version = "0.2.2";
+    description = "SipHash functions from rust-core < 1.13";
+    authors = [ "Frank Denis <github@pureftpd.org>" ];
+    sha256 = "0iyx7nlzfny9ly1634a6zcq0yvrinhxhypwas4p8ry3zqnn76qqr";
+    dependencies = mapFeatures features ([
+]);
+  };
+  features_.siphasher."0.2.2" = deps: f: updateFeatures f (rec {
+    siphasher."0.2.2".default = (f.siphasher."0.2.2".default or true);
+  }) [];
+
+
+# end
+# slab-0.4.0
+
+  crates.slab."0.4.0" = deps: { features?(features_.slab."0.4.0" deps {}) }: buildRustCrate {
+    crateName = "slab";
+    version = "0.4.0";
+    description = "Pre-allocated storage for a uniform data type";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "1qy2vkgwqgj5z4ygdkh040n9yh1vz80v5flxb1xrvw3i4wxs7yx0";
+  };
+  features_.slab."0.4.0" = deps: f: updateFeatures f (rec {
+    slab."0.4.0".default = (f.slab."0.4.0".default or true);
+  }) [];
+
+
+# end
+# slog-1.7.1
+
+  crates.slog."1.7.1" = deps: { features?(features_.slog."1.7.1" deps {}) }: buildRustCrate {
+    crateName = "slog";
+    version = "1.7.1";
+    description = "Structured, composable logging for Rust";
+    authors = [ "Dawid Ciężarkiewicz <dpc@dpc.pw>" ];
+    sha256 = "1qhnwv2gbxmnwasaa0vlhddq6cdhq6n3l8d6h3ql73367h7aav65";
+    features = mkFeatures (features."slog"."1.7.1" or {});
+  };
+  features_.slog."1.7.1" = deps: f: updateFeatures f (rec {
+    slog = fold recursiveUpdate {} [
+      { "1.7.1"."std" =
+        (f.slog."1.7.1"."std" or false) ||
+        (f.slog."1.7.1".default or false) ||
+        (slog."1.7.1"."default" or false); }
+      { "1.7.1".default = (f.slog."1.7.1".default or true); }
+    ];
+  }) [];
+
+
+# end
+# slog-envlogger-0.5.0
+
+  crates.slog_envlogger."0.5.0" = deps: { features?(features_.slog_envlogger."0.5.0" deps {}) }: buildRustCrate {
+    crateName = "slog-envlogger";
+    version = "0.5.0";
+    description = "Port of de facto standard logger implementation for Rust, to `slog-rs` framework.\n";
+    authors = [ "The Rust Project Developers" "Dawid Ciężarkiewicz <dpc@dpc.pw>" ];
+    sha256 = "0ry9k2ppj7z6prdz2kf924w7l9y2kbysrigca6shni1kz2j163qb";
+    libPath = "src/lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."log"."${deps."slog_envlogger"."0.5.0"."log"}" deps)
+      (crates."regex"."${deps."slog_envlogger"."0.5.0"."regex"}" deps)
+      (crates."slog"."${deps."slog_envlogger"."0.5.0"."slog"}" deps)
+      (crates."slog_stdlog"."${deps."slog_envlogger"."0.5.0"."slog_stdlog"}" deps)
+      (crates."slog_term"."${deps."slog_envlogger"."0.5.0"."slog_term"}" deps)
+    ]);
+  };
+  features_.slog_envlogger."0.5.0" = deps: f: updateFeatures f (rec {
+    log."${deps.slog_envlogger."0.5.0".log}".default = true;
+    regex."${deps.slog_envlogger."0.5.0".regex}".default = true;
+    slog."${deps.slog_envlogger."0.5.0".slog}".default = true;
+    slog_envlogger."0.5.0".default = (f.slog_envlogger."0.5.0".default or true);
+    slog_stdlog."${deps.slog_envlogger."0.5.0".slog_stdlog}".default = true;
+    slog_term."${deps.slog_envlogger."0.5.0".slog_term}".default = true;
+  }) [
+    (features_.log."${deps."slog_envlogger"."0.5.0"."log"}" deps)
+    (features_.regex."${deps."slog_envlogger"."0.5.0"."regex"}" deps)
+    (features_.slog."${deps."slog_envlogger"."0.5.0"."slog"}" deps)
+    (features_.slog_stdlog."${deps."slog_envlogger"."0.5.0"."slog_stdlog"}" deps)
+    (features_.slog_term."${deps."slog_envlogger"."0.5.0"."slog_term"}" deps)
+  ];
+
+
+# end
+# slog-extra-0.1.2
+
+  crates.slog_extra."0.1.2" = deps: { features?(features_.slog_extra."0.1.2" deps {}) }: buildRustCrate {
+    crateName = "slog-extra";
+    version = "0.1.2";
+    description = "Standard slog-rs extensions";
+    authors = [ "Dawid Ciężarkiewicz <dpc@dpc.pw>" ];
+    sha256 = "0jrw0xcc81wwcl59xx9qglfcv5l3ad5kbpcyp6ygk94p9kxfrhyj";
+    libPath = "lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."slog"."${deps."slog_extra"."0.1.2"."slog"}" deps)
+      (crates."thread_local"."${deps."slog_extra"."0.1.2"."thread_local"}" deps)
+    ]);
+  };
+  features_.slog_extra."0.1.2" = deps: f: updateFeatures f (rec {
+    slog."${deps.slog_extra."0.1.2".slog}".default = true;
+    slog_extra."0.1.2".default = (f.slog_extra."0.1.2".default or true);
+    thread_local."${deps.slog_extra."0.1.2".thread_local}".default = true;
+  }) [
+    (features_.slog."${deps."slog_extra"."0.1.2"."slog"}" deps)
+    (features_.thread_local."${deps."slog_extra"."0.1.2"."thread_local"}" deps)
+  ];
+
+
+# end
+# slog-stdlog-1.1.0
+
+  crates.slog_stdlog."1.1.0" = deps: { features?(features_.slog_stdlog."1.1.0" deps {}) }: buildRustCrate {
+    crateName = "slog-stdlog";
+    version = "1.1.0";
+    description = "Standard Rust log crate adapter to slog-rs";
+    authors = [ "Dawid Ciężarkiewicz <dpc@dpc.pw>" ];
+    sha256 = "0ig4mjixr4y3dn3s53rlnrpplwkqb8b0z2zkaiiiwyv7nhjxdg46";
+    libPath = "lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."crossbeam"."${deps."slog_stdlog"."1.1.0"."crossbeam"}" deps)
+      (crates."lazy_static"."${deps."slog_stdlog"."1.1.0"."lazy_static"}" deps)
+      (crates."log"."${deps."slog_stdlog"."1.1.0"."log"}" deps)
+      (crates."slog"."${deps."slog_stdlog"."1.1.0"."slog"}" deps)
+      (crates."slog_term"."${deps."slog_stdlog"."1.1.0"."slog_term"}" deps)
+    ]);
+  };
+  features_.slog_stdlog."1.1.0" = deps: f: updateFeatures f (rec {
+    crossbeam."${deps.slog_stdlog."1.1.0".crossbeam}".default = true;
+    lazy_static."${deps.slog_stdlog."1.1.0".lazy_static}".default = true;
+    log."${deps.slog_stdlog."1.1.0".log}".default = true;
+    slog."${deps.slog_stdlog."1.1.0".slog}".default = true;
+    slog_stdlog."1.1.0".default = (f.slog_stdlog."1.1.0".default or true);
+    slog_term."${deps.slog_stdlog."1.1.0".slog_term}".default = true;
+  }) [
+    (features_.crossbeam."${deps."slog_stdlog"."1.1.0"."crossbeam"}" deps)
+    (features_.lazy_static."${deps."slog_stdlog"."1.1.0"."lazy_static"}" deps)
+    (features_.log."${deps."slog_stdlog"."1.1.0"."log"}" deps)
+    (features_.slog."${deps."slog_stdlog"."1.1.0"."slog"}" deps)
+    (features_.slog_term."${deps."slog_stdlog"."1.1.0"."slog_term"}" deps)
+  ];
+
+
+# end
+# slog-stream-1.2.1
+
+  crates.slog_stream."1.2.1" = deps: { features?(features_.slog_stream."1.2.1" deps {}) }: buildRustCrate {
+    crateName = "slog-stream";
+    version = "1.2.1";
+    description = "`io::Write` streamer for slog-rs";
+    authors = [ "Dawid Ciężarkiewicz <dpc@dpc.pw>" ];
+    sha256 = "03dwzbydaamfzjpr16gm065i696lk86gqcpspv5qaqyv938fm2yj";
+    libPath = "lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."slog"."${deps."slog_stream"."1.2.1"."slog"}" deps)
+      (crates."slog_extra"."${deps."slog_stream"."1.2.1"."slog_extra"}" deps)
+      (crates."thread_local"."${deps."slog_stream"."1.2.1"."thread_local"}" deps)
+    ]);
+  };
+  features_.slog_stream."1.2.1" = deps: f: updateFeatures f (rec {
+    slog."${deps.slog_stream."1.2.1".slog}".default = true;
+    slog_extra."${deps.slog_stream."1.2.1".slog_extra}".default = true;
+    slog_stream."1.2.1".default = (f.slog_stream."1.2.1".default or true);
+    thread_local."${deps.slog_stream."1.2.1".thread_local}".default = true;
+  }) [
+    (features_.slog."${deps."slog_stream"."1.2.1"."slog"}" deps)
+    (features_.slog_extra."${deps."slog_stream"."1.2.1"."slog_extra"}" deps)
+    (features_.thread_local."${deps."slog_stream"."1.2.1"."thread_local"}" deps)
+  ];
+
+
+# end
+# slog-term-1.5.0
+
+  crates.slog_term."1.5.0" = deps: { features?(features_.slog_term."1.5.0" deps {}) }: buildRustCrate {
+    crateName = "slog-term";
+    version = "1.5.0";
+    description = "Unix terminal drain and formatter for slog-rs";
+    authors = [ "Dawid Ciężarkiewicz <dpc@dpc.pw>" ];
+    sha256 = "0zq2kyvm7jhqj6sc09w540wqfrrpa46yxf9sgzq7jqpkr66wsiar";
+    libPath = "lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."chrono"."${deps."slog_term"."1.5.0"."chrono"}" deps)
+      (crates."isatty"."${deps."slog_term"."1.5.0"."isatty"}" deps)
+      (crates."slog"."${deps."slog_term"."1.5.0"."slog"}" deps)
+      (crates."slog_stream"."${deps."slog_term"."1.5.0"."slog_stream"}" deps)
+      (crates."thread_local"."${deps."slog_term"."1.5.0"."thread_local"}" deps)
+    ]);
+  };
+  features_.slog_term."1.5.0" = deps: f: updateFeatures f (rec {
+    chrono."${deps.slog_term."1.5.0".chrono}".default = true;
+    isatty."${deps.slog_term."1.5.0".isatty}".default = true;
+    slog."${deps.slog_term."1.5.0".slog}".default = true;
+    slog_stream."${deps.slog_term."1.5.0".slog_stream}".default = true;
+    slog_term."1.5.0".default = (f.slog_term."1.5.0".default or true);
+    thread_local."${deps.slog_term."1.5.0".thread_local}".default = true;
+  }) [
+    (features_.chrono."${deps."slog_term"."1.5.0"."chrono"}" deps)
+    (features_.isatty."${deps."slog_term"."1.5.0"."isatty"}" deps)
+    (features_.slog."${deps."slog_term"."1.5.0"."slog"}" deps)
+    (features_.slog_stream."${deps."slog_term"."1.5.0"."slog_stream"}" deps)
+    (features_.thread_local."${deps."slog_term"."1.5.0"."thread_local"}" deps)
+  ];
+
+
+# end
+# smallvec-0.6.7
+
+  crates.smallvec."0.6.7" = deps: { features?(features_.smallvec."0.6.7" deps {}) }: buildRustCrate {
+    crateName = "smallvec";
+    version = "0.6.7";
+    description = "'Small vector' optimization: store up to a small number of items on the stack";
+    authors = [ "Simon Sapin <simon.sapin@exyr.org>" ];
+    sha256 = "08ql2yi7ry08cqjl9n6vpb6x6zgqzwllzzk9pxj1143xwg503qcx";
+    libPath = "lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."unreachable"."${deps."smallvec"."0.6.7"."unreachable"}" deps)
+    ]);
+    features = mkFeatures (features."smallvec"."0.6.7" or {});
+  };
+  features_.smallvec."0.6.7" = deps: f: updateFeatures f (rec {
+    smallvec = fold recursiveUpdate {} [
+      { "0.6.7"."std" =
+        (f.smallvec."0.6.7"."std" or false) ||
+        (f.smallvec."0.6.7".default or false) ||
+        (smallvec."0.6.7"."default" or false); }
+      { "0.6.7".default = (f.smallvec."0.6.7".default or true); }
+    ];
+    unreachable."${deps.smallvec."0.6.7".unreachable}".default = true;
+  }) [
+    (features_.unreachable."${deps."smallvec"."0.6.7"."unreachable"}" deps)
+  ];
+
+
+# end
+# stable_deref_trait-1.1.1
+
+  crates.stable_deref_trait."1.1.1" = deps: { features?(features_.stable_deref_trait."1.1.1" deps {}) }: buildRustCrate {
+    crateName = "stable_deref_trait";
+    version = "1.1.1";
+    description = "An unsafe marker trait for types like Box and Rc that dereference to a stable address even when moved, and hence can be used with libraries such as owning_ref and rental.\n";
+    authors = [ "Robert Grosse <n210241048576@gmail.com>" ];
+    sha256 = "1xy9slzslrzr31nlnw52sl1d820b09y61b7f13lqgsn8n7y0l4g8";
+    features = mkFeatures (features."stable_deref_trait"."1.1.1" or {});
+  };
+  features_.stable_deref_trait."1.1.1" = deps: f: updateFeatures f (rec {
+    stable_deref_trait = fold recursiveUpdate {} [
+      { "1.1.1"."std" =
+        (f.stable_deref_trait."1.1.1"."std" or false) ||
+        (f.stable_deref_trait."1.1.1".default or false) ||
+        (stable_deref_trait."1.1.1"."default" or false); }
+      { "1.1.1".default = (f.stable_deref_trait."1.1.1".default or true); }
+    ];
+  }) [];
+
+
+# end
+# string-0.1.2
+
+  crates.string."0.1.2" = deps: { features?(features_.string."0.1.2" deps {}) }: buildRustCrate {
+    crateName = "string";
+    version = "0.1.2";
+    description = "A UTF-8 encoded string with configurable byte storage.";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "1120qvf02aydqj0k3kpr8d7zybq0y5arnmgmfsdw75r8qwz75wc6";
+  };
+  features_.string."0.1.2" = deps: f: updateFeatures f (rec {
+    string."0.1.2".default = (f.string."0.1.2".default or true);
+  }) [];
+
+
+# end
+# strsim-0.6.0
+
+  crates.strsim."0.6.0" = deps: { features?(features_.strsim."0.6.0" deps {}) }: buildRustCrate {
+    crateName = "strsim";
+    version = "0.6.0";
+    description = "Implementations of string similarity metrics.\nIncludes Hamming, Levenshtein, Damerau-Levenshtein, Jaro, and Jaro-Winkler.\n";
+    authors = [ "Danny Guo <dannyguo91@gmail.com>" ];
+    sha256 = "1lz85l6y68hr62lv4baww29yy7g8pg20dlr0lbaswxmmcb0wl7gd";
+  };
+  features_.strsim."0.6.0" = deps: f: updateFeatures f (rec {
+    strsim."0.6.0".default = (f.strsim."0.6.0".default or true);
+  }) [];
+
+
+# end
+# syn-0.11.11
+
+  crates.syn."0.11.11" = deps: { features?(features_.syn."0.11.11" deps {}) }: buildRustCrate {
+    crateName = "syn";
+    version = "0.11.11";
+    description = "Nom parser for Rust source code";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "0yw8ng7x1dn5a6ykg0ib49y7r9nhzgpiq2989rqdp7rdz3n85502";
+    dependencies = mapFeatures features ([
+    ]
+      ++ (if features.syn."0.11.11".quote or false then [ (crates.quote."${deps."syn"."0.11.11".quote}" deps) ] else [])
+      ++ (if features.syn."0.11.11".synom or false then [ (crates.synom."${deps."syn"."0.11.11".synom}" deps) ] else [])
+      ++ (if features.syn."0.11.11".unicode-xid or false then [ (crates.unicode_xid."${deps."syn"."0.11.11".unicode_xid}" deps) ] else []));
+    features = mkFeatures (features."syn"."0.11.11" or {});
+  };
+  features_.syn."0.11.11" = deps: f: updateFeatures f (rec {
+    quote."${deps.syn."0.11.11".quote}".default = true;
+    syn = fold recursiveUpdate {} [
+      { "0.11.11"."parsing" =
+        (f.syn."0.11.11"."parsing" or false) ||
+        (f.syn."0.11.11".default or false) ||
+        (syn."0.11.11"."default" or false); }
+      { "0.11.11"."printing" =
+        (f.syn."0.11.11"."printing" or false) ||
+        (f.syn."0.11.11".default or false) ||
+        (syn."0.11.11"."default" or false); }
+      { "0.11.11"."quote" =
+        (f.syn."0.11.11"."quote" or false) ||
+        (f.syn."0.11.11".printing or false) ||
+        (syn."0.11.11"."printing" or false); }
+      { "0.11.11"."synom" =
+        (f.syn."0.11.11"."synom" or false) ||
+        (f.syn."0.11.11".parsing or false) ||
+        (syn."0.11.11"."parsing" or false); }
+      { "0.11.11"."unicode-xid" =
+        (f.syn."0.11.11"."unicode-xid" or false) ||
+        (f.syn."0.11.11".parsing or false) ||
+        (syn."0.11.11"."parsing" or false); }
+      { "0.11.11".default = (f.syn."0.11.11".default or true); }
+    ];
+    synom."${deps.syn."0.11.11".synom}".default = true;
+    unicode_xid."${deps.syn."0.11.11".unicode_xid}".default = true;
+  }) [
+    (features_.quote."${deps."syn"."0.11.11"."quote"}" deps)
+    (features_.synom."${deps."syn"."0.11.11"."synom"}" deps)
+    (features_.unicode_xid."${deps."syn"."0.11.11"."unicode_xid"}" deps)
+  ];
+
+
+# end
+# synom-0.11.3
+
+  crates.synom."0.11.3" = deps: { features?(features_.synom."0.11.3" deps {}) }: buildRustCrate {
+    crateName = "synom";
+    version = "0.11.3";
+    description = "Stripped-down Nom parser used by Syn";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1l6d1s9qjfp6ng2s2z8219igvlv7gyk8gby97sdykqc1r93d8rhc";
+    dependencies = mapFeatures features ([
+      (crates."unicode_xid"."${deps."synom"."0.11.3"."unicode_xid"}" deps)
+    ]);
+  };
+  features_.synom."0.11.3" = deps: f: updateFeatures f (rec {
+    synom."0.11.3".default = (f.synom."0.11.3".default or true);
+    unicode_xid."${deps.synom."0.11.3".unicode_xid}".default = true;
+  }) [
+    (features_.unicode_xid."${deps."synom"."0.11.3"."unicode_xid"}" deps)
+  ];
+
+
+# end
+# tar-0.4.13
+
+  crates.tar."0.4.13" = deps: { features?(features_.tar."0.4.13" deps {}) }: buildRustCrate {
+    crateName = "tar";
+    version = "0.4.13";
+    description = "A Rust implementation of a TAR file reader and writer. This library does not\ncurrently handle compression, but it is abstract over all I/O readers and\nwriters. Additionally, great lengths are taken to ensure that the entire\ncontents are never required to be entirely resident in memory all at once.\n";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1m425d07h0i6h2vbpxnh067zmc16l9yr9bii17zxw4z2inkfyfc4";
+    dependencies = mapFeatures features ([
+      (crates."filetime"."${deps."tar"."0.4.13"."filetime"}" deps)
+      (crates."libc"."${deps."tar"."0.4.13"."libc"}" deps)
+    ])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+    ]
+      ++ (if features.tar."0.4.13".xattr or false then [ (crates.xattr."${deps."tar"."0.4.13".xattr}" deps) ] else [])) else []);
+    features = mkFeatures (features."tar"."0.4.13" or {});
+  };
+  features_.tar."0.4.13" = deps: f: updateFeatures f (rec {
+    filetime."${deps.tar."0.4.13".filetime}".default = true;
+    libc."${deps.tar."0.4.13".libc}".default = true;
+    tar = fold recursiveUpdate {} [
+      { "0.4.13"."xattr" =
+        (f.tar."0.4.13"."xattr" or false) ||
+        (f.tar."0.4.13".default or false) ||
+        (tar."0.4.13"."default" or false); }
+      { "0.4.13".default = (f.tar."0.4.13".default or true); }
+    ];
+    xattr."${deps.tar."0.4.13".xattr}".default = true;
+  }) [
+    (features_.filetime."${deps."tar"."0.4.13"."filetime"}" deps)
+    (features_.libc."${deps."tar"."0.4.13"."libc"}" deps)
+    (features_.xattr."${deps."tar"."0.4.13"."xattr"}" deps)
+  ];
+
+
+# end
+# tempfile-3.0.5
+
+  crates.tempfile."3.0.5" = deps: { features?(features_.tempfile."3.0.5" deps {}) }: buildRustCrate {
+    crateName = "tempfile";
+    version = "3.0.5";
+    description = "A library for managing temporary files and directories.\n";
+    authors = [ "Steven Allen <steven@stebalien.com>" "The Rust Project Developers" "Ashley Mannix <ashleymannix@live.com.au>" "Jason White <jasonaw0@gmail.com>" ];
+    sha256 = "11xc89br78ypk4g27v51lm2baz57gp6v555i3sxhrj9qlas2iqfl";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."tempfile"."3.0.5"."cfg_if"}" deps)
+      (crates."rand"."${deps."tempfile"."3.0.5"."rand"}" deps)
+      (crates."remove_dir_all"."${deps."tempfile"."3.0.5"."remove_dir_all"}" deps)
+    ])
+      ++ (if kernel == "redox" then mapFeatures features ([
+      (crates."redox_syscall"."${deps."tempfile"."3.0.5"."redox_syscall"}" deps)
+    ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."tempfile"."3.0.5"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."tempfile"."3.0.5"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.tempfile."3.0.5" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.tempfile."3.0.5".cfg_if}".default = true;
+    libc."${deps.tempfile."3.0.5".libc}".default = true;
+    rand."${deps.tempfile."3.0.5".rand}".default = true;
+    redox_syscall."${deps.tempfile."3.0.5".redox_syscall}".default = true;
+    remove_dir_all."${deps.tempfile."3.0.5".remove_dir_all}".default = true;
+    tempfile."3.0.5".default = (f.tempfile."3.0.5".default or true);
+    winapi = fold recursiveUpdate {} [
+      { "${deps.tempfile."3.0.5".winapi}"."fileapi" = true; }
+      { "${deps.tempfile."3.0.5".winapi}"."handleapi" = true; }
+      { "${deps.tempfile."3.0.5".winapi}"."winbase" = true; }
+      { "${deps.tempfile."3.0.5".winapi}".default = true; }
+    ];
+  }) [
+    (features_.cfg_if."${deps."tempfile"."3.0.5"."cfg_if"}" deps)
+    (features_.rand."${deps."tempfile"."3.0.5"."rand"}" deps)
+    (features_.remove_dir_all."${deps."tempfile"."3.0.5"."remove_dir_all"}" deps)
+    (features_.redox_syscall."${deps."tempfile"."3.0.5"."redox_syscall"}" deps)
+    (features_.libc."${deps."tempfile"."3.0.5"."libc"}" deps)
+    (features_.winapi."${deps."tempfile"."3.0.5"."winapi"}" deps)
+  ];
+
+
+# end
+# termion-1.5.1
+
+  crates.termion."1.5.1" = deps: { features?(features_.termion."1.5.1" deps {}) }: buildRustCrate {
+    crateName = "termion";
+    version = "1.5.1";
+    description = "A bindless library for manipulating terminals.";
+    authors = [ "ticki <Ticki@users.noreply.github.com>" "gycos <alexandre.bury@gmail.com>" "IGI-111 <igi-111@protonmail.com>" ];
+    sha256 = "02gq4vd8iws1f3gjrgrgpajsk2bk43nds5acbbb4s8dvrdvr8nf1";
+    dependencies = (if !(kernel == "redox") then mapFeatures features ([
+      (crates."libc"."${deps."termion"."1.5.1"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "redox" then mapFeatures features ([
+      (crates."redox_syscall"."${deps."termion"."1.5.1"."redox_syscall"}" deps)
+      (crates."redox_termios"."${deps."termion"."1.5.1"."redox_termios"}" deps)
+    ]) else []);
+  };
+  features_.termion."1.5.1" = deps: f: updateFeatures f (rec {
+    libc."${deps.termion."1.5.1".libc}".default = true;
+    redox_syscall."${deps.termion."1.5.1".redox_syscall}".default = true;
+    redox_termios."${deps.termion."1.5.1".redox_termios}".default = true;
+    termion."1.5.1".default = (f.termion."1.5.1".default or true);
+  }) [
+    (features_.libc."${deps."termion"."1.5.1"."libc"}" deps)
+    (features_.redox_syscall."${deps."termion"."1.5.1"."redox_syscall"}" deps)
+    (features_.redox_termios."${deps."termion"."1.5.1"."redox_termios"}" deps)
+  ];
+
+
+# end
+# textwrap-0.9.0
+
+  crates.textwrap."0.9.0" = deps: { features?(features_.textwrap."0.9.0" deps {}) }: buildRustCrate {
+    crateName = "textwrap";
+    version = "0.9.0";
+    description = "Textwrap is a small library for word wrapping, indenting, and\ndedenting strings.\n\nYou can use it to format strings (such as help and error messages) for\ndisplay in commandline applications. It is designed to be efficient\nand handle Unicode characters correctly.\n";
+    authors = [ "Martin Geisler <martin@geisler.net>" ];
+    sha256 = "18jg79ndjlwndz01mlbh82kkr2arqm658yn5kwp65l5n1hz8w4yb";
+    dependencies = mapFeatures features ([
+      (crates."unicode_width"."${deps."textwrap"."0.9.0"."unicode_width"}" deps)
+    ]);
+  };
+  features_.textwrap."0.9.0" = deps: f: updateFeatures f (rec {
+    textwrap."0.9.0".default = (f.textwrap."0.9.0".default or true);
+    unicode_width."${deps.textwrap."0.9.0".unicode_width}".default = true;
+  }) [
+    (features_.unicode_width."${deps."textwrap"."0.9.0"."unicode_width"}" deps)
+  ];
+
+
+# end
+# thread-id-2.0.0
+
+  crates.thread_id."2.0.0" = deps: { features?(features_.thread_id."2.0.0" deps {}) }: buildRustCrate {
+    crateName = "thread-id";
+    version = "2.0.0";
+    description = "Get a unique thread ID";
+    authors = [ "Ruud van Asseldonk <dev@veniogames.com>" ];
+    sha256 = "06i3c8ckn97i5rp16civ2vpqbknlkx66dkrl070iw60nawi0kjc3";
+    dependencies = mapFeatures features ([
+      (crates."kernel32_sys"."${deps."thread_id"."2.0.0"."kernel32_sys"}" deps)
+      (crates."libc"."${deps."thread_id"."2.0.0"."libc"}" deps)
+    ]);
+  };
+  features_.thread_id."2.0.0" = deps: f: updateFeatures f (rec {
+    kernel32_sys."${deps.thread_id."2.0.0".kernel32_sys}".default = true;
+    libc."${deps.thread_id."2.0.0".libc}".default = true;
+    thread_id."2.0.0".default = (f.thread_id."2.0.0".default or true);
+  }) [
+    (features_.kernel32_sys."${deps."thread_id"."2.0.0"."kernel32_sys"}" deps)
+    (features_.libc."${deps."thread_id"."2.0.0"."libc"}" deps)
+  ];
+
+
+# end
+# thread_local-0.2.7
+
+  crates.thread_local."0.2.7" = deps: { features?(features_.thread_local."0.2.7" deps {}) }: buildRustCrate {
+    crateName = "thread_local";
+    version = "0.2.7";
+    description = "Per-object thread-local storage";
+    authors = [ "Amanieu d'Antras <amanieu@gmail.com>" ];
+    sha256 = "19p0zrs24rdwjvpi10jig5ms3sxj00pv8shkr9cpddri8cdghqp7";
+    dependencies = mapFeatures features ([
+      (crates."thread_id"."${deps."thread_local"."0.2.7"."thread_id"}" deps)
+    ]);
+  };
+  features_.thread_local."0.2.7" = deps: f: updateFeatures f (rec {
+    thread_id."${deps.thread_local."0.2.7".thread_id}".default = true;
+    thread_local."0.2.7".default = (f.thread_local."0.2.7".default or true);
+  }) [
+    (features_.thread_id."${deps."thread_local"."0.2.7"."thread_id"}" deps)
+  ];
+
+
+# end
+# thread_local-0.3.4
+
+  crates.thread_local."0.3.4" = deps: { features?(features_.thread_local."0.3.4" deps {}) }: buildRustCrate {
+    crateName = "thread_local";
+    version = "0.3.4";
+    description = "Per-object thread-local storage";
+    authors = [ "Amanieu d'Antras <amanieu@gmail.com>" ];
+    sha256 = "1y6cwyhhx2nkz4b3dziwhqdvgq830z8wjp32b40pjd8r0hxqv2jr";
+    dependencies = mapFeatures features ([
+      (crates."lazy_static"."${deps."thread_local"."0.3.4"."lazy_static"}" deps)
+      (crates."unreachable"."${deps."thread_local"."0.3.4"."unreachable"}" deps)
+    ]);
+  };
+  features_.thread_local."0.3.4" = deps: f: updateFeatures f (rec {
+    lazy_static."${deps.thread_local."0.3.4".lazy_static}".default = true;
+    thread_local."0.3.4".default = (f.thread_local."0.3.4".default or true);
+    unreachable."${deps.thread_local."0.3.4".unreachable}".default = true;
+  }) [
+    (features_.lazy_static."${deps."thread_local"."0.3.4"."lazy_static"}" deps)
+    (features_.unreachable."${deps."thread_local"."0.3.4"."unreachable"}" deps)
+  ];
+
+
+# end
+# time-0.1.38
+
+  crates.time."0.1.38" = deps: { features?(features_.time."0.1.38" deps {}) }: buildRustCrate {
+    crateName = "time";
+    version = "0.1.38";
+    description = "Utilities for working with time-related functions in Rust.\n";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1ws283vvz7c6jfiwn53rmc6kybapr4pjaahfxxrz232b0qzw7gcp";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."time"."0.1.38"."libc"}" deps)
+    ])
+      ++ (if kernel == "redox" then mapFeatures features ([
+      (crates."redox_syscall"."${deps."time"."0.1.38"."redox_syscall"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."kernel32_sys"."${deps."time"."0.1.38"."kernel32_sys"}" deps)
+      (crates."winapi"."${deps."time"."0.1.38"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.time."0.1.38" = deps: f: updateFeatures f (rec {
+    kernel32_sys."${deps.time."0.1.38".kernel32_sys}".default = true;
+    libc."${deps.time."0.1.38".libc}".default = true;
+    redox_syscall."${deps.time."0.1.38".redox_syscall}".default = true;
+    time."0.1.38".default = (f.time."0.1.38".default or true);
+    winapi."${deps.time."0.1.38".winapi}".default = true;
+  }) [
+    (features_.libc."${deps."time"."0.1.38"."libc"}" deps)
+    (features_.redox_syscall."${deps."time"."0.1.38"."redox_syscall"}" deps)
+    (features_.kernel32_sys."${deps."time"."0.1.38"."kernel32_sys"}" deps)
+    (features_.winapi."${deps."time"."0.1.38"."winapi"}" deps)
+  ];
+
+
+# end
+# tokio-0.1.7
+
+  crates.tokio."0.1.7" = deps: { features?(features_.tokio."0.1.7" deps {}) }: buildRustCrate {
+    crateName = "tokio";
+    version = "0.1.7";
+    description = "An event-driven, non-blocking I/O platform for writing asynchronous I/O\nbacked applications.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "0d5fj90wk05m5vbd924irg1pl1d4fn86jjw5napzanh6vbwsnr66";
+    dependencies = mapFeatures features ([
+      (crates."futures"."${deps."tokio"."0.1.7"."futures"}" deps)
+      (crates."mio"."${deps."tokio"."0.1.7"."mio"}" deps)
+      (crates."tokio_executor"."${deps."tokio"."0.1.7"."tokio_executor"}" deps)
+      (crates."tokio_fs"."${deps."tokio"."0.1.7"."tokio_fs"}" deps)
+      (crates."tokio_io"."${deps."tokio"."0.1.7"."tokio_io"}" deps)
+      (crates."tokio_reactor"."${deps."tokio"."0.1.7"."tokio_reactor"}" deps)
+      (crates."tokio_tcp"."${deps."tokio"."0.1.7"."tokio_tcp"}" deps)
+      (crates."tokio_threadpool"."${deps."tokio"."0.1.7"."tokio_threadpool"}" deps)
+      (crates."tokio_timer"."${deps."tokio"."0.1.7"."tokio_timer"}" deps)
+      (crates."tokio_udp"."${deps."tokio"."0.1.7"."tokio_udp"}" deps)
+    ]);
+  };
+  features_.tokio."0.1.7" = deps: f: updateFeatures f (rec {
+    futures."${deps.tokio."0.1.7".futures}".default = true;
+    mio."${deps.tokio."0.1.7".mio}".default = true;
+    tokio."0.1.7".default = (f.tokio."0.1.7".default or true);
+    tokio_executor."${deps.tokio."0.1.7".tokio_executor}".default = true;
+    tokio_fs."${deps.tokio."0.1.7".tokio_fs}".default = true;
+    tokio_io."${deps.tokio."0.1.7".tokio_io}".default = true;
+    tokio_reactor."${deps.tokio."0.1.7".tokio_reactor}".default = true;
+    tokio_tcp."${deps.tokio."0.1.7".tokio_tcp}".default = true;
+    tokio_threadpool."${deps.tokio."0.1.7".tokio_threadpool}".default = true;
+    tokio_timer."${deps.tokio."0.1.7".tokio_timer}".default = true;
+    tokio_udp."${deps.tokio."0.1.7".tokio_udp}".default = true;
+  }) [
+    (features_.futures."${deps."tokio"."0.1.7"."futures"}" deps)
+    (features_.mio."${deps."tokio"."0.1.7"."mio"}" deps)
+    (features_.tokio_executor."${deps."tokio"."0.1.7"."tokio_executor"}" deps)
+    (features_.tokio_fs."${deps."tokio"."0.1.7"."tokio_fs"}" deps)
+    (features_.tokio_io."${deps."tokio"."0.1.7"."tokio_io"}" deps)
+    (features_.tokio_reactor."${deps."tokio"."0.1.7"."tokio_reactor"}" deps)
+    (features_.tokio_tcp."${deps."tokio"."0.1.7"."tokio_tcp"}" deps)
+    (features_.tokio_threadpool."${deps."tokio"."0.1.7"."tokio_threadpool"}" deps)
+    (features_.tokio_timer."${deps."tokio"."0.1.7"."tokio_timer"}" deps)
+    (features_.tokio_udp."${deps."tokio"."0.1.7"."tokio_udp"}" deps)
+  ];
+
+
+# end
+# tokio-codec-0.1.1
+
+  crates.tokio_codec."0.1.1" = deps: { features?(features_.tokio_codec."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "tokio-codec";
+    version = "0.1.1";
+    description = "Utilities for encoding and decoding frames.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" "Bryan Burgers <bryan@burgers.io>" ];
+    sha256 = "0jc9lik540zyj4chbygg1rjh37m3zax8pd4bwcrwjmi1v56qwi4h";
+    dependencies = mapFeatures features ([
+      (crates."bytes"."${deps."tokio_codec"."0.1.1"."bytes"}" deps)
+      (crates."futures"."${deps."tokio_codec"."0.1.1"."futures"}" deps)
+      (crates."tokio_io"."${deps."tokio_codec"."0.1.1"."tokio_io"}" deps)
+    ]);
+  };
+  features_.tokio_codec."0.1.1" = deps: f: updateFeatures f (rec {
+    bytes."${deps.tokio_codec."0.1.1".bytes}".default = true;
+    futures."${deps.tokio_codec."0.1.1".futures}".default = true;
+    tokio_codec."0.1.1".default = (f.tokio_codec."0.1.1".default or true);
+    tokio_io."${deps.tokio_codec."0.1.1".tokio_io}".default = true;
+  }) [
+    (features_.bytes."${deps."tokio_codec"."0.1.1"."bytes"}" deps)
+    (features_.futures."${deps."tokio_codec"."0.1.1"."futures"}" deps)
+    (features_.tokio_io."${deps."tokio_codec"."0.1.1"."tokio_io"}" deps)
+  ];
+
+
+# end
+# tokio-executor-0.1.5
+
+  crates.tokio_executor."0.1.5" = deps: { features?(features_.tokio_executor."0.1.5" deps {}) }: buildRustCrate {
+    crateName = "tokio-executor";
+    version = "0.1.5";
+    description = "Future execution primitives\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "15j2ybs8w38gncgbxkvp2qsp6wl62ibi3rns0vlwggx7svmx4bf3";
+    dependencies = mapFeatures features ([
+      (crates."futures"."${deps."tokio_executor"."0.1.5"."futures"}" deps)
+    ]);
+  };
+  features_.tokio_executor."0.1.5" = deps: f: updateFeatures f (rec {
+    futures."${deps.tokio_executor."0.1.5".futures}".default = true;
+    tokio_executor."0.1.5".default = (f.tokio_executor."0.1.5".default or true);
+  }) [
+    (features_.futures."${deps."tokio_executor"."0.1.5"."futures"}" deps)
+  ];
+
+
+# end
+# tokio-fs-0.1.4
+
+  crates.tokio_fs."0.1.4" = deps: { features?(features_.tokio_fs."0.1.4" deps {}) }: buildRustCrate {
+    crateName = "tokio-fs";
+    version = "0.1.4";
+    description = "Filesystem API for Tokio.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "05bpc1p1apb4jfw18i84agwwar57zn07d7smqvslpzagd9b3sd31";
+    dependencies = mapFeatures features ([
+      (crates."futures"."${deps."tokio_fs"."0.1.4"."futures"}" deps)
+      (crates."tokio_io"."${deps."tokio_fs"."0.1.4"."tokio_io"}" deps)
+      (crates."tokio_threadpool"."${deps."tokio_fs"."0.1.4"."tokio_threadpool"}" deps)
+    ]);
+  };
+  features_.tokio_fs."0.1.4" = deps: f: updateFeatures f (rec {
+    futures."${deps.tokio_fs."0.1.4".futures}".default = true;
+    tokio_fs."0.1.4".default = (f.tokio_fs."0.1.4".default or true);
+    tokio_io."${deps.tokio_fs."0.1.4".tokio_io}".default = true;
+    tokio_threadpool."${deps.tokio_fs."0.1.4".tokio_threadpool}".default = true;
+  }) [
+    (features_.futures."${deps."tokio_fs"."0.1.4"."futures"}" deps)
+    (features_.tokio_io."${deps."tokio_fs"."0.1.4"."tokio_io"}" deps)
+    (features_.tokio_threadpool."${deps."tokio_fs"."0.1.4"."tokio_threadpool"}" deps)
+  ];
+
+
+# end
+# tokio-io-0.1.10
+
+  crates.tokio_io."0.1.10" = deps: { features?(features_.tokio_io."0.1.10" deps {}) }: buildRustCrate {
+    crateName = "tokio-io";
+    version = "0.1.10";
+    description = "Core I/O primitives for asynchronous I/O in Rust.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "14d65rqa5rb2msgkz2xn40cavs4m7f4qyi7vnfv98v7f10l9wlay";
+    dependencies = mapFeatures features ([
+      (crates."bytes"."${deps."tokio_io"."0.1.10"."bytes"}" deps)
+      (crates."futures"."${deps."tokio_io"."0.1.10"."futures"}" deps)
+      (crates."log"."${deps."tokio_io"."0.1.10"."log"}" deps)
+    ]);
+  };
+  features_.tokio_io."0.1.10" = deps: f: updateFeatures f (rec {
+    bytes."${deps.tokio_io."0.1.10".bytes}".default = true;
+    futures."${deps.tokio_io."0.1.10".futures}".default = true;
+    log."${deps.tokio_io."0.1.10".log}".default = true;
+    tokio_io."0.1.10".default = (f.tokio_io."0.1.10".default or true);
+  }) [
+    (features_.bytes."${deps."tokio_io"."0.1.10"."bytes"}" deps)
+    (features_.futures."${deps."tokio_io"."0.1.10"."futures"}" deps)
+    (features_.log."${deps."tokio_io"."0.1.10"."log"}" deps)
+  ];
+
+
+# end
+# tokio-reactor-0.1.7
+
+  crates.tokio_reactor."0.1.7" = deps: { features?(features_.tokio_reactor."0.1.7" deps {}) }: buildRustCrate {
+    crateName = "tokio-reactor";
+    version = "0.1.7";
+    description = "Event loop that drives Tokio I/O resources.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "1ssrc6gic43lachv7jk97jxzw609sgcsrkwi7chf96sn7nqrhj0z";
+    dependencies = mapFeatures features ([
+      (crates."crossbeam_utils"."${deps."tokio_reactor"."0.1.7"."crossbeam_utils"}" deps)
+      (crates."futures"."${deps."tokio_reactor"."0.1.7"."futures"}" deps)
+      (crates."lazy_static"."${deps."tokio_reactor"."0.1.7"."lazy_static"}" deps)
+      (crates."log"."${deps."tokio_reactor"."0.1.7"."log"}" deps)
+      (crates."mio"."${deps."tokio_reactor"."0.1.7"."mio"}" deps)
+      (crates."num_cpus"."${deps."tokio_reactor"."0.1.7"."num_cpus"}" deps)
+      (crates."parking_lot"."${deps."tokio_reactor"."0.1.7"."parking_lot"}" deps)
+      (crates."slab"."${deps."tokio_reactor"."0.1.7"."slab"}" deps)
+      (crates."tokio_executor"."${deps."tokio_reactor"."0.1.7"."tokio_executor"}" deps)
+      (crates."tokio_io"."${deps."tokio_reactor"."0.1.7"."tokio_io"}" deps)
+    ]);
+  };
+  features_.tokio_reactor."0.1.7" = deps: f: updateFeatures f (rec {
+    crossbeam_utils."${deps.tokio_reactor."0.1.7".crossbeam_utils}".default = true;
+    futures."${deps.tokio_reactor."0.1.7".futures}".default = true;
+    lazy_static."${deps.tokio_reactor."0.1.7".lazy_static}".default = true;
+    log."${deps.tokio_reactor."0.1.7".log}".default = true;
+    mio."${deps.tokio_reactor."0.1.7".mio}".default = true;
+    num_cpus."${deps.tokio_reactor."0.1.7".num_cpus}".default = true;
+    parking_lot."${deps.tokio_reactor."0.1.7".parking_lot}".default = true;
+    slab."${deps.tokio_reactor."0.1.7".slab}".default = true;
+    tokio_executor."${deps.tokio_reactor."0.1.7".tokio_executor}".default = true;
+    tokio_io."${deps.tokio_reactor."0.1.7".tokio_io}".default = true;
+    tokio_reactor."0.1.7".default = (f.tokio_reactor."0.1.7".default or true);
+  }) [
+    (features_.crossbeam_utils."${deps."tokio_reactor"."0.1.7"."crossbeam_utils"}" deps)
+    (features_.futures."${deps."tokio_reactor"."0.1.7"."futures"}" deps)
+    (features_.lazy_static."${deps."tokio_reactor"."0.1.7"."lazy_static"}" deps)
+    (features_.log."${deps."tokio_reactor"."0.1.7"."log"}" deps)
+    (features_.mio."${deps."tokio_reactor"."0.1.7"."mio"}" deps)
+    (features_.num_cpus."${deps."tokio_reactor"."0.1.7"."num_cpus"}" deps)
+    (features_.parking_lot."${deps."tokio_reactor"."0.1.7"."parking_lot"}" deps)
+    (features_.slab."${deps."tokio_reactor"."0.1.7"."slab"}" deps)
+    (features_.tokio_executor."${deps."tokio_reactor"."0.1.7"."tokio_executor"}" deps)
+    (features_.tokio_io."${deps."tokio_reactor"."0.1.7"."tokio_io"}" deps)
+  ];
+
+
+# end
+# tokio-tcp-0.1.2
+
+  crates.tokio_tcp."0.1.2" = deps: { features?(features_.tokio_tcp."0.1.2" deps {}) }: buildRustCrate {
+    crateName = "tokio-tcp";
+    version = "0.1.2";
+    description = "TCP bindings for tokio.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "0yvfwybqnyca24aj9as8rgydamjq0wrd9xbxxkjcasvsdmsv6z1d";
+    dependencies = mapFeatures features ([
+      (crates."bytes"."${deps."tokio_tcp"."0.1.2"."bytes"}" deps)
+      (crates."futures"."${deps."tokio_tcp"."0.1.2"."futures"}" deps)
+      (crates."iovec"."${deps."tokio_tcp"."0.1.2"."iovec"}" deps)
+      (crates."mio"."${deps."tokio_tcp"."0.1.2"."mio"}" deps)
+      (crates."tokio_io"."${deps."tokio_tcp"."0.1.2"."tokio_io"}" deps)
+      (crates."tokio_reactor"."${deps."tokio_tcp"."0.1.2"."tokio_reactor"}" deps)
+    ]);
+  };
+  features_.tokio_tcp."0.1.2" = deps: f: updateFeatures f (rec {
+    bytes."${deps.tokio_tcp."0.1.2".bytes}".default = true;
+    futures."${deps.tokio_tcp."0.1.2".futures}".default = true;
+    iovec."${deps.tokio_tcp."0.1.2".iovec}".default = true;
+    mio."${deps.tokio_tcp."0.1.2".mio}".default = true;
+    tokio_io."${deps.tokio_tcp."0.1.2".tokio_io}".default = true;
+    tokio_reactor."${deps.tokio_tcp."0.1.2".tokio_reactor}".default = true;
+    tokio_tcp."0.1.2".default = (f.tokio_tcp."0.1.2".default or true);
+  }) [
+    (features_.bytes."${deps."tokio_tcp"."0.1.2"."bytes"}" deps)
+    (features_.futures."${deps."tokio_tcp"."0.1.2"."futures"}" deps)
+    (features_.iovec."${deps."tokio_tcp"."0.1.2"."iovec"}" deps)
+    (features_.mio."${deps."tokio_tcp"."0.1.2"."mio"}" deps)
+    (features_.tokio_io."${deps."tokio_tcp"."0.1.2"."tokio_io"}" deps)
+    (features_.tokio_reactor."${deps."tokio_tcp"."0.1.2"."tokio_reactor"}" deps)
+  ];
+
+
+# end
+# tokio-threadpool-0.1.9
+
+  crates.tokio_threadpool."0.1.9" = deps: { features?(features_.tokio_threadpool."0.1.9" deps {}) }: buildRustCrate {
+    crateName = "tokio-threadpool";
+    version = "0.1.9";
+    description = "A task scheduler backed by a work-stealing thread pool.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "0ipr0j79mhjjsvc0ma95sj07m0aiyq6rkwgvlalqwhinivl5d39g";
+    dependencies = mapFeatures features ([
+      (crates."crossbeam_deque"."${deps."tokio_threadpool"."0.1.9"."crossbeam_deque"}" deps)
+      (crates."crossbeam_utils"."${deps."tokio_threadpool"."0.1.9"."crossbeam_utils"}" deps)
+      (crates."futures"."${deps."tokio_threadpool"."0.1.9"."futures"}" deps)
+      (crates."log"."${deps."tokio_threadpool"."0.1.9"."log"}" deps)
+      (crates."num_cpus"."${deps."tokio_threadpool"."0.1.9"."num_cpus"}" deps)
+      (crates."rand"."${deps."tokio_threadpool"."0.1.9"."rand"}" deps)
+      (crates."tokio_executor"."${deps."tokio_threadpool"."0.1.9"."tokio_executor"}" deps)
+    ]);
+  };
+  features_.tokio_threadpool."0.1.9" = deps: f: updateFeatures f (rec {
+    crossbeam_deque."${deps.tokio_threadpool."0.1.9".crossbeam_deque}".default = true;
+    crossbeam_utils."${deps.tokio_threadpool."0.1.9".crossbeam_utils}".default = true;
+    futures."${deps.tokio_threadpool."0.1.9".futures}".default = true;
+    log."${deps.tokio_threadpool."0.1.9".log}".default = true;
+    num_cpus."${deps.tokio_threadpool."0.1.9".num_cpus}".default = true;
+    rand."${deps.tokio_threadpool."0.1.9".rand}".default = true;
+    tokio_executor."${deps.tokio_threadpool."0.1.9".tokio_executor}".default = true;
+    tokio_threadpool."0.1.9".default = (f.tokio_threadpool."0.1.9".default or true);
+  }) [
+    (features_.crossbeam_deque."${deps."tokio_threadpool"."0.1.9"."crossbeam_deque"}" deps)
+    (features_.crossbeam_utils."${deps."tokio_threadpool"."0.1.9"."crossbeam_utils"}" deps)
+    (features_.futures."${deps."tokio_threadpool"."0.1.9"."futures"}" deps)
+    (features_.log."${deps."tokio_threadpool"."0.1.9"."log"}" deps)
+    (features_.num_cpus."${deps."tokio_threadpool"."0.1.9"."num_cpus"}" deps)
+    (features_.rand."${deps."tokio_threadpool"."0.1.9"."rand"}" deps)
+    (features_.tokio_executor."${deps."tokio_threadpool"."0.1.9"."tokio_executor"}" deps)
+  ];
+
+
+# end
+# tokio-timer-0.2.5
+
+  crates.tokio_timer."0.2.5" = deps: { features?(features_.tokio_timer."0.2.5" deps {}) }: buildRustCrate {
+    crateName = "tokio-timer";
+    version = "0.2.5";
+    description = "Timer facilities for Tokio\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "0jyhizvnpldkbqvqygrg0zd5zvfj9p0ywvjzf47iy632vq3qnwzm";
+    dependencies = mapFeatures features ([
+      (crates."futures"."${deps."tokio_timer"."0.2.5"."futures"}" deps)
+      (crates."tokio_executor"."${deps."tokio_timer"."0.2.5"."tokio_executor"}" deps)
+    ]);
+  };
+  features_.tokio_timer."0.2.5" = deps: f: updateFeatures f (rec {
+    futures."${deps.tokio_timer."0.2.5".futures}".default = true;
+    tokio_executor."${deps.tokio_timer."0.2.5".tokio_executor}".default = true;
+    tokio_timer."0.2.5".default = (f.tokio_timer."0.2.5".default or true);
+  }) [
+    (features_.futures."${deps."tokio_timer"."0.2.5"."futures"}" deps)
+    (features_.tokio_executor."${deps."tokio_timer"."0.2.5"."tokio_executor"}" deps)
+  ];
+
+
+# end
+# tokio-udp-0.1.3
+
+  crates.tokio_udp."0.1.3" = deps: { features?(features_.tokio_udp."0.1.3" deps {}) }: buildRustCrate {
+    crateName = "tokio-udp";
+    version = "0.1.3";
+    description = "UDP bindings for tokio.\n";
+    authors = [ "Carl Lerche <me@carllerche.com>" ];
+    sha256 = "1g1x499vqvzwy7xfccr32vwymlx25zpmkx8ppqgifzqwrjnncajf";
+    dependencies = mapFeatures features ([
+      (crates."bytes"."${deps."tokio_udp"."0.1.3"."bytes"}" deps)
+      (crates."futures"."${deps."tokio_udp"."0.1.3"."futures"}" deps)
+      (crates."log"."${deps."tokio_udp"."0.1.3"."log"}" deps)
+      (crates."mio"."${deps."tokio_udp"."0.1.3"."mio"}" deps)
+      (crates."tokio_codec"."${deps."tokio_udp"."0.1.3"."tokio_codec"}" deps)
+      (crates."tokio_io"."${deps."tokio_udp"."0.1.3"."tokio_io"}" deps)
+      (crates."tokio_reactor"."${deps."tokio_udp"."0.1.3"."tokio_reactor"}" deps)
+    ]);
+  };
+  features_.tokio_udp."0.1.3" = deps: f: updateFeatures f (rec {
+    bytes."${deps.tokio_udp."0.1.3".bytes}".default = true;
+    futures."${deps.tokio_udp."0.1.3".futures}".default = true;
+    log."${deps.tokio_udp."0.1.3".log}".default = true;
+    mio."${deps.tokio_udp."0.1.3".mio}".default = true;
+    tokio_codec."${deps.tokio_udp."0.1.3".tokio_codec}".default = true;
+    tokio_io."${deps.tokio_udp."0.1.3".tokio_io}".default = true;
+    tokio_reactor."${deps.tokio_udp."0.1.3".tokio_reactor}".default = true;
+    tokio_udp."0.1.3".default = (f.tokio_udp."0.1.3".default or true);
+  }) [
+    (features_.bytes."${deps."tokio_udp"."0.1.3"."bytes"}" deps)
+    (features_.futures."${deps."tokio_udp"."0.1.3"."futures"}" deps)
+    (features_.log."${deps."tokio_udp"."0.1.3"."log"}" deps)
+    (features_.mio."${deps."tokio_udp"."0.1.3"."mio"}" deps)
+    (features_.tokio_codec."${deps."tokio_udp"."0.1.3"."tokio_codec"}" deps)
+    (features_.tokio_io."${deps."tokio_udp"."0.1.3"."tokio_io"}" deps)
+    (features_.tokio_reactor."${deps."tokio_udp"."0.1.3"."tokio_reactor"}" deps)
+  ];
+
+
+# end
+# try-lock-0.2.2
+
+  crates.try_lock."0.2.2" = deps: { features?(features_.try_lock."0.2.2" deps {}) }: buildRustCrate {
+    crateName = "try-lock";
+    version = "0.2.2";
+    description = "A lightweight atomic lock.";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "1k8xc0jpbrmzp0fwghdh6pwzjb9xx2p8yy0xxnnb8065smc5fsrv";
+  };
+  features_.try_lock."0.2.2" = deps: f: updateFeatures f (rec {
+    try_lock."0.2.2".default = (f.try_lock."0.2.2".default or true);
+  }) [];
+
+
+# end
+# unicase-1.4.2
+
+  crates.unicase."1.4.2" = deps: { features?(features_.unicase."1.4.2" deps {}) }: buildRustCrate {
+    crateName = "unicase";
+    version = "1.4.2";
+    description = "A case-insensitive wrapper around strings.";
+    authors = [ "Sean McArthur <sean.monstar@gmail.com>" ];
+    sha256 = "0rbnhw2mnhcwrij3vczp0sl8zdfmvf2dlh8hly81kj7132kfj0mf";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."version_check"."${deps."unicase"."1.4.2"."version_check"}" deps)
+    ]);
+    features = mkFeatures (features."unicase"."1.4.2" or {});
+  };
+  features_.unicase."1.4.2" = deps: f: updateFeatures f (rec {
+    unicase = fold recursiveUpdate {} [
+      { "1.4.2"."heapsize" =
+        (f.unicase."1.4.2"."heapsize" or false) ||
+        (f.unicase."1.4.2".heap_size or false) ||
+        (unicase."1.4.2"."heap_size" or false); }
+      { "1.4.2"."heapsize_plugin" =
+        (f.unicase."1.4.2"."heapsize_plugin" or false) ||
+        (f.unicase."1.4.2".heap_size or false) ||
+        (unicase."1.4.2"."heap_size" or false); }
+      { "1.4.2".default = (f.unicase."1.4.2".default or true); }
+    ];
+    version_check."${deps.unicase."1.4.2".version_check}".default = true;
+  }) [
+    (features_.version_check."${deps."unicase"."1.4.2"."version_check"}" deps)
+  ];
+
+
+# end
+# unicase-2.1.0
+
+  crates.unicase."2.1.0" = deps: { features?(features_.unicase."2.1.0" deps {}) }: buildRustCrate {
+    crateName = "unicase";
+    version = "2.1.0";
+    description = "A case-insensitive wrapper around strings.";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "1zzn16hh8fdx5pnbbnl32q8m2mh4vpd1jm9pdcv969ik83dw4byp";
+    build = "build.rs";
+
+    buildDependencies = mapFeatures features ([
+      (crates."version_check"."${deps."unicase"."2.1.0"."version_check"}" deps)
+    ]);
+    features = mkFeatures (features."unicase"."2.1.0" or {});
+  };
+  features_.unicase."2.1.0" = deps: f: updateFeatures f (rec {
+    unicase."2.1.0".default = (f.unicase."2.1.0".default or true);
+    version_check."${deps.unicase."2.1.0".version_check}".default = true;
+  }) [
+    (features_.version_check."${deps."unicase"."2.1.0"."version_check"}" deps)
+  ];
+
+
+# end
+# unicode-bidi-0.3.4
+
+  crates.unicode_bidi."0.3.4" = deps: { features?(features_.unicode_bidi."0.3.4" deps {}) }: buildRustCrate {
+    crateName = "unicode-bidi";
+    version = "0.3.4";
+    description = "Implementation of the Unicode Bidirectional Algorithm";
+    authors = [ "The Servo Project Developers" ];
+    sha256 = "0lcd6jasrf8p9p0q20qyf10c6xhvw40m2c4rr105hbk6zy26nj1q";
+    libName = "unicode_bidi";
+    dependencies = mapFeatures features ([
+      (crates."matches"."${deps."unicode_bidi"."0.3.4"."matches"}" deps)
+    ]);
+    features = mkFeatures (features."unicode_bidi"."0.3.4" or {});
+  };
+  features_.unicode_bidi."0.3.4" = deps: f: updateFeatures f (rec {
+    matches."${deps.unicode_bidi."0.3.4".matches}".default = true;
+    unicode_bidi = fold recursiveUpdate {} [
+      { "0.3.4"."flame" =
+        (f.unicode_bidi."0.3.4"."flame" or false) ||
+        (f.unicode_bidi."0.3.4".flame_it or false) ||
+        (unicode_bidi."0.3.4"."flame_it" or false); }
+      { "0.3.4"."flamer" =
+        (f.unicode_bidi."0.3.4"."flamer" or false) ||
+        (f.unicode_bidi."0.3.4".flame_it or false) ||
+        (unicode_bidi."0.3.4"."flame_it" or false); }
+      { "0.3.4"."serde" =
+        (f.unicode_bidi."0.3.4"."serde" or false) ||
+        (f.unicode_bidi."0.3.4".with_serde or false) ||
+        (unicode_bidi."0.3.4"."with_serde" or false); }
+      { "0.3.4".default = (f.unicode_bidi."0.3.4".default or true); }
+    ];
+  }) [
+    (features_.matches."${deps."unicode_bidi"."0.3.4"."matches"}" deps)
+  ];
+
+
+# end
+# unicode-normalization-0.1.5
+
+  crates.unicode_normalization."0.1.5" = deps: { features?(features_.unicode_normalization."0.1.5" deps {}) }: buildRustCrate {
+    crateName = "unicode-normalization";
+    version = "0.1.5";
+    description = "This crate provides functions for normalization of\nUnicode strings, including Canonical and Compatible\nDecomposition and Recomposition, as described in\nUnicode Standard Annex #15.\n";
+    authors = [ "kwantam <kwantam@gmail.com>" ];
+    sha256 = "0hg29g86fca7b65mwk4sm5s838js6bqrl0gabadbazvbsgjam0j5";
+  };
+  features_.unicode_normalization."0.1.5" = deps: f: updateFeatures f (rec {
+    unicode_normalization."0.1.5".default = (f.unicode_normalization."0.1.5".default or true);
+  }) [];
+
+
+# end
+# unicode-width-0.1.4
+
+  crates.unicode_width."0.1.4" = deps: { features?(features_.unicode_width."0.1.4" deps {}) }: buildRustCrate {
+    crateName = "unicode-width";
+    version = "0.1.4";
+    description = "Determine displayed width of `char` and `str` types\naccording to Unicode Standard Annex #11 rules.\n";
+    authors = [ "kwantam <kwantam@gmail.com>" ];
+    sha256 = "1rp7a04icn9y5c0lm74nrd4py0rdl0af8bhdwq7g478n1xifpifl";
+    features = mkFeatures (features."unicode_width"."0.1.4" or {});
+  };
+  features_.unicode_width."0.1.4" = deps: f: updateFeatures f (rec {
+    unicode_width."0.1.4".default = (f.unicode_width."0.1.4".default or true);
+  }) [];
+
+
+# end
+# unicode-xid-0.0.4
+
+  crates.unicode_xid."0.0.4" = deps: { features?(features_.unicode_xid."0.0.4" deps {}) }: buildRustCrate {
+    crateName = "unicode-xid";
+    version = "0.0.4";
+    description = "Determine whether characters have the XID_Start\nor XID_Continue properties according to\nUnicode Standard Annex #31.\n";
+    authors = [ "erick.tryzelaar <erick.tryzelaar@gmail.com>" "kwantam <kwantam@gmail.com>" ];
+    sha256 = "1dc8wkkcd3s6534s5aw4lbjn8m67flkkbnajp5bl8408wdg8rh9v";
+    features = mkFeatures (features."unicode_xid"."0.0.4" or {});
+  };
+  features_.unicode_xid."0.0.4" = deps: f: updateFeatures f (rec {
+    unicode_xid."0.0.4".default = (f.unicode_xid."0.0.4".default or true);
+  }) [];
+
+
+# end
+# unreachable-1.0.0
+
+  crates.unreachable."1.0.0" = deps: { features?(features_.unreachable."1.0.0" deps {}) }: buildRustCrate {
+    crateName = "unreachable";
+    version = "1.0.0";
+    description = "An unreachable code optimization hint in stable rust.";
+    authors = [ "Jonathan Reem <jonathan.reem@gmail.com>" ];
+    sha256 = "1am8czbk5wwr25gbp2zr007744fxjshhdqjz9liz7wl4pnv3whcf";
+    dependencies = mapFeatures features ([
+      (crates."void"."${deps."unreachable"."1.0.0"."void"}" deps)
+    ]);
+  };
+  features_.unreachable."1.0.0" = deps: f: updateFeatures f (rec {
+    unreachable."1.0.0".default = (f.unreachable."1.0.0".default or true);
+    void."${deps.unreachable."1.0.0".void}".default = (f.void."${deps.unreachable."1.0.0".void}".default or false);
+  }) [
+    (features_.void."${deps."unreachable"."1.0.0"."void"}" deps)
+  ];
+
+
+# end
+# url-1.7.2
+
+  crates.url."1.7.2" = deps: { features?(features_.url."1.7.2" deps {}) }: buildRustCrate {
+    crateName = "url";
+    version = "1.7.2";
+    description = "URL library for Rust, based on the WHATWG URL Standard";
+    authors = [ "The rust-url developers" ];
+    sha256 = "0qzrjzd9r1niv7037x4cgnv98fs1vj0k18lpxx890ipc47x5gc09";
+    dependencies = mapFeatures features ([
+      (crates."idna"."${deps."url"."1.7.2"."idna"}" deps)
+      (crates."matches"."${deps."url"."1.7.2"."matches"}" deps)
+      (crates."percent_encoding"."${deps."url"."1.7.2"."percent_encoding"}" deps)
+    ]);
+    features = mkFeatures (features."url"."1.7.2" or {});
+  };
+  features_.url."1.7.2" = deps: f: updateFeatures f (rec {
+    idna."${deps.url."1.7.2".idna}".default = true;
+    matches."${deps.url."1.7.2".matches}".default = true;
+    percent_encoding."${deps.url."1.7.2".percent_encoding}".default = true;
+    url = fold recursiveUpdate {} [
+      { "1.7.2"."encoding" =
+        (f.url."1.7.2"."encoding" or false) ||
+        (f.url."1.7.2".query_encoding or false) ||
+        (url."1.7.2"."query_encoding" or false); }
+      { "1.7.2"."heapsize" =
+        (f.url."1.7.2"."heapsize" or false) ||
+        (f.url."1.7.2".heap_size or false) ||
+        (url."1.7.2"."heap_size" or false); }
+      { "1.7.2".default = (f.url."1.7.2".default or true); }
+    ];
+  }) [
+    (features_.idna."${deps."url"."1.7.2"."idna"}" deps)
+    (features_.matches."${deps."url"."1.7.2"."matches"}" deps)
+    (features_.percent_encoding."${deps."url"."1.7.2"."percent_encoding"}" deps)
+  ];
+
+
+# end
+# utf8-ranges-0.1.3
+
+  crates.utf8_ranges."0.1.3" = deps: { features?(features_.utf8_ranges."0.1.3" deps {}) }: buildRustCrate {
+    crateName = "utf8-ranges";
+    version = "0.1.3";
+    description = "Convert ranges of Unicode codepoints to UTF-8 byte ranges.";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "1cj548a91a93j8375p78qikaiam548xh84cb0ck8y119adbmsvbp";
+  };
+  features_.utf8_ranges."0.1.3" = deps: f: updateFeatures f (rec {
+    utf8_ranges."0.1.3".default = (f.utf8_ranges."0.1.3".default or true);
+  }) [];
+
+
+# end
+# uuid-0.7.1
+
+  crates.uuid."0.7.1" = deps: { features?(features_.uuid."0.7.1" deps {}) }: buildRustCrate {
+    crateName = "uuid";
+    version = "0.7.1";
+    description = "A library to generate and parse UUIDs.";
+    authors = [ "Ashley Mannix<ashleymannix@live.com.au>" "Christopher Armstrong" "Dylan DPC<dylan.dpc@gmail.com>" "Hunar Roop Kahlon<hunar.roop@gmail.com>" ];
+    sha256 = "1wh5izr7bssf1j8y3cawj4yfr5pz4cfxgsjlk2gs1vccc848qpbj";
+    dependencies = mapFeatures features ([
+    ]
+      ++ (if features.uuid."0.7.1".rand or false then [ (crates.rand."${deps."uuid"."0.7.1".rand}" deps) ] else []));
+    features = mkFeatures (features."uuid"."0.7.1" or {});
+  };
+  features_.uuid."0.7.1" = deps: f: updateFeatures f (rec {
+    rand."${deps.uuid."0.7.1".rand}".default = true;
+    uuid = fold recursiveUpdate {} [
+      { "0.7.1"."byteorder" =
+        (f.uuid."0.7.1"."byteorder" or false) ||
+        (f.uuid."0.7.1".u128 or false) ||
+        (uuid."0.7.1"."u128" or false); }
+      { "0.7.1"."md5" =
+        (f.uuid."0.7.1"."md5" or false) ||
+        (f.uuid."0.7.1".v3 or false) ||
+        (uuid."0.7.1"."v3" or false); }
+      { "0.7.1"."nightly" =
+        (f.uuid."0.7.1"."nightly" or false) ||
+        (f.uuid."0.7.1".const_fn or false) ||
+        (uuid."0.7.1"."const_fn" or false); }
+      { "0.7.1"."rand" =
+        (f.uuid."0.7.1"."rand" or false) ||
+        (f.uuid."0.7.1".v3 or false) ||
+        (uuid."0.7.1"."v3" or false) ||
+        (f.uuid."0.7.1".v4 or false) ||
+        (uuid."0.7.1"."v4" or false) ||
+        (f.uuid."0.7.1".v5 or false) ||
+        (uuid."0.7.1"."v5" or false); }
+      { "0.7.1"."sha1" =
+        (f.uuid."0.7.1"."sha1" or false) ||
+        (f.uuid."0.7.1".v5 or false) ||
+        (uuid."0.7.1"."v5" or false); }
+      { "0.7.1"."std" =
+        (f.uuid."0.7.1"."std" or false) ||
+        (f.uuid."0.7.1".default or false) ||
+        (uuid."0.7.1"."default" or false); }
+      { "0.7.1".default = (f.uuid."0.7.1".default or true); }
+    ];
+  }) [
+    (features_.rand."${deps."uuid"."0.7.1"."rand"}" deps)
+  ];
+
+
+# end
+# vcpkg-0.2.2
+
+  crates.vcpkg."0.2.2" = deps: { features?(features_.vcpkg."0.2.2" deps {}) }: buildRustCrate {
+    crateName = "vcpkg";
+    version = "0.2.2";
+    description = "A library to find native dependencies in a vcpkg tree at build\ntime in order to be used in Cargo build scripts.\n";
+    authors = [ "Jim McGrath <jimmc2@gmail.com>" ];
+    sha256 = "1fl5j0ksnwrnsrf1b1a9lqbjgnajdipq0030vsbhx81mb7d9478a";
+  };
+  features_.vcpkg."0.2.2" = deps: f: updateFeatures f (rec {
+    vcpkg."0.2.2".default = (f.vcpkg."0.2.2".default or true);
+  }) [];
+
+
+# end
+# vec_map-0.8.0
+
+  crates.vec_map."0.8.0" = deps: { features?(features_.vec_map."0.8.0" deps {}) }: buildRustCrate {
+    crateName = "vec_map";
+    version = "0.8.0";
+    description = "A simple map based on a vector for small integer keys";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" "Jorge Aparicio <japaricious@gmail.com>" "Alexis Beingessner <a.beingessner@gmail.com>" "Brian Anderson <>" "tbu- <>" "Manish Goregaokar <>" "Aaron Turon <aturon@mozilla.com>" "Adolfo Ochagavía <>" "Niko Matsakis <>" "Steven Fackler <>" "Chase Southwood <csouth3@illinois.edu>" "Eduard Burtescu <>" "Florian Wilkens <>" "Félix Raimundo <>" "Tibor Benke <>" "Markus Siemens <markus@m-siemens.de>" "Josh Branchaud <jbranchaud@gmail.com>" "Huon Wilson <dbau.pp@gmail.com>" "Corey Farwell <coref@rwell.org>" "Aaron Liblong <>" "Nick Cameron <nrc@ncameron.org>" "Patrick Walton <pcwalton@mimiga.net>" "Felix S Klock II <>" "Andrew Paseltiner <apaseltiner@gmail.com>" "Sean McArthur <sean.monstar@gmail.com>" "Vadim Petrochenkov <>" ];
+    sha256 = "07sgxp3cf1a4cxm9n3r27fcvqmld32bl2576mrcahnvm34j11xay";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."vec_map"."0.8.0" or {});
+  };
+  features_.vec_map."0.8.0" = deps: f: updateFeatures f (rec {
+    vec_map = fold recursiveUpdate {} [
+      { "0.8.0"."serde" =
+        (f.vec_map."0.8.0"."serde" or false) ||
+        (f.vec_map."0.8.0".eders or false) ||
+        (vec_map."0.8.0"."eders" or false); }
+      { "0.8.0"."serde_derive" =
+        (f.vec_map."0.8.0"."serde_derive" or false) ||
+        (f.vec_map."0.8.0".eders or false) ||
+        (vec_map."0.8.0"."eders" or false); }
+      { "0.8.0".default = (f.vec_map."0.8.0".default or true); }
+    ];
+  }) [];
+
+
+# end
+# version_check-0.1.3
+
+  crates.version_check."0.1.3" = deps: { features?(features_.version_check."0.1.3" deps {}) }: buildRustCrate {
+    crateName = "version_check";
+    version = "0.1.3";
+    description = "Tiny crate to check the version of the installed/running rustc.";
+    authors = [ "Sergio Benitez <sb@sergio.bz>" ];
+    sha256 = "0z635wdclv9bvafj11fpgndn7y79ibpsnc364pm61i1m4wwg8msg";
+  };
+  features_.version_check."0.1.3" = deps: f: updateFeatures f (rec {
+    version_check."0.1.3".default = (f.version_check."0.1.3".default or true);
+  }) [];
+
+
+# end
+# void-1.0.2
+
+  crates.void."1.0.2" = deps: { features?(features_.void."1.0.2" deps {}) }: buildRustCrate {
+    crateName = "void";
+    version = "1.0.2";
+    description = "The uninhabited void type for use in statically impossible cases.";
+    authors = [ "Jonathan Reem <jonathan.reem@gmail.com>" ];
+    sha256 = "0h1dm0dx8dhf56a83k68mijyxigqhizpskwxfdrs1drwv2cdclv3";
+    features = mkFeatures (features."void"."1.0.2" or {});
+  };
+  features_.void."1.0.2" = deps: f: updateFeatures f (rec {
+    void = fold recursiveUpdate {} [
+      { "1.0.2"."std" =
+        (f.void."1.0.2"."std" or false) ||
+        (f.void."1.0.2".default or false) ||
+        (void."1.0.2"."default" or false); }
+      { "1.0.2".default = (f.void."1.0.2".default or true); }
+    ];
+  }) [];
+
+
+# end
+# want-0.0.6
+
+  crates.want."0.0.6" = deps: { features?(features_.want."0.0.6" deps {}) }: buildRustCrate {
+    crateName = "want";
+    version = "0.0.6";
+    description = "Detect when another Future wants a result.";
+    authors = [ "Sean McArthur <sean@seanmonstar.com>" ];
+    sha256 = "03cc2lndz531a4kgql1v9kppyb1yz2abcz5l52j1gg2nypmy3lh8";
+    dependencies = mapFeatures features ([
+      (crates."futures"."${deps."want"."0.0.6"."futures"}" deps)
+      (crates."log"."${deps."want"."0.0.6"."log"}" deps)
+      (crates."try_lock"."${deps."want"."0.0.6"."try_lock"}" deps)
+    ]);
+  };
+  features_.want."0.0.6" = deps: f: updateFeatures f (rec {
+    futures."${deps.want."0.0.6".futures}".default = true;
+    log."${deps.want."0.0.6".log}".default = true;
+    try_lock."${deps.want."0.0.6".try_lock}".default = true;
+    want."0.0.6".default = (f.want."0.0.6".default or true);
+  }) [
+    (features_.futures."${deps."want"."0.0.6"."futures"}" deps)
+    (features_.log."${deps."want"."0.0.6"."log"}" deps)
+    (features_.try_lock."${deps."want"."0.0.6"."try_lock"}" deps)
+  ];
+
+
+# end
+# winapi-0.2.8
+
+  crates.winapi."0.2.8" = deps: { features?(features_.winapi."0.2.8" deps {}) }: buildRustCrate {
+    crateName = "winapi";
+    version = "0.2.8";
+    description = "Types and constants for WinAPI bindings. See README for list of crates providing function bindings.";
+    authors = [ "Peter Atashian <retep998@gmail.com>" ];
+    sha256 = "0a45b58ywf12vb7gvj6h3j264nydynmzyqz8d8rqxsj6icqv82as";
+  };
+  features_.winapi."0.2.8" = deps: f: updateFeatures f (rec {
+    winapi."0.2.8".default = (f.winapi."0.2.8".default or true);
+  }) [];
+
+
+# end
+# winapi-0.3.6
+
+  crates.winapi."0.3.6" = deps: { features?(features_.winapi."0.3.6" deps {}) }: buildRustCrate {
+    crateName = "winapi";
+    version = "0.3.6";
+    description = "Raw FFI bindings for all of Windows API.";
+    authors = [ "Peter Atashian <retep998@gmail.com>" ];
+    sha256 = "1d9jfp4cjd82sr1q4dgdlrkvm33zhhav9d7ihr0nivqbncr059m4";
+    build = "build.rs";
+    dependencies = (if kernel == "i686-pc-windows-gnu" then mapFeatures features ([
+      (crates."winapi_i686_pc_windows_gnu"."${deps."winapi"."0.3.6"."winapi_i686_pc_windows_gnu"}" deps)
+    ]) else [])
+      ++ (if kernel == "x86_64-pc-windows-gnu" then mapFeatures features ([
+      (crates."winapi_x86_64_pc_windows_gnu"."${deps."winapi"."0.3.6"."winapi_x86_64_pc_windows_gnu"}" deps)
+    ]) else []);
+    features = mkFeatures (features."winapi"."0.3.6" or {});
+  };
+  features_.winapi."0.3.6" = deps: f: updateFeatures f (rec {
+    winapi."0.3.6".default = (f.winapi."0.3.6".default or true);
+    winapi_i686_pc_windows_gnu."${deps.winapi."0.3.6".winapi_i686_pc_windows_gnu}".default = true;
+    winapi_x86_64_pc_windows_gnu."${deps.winapi."0.3.6".winapi_x86_64_pc_windows_gnu}".default = true;
+  }) [
+    (features_.winapi_i686_pc_windows_gnu."${deps."winapi"."0.3.6"."winapi_i686_pc_windows_gnu"}" deps)
+    (features_.winapi_x86_64_pc_windows_gnu."${deps."winapi"."0.3.6"."winapi_x86_64_pc_windows_gnu"}" deps)
+  ];
+
+
+# end
+# winapi-build-0.1.1
+
+  crates.winapi_build."0.1.1" = deps: { features?(features_.winapi_build."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "winapi-build";
+    version = "0.1.1";
+    description = "Common code for build.rs in WinAPI -sys crates.";
+    authors = [ "Peter Atashian <retep998@gmail.com>" ];
+    sha256 = "1lxlpi87rkhxcwp2ykf1ldw3p108hwm24nywf3jfrvmff4rjhqga";
+    libName = "build";
+  };
+  features_.winapi_build."0.1.1" = deps: f: updateFeatures f (rec {
+    winapi_build."0.1.1".default = (f.winapi_build."0.1.1".default or true);
+  }) [];
+
+
+# end
+# winapi-i686-pc-windows-gnu-0.4.0
+
+  crates.winapi_i686_pc_windows_gnu."0.4.0" = deps: { features?(features_.winapi_i686_pc_windows_gnu."0.4.0" deps {}) }: buildRustCrate {
+    crateName = "winapi-i686-pc-windows-gnu";
+    version = "0.4.0";
+    description = "Import libraries for the i686-pc-windows-gnu target. Please don't use this crate directly, depend on winapi instead.";
+    authors = [ "Peter Atashian <retep998@gmail.com>" ];
+    sha256 = "05ihkij18r4gamjpxj4gra24514can762imjzlmak5wlzidplzrp";
+    build = "build.rs";
+  };
+  features_.winapi_i686_pc_windows_gnu."0.4.0" = deps: f: updateFeatures f (rec {
+    winapi_i686_pc_windows_gnu."0.4.0".default = (f.winapi_i686_pc_windows_gnu."0.4.0".default or true);
+  }) [];
+
+
+# end
+# winapi-x86_64-pc-windows-gnu-0.4.0
+
+  crates.winapi_x86_64_pc_windows_gnu."0.4.0" = deps: { features?(features_.winapi_x86_64_pc_windows_gnu."0.4.0" deps {}) }: buildRustCrate {
+    crateName = "winapi-x86_64-pc-windows-gnu";
+    version = "0.4.0";
+    description = "Import libraries for the x86_64-pc-windows-gnu target. Please don't use this crate directly, depend on winapi instead.";
+    authors = [ "Peter Atashian <retep998@gmail.com>" ];
+    sha256 = "0n1ylmlsb8yg1v583i4xy0qmqg42275flvbc51hdqjjfjcl9vlbj";
+    build = "build.rs";
+  };
+  features_.winapi_x86_64_pc_windows_gnu."0.4.0" = deps: f: updateFeatures f (rec {
+    winapi_x86_64_pc_windows_gnu."0.4.0".default = (f.winapi_x86_64_pc_windows_gnu."0.4.0".default or true);
+  }) [];
+
+
+# end
+# ws2_32-sys-0.2.1
+
+  crates.ws2_32_sys."0.2.1" = deps: { features?(features_.ws2_32_sys."0.2.1" deps {}) }: buildRustCrate {
+    crateName = "ws2_32-sys";
+    version = "0.2.1";
+    description = "Contains function definitions for the Windows API library ws2_32. See winapi for types and constants.";
+    authors = [ "Peter Atashian <retep998@gmail.com>" ];
+    sha256 = "1zpy9d9wk11sj17fczfngcj28w4xxjs3b4n036yzpy38dxp4f7kc";
+    libName = "ws2_32";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."winapi"."${deps."ws2_32_sys"."0.2.1"."winapi"}" deps)
+    ]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."winapi_build"."${deps."ws2_32_sys"."0.2.1"."winapi_build"}" deps)
+    ]);
+  };
+  features_.ws2_32_sys."0.2.1" = deps: f: updateFeatures f (rec {
+    winapi."${deps.ws2_32_sys."0.2.1".winapi}".default = true;
+    winapi_build."${deps.ws2_32_sys."0.2.1".winapi_build}".default = true;
+    ws2_32_sys."0.2.1".default = (f.ws2_32_sys."0.2.1".default or true);
+  }) [
+    (features_.winapi."${deps."ws2_32_sys"."0.2.1"."winapi"}" deps)
+    (features_.winapi_build."${deps."ws2_32_sys"."0.2.1"."winapi_build"}" deps)
+  ];
+
+
+# end
+# xattr-0.1.11
+
+  crates.xattr."0.1.11" = deps: { features?(features_.xattr."0.1.11" deps {}) }: buildRustCrate {
+    crateName = "xattr";
+    version = "0.1.11";
+    description = "unix extended filesystem attributes";
+    authors = [ "Steven Allen <steven@stebalien.com>" ];
+    sha256 = "0v8wad18pdxv7242a7xs18i9hy00ih3vwajz7my05zbxx2ss01nx";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."xattr"."0.1.11"."libc"}" deps)
+    ]);
+    features = mkFeatures (features."xattr"."0.1.11" or {});
+  };
+  features_.xattr."0.1.11" = deps: f: updateFeatures f (rec {
+    libc."${deps.xattr."0.1.11".libc}".default = true;
+    xattr = fold recursiveUpdate {} [
+      { "0.1.11"."unsupported" =
+        (f.xattr."0.1.11"."unsupported" or false) ||
+        (f.xattr."0.1.11".default or false) ||
+        (xattr."0.1.11"."default" or false); }
+      { "0.1.11".default = (f.xattr."0.1.11".default or true); }
+    ];
+  }) [
+    (features_.libc."${deps."xattr"."0.1.11"."libc"}" deps)
+  ];
+
+
+# end
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-download/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-download/default.nix
new file mode 100644
index 000000000000..1cb53a4b6c8d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-download/default.nix
@@ -0,0 +1,14 @@
+{ stdenv, lib, fetchgit, darwin, buildPlatform
+, buildRustCrate, buildRustCrateHelpers, defaultCrateOverrides }:
+
+((import ./Cargo.nix {
+  inherit lib buildPlatform buildRustCrate buildRustCrateHelpers fetchgit;
+  cratesIO = import ./crates-io.nix { inherit lib buildRustCrate buildRustCrateHelpers; };
+}).cargo_download {}).override {
+  crateOverrides = defaultCrateOverrides // {
+    cargo-download = attrs: {
+      buildInputs = lib.optional stdenv.isDarwin
+        darwin.apple_sdk.frameworks.Security;
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-edit/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-edit/default.nix
new file mode 100644
index 000000000000..7bcc6c12ee9d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-edit/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, darwin
+, rustPlatform, fetchFromGitHub
+, openssl, pkg-config, libiconv }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-edit";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "killercup";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "19jnvsbddn52ibjv48jyfss25gg9mmvxzfhbr7s7bqyf3bq68jbm";
+  };
+
+  cargoSha256 = "0b06jsilj87rnr1qlarn29hnz0i9p455fdxg6nf6r2fli2xpv1f0";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ libiconv darwin.apple_sdk.frameworks.Security ];
+
+  doCheck = false; # integration tests depend on changing cargo config
+
+  meta = with lib; {
+    description = "A utility for managing cargo dependencies from the command line";
+    homepage = "https://github.com/killercup/cargo-edit";
+    license = with licenses; [ asl20 /* or */ mit ];
+    maintainers = with maintainers; [ gerschtli jb55 filalex77 killercup ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-graph/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-graph/default.nix
new file mode 100644
index 000000000000..4d35e284040b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-graph/default.nix
@@ -0,0 +1,23 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-graph";
+  version = "0.2.0-d895af1";
+
+  src = fetchFromGitHub {
+    owner = "kbknapp";
+    repo = "cargo-graph";
+    # The last release (v0.2.0) is from 2015. Since then there have been some
+    # bug fixes committed that would be good to have.
+    rev = "d895af1b7840c7ae8eddaf4e990bfa594c22ba01";
+    sha256 = "0myg26cssmbakz53dl61lswsbaqnjqlbc30c2571pq8f7gvz2qv5";
+  };
+
+  cargoSha256 = "0fzj88iy57c39yi8pf3agfmsf2dck06f0yqmlnsaxvvp4cknkw1n";
+
+  meta = with lib; {
+    description = "A cargo subcommand for creating GraphViz DOT files and dependency graphs";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ basvandijk ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-license/add-Cargo.lock.patch b/nixpkgs/pkgs/tools/package-management/cargo-license/add-Cargo.lock.patch
new file mode 100644
index 000000000000..c6c4e3f62e1a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-license/add-Cargo.lock.patch
@@ -0,0 +1,435 @@
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..20311b5
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,429 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "ansi_term"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "ansi_term"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "atty"
++version = "0.2.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "backtrace"
++version = "0.3.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "backtrace-sys"
++version = "0.1.32"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bitflags"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bstr"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "byteorder"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "cargo-license"
++version = "0.3.0"
++dependencies = [
++ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)",
++ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cargo_metadata"
++version = "0.9.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cc"
++version = "1.0.48"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "cfg-if"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "clap"
++version = "2.33.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "csv"
++version = "1.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "csv-core"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "failure"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "failure_derive"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "getopts"
++version = "0.2.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "heck"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "itoa"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "libc"
++version = "0.2.66"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "memchr"
++version = "2.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "proc-macro-error"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex-automata"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rustc-demangle"
++version = "0.1.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "ryu"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "serde"
++version = "1.0.104"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "serde_derive"
++version = "1.0.104"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.44"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "strsim"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "structopt"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt-derive 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "structopt-derive"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "synstructure"
++version = "0.12.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "toml"
++version = "0.4.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-segmentation"
++version = "1.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-width"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "vec_map"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi"
++version = "0.3.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[metadata]
++"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
++"checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6"
++"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
++"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea"
++"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491"
++"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
++"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245"
++"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
++"checksum cargo_metadata 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "46e3374c604fb39d1a2f35ed5e4a4e30e60d01fab49446e08f1b3e9a90aef202"
++"checksum cc 1.0.48 (registry+https://github.com/rust-lang/crates.io-index)" = "f52a465a666ca3d838ebbf08b241383421412fe7ebb463527bba275526d89f76"
++"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
++"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
++"checksum csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37519ccdfd73a75821cac9319d4fce15a81b9fcf75f951df5b9988aa3a0af87d"
++"checksum csv-core 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9b5cadb6b25c77aeff80ba701712494213f4a8418fcda2ee11b6560c3ad0bf4c"
++"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9"
++"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08"
++"checksum getopts 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)" = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
++"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
++"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
++"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++"checksum libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)" = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
++"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
++"checksum proc-macro-error 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "aeccfe4d5d8ea175d5f0e4a2ad0637e0f4121d63bd99d356fb1f39ab2e7c6097"
++"checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27"
++"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
++"checksum regex-automata 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "92b73c2a1770c255c240eaa4ee600df1704a38dc3feaa6e949e7fcd4f8dc09f9"
++"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
++"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
++"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
++"checksum serde_derive 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
++"checksum serde_json 1.0.44 (registry+https://github.com/rust-lang/crates.io-index)" = "48c575e0cc52bdd09b47f330f646cf59afc586e9c4e3ccd6fc1f625b8ea1dad7"
++"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
++"checksum structopt 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "30b3a3e93f5ad553c38b3301c8a0a0cec829a36783f6a0c467fc4bf553a5f5bf"
++"checksum structopt-derive 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea692d40005b3ceba90a9fe7a78fa8d4b82b0ce627eebbffc329aab850f3410e"
++"checksum syn 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "dff0acdb207ae2fe6d5976617f887eb1e35a2ba52c13c7234c790960cdad9238"
++"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545"
++"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
++"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
++"checksum unicode-segmentation 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0"
++"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
++"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
++"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
++"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
++"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-license/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-license/default.nix
new file mode 100644
index 000000000000..b3c404f476fc
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-license/default.nix
@@ -0,0 +1,25 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-license";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "onur";
+    repo = "cargo-license";
+    rev = "v${version}";
+    sha256 = "05a2af84gjyfzhsln0afg16h02pr56jng4xlsg21hicyi1kxjwlf";
+  };
+
+  cargoPatches = [ ./add-Cargo.lock.patch ];
+
+  cargoSha256 = "0bkaj54avvib1kipk8ky7gyxfs00qm80jd415zp53hhvinphzb5v";
+
+  meta = with lib; {
+    description = "Cargo subcommand to see license of dependencies";
+    homepage = "https://github.com/onur/cargo-license";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ basvandijk ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-outdated/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-outdated/default.nix
new file mode 100644
index 000000000000..1a20c6b9ab64
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-outdated/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkg-config, openssl, libiconv, curl, darwin }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-outdated";
+  version = "0.9.10";
+
+  src = fetchFromGitHub {
+    owner = "kbknapp";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1aj76wwpnvniv5xdygfv17kj74rxxkvngkvw2019qinm2nv81c3p";
+  };
+
+  cargoSha256 = "0nzxx31nlmrcrcs67z1wci0d4n6kdq83z2ld4bq8xgp6p916f4sl";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ openssl ]
+  ++ stdenv.lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+    libiconv
+    curl
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A cargo subcommand for displaying when Rust dependencies are out of date";
+    homepage = "https://github.com/kbknapp/cargo-outdated";
+    license = with licenses; [ asl20 /* or */ mit ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ sondr3 ivan ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-release/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-release/default.nix
new file mode 100644
index 000000000000..69a55bcda91c
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-release/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, rustPlatform, fetchFromGitHub, Security, openssl, pkg-config }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-release";
+  version = "0.13.3";
+
+  src = fetchFromGitHub {
+    owner = "sunng87";
+    repo = "cargo-release";
+    rev = "v${version}";
+    sha256 = "0d9fgmy87xjl9kcmx9crmmg83iyybisg0gfwmnlxz5529slqng5r";
+  };
+
+  cargoSha256 = "1a6ac4x51i1rg0bgrxbbdd54gmwldsiv7nn8vi81y20llnshgjk7";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ openssl ] ++ stdenv.lib.optional stdenv.isDarwin Security;
+
+  meta = with stdenv.lib; {
+    description = ''Cargo subcommand "release": everything about releasing a rust crate'';
+    homepage = "https://github.com/sunng87/cargo-release";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ gerschtli ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-tree/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-tree/default.nix
new file mode 100644
index 000000000000..2e0207e01ed3
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-tree/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, rustPlatform, fetchFromGitHub, pkgconfig, cmake, curl, libiconv, darwin }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-tree";
+  version = "0.29.0";
+
+  src = fetchFromGitHub {
+    owner = "sfackler";
+    repo = "cargo-tree";
+    rev = "v${version}";
+    sha256 = "16k41pj66m2221n1v2szir7x7qwx4i0g3svck2c8cj76h0bqyy15";
+  };
+
+  cargoSha256 = "0762gdj4n5mlflhzynnny1h8z792zyxmb4kcn54jj7qzdask4qdy";
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ curl ] ++ lib.optionals stdenv.isDarwin [ libiconv darwin.apple_sdk.frameworks.Security ];
+
+  meta = with lib; {
+    description = "A cargo subcommand that visualizes a crate's dependency graph in a tree-like format";
+    license = with licenses; [ asl20 mit ];
+    maintainers = with maintainers; [ jD91mZM2 ma27 ];
+    homepage = "https://crates.io/crates/cargo-tree";
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-update/0001-Generate-lockfile-for-cargo-update-v3.0.0.patch b/nixpkgs/pkgs/tools/package-management/cargo-update/0001-Generate-lockfile-for-cargo-update-v3.0.0.patch
new file mode 100644
index 000000000000..40cd310b643d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-update/0001-Generate-lockfile-for-cargo-update-v3.0.0.patch
@@ -0,0 +1,651 @@
+From 893ee8e76cc8b4096c84fe3a537e312304ce214b Mon Sep 17 00:00:00 2001
+From: Maximilian Bosch <maximilian@mbosch.me>
+Date: Wed, 11 Mar 2020 22:32:47 +0100
+Subject: [PATCH] Generate lockfile for cargo-update v3.0.0
+
+---
+ Cargo.lock | 632 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 632 insertions(+)
+ create mode 100644 Cargo.lock
+
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 000000000..0b3a75632
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,632 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "aho-corasick"
++version = "0.7.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "ansi_term"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
++dependencies = [
++ "winapi",
++]
++
++[[package]]
++name = "array_tool"
++version = "1.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8f8cb5d814eb646a863c4f24978cff2880c4be96ad8cde2c0f0678732902e271"
++
++[[package]]
++name = "arrayref"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544"
++
++[[package]]
++name = "arrayvec"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
++
++[[package]]
++name = "atty"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
++dependencies = [
++ "hermit-abi",
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
++
++[[package]]
++name = "base64"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
++
++[[package]]
++name = "bitflags"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
++
++[[package]]
++name = "blake2b_simd"
++version = "0.5.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a"
++dependencies = [
++ "arrayref",
++ "arrayvec",
++ "constant_time_eq",
++]
++
++[[package]]
++name = "cargo-update"
++version = "3.0.0"
++dependencies = [
++ "array_tool",
++ "clap",
++ "dirs",
++ "embed-resource",
++ "git2",
++ "hex",
++ "json",
++ "lazy_static",
++ "lazysort",
++ "regex",
++ "semver",
++ "serde",
++ "serde_derive",
++ "tabwriter",
++ "toml",
++ "unicode-normalization",
++ "url",
++]
++
++[[package]]
++name = "cc"
++version = "1.0.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
++dependencies = [
++ "jobserver",
++]
++
++[[package]]
++name = "cfg-if"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
++
++[[package]]
++name = "clap"
++version = "2.33.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
++dependencies = [
++ "ansi_term",
++ "atty",
++ "bitflags",
++ "strsim",
++ "textwrap",
++ "unicode-width",
++ "vec_map",
++]
++
++[[package]]
++name = "constant_time_eq"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
++dependencies = [
++ "autocfg",
++ "cfg-if",
++ "lazy_static",
++]
++
++[[package]]
++name = "dirs"
++version = "2.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
++dependencies = [
++ "cfg-if",
++ "dirs-sys",
++]
++
++[[package]]
++name = "dirs-sys"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "afa0b23de8fd801745c471deffa6e12d248f962c9fd4b4c33787b055599bde7b"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "redox_users",
++ "winapi",
++]
++
++[[package]]
++name = "embed-resource"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8398b939acbb266ade6939090e9f634147e7b426a33054a833d9ec935d814882"
++dependencies = [
++ "vswhom",
++ "winreg",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.1.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "wasi",
++]
++
++[[package]]
++name = "git2"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "77519ef7c5beee314d0804d4534f01e0f9e8d9acdee2b7a48627e590b27e0ec4"
++dependencies = [
++ "bitflags",
++ "libc",
++ "libgit2-sys",
++ "log",
++ "openssl-probe",
++ "openssl-sys",
++ "url",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "hex"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35"
++
++[[package]]
++name = "idna"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
++dependencies = [
++ "matches",
++ "unicode-bidi",
++ "unicode-normalization",
++]
++
++[[package]]
++name = "jobserver"
++version = "0.1.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "json"
++version = "0.11.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92c245af8786f6ac35f95ca14feca9119e71339aaab41e878e7cdd655c97e9e5"
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "lazysort"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d0e22ff43b231e0e2f87d74984e53ebc73b90ae13397e041214fb07efc64168f"
++
++[[package]]
++name = "libc"
++version = "0.2.67"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018"
++
++[[package]]
++name = "libgit2-sys"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9ec6bca50549d34a392611dde775123086acbd994e3fff64954777ce2dc2e51"
++dependencies = [
++ "cc",
++ "libc",
++ "libssh2-sys",
++ "libz-sys",
++ "openssl-sys",
++ "pkg-config",
++]
++
++[[package]]
++name = "libssh2-sys"
++version = "0.2.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7bb70f29dc7c31d32c97577f13f41221af981b31248083e347b7f2c39225a6bc"
++dependencies = [
++ "cc",
++ "libc",
++ "libz-sys",
++ "openssl-sys",
++ "pkg-config",
++ "vcpkg",
++]
++
++[[package]]
++name = "libz-sys"
++version = "1.0.25"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2eb5e43362e38e2bca2fd5f5134c4d4564a23a5c28e9b95411652021a8675ebe"
++dependencies = [
++ "cc",
++ "libc",
++ "pkg-config",
++ "vcpkg",
++]
++
++[[package]]
++name = "log"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "matches"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
++
++[[package]]
++name = "maybe-uninit"
++version = "2.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
++
++[[package]]
++name = "memchr"
++version = "2.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
++
++[[package]]
++name = "openssl-probe"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
++
++[[package]]
++name = "openssl-sys"
++version = "0.9.54"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1024c0a59774200a555087a6da3f253a9095a5f344e353b212ac4c8b8e450986"
++dependencies = [
++ "autocfg",
++ "cc",
++ "libc",
++ "pkg-config",
++ "vcpkg",
++]
++
++[[package]]
++name = "percent-encoding"
++version = "2.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
++
++[[package]]
++name = "pkg-config"
++version = "0.3.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677"
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6c09721c6781493a2a492a96b5a5bf19b65917fe6728884e7c44dd0c60ca3435"
++dependencies = [
++ "unicode-xid",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f"
++dependencies = [
++ "proc-macro2",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.1.56"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
++
++[[package]]
++name = "redox_users"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431"
++dependencies = [
++ "getrandom",
++ "redox_syscall",
++ "rust-argon2",
++]
++
++[[package]]
++name = "regex"
++version = "1.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8"
++dependencies = [
++ "aho-corasick",
++ "memchr",
++ "regex-syntax",
++ "thread_local",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1132f845907680735a84409c3bebc64d1364a5683ffbce899550cd09d5eaefc1"
++
++[[package]]
++name = "rust-argon2"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017"
++dependencies = [
++ "base64",
++ "blake2b_simd",
++ "constant_time_eq",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++dependencies = [
++ "semver-parser",
++ "serde",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++
++[[package]]
++name = "serde"
++version = "1.0.104"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
++
++[[package]]
++name = "serde_derive"
++version = "1.0.104"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "128f9e303a5a29922045a830221b8f78ec74a5f544944f3d5984f8ec3895ef64"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn",
++]
++
++[[package]]
++name = "smallvec"
++version = "0.6.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
++dependencies = [
++ "maybe-uninit",
++]
++
++[[package]]
++name = "strsim"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
++
++[[package]]
++name = "syn"
++version = "1.0.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "123bd9499cfb380418d509322d7a6d52e5315f064fe4b3ad18a53d6b92c07859"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-xid",
++]
++
++[[package]]
++name = "tabwriter"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "36205cfc997faadcc4b0b87aaef3fbedafe20d38d4959a7ca6ff803564051111"
++dependencies = [
++ "unicode-width",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
++dependencies = [
++ "unicode-width",
++]
++
++[[package]]
++name = "thread_local"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
++dependencies = [
++ "lazy_static",
++]
++
++[[package]]
++name = "toml"
++version = "0.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
++dependencies = [
++ "matches",
++]
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "09c8070a9942f5e7cfccd93f490fdebd230ee3c3c9f107cb25bad5351ef671cf"
++dependencies = [
++ "smallvec",
++]
++
++[[package]]
++name = "unicode-width"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
++
++[[package]]
++name = "unicode-xid"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
++
++[[package]]
++name = "url"
++version = "2.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb"
++dependencies = [
++ "idna",
++ "matches",
++ "percent-encoding",
++]
++
++[[package]]
++name = "vcpkg"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168"
++
++[[package]]
++name = "vec_map"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
++
++[[package]]
++name = "vswhom"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
++dependencies = [
++ "libc",
++ "vswhom-sys",
++]
++
++[[package]]
++name = "vswhom-sys"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fc2f5402d3d0e79a069714f7b48e3ecc60be7775a2c049cb839457457a239532"
++dependencies = [
++ "cc",
++ "libc",
++]
++
++[[package]]
++name = "wasi"
++version = "0.9.0+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
++
++[[package]]
++name = "winapi"
++version = "0.3.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
++dependencies = [
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
++]
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
++
++[[package]]
++name = "winreg"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9"
++dependencies = [
++ "winapi",
++]
+-- 
+2.25.0
+
diff --git a/nixpkgs/pkgs/tools/package-management/cargo-update/default.nix b/nixpkgs/pkgs/tools/package-management/cargo-update/default.nix
new file mode 100644
index 000000000000..8dc07d287d2d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cargo-update/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, rustPlatform
+, fetchFromGitHub
+, cmake
+, curl
+, libgit2
+, libssh2
+, openssl
+, pkg-config
+, zlib }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-update";
+  version = "3.0.0";
+
+  src = fetchFromGitHub {
+    owner = "nabijaczleweli";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1jyfv8aa0gp67pvv8l2vkqq4j9rgjl4rq1wn4nqxb44gmvkg15l3";
+  };
+
+  cargoPatches = [ ./0001-Generate-lockfile-for-cargo-update-v3.0.0.patch ];
+  cargoSha256 = "034v1ql5k3n3rgi3aqszkybvv3vc80v263c9nlwxcwbswsh9jpp1";
+
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [ libgit2 libssh2 openssl zlib ]
+    ++ stdenv.lib.optional stdenv.isDarwin curl;
+
+  meta = with stdenv.lib; {
+    description = "A cargo subcommand for checking and applying updates to installed executables";
+    homepage = "https://github.com/nabijaczleweli/cargo-update";
+    license = licenses.mit;
+    maintainers = with maintainers; [ gerschtli filalex77 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/cde/default.nix b/nixpkgs/pkgs/tools/package-management/cde/default.nix
new file mode 100644
index 000000000000..ec6ad6eb55ab
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/cde/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "cde";
+  version = "0.1";
+
+  src = fetchFromGitHub {
+    owner = "pgbovine";
+    repo = "CDE";
+    sha256 = "0raiz7pczkbnzxpg7g59v7gdp1ipkwgms2vh3431snw1va1gjzmk";
+    rev = "v${version}";
+  };
+
+  # The build is small, so there should be no problem
+  # running this locally. There is also a use case for
+  # older systems, where modern binaries might not be
+  # useful.
+  preferLocalBuild = true;
+
+  patchBuild = ''
+    sed '/install/d' $src/Makefile > $src/Makefile
+  '';
+  
+  installPhase = ''
+    mkdir -p $out/bin
+    cp cde $out/bin
+    cp cde-exec $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/pgbovine/CDE";
+    description = "A packaging tool for building portable packages";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.rlupton20 ];
+    platforms = platforms.linux;
+    # error: architecture aarch64 is not supported by strace
+    badPlatforms = [ "aarch64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/default.nix b/nixpkgs/pkgs/tools/package-management/checkinstall/default.nix
new file mode 100644
index 000000000000..bd23da8efb51
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/default.nix
@@ -0,0 +1,74 @@
+{stdenv, fetchurl, gettext}:
+
+assert stdenv.isLinux && stdenv ? glibc;
+
+stdenv.mkDerivation {
+  name = "checkinstall-1.6.2";
+
+  src = fetchurl {
+    url = "http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz";
+    sha256 = "1x4kslyvfd6lm6zd1ylbq2pjxrafb77ydfjaqi16sa5qywn1jqfw";
+  };
+
+  patches = [
+    # Include empty directories created by the installation script in
+    # generated packages.  (E.g., if a `make install' does `mkdir
+    # /var/lib/mystuff', then /var/lib/mystuff should be included in
+    # the package.)
+    ./empty-dirs.patch
+
+    # Implement the getxattr(), lgetxattr(), __open_2() and
+    # __open64_2() functions.  Needed for doing builds on Ubuntu 8.10.
+    ./missing-functions.patch
+
+    # Don't include directories in the Debian `conffiles' file.
+    ./etc-dirs.patch
+
+    # Support Glibc >= 2.8.
+    ./glibc-check.patch
+
+    # Fix a `conflicting types for 'scandir'' error on Glibc 2.11.
+    ./scandir.patch
+
+    # Fix a `conflicting types for 'readlink'' error since Glibc 2.19
+    ./readlink-types.patch
+
+    # Fix BuildRoot handling in RPM builds.
+    ./set-buildroot.patch
+  ]
+
+  ++ stdenv.lib.optional (stdenv.hostPlatform.system == "x86_64-linux") 
+    # Force use of old memcpy so that installwatch works on Glibc <
+    # 2.14.
+    ./use-old-memcpy.patch;
+
+  buildInputs = [gettext];
+
+  hardeningDisable = [ "fortify" ];
+
+  preBuild = ''
+    makeFlagsArray=(PREFIX=$out)
+
+    substituteInPlace checkinstall --replace /usr/local/lib/checkinstall $out/lib/checkinstall
+    substituteInPlace checkinstallrc-dist --replace /usr/local $out
+
+    substituteInPlace installwatch/create-localdecls \
+      --replace /usr/include/unistd.h ${stdenv.glibc.dev}/include/unistd.h
+  '';
+
+  postInstall =
+    # Clear the RPATH, otherwise installwatch.so won't work properly
+    # as an LD_PRELOADed library on applications that load against a
+    # different Glibc.
+    ''
+       patchelf --set-rpath "" $out/lib/installwatch.so
+    '';
+
+  meta = {
+    homepage = "http://checkinstall.izto.org/";
+    description = "A tool for automatically generating Slackware, RPM or Debian packages when doing `make install'";
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/empty-dirs.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/empty-dirs.patch
new file mode 100644
index 000000000000..9a3e29c84c12
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/empty-dirs.patch
@@ -0,0 +1,49 @@
+diff -rc checkinstall-orig/checkinstall checkinstall/checkinstall
+*** checkinstall-orig/checkinstall	2009-03-12 13:40:24.000000000 +0100
+--- checkinstall/checkinstall	2009-03-27 14:51:55.000000000 +0100
+***************
+*** 1635,1644 ****
+  
+  	# Find regular files first
+  	[ $DEBUG -gt 0 ] && echo "debug: BASE_TMP_DIR: $BASE_TMP_DIR"
+! 	cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access)' | cut -f 3 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | sort -u > /${TMP_DIR}/newfiles
+  
+  	# symlinks are next
+! 	cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access)' | cut -f 4 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | grep -v "#success" | sort -u  >> /${TMP_DIR}/newfiles
+          # Create another list of modified files that exclude all files the
+          # install script wanted to create but did not, e.g because they already
+          # existed.
+--- 1635,1648 ----
+  
+  	# Find regular files first
+  	[ $DEBUG -gt 0 ] && echo "debug: BASE_TMP_DIR: $BASE_TMP_DIR"
+! 	cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access|mkdir)' | cut -f 3 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | sort -u > /${TMP_DIR}/newfiles
+  
+  	# symlinks are next
+! 	cat /${TMP_DIR}/newfiles.tmp | egrep -v '^[-0-9][0-9]*[[:space:]]*(unlink|access|mkdir)' | cut -f 4 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | grep -v "#success" | sort -u  >> /${TMP_DIR}/newfiles
+!         
+! 	# And finally newly created directories.
+! 	cat /${TMP_DIR}/newfiles.tmp | egrep '^0[[:space:]]+mkdir[[:space:]]+' | cut -f 3 | egrep -v "^(/dev|$BASE_TMP_DIR|/tmp)" | sort -u >> /${TMP_DIR}/newfiles
+!         
+          # Create another list of modified files that exclude all files the
+          # install script wanted to create but did not, e.g because they already
+          # existed.
+***************
+*** 1738,1746 ****
+  	cd /
+  
+  	( cat /${TMP_DIR}/newfiles | while read i; do 
+! 	      if [ ! -d "${TRANSLROOT}${i}" -o -L "${TRANSLROOT}${i}" ]; then
+! 	      echo ".${i}"
+! 	   fi
+  	done ) > /${TMP_DIR}/newfiles-tar
+  
+          # Here it gets tricky: we need to copy all new files to our build dir,
+--- 1742,1748 ----
+  	cd /
+  
+  	( cat /${TMP_DIR}/newfiles | while read i; do 
+! 	    echo ".${i}"
+  	done ) > /${TMP_DIR}/newfiles-tar
+  
+          # Here it gets tricky: we need to copy all new files to our build dir,
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/etc-dirs.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/etc-dirs.patch
new file mode 100644
index 000000000000..a811e4afbb97
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/etc-dirs.patch
@@ -0,0 +1,25 @@
+diff -rc checkinstall-orig/checkinstall checkinstall/checkinstall
+*** checkinstall-orig/checkinstall	2009-03-27 17:07:26.000000000 +0100
+--- checkinstall/checkinstall	2009-04-14 16:34:08.000000000 +0200
+***************
+*** 2607,2615 ****
+     chmod 755 $BUILD_DIR/DEBIAN/postrm
+  fi
+  
+! # Tag files in /etc to be conffiles
+  find $BUILD_DIR/etc 2> /dev/null | sed -e "s,$BUILD_DIR,," | \
+! 	grep -v '^/etc$' > $BUILD_DIR/DEBIAN/conffiles
+  
+  # The package will be saved here (ignores <epoch>: prefix):
+  DEBPKG="${DIRECTORIO_FUENTE}/${NAME}_`echo ${VERSION} | sed -e 's/^[0123456789]*://'`-${RELEASE}_${ARCHITECTURE}.deb"
+--- 2607,2616 ----
+     chmod 755 $BUILD_DIR/DEBIAN/postrm
+  fi
+  
+! # Tag non-directory files in /etc to be conffiles
+  find $BUILD_DIR/etc 2> /dev/null | sed -e "s,$BUILD_DIR,," | \
+!         (while read fn; do test ! -d "$BUILD_DIR/$fn" && echo "$fn"; done) \
+!         > $BUILD_DIR/DEBIAN/conffiles
+  
+  # The package will be saved here (ignores <epoch>: prefix):
+  DEBPKG="${DIRECTORIO_FUENTE}/${NAME}_`echo ${VERSION} | sed -e 's/^[0123456789]*://'`-${RELEASE}_${ARCHITECTURE}.deb"
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/glibc-check.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/glibc-check.patch
new file mode 100644
index 000000000000..7f8cbccae8e5
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/glibc-check.patch
@@ -0,0 +1,71 @@
+diff -x '*~' -rc checkinstall-1.6.2pre20081116-orig/installwatch/create-localdecls checkinstall-1.6.2pre20081116/installwatch/create-localdecls
+*** checkinstall-1.6.2pre20081116-orig/installwatch/create-localdecls	2008-11-16 17:18:58.000000000 +0100
+--- checkinstall-1.6.2pre20081116/installwatch/create-localdecls	2009-09-18 17:01:13.000000000 +0200
+***************
+*** 46,52 ****
+  echo -n 'Checking libc version... '
+  gcc -Wall -o libctest libctest.c
+  VERSION=`ldd libctest | grep libc\\.so | awk '{print $1}'`
+- rm libctest
+  echo $VERSION
+  echo "#define LIBC_VERSION \"$VERSION\"" >> $OUTFILE
+  if test "$VERSION" = 'libc.so.5' ; then
+--- 46,51 ----
+***************
+*** 56,62 ****
+  
+  if test "$VERSION" = 'libc.so.6' ; then
+  	echo -n 'Checking glibc subversion... '
+! 	tmp="`ldd /bin/sh | grep libc.so 2> /dev/null`"
+  	LibcPath=`expr "$tmp" : '[^/]*\(/[^ ]*\)'`
+  	tmp="`strings $LibcPath | grep -i 'c library'`"
+  	OsLibcMajor=`expr "$tmp" : '.* \([0-9][0-9]*\)'`
+--- 55,61 ----
+  
+  if test "$VERSION" = 'libc.so.6' ; then
+  	echo -n 'Checking glibc subversion... '
+! 	tmp="`ldd libctest | grep libc.so 2> /dev/null`"
+  	LibcPath=`expr "$tmp" : '[^/]*\(/[^ ]*\)'`
+  	tmp="`strings $LibcPath | grep -i 'c library'`"
+  	OsLibcMajor=`expr "$tmp" : '.* \([0-9][0-9]*\)'`
+***************
+*** 86,103 ****
+  		6)
+  			echo '#define GLIBC_MINOR 6' >> $OUTFILE
+  			SUBVERSION='glibc-2.6' ;;
+! 		7)
+  			echo '#define GLIBC_MINOR 7' >> $OUTFILE
+  			SUBVERSION='glibc-2.7' ;;
+  		*)
+- 			echo 'Treated as glibc >= 2.1 (finger crossed)'
+  			echo '#define GLIBC_MINOR 1' >> $OUTFILE
+  			SUBVERSION='glibc-2.1' ;;
+  	        esac
+  		;;
+  	esac
+  fi
+  
+  echo >> $OUTFILE
+  echo '#endif' >> $OUTFILE
+  
+--- 85,104 ----
+  		6)
+  			echo '#define GLIBC_MINOR 6' >> $OUTFILE
+  			SUBVERSION='glibc-2.6' ;;
+! 		7|8|9|10|11|12|13|14|15|16|17|18)
+  			echo '#define GLIBC_MINOR 7' >> $OUTFILE
+  			SUBVERSION='glibc-2.7' ;;
+  		*)
+  			echo '#define GLIBC_MINOR 1' >> $OUTFILE
+  			SUBVERSION='glibc-2.1' ;;
+  	        esac
+  		;;
+  	esac
++         echo $SUBVERSION
+  fi
+  
++ rm libctest
++ 
+  echo >> $OUTFILE
+  echo '#endif' >> $OUTFILE
+  
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/missing-functions.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/missing-functions.patch
new file mode 100644
index 000000000000..02066134b2ed
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/missing-functions.patch
@@ -0,0 +1,162 @@
+diff -rc checkinstall-orig/installwatch/installwatch.c checkinstall/installwatch/installwatch.c
+*** checkinstall-orig/installwatch/installwatch.c	2009-03-12 13:40:24.000000000 +0100
+--- checkinstall/installwatch/installwatch.c	2009-03-27 22:42:19.000000000 +0100
+***************
+*** 110,115 ****
+--- 110,117 ----
+  static int (*true_setxattr)(const char *,const char *,const void *,
+                              size_t, int);
+  static int (*true_removexattr)(const char *,const char *);
++ static ssize_t (*true_getxattr)(const char *,const char *,const void *,size_t);
++ static ssize_t (*true_lgetxattr)(const char *,const char *,const void *,size_t);
+  
+  #if(GLIBC_MINOR >= 1)
+  
+***************
+*** 369,374 ****
+--- 371,378 ----
+  	true_unlink      = dlsym(libc_handle, "unlink");
+  	true_utime       = dlsym(libc_handle, "utime");
+  	true_setxattr    = dlsym(libc_handle, "setxattr");
++ 	true_getxattr    = dlsym(libc_handle, "getxattr");
++ 	true_lgetxattr   = dlsym(libc_handle, "lgetxattr");
+          true_utimes      = dlsym(libc_handle, "utimes");
+          true_access      = dlsym(libc_handle, "access");
+  
+***************
+*** 3494,3499 ****
+--- 3498,3587 ----
+          return result;
+  }
+  
++ int getxattr (const char *pathname, const char *name,
++               const void *value, size_t size)
++ {
++         int result;
++         instw_t instw;
++ 	int status;
++ 
++         REFCOUNT;
++ 
++         if (!libc_handle)
++                initialize();
++ 
++ #if DEBUG
++         debug(2,"getxattr(%s,%s)\n",pathname,name);
++ #endif
++ 
++          /* We were asked to work in "real" mode */
++         if( !(__instw.gstatus & INSTW_INITIALIZED) ||
++            !(__instw.gstatus & INSTW_OKWRAP) ) {
++                result=true_getxattr(pathname,name,value,size);
++                return result;
++         }
++ 
++         instw_new(&instw);
++         instw_setpath(&instw,pathname);
++ 	instw_getstatus(&instw,&status);
++ 
++ #if DEBUG
++         instw_print(&instw);
++ #endif
++ 
++ 	if(status&INSTW_TRANSLATED) {
++             result=true_getxattr(instw.translpath,name,value,size);
++         } else {
++             result=true_getxattr(instw.path,name,value,size);
++         }
++ 
++         instw_delete(&instw);
++ 
++         return result;
++ }
++ 
++ int lgetxattr (const char *pathname, const char *name,
++               const void *value, size_t size)
++ {
++         int result;
++         instw_t instw;
++ 	int status;
++ 
++         REFCOUNT;
++ 
++         if (!libc_handle)
++                initialize();
++ 
++ #if DEBUG
++         debug(2,"lgetxattr(%s,%s)\n",pathname,name);
++ #endif
++ 
++          /* We were asked to work in "real" mode */
++         if( !(__instw.gstatus & INSTW_INITIALIZED) ||
++            !(__instw.gstatus & INSTW_OKWRAP) ) {
++                result=true_lgetxattr(pathname,name,value,size);
++                return result;
++         }
++ 
++         instw_new(&instw);
++         instw_setpath(&instw,pathname);
++ 	instw_getstatus(&instw,&status);
++ 
++ #if DEBUG
++         instw_print(&instw);
++ #endif
++ 
++ 	if(status&INSTW_TRANSLATED) {
++             result=true_lgetxattr(instw.translpath,name,value,size);
++         } else {
++             result=true_lgetxattr(instw.path,name,value,size);
++         }
++ 
++         instw_delete(&instw);
++ 
++         return result;
++ }
++ 
+  #if(GLIBC_MINOR >= 1)
+  
+  int creat64(const char *pathname, __mode_t mode) {
+***************
+*** 3663,3668 ****
+--- 3751,3791 ----
+  	return result;
+  }
+  
++ int __open_2(const char *pathname, int flags, ...) {
++ 	va_list ap;
++ 	mode_t mode;
++         
++ #if DEBUG
++ 	debug(2,"__open_2(%s,%d,mode)\n",pathname,flags);
++ #endif
++ 
++ 	va_start(ap, flags);
++ 	mode = va_arg(ap, mode_t);
++ 	va_end(ap);
++         
++         /* The open() function in Glibc 2.9 is an always-inline
++            function that may call __open_2(), so it's important that
++            we handle it.  I don't know what __open_2() is supposed to
++            do, but redirecting it to open() seems to work fine.  */
++         
++         return open(pathname,flags,mode);
++ }
++ 
++ int __open64_2(const char *pathname, int flags, ...) {
++ 	va_list ap;
++ 	mode_t mode;
++         
++ #if DEBUG
++ 	debug(2,"__open64_2(%s,%d,mode)\n",pathname,flags);
++ #endif
++ 
++ 	va_start(ap, flags);
++ 	mode = va_arg(ap, mode_t);
++ 	va_end(ap);
++         
++         return open64(pathname,flags,mode);
++ }
++ 
+  struct dirent64 *readdir64(DIR *dir) {
+  	struct dirent64 *result;
+  
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/readlink-types.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/readlink-types.patch
new file mode 100644
index 000000000000..a860607fcf66
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/readlink-types.patch
@@ -0,0 +1,19 @@
+Extracted from Arch's patch
+https://projects.archlinux.org/svntogit/community.git/tree/trunk/build-fix.patch?h=packages/checkinstall
+diff -wbBur checkinstall-1.6.2/installwatch/installwatch.c checkinstall-1.6.2.my/installwatch/installwatch.c
+--- checkinstall-1.6.2/installwatch/installwatch.c	2008-11-16 19:20:53.000000000 +0300
++++ checkinstall-1.6.2.my/installwatch/installwatch.c	2010-01-15 18:55:50.112716628 +0300
+@@ -2938,13 +2938,8 @@
+ 	return result;
+ }
+ 
+-#if (GLIBC_MINOR <= 4)
+-int readlink(const char *path,char *buf,size_t bufsiz) {
+-	int result;
+-#else
+ ssize_t readlink(const char *path,char *buf,size_t bufsiz) {
+ 	ssize_t result;
+-#endif
+ 	instw_t instw;
+ 	int status;
+ 
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/scandir.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/scandir.patch
new file mode 100644
index 000000000000..ae40100a9804
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/scandir.patch
@@ -0,0 +1,75 @@
+diff -rc -x '*~' checkinstall-1.6.2-orig/installwatch/installwatch.c checkinstall-1.6.2/installwatch/installwatch.c
+*** checkinstall-1.6.2-orig/installwatch/installwatch.c	2008-11-16 17:20:53.000000000 +0100
+--- checkinstall-1.6.2/installwatch/installwatch.c	2010-02-08 16:35:17.000000000 +0100
+***************
+*** 100,106 ****
+  static int (*true_lxstat)(int,const char *,struct stat *);
+  static int (*true_scandir)(	const char *,struct dirent ***,
+  				int (*)(const struct dirent *),
+! 				int (*)(const void *,const void *));
+  static int (*true_symlink)(const char *, const char *);
+  static int (*true_truncate)(const char *, TRUNCATE_T);
+  static int (*true_unlink)(const char *);
+--- 100,106 ----
+  static int (*true_lxstat)(int,const char *,struct stat *);
+  static int (*true_scandir)(	const char *,struct dirent ***,
+  				int (*)(const struct dirent *),
+! 				int (*)(const struct dirent **,const struct dirent **));
+  static int (*true_symlink)(const char *, const char *);
+  static int (*true_truncate)(const char *, TRUNCATE_T);
+  static int (*true_unlink)(const char *);
+***************
+*** 120,126 ****
+  static struct dirent64 *(*true_readdir64)(DIR *dir);
+  static int (*true_scandir64)(	const char *,struct dirent64 ***,
+  				int (*)(const struct dirent64 *),
+! 				int (*)(const void *,const void *));
+  static int (*true_xstat64)(int,const char *, struct stat64 *);
+  static int (*true_lxstat64)(int,const char *, struct stat64 *);
+  static int (*true_truncate64)(const char *, __off64_t);
+--- 120,126 ----
+  static struct dirent64 *(*true_readdir64)(DIR *dir);
+  static int (*true_scandir64)(	const char *,struct dirent64 ***,
+  				int (*)(const struct dirent64 *),
+! 				int (*)(const struct dirent64 **,const struct dirent64 **));
+  static int (*true_xstat64)(int,const char *, struct stat64 *);
+  static int (*true_lxstat64)(int,const char *, struct stat64 *);
+  static int (*true_truncate64)(const char *, __off64_t);
+***************
+*** 3077,3085 ****
+  	return result;
+  }
+  
+! int scandir(	const char *dir,struct dirent ***namelist,
+  		int (*select)(const struct dirent *),
+! 		int (*compar)(const void *,const void *)	) {
+  	int result;
+  
+  	if (!libc_handle)
+--- 3077,3085 ----
+  	return result;
+  }
+  
+! int scandir(	const char * dir,struct dirent ***namelist,
+  		int (*select)(const struct dirent *),
+! 		int (*compar)(const struct dirent **,const struct dirent **)	) {
+  	int result;
+  
+  	if (!libc_handle)
+***************
+*** 3691,3697 ****
+  
+  int scandir64(	const char *dir,struct dirent64 ***namelist,
+  		int (*select)(const struct dirent64 *),
+! 		int (*compar)(const void *,const void *)	) {
+  	int result;
+  
+  	if (!libc_handle)
+--- 3691,3697 ----
+  
+  int scandir64(	const char *dir,struct dirent64 ***namelist,
+  		int (*select)(const struct dirent64 *),
+! 		int (*compar)(const struct dirent64 **,const struct dirent64 **)	) {
+  	int result;
+  
+  	if (!libc_handle)
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/set-buildroot.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/set-buildroot.patch
new file mode 100644
index 000000000000..58840f491ecf
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/set-buildroot.patch
@@ -0,0 +1,15 @@
+https://build.opensuse.org/package/view_file/openSUSE:13.1/checkinstall/checkinstall-set_buildroot.patch
+
+Index: checkinstall
+===================================================================
+--- a/checkinstall	2009-12-26 20:17:24.000000000 +0100
++++ b/checkinstall	2011-01-31 18:17:56.171593541 +0100
+@@ -2463,7 +2463,7 @@ cd "$DIRECTORIO_FUENTE"
+ 
+ echo
+ echogn "Building RPM package..."
+-$RPMBUILD -bb ${RPM_TARGET_FLAG}${ARCHITECTURE} "$SPEC_PATH" &> ${TMP_DIR}/rpmbuild.log
++$RPMBUILD --buildroot ${BUILDROOT} -bb ${RPM_TARGET_FLAG}${ARCHITECTURE} "$SPEC_PATH" &> ${TMP_DIR}/rpmbuild.log
+ okfail
+ 
+ if [ $? -gt 0 ]; then
diff --git a/nixpkgs/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch b/nixpkgs/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch
new file mode 100644
index 000000000000..c8be7f0b5e26
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/checkinstall/use-old-memcpy.patch
@@ -0,0 +1,12 @@
+diff -ru -x '*~' checkinstall-1.6.2-orig/installwatch/installwatch.c checkinstall-1.6.2/installwatch/installwatch.c
+--- checkinstall-1.6.2-orig/installwatch/installwatch.c	2008-11-16 17:20:53.000000000 +0100
++++ checkinstall-1.6.2/installwatch/installwatch.c	2013-03-15 13:50:12.717646381 +0100
+@@ -28,6 +28,8 @@
+  *                                  <mail@fredemmott.co.uk>
+  */
+ 
++asm (".symver memcpy, memcpy@GLIBC_2.2.5");
++
+ #include <sys/param.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
diff --git a/nixpkgs/pkgs/tools/package-management/clib/default.nix b/nixpkgs/pkgs/tools/package-management/clib/default.nix
new file mode 100644
index 000000000000..c7e3c0fb6653
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/clib/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, curl  }:
+
+stdenv.mkDerivation rec {
+  version = "1.11.3";
+  pname = "clib";
+
+  src = fetchFromGitHub {
+    rev    = version;
+    owner  = "clibs";
+    repo   = "clib";
+    sha256 = "0qwds9w9y2dy39bwh2523wra5dj820cjl11ynkshh7k94fk7qgpm";
+  };
+
+  hardeningDisable = [ "fortify" ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  buildInputs = [ curl ];
+
+  meta = with stdenv.lib; {
+    description = "C micro-package manager";
+    homepage = "https://github.com/clibs/clib";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jb55 ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/conda/default.nix b/nixpkgs/pkgs/tools/package-management/conda/default.nix
new file mode 100644
index 000000000000..325a5c4fa5ee
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/conda/default.nix
@@ -0,0 +1,74 @@
+{ lib
+, stdenv
+, fetchurl
+, runCommand
+, makeWrapper
+, buildFHSUserEnv
+, libselinux
+, libarchive
+, libGL
+, xorg
+# Conda installs its packages and environments under this directory
+, installationPath ? "~/.conda"
+# Conda manages most pkgs itself, but expects a few to be on the system.
+, condaDeps ? [ stdenv.cc xorg.libSM xorg.libICE xorg.libX11 xorg.libXau xorg.libXi xorg.libXrender libselinux libGL ]
+# Any extra nixpkgs you'd like available in the FHS env for Conda to use
+, extraPkgs ? [ ]
+}:
+
+# How to use this package?
+#
+# First-time setup: this nixpkg downloads the conda installer and provides a FHS
+# env in which it can run. On first use, the user will need to install conda to
+# the installPath using the installer:
+# $ nix-env -iA conda
+# $ conda-shell
+# $ conda-install
+#
+# Under normal usage, simply call `conda-shell` to activate the FHS env,
+# and then use conda commands as normal:
+# $ conda-shell
+# $ conda install spyder
+let
+  version = "4.6.14";
+  src = fetchurl {
+      url = "https://repo.continuum.io/miniconda/Miniconda3-${version}-Linux-x86_64.sh";
+      sha256 = "1gn43z1y5zw4yv93q1qajwbmmqs83wx5ls5x4i4llaciba4j6sqd";
+  };
+
+  conda = runCommand "conda-install" { buildInputs = [ makeWrapper ]; }
+    ''
+      mkdir -p $out/bin
+      cp ${src} $out/bin/miniconda-installer.sh
+      chmod +x $out/bin/miniconda-installer.sh
+
+      makeWrapper                            \
+        $out/bin/miniconda-installer.sh      \
+        $out/bin/conda-install               \
+        --add-flags "-p ${installationPath}" \
+        --add-flags "-b"
+    '';
+in
+  buildFHSUserEnv {
+    name = "conda-shell";
+    targetPkgs = pkgs: (builtins.concatLists [ [ conda ] condaDeps extraPkgs]);
+    profile = ''
+      # Add conda to PATH
+      export PATH=${installationPath}/bin:$PATH
+      # Paths for gcc if compiling some C sources with pip
+      export NIX_CFLAGS_COMPILE="-I${installationPath}/include"
+      export NIX_CFLAGS_LINK="-L${installationPath}lib"
+      # Some other required environment variables
+      export FONTCONFIG_FILE=/etc/fonts/fonts.conf
+      export QTCOMPOSE=${xorg.libX11}/share/X11/locale
+      export LIBARCHIVE=${libarchive.lib}/lib/libarchive.so
+    '';
+
+    meta = {
+      description = "Conda is a package manager for Python";
+      homepage = "https://conda.io/";
+      platforms = lib.platforms.linux;
+      license = lib.licenses.bsd3;
+      maintainers = with lib.maintainers; [ jluttine bhipple ];
+    };
+  }
diff --git a/nixpkgs/pkgs/tools/package-management/createrepo_c/default.nix b/nixpkgs/pkgs/tools/package-management/createrepo_c/default.nix
new file mode 100644
index 000000000000..15a64ffd25e6
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/createrepo_c/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, bzip2, expat, glib, curl, libxml2, python3, rpm, openssl, sqlite, file, xz, pcre, bash-completion }:
+
+stdenv.mkDerivation rec {
+  pname = "createrepo_c";
+  version = "0.11.1";
+
+  src = fetchFromGitHub {
+    owner  = "rpm-software-management";
+    repo   = "createrepo_c";
+    rev    = version;
+    sha256 = "0cmysc7gdd2czagl4drfh9gin6aa2847vgi30a3p0cfqvczf9cm6";
+  };
+
+  patches = [
+    ./fix-bash-completion-path.patch
+    ./fix-python-install-path.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace '@BASHCOMP_DIR@' "$out/share/bash-completion/completions"
+    substituteInPlace src/python/CMakeLists.txt \
+      --replace "@PYTHON_INSTALL_DIR@" "$out/${python3.sitePackages}"
+  '';
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ bzip2 expat glib curl libxml2 python3 rpm openssl sqlite file xz pcre bash-completion ];
+
+  meta = with stdenv.lib; {
+    description = "C implementation of createrepo";
+    homepage    = "http://rpm-software-management.github.io/createrepo_c/";
+    license     = licenses.gpl2;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-bash-completion-path.patch b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-bash-completion-path.patch
new file mode 100644
index 000000000000..e184cc8facc0
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-bash-completion-path.patch
@@ -0,0 +1,11 @@
+--- createrepo_c-0.10.0-src.orig/CMakeLists.txt	2017-03-19 11:01:02.703173617 +0100
++++ createrepo_c-0.10.0-src/CMakeLists.txt	2017-03-19 11:02:38.617448248 +0100
+@@ -100,7 +100,7 @@
+ 
+ pkg_check_modules(BASHCOMP bash-completion)
+ if (BASHCOMP_FOUND)
+-    execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=completionsdir bash-completion OUTPUT_VARIABLE BASHCOMP_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
++    SET(BASHCOMP_DIR "@BASHCOMP_DIR@")
+     message("Bash completion directory: ${BASHCOMP_DIR}")
+     INSTALL(FILES createrepo_c.bash DESTINATION ${BASHCOMP_DIR} RENAME createrepo_c)
+     INSTALL(CODE "
diff --git a/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-python-install-path.patch b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-python-install-path.patch
new file mode 100644
index 000000000000..a247c6d9fe47
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/createrepo_c/fix-python-install-path.patch
@@ -0,0 +1,11 @@
+--- createrepo_c-0.10.0-src.orig/src/python/CMakeLists.txt	2017-03-19 10:50:33.796342953 +0100
++++ createrepo_c-0.10.0-src/src/python/CMakeLists.txt	2017-03-19 10:53:51.207580073 +0100
+@@ -19,7 +19,7 @@
+     FIND_PACKAGE(PythonInterp 3.0 REQUIRED)
+ endif()
+ 
+-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from sys import stdout; from distutils import sysconfig; stdout.write(sysconfig.get_python_lib(True))" OUTPUT_VARIABLE PYTHON_INSTALL_DIR)
++SET(PYTHON_INSTALL_DIR "@PYTHON_INSTALL_DIR@")
+ INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
+ 
+ MESSAGE(STATUS "Python install dir is ${PYTHON_INSTALL_DIR}")
diff --git a/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
new file mode 100644
index 000000000000..5ede7af10bf0
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, apacheAnt, jdk, axis2, dbus_java }:
+
+stdenv.mkDerivation {
+  name = "DisnixWebService-0.9";
+  src = fetchurl {
+    url = "https://github.com/svanderburg/DisnixWebService/releases/download/DisnixWebService-0.9/DisnixWebService-0.9.tar.gz";
+    sha256 = "1z7w44bf023c0aqchjfi4mla3qbhsh87mdzx7pqn0sy74cjfgqvl";
+  };
+  buildInputs = [ apacheAnt jdk ];
+  PREFIX = ''''${env.out}'';
+  AXIS2_LIB = "${axis2}/lib";
+  AXIS2_WEBAPP = "${axis2}/webapps/axis2";
+  DBUS_JAVA_LIB = "${dbus_java}/share/java";
+  prePatch = ''
+    sed -i -e "s|#JAVA_HOME=|JAVA_HOME=${jdk}|" \
+       -e "s|#AXIS2_LIB=|AXIS2_LIB=${axis2}/lib|" \
+        scripts/disnix-soap-client
+  '';
+  buildPhase = "ant";
+  installPhase = "ant install";
+  
+  meta = {
+    description = "A SOAP interface and client for Disnix";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.sander ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/disnix/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/default.nix
new file mode 100644
index 000000000000..cc6072eb6dc8
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/disnix/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, glib, libxml2, libxslt, getopt, nixUnstable, dysnomia, libintl, libiconv }:
+
+stdenv.mkDerivation {
+  name = "disnix-0.9.1";
+
+  src = fetchurl {
+    url = "https://github.com/svanderburg/disnix/releases/download/disnix-0.9.1/disnix-0.9.1.tar.gz";
+    sha256 = "0bidln5xw3raqkvdks9aipis8aaza8asgyapmilnxkkrxgmw7rdf";
+  };
+
+  configureFlags = [
+    " --with-dbus-sys=${placeholder "out"}/share/dbus-1/system.d"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib libxml2 libxslt getopt nixUnstable libintl libiconv dysnomia ];
+
+  meta = {
+    description = "A Nix-based distributed service deployment tool";
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [ stdenv.lib.maintainers.sander ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/disnix/disnixos/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/disnixos/default.nix
new file mode 100644
index 000000000000..709c5454e104
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/disnix/disnixos/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, dysnomia, disnix, socat, pkgconfig, getopt }:
+
+stdenv.mkDerivation {
+  name = "disnixos-0.8";
+  
+  src = fetchurl {
+    url = "https://github.com/svanderburg/disnixos/releases/download/disnixos-0.8/disnixos-0.8.tar.gz";
+    sha256 = "186blirfx89i8hdp4a0djy4q9qr9wcl0ilwr66hlil0wxqj1sr91";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ socat dysnomia disnix getopt ];
+
+  meta = {
+    description = "Provides complementary NixOS infrastructure deployment to Disnix";
+    license = stdenv.lib.licenses.lgpl21Plus;
+    maintainers = [ stdenv.lib.maintainers.sander ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/disnix/dysnomia/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/dysnomia/default.nix
new file mode 100644
index 000000000000..2485becc9e57
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/disnix/dysnomia/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchurl
+, ejabberd ? null, mysql ? null, postgresql ? null, subversion ? null, mongodb ? null, mongodb-tools ? null, influxdb ? null
+, enableApacheWebApplication ? false
+, enableAxis2WebService ? false
+, enableEjabberdDump ? false
+, enableMySQLDatabase ? false
+, enablePostgreSQLDatabase ? false
+, enableSubversionRepository ? false
+, enableTomcatWebApplication ? false
+, enableMongoDatabase ? false
+, enableInfluxDatabase ? false
+, catalinaBaseDir ? "/var/tomcat"
+, jobTemplate ? "systemd"
+, getopt
+}:
+
+assert enableMySQLDatabase -> mysql != null;
+assert enablePostgreSQLDatabase -> postgresql != null;
+assert enableSubversionRepository -> subversion != null;
+assert enableEjabberdDump -> ejabberd != null;
+assert enableMongoDatabase -> (mongodb != null && mongodb-tools != null);
+assert enableInfluxDatabase -> influxdb != null;
+
+stdenv.mkDerivation {
+  name = "dysnomia-0.9.1";
+  src = fetchurl {
+    url = "https://github.com/svanderburg/dysnomia/releases/download/dysnomia-0.9.1/dysnomia-0.9.1.tar.gz";
+    sha256 = "1rrq9jnmpsjg1rrjbnq7znm4gma2ga5j4nlykvxwkylp72dq12ks";
+  };
+
+  preConfigure = if enableEjabberdDump then "export PATH=$PATH:${ejabberd}/sbin" else "";
+
+  configureFlags = [
+     (if enableApacheWebApplication then "--with-apache" else "--without-apache")
+     (if enableAxis2WebService then "--with-axis2" else "--without-axis2")
+     (if enableEjabberdDump then "--with-ejabberd" else "--without-ejabberd")
+     (if enableMySQLDatabase then "--with-mysql" else "--without-mysql")
+     (if enablePostgreSQLDatabase then "--with-postgresql" else "--without-postgresql")
+     (if enableSubversionRepository then "--with-subversion" else "--without-subversion")
+     (if enableTomcatWebApplication then "--with-tomcat=${catalinaBaseDir}" else "--without-tomcat")
+     (if enableMongoDatabase then "--with-mongodb" else "--without-mongodb")
+     (if enableInfluxDatabase then "--with-influxdb" else "--without-influxdb")
+     "--with-job-template=${jobTemplate}"
+   ];
+
+  buildInputs = [ getopt ]
+    ++ stdenv.lib.optional enableEjabberdDump ejabberd
+    ++ stdenv.lib.optional enableMySQLDatabase mysql.out
+    ++ stdenv.lib.optional enablePostgreSQLDatabase postgresql
+    ++ stdenv.lib.optional enableSubversionRepository subversion
+    ++ stdenv.lib.optional enableMongoDatabase mongodb
+    ++ stdenv.lib.optional enableMongoDatabase mongodb-tools
+    ++ stdenv.lib.optional enableInfluxDatabase influxdb;
+
+  meta = {
+    description = "Automated deployment of mutable components and services for Disnix";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.sander ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/dpkg/default.nix b/nixpkgs/pkgs/tools/package-management/dpkg/default.nix
new file mode 100644
index 000000000000..8d012c90f928
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/dpkg/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchurl, perl, zlib, bzip2, xz, makeWrapper, coreutils }:
+
+stdenv.mkDerivation rec {
+  pname = "dpkg";
+  version = "1.20.0";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/d/dpkg/dpkg_${version}.tar.xz";
+    sha256 = "0009dp4p3d2j5vd956achqczf8qizfixha8hw5hzn3h31qmwqcxn";
+  };
+
+  configureFlags = [
+    "--disable-dselect"
+    "--with-admindir=/var/lib/dpkg"
+    "PERL_LIBDIR=$(out)/${perl.libPrefix}"
+    (stdenv.lib.optionalString stdenv.isDarwin "--disable-linker-optimisations")
+    (stdenv.lib.optionalString stdenv.isDarwin "--disable-start-stop-daemon")
+  ];
+
+  preConfigure = ''
+    # Nice: dpkg has a circular dependency on itself. Its configure
+    # script calls scripts/dpkg-architecture, which calls "dpkg" in
+    # $PATH. It doesn't actually use its result, but fails if it
+    # isn't present, so make a dummy available.
+    touch $TMPDIR/dpkg
+    chmod +x $TMPDIR/dpkg
+    PATH=$TMPDIR:$PATH
+
+    for i in $(find . -name Makefile.in); do
+      substituteInPlace $i --replace "install-data-local:" "disabled:" ;
+    done
+  '';
+
+  patchPhase = ''
+    patchShebangs .
+
+    # Dpkg commands sometimes calls out to shell commands
+    substituteInPlace lib/dpkg/dpkg.h \
+       --replace '"dpkg-deb"' \"$out/bin/dpkg-deb\" \
+       --replace '"dpkg-split"' \"$out/bin/dpkg-split\" \
+       --replace '"dpkg-query"' \"$out/bin/dpkg-query\" \
+       --replace '"dpkg-divert"' \"$out/bin/dpkg-divert\" \
+       --replace '"dpkg-statoverride"' \"$out/bin/dpkg-statoverride\" \
+       --replace '"dpkg-trigger"' \"$out/bin/dpkg-trigger\" \
+       --replace '"dpkg"' \"$out/bin/dpkg\" \
+       --replace '"debsig-verify"' \"$out/bin/debsig-verify\" \
+       --replace '"rm"' \"${coreutils}/bin/rm\" \
+       --replace '"cat"' \"${coreutils}/bin/cat\" \
+       --replace '"diff"' \"${coreutils}/bin/diff\"
+  '';
+
+  buildInputs = [ perl zlib bzip2 xz ];
+  nativeBuildInputs = [ makeWrapper perl ];
+
+  postInstall =
+    ''
+      for i in $out/bin/*; do
+        if head -n 1 $i | grep -q perl; then
+          wrapProgram $i --prefix PERL5LIB : $out/${perl.libPrefix}
+        fi
+      done
+
+      mkdir -p $out/etc/dpkg
+      cp -r scripts/t/origins $out/etc/dpkg
+    '';
+
+  meta = with stdenv.lib; {
+    description = "The Debian package manager";
+    homepage = "https://wiki.debian.org/Teams/Dpkg";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile
new file mode 100644
index 000000000000..b97eab9777d7
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'elm_install'
diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile.lock b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile.lock
new file mode 100644
index 000000000000..5b586256278b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/Gemfile.lock
@@ -0,0 +1,39 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    adts (0.1.2)
+    commander (4.4.3)
+      highline (~> 1.7.2)
+    contracts (0.16.0)
+    elm_install (1.0.1)
+      adts (~> 0.1.2)
+      commander (~> 4.4, >= 4.4.2)
+      contracts (~> 0.16.0)
+      git (~> 1.3)
+      git_clone_url (~> 2.0)
+      hashdiff (~> 0.3.1)
+      indentation (~> 0.1.1)
+      smart_colored (~> 1.1, >= 1.1.1)
+      solve (~> 3.1)
+    git (1.3.0)
+    git_clone_url (2.0.0)
+      uri-ssh_git (>= 2.0)
+    hashdiff (0.3.4)
+    highline (1.7.8)
+    indentation (0.1.1)
+    molinillo (0.5.7)
+    semverse (2.0.0)
+    smart_colored (1.1.1)
+    solve (3.1.0)
+      molinillo (>= 0.5)
+      semverse (>= 1.1, < 3.0)
+    uri-ssh_git (2.0.0)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  elm_install
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix b/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix
new file mode 100644
index 000000000000..8da05981dafa
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix
@@ -0,0 +1,21 @@
+{ lib, bundlerEnv, ruby, bundlerUpdateScript }:
+
+bundlerEnv rec {
+  pname = "elm_install";
+  name = "elm-github-install-${version}";
+
+  version = (import ./gemset.nix).elm_install.version;
+
+  inherit ruby;
+  gemdir = ./.;
+
+  passthru.updateScript = bundlerUpdateScript "elm-github-install";
+
+  meta = with lib; {
+    description = "Install Elm packages from git repositories.";
+    homepage    = "https://github.com/gdotdesign/elm-github-install";
+    license     = licenses.unfree;
+    maintainers = with maintainers; [ roberth nicknovitski ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/gemset.nix b/nixpkgs/pkgs/tools/package-management/elm-github-install/gemset.nix
new file mode 100644
index 000000000000..d310b41d7aaf
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/gemset.nix
@@ -0,0 +1,114 @@
+{
+  adts = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1793bfsgg8ca58b70xas9rglnspig41ih0iwqcad62s0grxzrjwz";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  commander = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01qx76y05v29kgyjsfkai73gwfnqhypp1k8v024m9w7qzpv4mpxf";
+      type = "gem";
+    };
+    version = "4.4.3";
+  };
+  contracts = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "119f5p1n6r5svbx8h09za6a4vrsnj5i1pzr9cqdn9hj3wrxvyl3a";
+      type = "gem";
+    };
+    version = "0.16.0";
+  };
+  elm_install = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0d3fwhj54madabmzamss865kj8czicgaq5fbdll9kpapqvy6a2j5";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  git = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1waikaggw7a1d24nw0sh8fd419gbf7awh000qhsf411valycj6q3";
+      type = "gem";
+    };
+    version = "1.3.0";
+  };
+  git_clone_url = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qgq7pjl461si3m2gr28vwbx47dcbpyy682mcwra5y1klpkbcvr5";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  hashdiff = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1n6hj7k7b9hazac0j48ypbak2nqi5wy4nh5cjra6xl3a92r8db0a";
+      type = "gem";
+    };
+    version = "0.3.4";
+  };
+  highline = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nf5lgdn6ni2lpfdn4gk3gi47fmnca2bdirabbjbz1fk9w4p8lkr";
+      type = "gem";
+    };
+    version = "1.7.8";
+  };
+  indentation = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ix64qgmm91xm1yiqxdcn9bqb1l6gwvkv7322yni34b3bd16lgvc";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  molinillo = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19h1nks0x2ljwyijs2rd1f9sh05j8xqvjaqk1rslp5nyy6h4a758";
+      type = "gem";
+    };
+    version = "0.5.7";
+  };
+  semverse = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1cf6iv5wgwb7b8jf7il751223k9yahz9aym06s9r0prda5mwddyy";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  smart_colored = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hccah5iwsvn9rf7zdgl7mdbh0h63vfwy1c6d280cb9qkfj8rdny";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  solve = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bbzny2bl94mv1xwcfrxbi3fjhxxawlz6la7mip2wwz9kkaf376h";
+      type = "gem";
+    };
+    version = "3.1.0";
+  };
+  uri-ssh_git = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0klyyvivbjll2ry18d8fhm1rbxbzd4kqa9lskxyiha4ndlb22cqj";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/tools/package-management/emplace/default.nix b/nixpkgs/pkgs/tools/package-management/emplace/default.nix
new file mode 100644
index 000000000000..0ccad3013100
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/emplace/default.nix
@@ -0,0 +1,22 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "emplace";
+  version = "0.3.3";
+
+  src = fetchFromGitHub {
+    owner = "tversteeg";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0zw7lbm6ly2c607ha9gbriknzqbgh3hkqb83507hah1hanzp7zq9";
+  };
+
+  cargoSha256 = "166nsk3v3w5ji7k8hflvjylz8hkgbxqrdwb03m7l8ak8wgkycxzx";
+
+  meta = with lib; {
+    description = "Mirror installed software on multiple machines";
+    homepage = "https://github.com/tversteeg/emplace";
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ filalex77 ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/fpm/Gemfile b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile
new file mode 100644
index 000000000000..17ed0a0cb2af
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+
+gem 'fpm'
diff --git a/nixpkgs/pkgs/tools/package-management/fpm/Gemfile.lock b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile.lock
new file mode 100644
index 000000000000..c8bb7d364132
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/fpm/Gemfile.lock
@@ -0,0 +1,47 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    arr-pm (0.0.10)
+      cabin (> 0)
+    backports (3.14.0)
+    cabin (0.9.0)
+    childprocess (0.9.0)
+      ffi (~> 1.0, >= 1.0.11)
+    clamp (1.0.1)
+    dotenv (2.7.2)
+    ffi (1.10.0)
+    fpm (1.11.0)
+      arr-pm (~> 0.0.10)
+      backports (>= 2.6.2)
+      cabin (>= 0.6.0)
+      childprocess (= 0.9.0)
+      clamp (~> 1.0.0)
+      ffi
+      json (>= 1.7.7, < 2.0)
+      pleaserun (~> 0.0.29)
+      ruby-xz (~> 0.2.3)
+      stud
+    insist (1.0.0)
+    io-like (0.3.0)
+    json (1.8.6)
+    mustache (0.99.8)
+    pleaserun (0.0.30)
+      cabin (> 0)
+      clamp
+      dotenv
+      insist
+      mustache (= 0.99.8)
+      stud
+    ruby-xz (0.2.3)
+      ffi (~> 1.9)
+      io-like (~> 0.3)
+    stud (0.0.23)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  fpm
+
+BUNDLED WITH
+   2.1.4
diff --git a/nixpkgs/pkgs/tools/package-management/fpm/default.nix b/nixpkgs/pkgs/tools/package-management/fpm/default.nix
new file mode 100644
index 000000000000..4eab1556d954
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/fpm/default.nix
@@ -0,0 +1,17 @@
+{ lib, bundlerApp, bundlerUpdateScript }:
+
+bundlerApp {
+  pname = "fpm";
+  gemdir = ./.;
+  exes = [ "fpm" ];
+
+  passthru.updateScript = bundlerUpdateScript "fpm";
+
+  meta = with lib; {
+    description = "Tool to build packages for multiple platforms with ease";
+    homepage    = "https://github.com/jordansissel/fpm";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ manveru nicknovitski ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/fpm/gemset.nix b/nixpkgs/pkgs/tools/package-management/fpm/gemset.nix
new file mode 100644
index 000000000000..13d1669e5409
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/fpm/gemset.nix
@@ -0,0 +1,157 @@
+{
+  arr-pm = {
+    dependencies = ["cabin"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07yx1g1nh4zdy38i2id1xyp42fvj4vl6i196jn7szvjfm0jx98hg";
+      type = "gem";
+    };
+    version = "0.0.10";
+  };
+  backports = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17j5pf0b69bkn043wi4xd530ky53jbbnljr4bsjzlm4k8bzlknfn";
+      type = "gem";
+    };
+    version = "3.14.0";
+  };
+  cabin = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  childprocess = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  clamp = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jb6l4scp69xifhicb5sffdixqkw8wgkk9k2q57kh2y36x1px9az";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  dotenv = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13cis6bf06hmz744xrsl163p6gb78xcm8g8q4pcabsy5ywyv6kag";
+      type = "gem";
+    };
+    version = "2.7.2";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0j8pzj8raxbir5w5k6s7a042sb5k02pg0f8s4na1r5lan901j00p";
+      type = "gem";
+    };
+    version = "1.10.0";
+  };
+  fpm = {
+    dependencies = ["arr-pm" "backports" "cabin" "childprocess" "clamp" "ffi" "json" "pleaserun" "ruby-xz" "stud"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0khzsiqzswxpql6w2ws9dawb27zgv4nmgrjszydmm0xpv6h21jrm";
+      type = "gem";
+    };
+    version = "1.11.0";
+  };
+  insist = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  io-like = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nn0s2wmgxij3k760h3r8m1dgih5dmd9h4v1nn085yi824i5z6k";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qmj7fypgb9vag723w1a49qihxrcf5shzars106ynw2zk352gbv5";
+      type = "gem";
+    };
+    version = "1.8.6";
+  };
+  mustache = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g5hplm0k06vwxwqzwn1mq5bd02yp0h3rym4zwzw26aqi7drcsl2";
+      type = "gem";
+    };
+    version = "0.99.8";
+  };
+  pleaserun = {
+    dependencies = ["cabin" "clamp" "dotenv" "insist" "mustache" "stud"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hgnrl67zkqaxmfkwbyscawj4wqjm7h8khpbj58s6iw54wp3408p";
+      type = "gem";
+    };
+    version = "0.0.30";
+  };
+  ruby-xz = {
+    dependencies = ["ffi" "io-like"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11bgpvvk0098ghvlxr4i713jmi2izychalgikwvdwmpb452r3ndw";
+      type = "gem";
+    };
+    version = "0.2.3";
+  };
+  stud = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb";
+      type = "gem";
+    };
+    version = "0.0.23";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/tools/package-management/gx/default.nix b/nixpkgs/pkgs/tools/package-management/gx/default.nix
new file mode 100644
index 000000000000..791dfe755ee4
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/gx/default.nix
@@ -0,0 +1,25 @@
+# This file was generated by go2nix.
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  pname = "gx";
+  version = "0.14.1";
+  rev = "refs/tags/v${version}";
+
+  goPackagePath = "github.com/whyrusleeping/gx";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/whyrusleeping/gx";
+    sha256 = "0pfx2p59xdbmqzfbgaf8xvlnzh8m05hkg596glq5kvl8ib65i4ha";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "A packaging tool built around IPFS";
+    homepage = "https://github.com/whyrusleeping/gx";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/gx/deps.nix b/nixpkgs/pkgs/tools/package-management/gx/deps.nix
new file mode 100644
index 000000000000..766e58775b42
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/gx/deps.nix
@@ -0,0 +1,246 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "github.com/blang/semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/blang/semver";
+      rev = "3c1074078d32d767e08ab2c8564867292da86926";
+      sha256 = "1vqkjrag8nn5hvjz34cf9zsrgwd13ss63y6sp7y5jq39j7bcprdx";
+    };
+  }
+  {
+    goPackagePath = "github.com/btcsuite/btcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/btcsuite/btcd";
+      rev = "67e573d211ace594f1366b4ce9d39726c4b19bd0";
+      sha256 = "04s92gsy71w1jirlr5lkk9y6r5cparbas7nmf6ywbp7kq7fn8ajn";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "07eab6a8298cf32fac45cceaac59424f98421bbc";
+      sha256 = "1l2v9yq74qsiq3q7kii091rzx67jx6isz5szs27hyhsdwvy0y2p7";
+    };
+  }
+  {
+    goPackagePath = "github.com/gxed/hashland";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gxed/hashland";
+      rev = "d9f6b97f8db22dd1e090fd0bbbe98f09cc7dd0a8";
+      sha256 = "1q23y4lacsz46k9gmgfw4iwwydw36j2601rbidmmswl94grpc386";
+    };
+  }
+  {
+    goPackagePath = "github.com/ipfs/go-ipfs-api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ipfs/go-ipfs-api";
+      rev = "b4fd7838d9771414868cb78fa8c4f97e47cad013";
+      sha256 = "1kb0ja6bji9q1ly66hx3490mjmk3w56zpwl9c0pkfy6da9x4dkyr";
+    };
+  }
+  {
+    goPackagePath = "github.com/ipfs/go-ipfs-files";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ipfs/go-ipfs-files";
+      rev = "90d206a6f3947f904673ebffd376a2dcbbd84942";
+      sha256 = "0bq6lciqba362lqmszjf1x33qwdpfrfik6r680iqr5c4sybywzqv";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-flow-metrics";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-flow-metrics";
+      rev = "7e5a55af485341567f98d6847a373eb5ddcdcd43";
+      sha256 = "1p87iyk6q6f3g3xkncssx400qlld8f2z93qiz8m1f97grfyhjif1";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-crypto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-crypto";
+      rev = "3120e9f9526fe05f2d3905961a5e0701b85579d9";
+      sha256 = "05i8jcfmk51zln634x782jvjmmn5l11104ylzqfnjxgjibz9pyd7";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-metrics";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-metrics";
+      rev = "2d5733beaa2a9fdd05ef696d7a734aa61549fb2a";
+      sha256 = "1g59z1mn483npmzgdyxn5w7w1k94phi5lgqkw3lq8i1b2jdy5mci";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-peer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-peer";
+      rev = "d3df4bca884d7a9c2d350c8120240db3c2b0f2ee";
+      sha256 = "0hn75dnr80f846jj38bpcjw5z73iw292ygcqsfbghvdrwl2pf5xm";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-protocol";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-protocol";
+      rev = "b29f3d97e3a2fb8b29c5d04290e6cb5c5018004b";
+      sha256 = "1xgjfnx9zcqglg9li29wdqywsp8hz22wx6phns9zscni2jsfidld";
+    };
+  }
+  {
+    goPackagePath = "github.com/minio/blake2b-simd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/blake2b-simd";
+      rev = "3f5f724cb5b182a5c278d6d3d55b40e7f8c2efb4";
+      sha256 = "0b6jbnj62c0gmmfd4zdmh8xbg01p80f13yygir9xprqkzk6fikmd";
+    };
+  }
+  {
+    goPackagePath = "github.com/minio/sha256-simd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/sha256-simd";
+      rev = "51976451ce1942acbb55707a983ed232fa027110";
+      sha256 = "0kaxvpidf6ygkkb06vi95pirll31jnmywhyalfjvf7djhim2wr8f";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "ae18d6b8b3205b561c79e8e5f69bff09736185f4";
+      sha256 = "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq";
+    };
+  }
+  {
+    goPackagePath = "github.com/mr-tron/base58";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mr-tron/base58";
+      rev = "c8897612421d88a51012eaa53bf7267686173ae5";
+      sha256 = "10lr50ia7xccfdvg772f7nb2azn81djcpnckhblhwq6l6a1fpm48";
+    };
+  }
+  {
+    goPackagePath = "github.com/multiformats/go-multiaddr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/multiformats/go-multiaddr";
+      rev = "ec8630b6b7436b5d7f6c1c2366d3d7214d1b29e2";
+      sha256 = "1npx4d3scj087a54m6my2xnd0wga8bkklswnbhzghwhhpsgmy800";
+    };
+  }
+  {
+    goPackagePath = "github.com/multiformats/go-multiaddr-net";
+    fetch = {
+      type = "git";
+      url = "https://github.com/multiformats/go-multiaddr-net";
+      rev = "f0af4033635f1241179700537dacdc04f2803df8";
+      sha256 = "0s90ix09mm6dc8319l48g3zhnjl1mkih168wsdh6fdf73801lhg5";
+    };
+  }
+  {
+    goPackagePath = "github.com/multiformats/go-multihash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/multiformats/go-multihash";
+      rev = "a91e75d03bf4dba801af7b159c8b2aa7b5f47ea8";
+      sha256 = "1xvj944qg17vmdgzhyn5qryqrksyxi1q188f91my52wfkz23qmmm";
+    };
+  }
+  {
+    goPackagePath = "github.com/sabhiram/go-gitignore";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sabhiram/go-gitignore";
+      rev = "d3107576ba9425fc1c85f4b3569c4631b805a02e";
+      sha256 = "1rdwyxgcsiwgmlqnc3k6h300mzlvjc3j21np4yh1h476wc8dvl0l";
+    };
+  }
+  {
+    goPackagePath = "github.com/spaolacci/murmur3";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spaolacci/murmur3";
+      rev = "f09979ecbc725b9e6d41a297405f65e7e8804acc";
+      sha256 = "1lv3zyz3jy2d76bhvvs8svygx66606iygdvwy5cwc0p5z8yghq25";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "b67dcf995b6a7b7f14fad5fcb7cc5441b05e814b";
+      sha256 = "0n5vq4nydlhb7w12jiwphvxqdy4jwpxc3zwlxyhf05lq1nxfb56h";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/json-filter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/json-filter";
+      rev = "ff25329a9528f01c5175414f16cc0a6a162a5b8b";
+      sha256 = "0cai0drvx4c8j686l908vpcsz3mw3vxi3ziz94b0f3c5ylpj07j7";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/progmeter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/progmeter";
+      rev = "f3e57218a75b913eff88d49a52c1debf9684ea04";
+      sha256 = "0xs8rz6yhpvj9512c5v3b8dwr2kivywnyyfxzdfbr6fy1xc8zskb";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/stump";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/stump";
+      rev = "206f8f13aae1697a6fc1f4a55799faf955971fc5";
+      sha256 = "1s40qdppjnk8gijk7x6kbviiqz62nz3h6gic2q9cwcmq8r5isw7n";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/tar-utils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/tar-utils";
+      rev = "8c6c8ba81d5c71fd69c0f48dbde4b2fb422b6dfc";
+      sha256 = "14jjdw3yics0k467xsyk388684wdpi0bbx8nqj0y4pqxa0s0in6s";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "3d3f9f413869b949e48070b5bc593aa22cc2b8f2";
+      sha256 = "0rbkcq48lkiw043sm8hciprqy2d77s4agpj6rwy2qgbqm8gvv3a6";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "ec83556a53fe16b65c452a104ea9d1e86a671852";
+      sha256 = "1ijlbyn5gs8g6z2pjlj5h77lg7wrljqxdls4xlcfqxmghxiyci2f";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/tools/package-management/gx/go/default.nix b/nixpkgs/pkgs/tools/package-management/gx/go/default.nix
new file mode 100644
index 000000000000..652edf95e550
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/gx/go/default.nix
@@ -0,0 +1,34 @@
+# This file was generated by go2nix.
+{ stdenv, buildGoPackage, fetchgit
+, gx
+}:
+
+buildGoPackage rec {
+  pname = "gx-go";
+  version = "1.9.0";
+  rev = "refs/tags/v${version}";
+
+  goPackagePath = "github.com/whyrusleeping/gx-go";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/whyrusleeping/gx-go";
+    sha256 = "0fdy4b3ymqw6hzvvjwq37mfrdmizc8lxm53axw93n3x6118na9jc";
+  };
+
+  goDeps = ./deps.nix;
+
+  extraSrcs = [
+    {
+      goPackagePath = gx.goPackagePath;
+      src = gx.src;
+    }
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A tool for importing go packages into gx";
+    homepage = "https://github.com/whyrusleeping/gx-go";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/gx/go/deps.nix b/nixpkgs/pkgs/tools/package-management/gx/go/deps.nix
new file mode 100644
index 000000000000..895e0e6bb1ac
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/gx/go/deps.nix
@@ -0,0 +1,246 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "github.com/btcsuite/btcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/btcsuite/btcd";
+      rev = "67e573d211ace594f1366b4ce9d39726c4b19bd0";
+      sha256 = "04s92gsy71w1jirlr5lkk9y6r5cparbas7nmf6ywbp7kq7fn8ajn";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "07eab6a8298cf32fac45cceaac59424f98421bbc";
+      sha256 = "1l2v9yq74qsiq3q7kii091rzx67jx6isz5szs27hyhsdwvy0y2p7";
+    };
+  }
+  {
+    goPackagePath = "github.com/gxed/hashland";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gxed/hashland";
+      rev = "d9f6b97f8db22dd1e090fd0bbbe98f09cc7dd0a8";
+      sha256 = "1q23y4lacsz46k9gmgfw4iwwydw36j2601rbidmmswl94grpc386";
+    };
+  }
+  {
+    goPackagePath = "github.com/ipfs/go-ipfs-api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ipfs/go-ipfs-api";
+      rev = "b4fd7838d9771414868cb78fa8c4f97e47cad013";
+      sha256 = "1kb0ja6bji9q1ly66hx3490mjmk3w56zpwl9c0pkfy6da9x4dkyr";
+    };
+  }
+  {
+    goPackagePath = "github.com/ipfs/go-ipfs-files";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ipfs/go-ipfs-files";
+      rev = "90d206a6f3947f904673ebffd376a2dcbbd84942";
+      sha256 = "0bq6lciqba362lqmszjf1x33qwdpfrfik6r680iqr5c4sybywzqv";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/fs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/fs";
+      rev = "1455def202f6e05b95cc7bfc7e8ae67ae5141eba";
+      sha256 = "11zg176x9hr9q7fsk95r6q0wf214gg4czy02slax4x56n79g6a7q";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-flow-metrics";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-flow-metrics";
+      rev = "7e5a55af485341567f98d6847a373eb5ddcdcd43";
+      sha256 = "1p87iyk6q6f3g3xkncssx400qlld8f2z93qiz8m1f97grfyhjif1";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-crypto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-crypto";
+      rev = "3120e9f9526fe05f2d3905961a5e0701b85579d9";
+      sha256 = "05i8jcfmk51zln634x782jvjmmn5l11104ylzqfnjxgjibz9pyd7";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-metrics";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-metrics";
+      rev = "2d5733beaa2a9fdd05ef696d7a734aa61549fb2a";
+      sha256 = "1g59z1mn483npmzgdyxn5w7w1k94phi5lgqkw3lq8i1b2jdy5mci";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-peer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-peer";
+      rev = "d3df4bca884d7a9c2d350c8120240db3c2b0f2ee";
+      sha256 = "0hn75dnr80f846jj38bpcjw5z73iw292ygcqsfbghvdrwl2pf5xm";
+    };
+  }
+  {
+    goPackagePath = "github.com/libp2p/go-libp2p-protocol";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libp2p/go-libp2p-protocol";
+      rev = "b29f3d97e3a2fb8b29c5d04290e6cb5c5018004b";
+      sha256 = "1xgjfnx9zcqglg9li29wdqywsp8hz22wx6phns9zscni2jsfidld";
+    };
+  }
+  {
+    goPackagePath = "github.com/minio/blake2b-simd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/blake2b-simd";
+      rev = "3f5f724cb5b182a5c278d6d3d55b40e7f8c2efb4";
+      sha256 = "0b6jbnj62c0gmmfd4zdmh8xbg01p80f13yygir9xprqkzk6fikmd";
+    };
+  }
+  {
+    goPackagePath = "github.com/minio/sha256-simd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/sha256-simd";
+      rev = "51976451ce1942acbb55707a983ed232fa027110";
+      sha256 = "0kaxvpidf6ygkkb06vi95pirll31jnmywhyalfjvf7djhim2wr8f";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "ae18d6b8b3205b561c79e8e5f69bff09736185f4";
+      sha256 = "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq";
+    };
+  }
+  {
+    goPackagePath = "github.com/mr-tron/base58";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mr-tron/base58";
+      rev = "c8897612421d88a51012eaa53bf7267686173ae5";
+      sha256 = "10lr50ia7xccfdvg772f7nb2azn81djcpnckhblhwq6l6a1fpm48";
+    };
+  }
+  {
+    goPackagePath = "github.com/multiformats/go-multiaddr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/multiformats/go-multiaddr";
+      rev = "ec8630b6b7436b5d7f6c1c2366d3d7214d1b29e2";
+      sha256 = "1npx4d3scj087a54m6my2xnd0wga8bkklswnbhzghwhhpsgmy800";
+    };
+  }
+  {
+    goPackagePath = "github.com/multiformats/go-multiaddr-net";
+    fetch = {
+      type = "git";
+      url = "https://github.com/multiformats/go-multiaddr-net";
+      rev = "f0af4033635f1241179700537dacdc04f2803df8";
+      sha256 = "0s90ix09mm6dc8319l48g3zhnjl1mkih168wsdh6fdf73801lhg5";
+    };
+  }
+  {
+    goPackagePath = "github.com/multiformats/go-multihash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/multiformats/go-multihash";
+      rev = "a91e75d03bf4dba801af7b159c8b2aa7b5f47ea8";
+      sha256 = "1xvj944qg17vmdgzhyn5qryqrksyxi1q188f91my52wfkz23qmmm";
+    };
+  }
+  {
+    goPackagePath = "github.com/sabhiram/go-gitignore";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sabhiram/go-gitignore";
+      rev = "d3107576ba9425fc1c85f4b3569c4631b805a02e";
+      sha256 = "1rdwyxgcsiwgmlqnc3k6h300mzlvjc3j21np4yh1h476wc8dvl0l";
+    };
+  }
+  {
+    goPackagePath = "github.com/spaolacci/murmur3";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spaolacci/murmur3";
+      rev = "f09979ecbc725b9e6d41a297405f65e7e8804acc";
+      sha256 = "1lv3zyz3jy2d76bhvvs8svygx66606iygdvwy5cwc0p5z8yghq25";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "b67dcf995b6a7b7f14fad5fcb7cc5441b05e814b";
+      sha256 = "0n5vq4nydlhb7w12jiwphvxqdy4jwpxc3zwlxyhf05lq1nxfb56h";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/gx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/gx";
+      rev = "733691bc18c0858a3d7e1a6e0a42df7d0bcac1de";
+      sha256 = "0pfx2p59xdbmqzfbgaf8xvlnzh8m05hkg596glq5kvl8ib65i4ha";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/progmeter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/progmeter";
+      rev = "f3e57218a75b913eff88d49a52c1debf9684ea04";
+      sha256 = "0xs8rz6yhpvj9512c5v3b8dwr2kivywnyyfxzdfbr6fy1xc8zskb";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/stump";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/stump";
+      rev = "206f8f13aae1697a6fc1f4a55799faf955971fc5";
+      sha256 = "1s40qdppjnk8gijk7x6kbviiqz62nz3h6gic2q9cwcmq8r5isw7n";
+    };
+  }
+  {
+    goPackagePath = "github.com/whyrusleeping/tar-utils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/whyrusleeping/tar-utils";
+      rev = "8c6c8ba81d5c71fd69c0f48dbde4b2fb422b6dfc";
+      sha256 = "14jjdw3yics0k467xsyk388684wdpi0bbx8nqj0y4pqxa0s0in6s";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "3d3f9f413869b949e48070b5bc593aa22cc2b8f2";
+      sha256 = "0rbkcq48lkiw043sm8hciprqy2d77s4agpj6rwy2qgbqm8gvv3a6";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "ec83556a53fe16b65c452a104ea9d1e86a671852";
+      sha256 = "1ijlbyn5gs8g6z2pjlj5h77lg7wrljqxdls4xlcfqxmghxiyci2f";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/tools/package-management/home-manager/default.nix b/nixpkgs/pkgs/tools/package-management/home-manager/default.nix
new file mode 100644
index 000000000000..e569d5a3de9b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/home-manager/default.nix
@@ -0,0 +1,43 @@
+#Adapted from
+#https://github.com/rycee/home-manager/blob/2c07829be2bcae55e04997b19719ff902a44016d/home-manager/default.nix
+
+{ bash, coreutils, findutils, gnused, less, stdenv, makeWrapper, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+
+  pname = "home-manager";
+  version = "2020-03-17";
+
+  src = fetchFromGitHub {
+    owner = "rycee";
+    repo = "home-manager";
+    rev = "5969551a5cc52f9470b5ff5ca01327bf4bda82c1";
+    sha256 = "0f4kz83a1kp3ci8zi5hvp8fp34wi73arpykl4d9vlywdk6w36bnd";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  dontBuild = true;
+
+  installPhase = ''
+    install -v -D -m755 ${src}/home-manager/home-manager $out/bin/home-manager
+
+    substituteInPlace $out/bin/home-manager \
+      --subst-var-by bash "${bash}" \
+      --subst-var-by coreutils "${coreutils}" \
+      --subst-var-by findutils "${findutils}" \
+      --subst-var-by gnused "${gnused}" \
+      --subst-var-by less "${less}" \
+      --subst-var-by HOME_MANAGER_PATH '${src}'
+
+    install -D -m755 home-manager/completion.bash \
+      "$out/share/bash-completion/completions/home-manager"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A user environment configurator";
+    homepage = "https://rycee.gitlab.io/home-manager/";
+    platforms = platforms.unix;
+    license = licenses.mit;
+  };
+
+}
diff --git a/nixpkgs/pkgs/tools/package-management/librepo/default.nix b/nixpkgs/pkgs/tools/package-management/librepo/default.nix
new file mode 100644
index 000000000000..6914f1af5f14
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/librepo/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, python
+, pkgconfig
+, libxml2
+, glib
+, openssl
+, zchunk
+, curl
+, check
+, gpgme
+}:
+
+stdenv.mkDerivation rec {
+  version = "1.11.3";
+  pname = "librepo";
+
+  outputs = [ "out" "dev" "py" ];
+
+  src = fetchFromGitHub {
+    owner = "rpm-software-management";
+    repo = "librepo";
+    rev = version;
+    sha256 = "1kdv0xyrbd942if82yvm9ykcskziq2xhw5cpb3xv4wx32a9kc8yz";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+  ];
+
+  buildInputs = [
+    python
+    libxml2
+    glib
+    openssl
+    zchunk
+    curl
+    check
+    gpgme
+  ];
+
+  # librepo/fastestmirror.h includes curl/curl.h, and pkg-config specfile refers to others in here
+  propagatedBuildInputs = [
+    curl
+    gpgme
+    libxml2
+  ];
+
+  cmakeFlags = [
+    "-DPYTHON_DESIRED=${stdenv.lib.substring 0 1 python.pythonVersion}"
+  ];
+
+  postFixup = ''
+    moveToOutput "lib/${python.libPrefix}" "$py"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Library providing C and Python (libcURL like) API for downloading linux repository metadata and packages";
+    homepage = "https://rpm-software-management.github.io/librepo/";
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/morph/default.nix b/nixpkgs/pkgs/tools/package-management/morph/default.nix
new file mode 100644
index 000000000000..5ae4f5731ba7
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/morph/default.nix
@@ -0,0 +1,44 @@
+{ buildGoPackage, fetchFromGitHub, go-bindata, openssh, makeWrapper, lib }:
+
+buildGoPackage rec {
+  pname = "morph";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "dbcdk";
+    repo = "morph";
+    rev = "v${version}";
+    sha256 = "064ccvvq4yk17jy5jvi1nxfp5ajvnvn2k4zvh9v0n3ragcl3rd20";
+  };
+
+  goPackagePath = "github.com/dbcdk/morph";
+  goDeps = ./deps.nix;
+
+  nativeBuildInputs = [ makeWrapper go-bindata ];
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X
+    main.version=${version}
+  '';
+
+  postPatch = ''
+    go-bindata -pkg assets -o assets/assets.go data/
+  '';
+
+  postInstall = ''
+    mkdir -p $lib
+    cp -v go/src/$goPackagePath/data/*.nix $lib
+    wrapProgram $out/bin/morph --prefix PATH : ${lib.makeBinPath [ openssh ]};
+  '';
+
+  outputs = [ "out" "lib" ];
+
+  meta = with lib; {
+    description = "Morph is a NixOS host manager written in Golang.";
+    license = licenses.mit;
+    homepage = "https://github.com/dbcdk/morph";
+    maintainers = with maintainers; [adamt johanot];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/morph/deps.nix b/nixpkgs/pkgs/tools/package-management/morph/deps.nix
new file mode 100644
index 000000000000..4da6f0278b79
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/morph/deps.nix
@@ -0,0 +1,66 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/dbcdk/kingpin";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dbcdk/kingpin";
+      rev =  "8554767bc91254c59c7297a99e9867c770e4eadb";
+      sha256 = "05hfpgylv5mfnjz2mdd3jl8p3psmczvdbs4ydf9xvvc17c9mlrpq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev =  "a0175ee3bccc567396460bf5acd36800cb10c49c";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath  = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev =  "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gobwas/glob";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobwas/glob";
+      rev =  "5ccd90ef52e1e632236f7326478d4faa74f99438";
+      sha256 = "0jxk1x806zn5x86342s72dq2qy64ksb3zrvrlgir2avjhwb18n6z";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "0e37d006457bf46f9e6692014ba72ef82c33022c";
+      sha256 = "1fj8rvrhgv5j8pmckzphvm3sqkzhcqp3idkxvgv13qrjdfycsa5r";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "ee1b12c67af419cf5a9be3bdbeea7fc1c5f32f11";
+      sha256 = "0cgp0xzbhg3fr77n2qrfmmsvhc287srnwi4mghwcjdxp6rx0s988";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/mattes/go-expand-tilde.v1";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattes/go-expand-tilde";
+      rev =  "cb884138e64c9a8bf5c7d6106d74b0fca082df0c";
+      sha256 = "06xrp05njwam4sn031fkmd4gym5wfsw5q0v24nqhs4883lsx9dwq";
+    };
+  }
+]
\ No newline at end of file
diff --git a/nixpkgs/pkgs/tools/package-management/mynewt-newt/default.nix b/nixpkgs/pkgs/tools/package-management/mynewt-newt/default.nix
new file mode 100644
index 000000000000..ce155b72fc39
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/mynewt-newt/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, buildGoModule, fetchFromGitHub, fetchpatch }:
+
+buildGoModule rec {
+  pname = "mynewt-newt";
+  version = "1.7.0";
+
+  src = fetchFromGitHub {
+    owner = "apache";
+    repo = "mynewt-newt";
+    rev = "mynewt_${builtins.replaceStrings ["."] ["_"] version}_tag";
+    sha256 = "0rwn4ghh7kal8csxlh0w1p29b5m1nam9lkrxla5wdfhnzbsg8hfa";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/apache/mynewt-newt/commit/6a51e35565323ebe8feb8d1aa6e00960b6ce662e.patch";
+      sha256 = "186yha60jzcjq8r04w12rqqh3cin2w974l77hz2ixhmjzyr56wqv";
+    })
+    (fetchpatch {
+      url = "https://github.com/apache/mynewt-newt/commit/7d4ef3fe65a9a83cc58e7bd973654ad235cc68bc.patch";
+      sha256 = "01scmq58bfr4c9icqzm79q7a55izflsb3mlx9xn0dv92m3mbprx7";
+    })
+  ];
+
+  vendorSha256 = "1sh9mx3lc28fzvc1yrhz58rlbaac7aq1dqyvxwj98vld3kigpv1z";
+
+  meta = with stdenv.lib; {
+    homepage = "https://mynewt.apache.org/";
+    description = "Build and package management tool for embedded development.";
+    longDescription = ''
+      Apache Newt is a smart build and package management tool,
+      designed for C and C++ applications in embedded contexts. Newt
+      was developed as a part of the Apache Mynewt Operating System.
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ pjones ];
+    platforms = platforms.unix;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/tools/package-management/nfpm/default.nix b/nixpkgs/pkgs/tools/package-management/nfpm/default.nix
new file mode 100644
index 000000000000..4c04f24b26c3
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nfpm/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "nfpm";
+  version = "1.3.1";
+
+  src = fetchFromGitHub {
+    owner = "goreleaser";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "14083sxim17nwmq7w7wvq9sq9pai860v8a2q14vz16hd2i427aqp";
+  };
+
+  vendorSha256 = "0v86fwi1i6b8ngf60ag31mrbah45f0ncqhrjdk5494f139c26067";
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
+
+  meta = with lib; {
+    description = "A simple deb and rpm packager written in Go";
+    homepage = "https://github.com/goreleaser/nfpm";
+    maintainers = [ maintainers.marsam ];
+    license = licenses.mit;
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/tools/package-management/niff/default.nix b/nixpkgs/pkgs/tools/package-management/niff/default.nix
new file mode 100644
index 000000000000..9d3736f6faad
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/niff/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, python3
+, fetchFromGitHub
+}:
+
+let
+  pname = "niff";
+  version = "0.1";
+in stdenv.mkDerivation {
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "FRidh";
+    repo = "niff";
+    rev = "v${version}";
+    sha256 = "1ziv5r57jzg2qg61izvkkyq1bz4p5nb6652dzwykfj3l2r3db4bi";
+  };
+
+  buildInputs = [ python3 ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp niff $out/bin/niff
+  '';
+
+  meta = {
+    description = "A program that compares two Nix expressions and determines which attributes changed";
+    homepage = "https://github.com/FRidh/niff";
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.fridh ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-bundle/default.nix b/nixpkgs/pkgs/tools/package-management/nix-bundle/default.nix
new file mode 100644
index 000000000000..41ce0967b2e3
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-bundle/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, fetchFromGitHub, nix, makeWrapper, coreutils, gnutar, gzip, bzip2 }:
+
+stdenv.mkDerivation rec {
+  pname = "nix-bundle";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "matthewbauer";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0hdvdjm467w37clkhbifn54hbdmnxlbk66cj88lwaz26j4s2ik5g";
+  };
+
+  # coreutils, gnutar is actually needed by nix for bootstrap
+  buildInputs = [ nix coreutils makeWrapper gnutar gzip bzip2 ];
+
+  binPath = lib.makeBinPath [ nix coreutils gnutar gzip bzip2 ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  postInstall = ''
+    mkdir -p $out/bin
+    makeWrapper $out/share/nix-bundle/nix-bundle.sh $out/bin/nix-bundle \
+      --prefix PATH : ${binPath}
+    cp $out/share/nix-bundle/nix-run.sh $out/bin/nix-run
+  '';
+
+  meta = with lib; {
+    maintainers = [ maintainers.matthewbauer ];
+    platforms = platforms.all;
+    description = "Create bundles from Nixpkgs attributes";
+    license = licenses.mit;
+    homepage = "https://github.com/matthewbauer/nix-bundle";
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-du/default.nix b/nixpkgs/pkgs/tools/package-management/nix-du/default.nix
new file mode 100644
index 000000000000..417962733af6
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-du/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, rustPlatform, nix, boost, graphviz, darwin }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "nix-du";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "symphorien";
+    repo = "nix-du";
+    rev = "v${version}";
+    sha256 = "149d60mid29s5alv5m3d7jrhyzc6cj7b6hpiq399gsdwzgxr00wq";
+  };
+
+  cargoSha256 = "1a6svl89dcdb5fpvs2i32i6agyhl0sx7kkkw70rqr17fyzl5psai";
+
+  doCheck = true;
+  checkInputs = [ nix graphviz ];
+
+  buildInputs = [
+    boost
+    nix
+  ] ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
+
+  meta = with stdenv.lib; {
+    description = "A tool to determine which gc-roots take space in your nix store";
+    homepage = "https://github.com/symphorien/nix-du";
+    license = licenses.lgpl3;
+    maintainers = [ maintainers.symphorien ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-index/default.nix b/nixpkgs/pkgs/tools/package-management/nix-index/default.nix
new file mode 100644
index 000000000000..db26f9e0b087
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-index/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, rustPlatform, fetchFromGitHub, pkgconfig, makeWrapper, openssl, curl
+, nix, Security
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "nix-index";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "bennofs";
+    repo = "nix-index";
+    rev = "v${version}";
+    sha256 = "05fqfwz34n4ijw7ydw2n6bh4bv64rhks85cn720sy5r7bmhfmfa8";
+  };
+
+  cargoSha256 = "0apdr9z18p6m4lfjv8k9zv2mqc7vssd2d536zfv1pns0pdqsfw50";
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  buildInputs = [ openssl curl ]
+    ++ stdenv.lib.optional stdenv.isDarwin Security;
+
+  doCheck = !stdenv.isDarwin;
+
+  postInstall = ''
+    mkdir -p $out/etc/profile.d
+    cp ./command-not-found.sh $out/etc/profile.d/command-not-found.sh
+    substituteInPlace $out/etc/profile.d/command-not-found.sh \
+      --replace "@out@" "$out"
+    wrapProgram $out/bin/nix-index \
+      --prefix PATH : "${stdenv.lib.makeBinPath [ nix ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A files database for nixpkgs";
+    homepage = "https://github.com/bennofs/nix-index";
+    license = with licenses; [ bsd3 ];
+    maintainers = [ maintainers.bennofs ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix b/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix
new file mode 100644
index 000000000000..f5dfacf319bc
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix
@@ -0,0 +1,52 @@
+{ lib, pkgs, stdenv, fetchFromGitHub, mypy, python3, nix, git, makeWrapper
+, runtimeShell }:
+let self = stdenv.mkDerivation rec {
+  pname = "nix-pin";
+  version = "0.4.0";
+  src = fetchFromGitHub {
+    owner = "timbertson";
+    repo = "nix-pin";
+    rev = "version-${version}";
+    sha256 = "1pccvc0iqapms7kidrh09g5fdx44x622r5l9k7bkmssp3v4c68vy";
+  };
+  buildInputs = [ python3 mypy makeWrapper ];
+  checkPhase = ''
+    mypy bin/*
+  '';
+  installPhase = ''
+    mkdir "$out"
+    cp -r bin share "$out"
+    wrapProgram $out/bin/nix-pin \
+      --prefix PATH : "${lib.makeBinPath [ nix git ]}"
+  '';
+  passthru =
+    let
+      defaults = import "${self}/share/nix/defaults.nix";
+    in {
+      api = { pinConfig ? defaults.pinConfig }:
+        let impl = import "${self}/share/nix/api.nix" { inherit pkgs pinConfig; }; in
+        { inherit (impl) augmentedPkgs pins callPackage; };
+      updateScript = ''
+        #!${runtimeShell}
+        set -e
+        echo
+        cd ${toString ./.}
+        ${pkgs.nix-update-source}/bin/nix-update-source \
+          --prompt version \
+          --replace-attr version \
+          --set owner timbertson \
+          --set repo nix-pin \
+          --set type fetchFromGitHub \
+          --set rev 'version-{version}' \
+          --substitute rev 'version-''${{version}}' \
+          --modify-nix default.nix
+      '';
+    };
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/timbertson/nix-pin";
+    description = "nixpkgs development utility";
+    license = licenses.mit;
+    maintainers = [ maintainers.timbertson ];
+    platforms = platforms.all;
+  };
+}; in self
diff --git a/nixpkgs/pkgs/tools/package-management/nix-prefetch-scripts/default.nix b/nixpkgs/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
new file mode 100644
index 000000000000..bab12ca8e8df
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, makeWrapper, buildEnv,
+  breezy, coreutils, cvs, findutils, gawk, git, gnused, mercurial, nix, subversion
+}:
+
+let mkPrefetchScript = tool: src: deps:
+  stdenv.mkDerivation {
+    name = "nix-prefetch-${tool}";
+
+    nativeBuildInputs = [ makeWrapper ];
+
+    dontUnpack = true;
+
+    installPhase = ''
+      install -vD ${src} $out/bin/$name;
+      wrapProgram $out/bin/$name \
+        --prefix PATH : ${stdenv.lib.makeBinPath (deps ++ [ gnused nix ])} \
+        --set HOME /homeless-shelter
+    '';
+
+    preferLocalBuild = true;
+
+    meta = with stdenv.lib; {
+      description = "Script used to obtain source hashes for fetch${tool}";
+      maintainers = with maintainers; [ bennofs ];
+      platforms = stdenv.lib.platforms.unix;
+    };
+  };
+in rec {
+  nix-prefetch-bzr = mkPrefetchScript "bzr" ../../../build-support/fetchbzr/nix-prefetch-bzr [ breezy ];
+  nix-prefetch-cvs = mkPrefetchScript "cvs" ../../../build-support/fetchcvs/nix-prefetch-cvs [ cvs ];
+  nix-prefetch-git = mkPrefetchScript "git" ../../../build-support/fetchgit/nix-prefetch-git [ coreutils findutils gawk git ];
+  nix-prefetch-hg  = mkPrefetchScript "hg"  ../../../build-support/fetchhg/nix-prefetch-hg   [ mercurial ];
+  nix-prefetch-svn = mkPrefetchScript "svn" ../../../build-support/fetchsvn/nix-prefetch-svn [ subversion ];
+
+  nix-prefetch-scripts = buildEnv {
+    name = "nix-prefetch-scripts";
+
+    paths = [ nix-prefetch-bzr nix-prefetch-cvs nix-prefetch-git nix-prefetch-hg nix-prefetch-svn ];
+
+    meta = with stdenv.lib; {
+      description = "Collection of all the nix-prefetch-* scripts which may be used to obtain source hashes";
+      maintainers = with maintainers; [ bennofs ];
+      platforms = stdenv.lib.platforms.unix;
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix b/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix
new file mode 100644
index 000000000000..1a750da69301
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, fetchFromGitHub, installShellFiles, makeWrapper, asciidoc
+, docbook_xml_dtd_45, git, docbook_xsl, libxml2, libxslt, coreutils, gawk
+, gnugrep, gnused, jq, nix }:
+
+let
+  binPath = stdenv.lib.makeBinPath [ coreutils gawk git gnugrep gnused jq nix ];
+
+in stdenv.mkDerivation rec {
+  pname = "nix-prefetch";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "msteen";
+    repo = "nix-prefetch";
+    rev = version;
+    sha256 = "15h6f743nn6sdq8l771sjxh92cyzqznkcs7szrc7nm066xvx8rd4";
+    # the stat call has to be in a subshell or we get the current date
+    extraPostFetch = ''
+      echo $(stat -c %Y $out) > $out/.timestamp
+    '';
+  };
+
+  postPatch = ''
+    lib=$out/lib/${pname}
+
+    substituteInPlace doc/nix-prefetch.1.asciidoc \
+      --subst-var-by version $version
+
+    substituteInPlace src/main.sh \
+      --subst-var-by lib $lib \
+      --subst-var-by version $version
+
+    substituteInPlace src/tests.sh \
+      --subst-var-by bin $out/bin
+  '';
+
+  nativeBuildInputs = [
+    asciidoc
+    docbook_xml_dtd_45
+    docbook_xsl
+    installShellFiles
+    libxml2
+    libxslt
+    makeWrapper
+  ];
+
+  dontConfigure = true;
+
+  buildPhase = ''
+    a2x -a revdate=$(date --utc --date=@$(cat $src/.timestamp) +%d/%m/%Y) \
+      -f manpage doc/nix-prefetch.1.asciidoc
+  '';
+
+  installPhase = ''
+    install -Dm555 -t $lib src/*.sh
+    install -Dm444 -t $lib lib/*
+    makeWrapper $lib/main.sh $out/bin/${pname} \
+      --prefix PATH : ${binPath}
+
+    installManPage doc/nix-prefetch.?
+
+    installShellCompletion --name ${pname} contrib/nix-prefetch-completion.{bash,zsh}
+
+    mkdir -p $out/share/doc/${pname}/contrib
+    cp -r contrib/hello_rs $out/share/doc/${pname}/contrib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Prefetch any fetcher function call, e.g. package sources";
+    license = licenses.mit;
+    maintainers = with maintainers; [ msteen ];
+    inherit (src.meta) homepage;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix b/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix
new file mode 100644
index 000000000000..fccfbe98f786
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub,
+  bzip2, nix, perl, perlPackages,
+}:
+
+with stdenv.lib;
+
+let
+  rev = "e4675e38ab54942e351c7686e40fabec822120b9";
+  sha256 = "1wm24p6pkxl1d7hrvf4ph6mwzawvqi22c60z9xzndn5xfyr4v0yr";
+in
+
+stdenv.mkDerivation {
+  name = "nix-serve-0.2-${substring 0 7 rev}";
+
+  src = fetchFromGitHub {
+    owner = "edolstra";
+    repo = "nix-serve";
+    inherit rev sha256;
+  };
+
+  buildInputs = [ bzip2 perl nix nix.perl-bindings ]
+    ++ (with perlPackages; [ DBI DBDSQLite Plack Starman ]);
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/libexec/nix-serve
+    cp nix-serve.psgi $out/libexec/nix-serve/nix-serve.psgi
+
+    mkdir -p $out/bin
+    cat > $out/bin/nix-serve <<EOF
+    #! ${stdenv.shell}
+    PATH=${makeBinPath [ bzip2 nix ]}:\$PATH PERL5LIB=$PERL5LIB exec ${perlPackages.Starman}/bin/starman $out/libexec/nix-serve/nix-serve.psgi "\$@"
+    EOF
+    chmod +x $out/bin/nix-serve
+  '';
+
+  meta = {
+    homepage = "https://github.com/edolstra/nix-serve";
+    description = "A utility for sharing a Nix store as a binary cache";
+    maintainers = [ maintainers.eelco ];
+    license = licenses.lgpl21;
+    platforms = nix.meta.platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix b/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix
new file mode 100644
index 000000000000..3bc0b35c0f17
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "nix-simple-deploy";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "misuzu";
+    repo = pname;
+    rev = version;
+    sha256 = "12g0sbgs2dfnk0agp1kagfi1yhk26ga98zygxxrjhjxrqb2n5w80";
+  };
+
+  cargoSha256 = "0svnz9r0lrmz333qpbpdddjd46vh9i74qchws8aifa2qwnqy0kmn";
+
+  meta = with stdenv.lib; {
+    description = "Deploy software or an entire NixOS system configuration to another NixOS system";
+    homepage = "https://github.com/misuzu/nix-simple-deploy";
+    license = with licenses; [ asl20 /* OR */ mit ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ misuzu ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-top/default.nix b/nixpkgs/pkgs/tools/package-management/nix-top/default.nix
new file mode 100644
index 000000000000..0a003ba6b6b4
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-top/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, ruby
+, makeWrapper
+, getent               # /etc/passwd
+, ncurses              # tput
+, binutils-unwrapped   # strings
+, coreutils
+, findutils
+}:
+
+# No gems used, so mkDerivation is fine.
+let
+  additionalPath = lib.makeBinPath [ getent ncurses binutils-unwrapped coreutils findutils ];
+in
+stdenv.mkDerivation rec {
+  pname = "nix-top";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "samueldr";
+    repo = "nix-top";
+    rev = "v${version}";
+    sha256 = "0560a9g8n4p764r3va1nn95iv4bg71g8h0wws1af2p5g553j4zps";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  buildInputs = [
+    ruby
+  ];
+
+  installPhase = ''
+    mkdir -p $out/libexec/nix-top
+    install -D -m755 ./nix-top $out/bin/nix-top
+    wrapProgram $out/bin/nix-top \
+      --prefix PATH : "$out/libexec/nix-top:${additionalPath}"
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    ln -s /bin/stty $out/libexec/nix-top
+  '';
+
+  meta = with lib; {
+    description = "Tracks what nix is building";
+    homepage = "https://github.com/samueldr/nix-top";
+    license = licenses.mit;
+    maintainers = with maintainers; [ samueldr ];
+    platforms = platforms.linux ++ platforms.darwin;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix b/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix
new file mode 100644
index 000000000000..224ccd1cd9ed
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, fetchFromGitHub
+, ruby
+}:
+
+# No gems used, so mkDerivation is fine.
+stdenv.mkDerivation rec {
+  pname = "nix-universal-prefetch";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "samueldr";
+    repo = "nix-universal-prefetch";
+    rev = "v${version}";
+    sha256 = "1nmxp6846ip2x3mibys3ymgi0813g18p9szqnsciiib3dbis4kwf";
+  };
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    cp nix-universal-prefetch $out/bin/nix-universal-prefetch
+    substituteInPlace "$out/bin/nix-universal-prefetch" \
+      --replace "/usr/bin/env nix-shell" "${ruby}/bin/ruby"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Uses nixpkgs fetchers to figure out hashes";
+    homepage = "https://github.com/samueldr/nix-universal-prefetch";
+    license = licenses.mit;
+    maintainers = with maintainers; [ samueldr ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix b/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix
new file mode 100644
index 000000000000..a2add8f8a78e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix
@@ -0,0 +1,51 @@
+{ lib, pkgs, fetchFromGitHub, python3Packages, nix-prefetch-scripts
+, runtimeShell }:
+python3Packages.buildPythonApplication rec {
+  version = "0.6.3";
+  name = "nix-update-source-${version}";
+  src = fetchFromGitHub {
+    owner = "timbertson";
+    repo = "nix-update-source";
+    rev = "version-0.6.3";
+    sha256 = "157wvv9vnaszzwbj68jpdc0imcm1hdab3z760bx2axbsgfpqqilz";
+  };
+  propagatedBuildInputs = [ nix-prefetch-scripts ];
+  passthru = {
+    # NOTE: `fetch` should not be used within nixpkgs because it
+    # uses a non-idiomatic structure. It is provided for use by
+    # out-of-tree nix derivations.
+    fetch = path:
+      let
+        fetchers = {
+          # whitelist of allowed fetchers
+          inherit (pkgs) fetchgit fetchurl fetchFromGitHub;
+        };
+        json = lib.importJSON path;
+        fetchFn = builtins.getAttr json.fetch.fn fetchers;
+        src = fetchFn json.fetch.args;
+      in
+      json // json.fetch // {
+        inherit src;
+        overrideSrc = drv: lib.overrideDerivation drv (orig: { inherit src; });
+      };
+    updateScript = ''
+      #!${runtimeShell}
+      set -e
+      echo
+      cd ${toString ./.}
+      ${pkgs.nix-update-source}/bin/nix-update-source \
+        --prompt version \
+        --replace-attr version \
+        --set owner timbertson \
+        --set repo nix-update-source \
+        --set type fetchFromGitHub \
+        --set rev 'version-{version}' \
+        --modify-nix default.nix
+    '';
+  };
+  meta = {
+    description = "Utility to automate updating of nix derivation sources";
+    maintainers = with lib.maintainers; [ timbertson ];
+    license = lib.licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix-update/default.nix b/nixpkgs/pkgs/tools/package-management/nix-update/default.nix
new file mode 100644
index 000000000000..bd4ff86c9949
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix-update/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, nix
+, nix-prefetch
+}:
+
+buildPythonApplication rec {
+  pname = "nix-update";
+  version = "0.1";
+
+  src = fetchFromGitHub {
+    owner = "Mic92";
+    repo = pname;
+    rev = version;
+    sha256 = "0mw31n7kqfr7fskkxp58b0wprxj1pj6n1zs6ymvvl548gs5rgn2s";
+  };
+
+  makeWrapperArgs = [
+    "--prefix" "PATH" ":" (lib.makeBinPath [ nix nix-prefetch ])
+  ];
+
+  checkPhase = ''
+    $out/bin/nix-update --help
+  '';
+
+  meta = with lib; {
+    description = "Swiss-knife for updating nix packages";
+    inherit (src.meta) homepage;
+    license = licenses.mit;
+    maintainers = with maintainers; [ mic92 zowoq ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nix/default.nix b/nixpkgs/pkgs/tools/package-management/nix/default.nix
new file mode 100644
index 000000000000..363a7cb04988
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nix/default.nix
@@ -0,0 +1,239 @@
+{ lib, fetchurl, fetchFromGitHub, callPackage
+, storeDir ? "/nix/store"
+, stateDir ? "/nix/var"
+, confDir ? "/etc"
+, boehmgc
+, stdenv, llvmPackages_6
+}:
+
+let
+
+common =
+  { lib, stdenv, fetchpatch, perl, curl, bzip2, sqlite, openssl ? null, xz
+  , bash, coreutils, gzip, gnutar
+  , pkgconfig, boehmgc, perlPackages, libsodium, brotli, boost, editline, nlohmann_json
+  , autoreconfHook, autoconf-archive, bison, flex, libxml2, libxslt, docbook5, docbook_xsl_ns
+  , jq, libarchive, rustc, cargo
+  # Used by tests
+  , gmock
+  , busybox-sandbox-shell
+  , storeDir
+  , stateDir
+  , confDir
+  , withLibseccomp ? lib.any (lib.meta.platformMatch stdenv.hostPlatform) libseccomp.meta.platforms, libseccomp
+  , withAWS ? !enableStatic && (stdenv.isLinux || stdenv.isDarwin), aws-sdk-cpp
+  , enableStatic ? false
+  , name, suffix ? "", src, crates ? null
+
+  }:
+  let
+     sh = busybox-sandbox-shell;
+     nix = stdenv.mkDerivation rec {
+      inherit name src;
+      version = lib.getVersion name;
+
+      is24 = lib.versionAtLeast version "2.4pre";
+      isExactly23 = lib.versionAtLeast version "2.3" && lib.versionOlder version "2.4";
+
+      VERSION_SUFFIX = suffix;
+
+      outputs = [ "out" "dev" "man" "doc" ];
+
+      nativeBuildInputs =
+        [ pkgconfig ]
+        ++ lib.optionals is24 [ autoreconfHook autoconf-archive bison flex libxml2 libxslt
+                                docbook5 docbook_xsl_ns jq gmock ];
+
+      buildInputs =
+        [ curl openssl sqlite xz bzip2 nlohmann_json
+          brotli boost editline
+        ]
+        ++ lib.optional (stdenv.isLinux || stdenv.isDarwin) libsodium
+        ++ lib.optionals is24 [ libarchive rustc cargo ]
+        ++ lib.optional withLibseccomp libseccomp
+        ++ lib.optional withAWS
+            ((aws-sdk-cpp.override {
+              apis = ["s3" "transfer"];
+              customMemoryManagement = false;
+            }).overrideDerivation (args: {
+              patches = args.patches or [] ++ [(fetchpatch {
+                url = "https://github.com/edolstra/aws-sdk-cpp/commit/7d58e303159b2fb343af9a1ec4512238efa147c7.patch";
+                sha256 = "103phn6kyvs1yc7fibyin3lgxz699qakhw671kl207484im55id1";
+              })];
+            }));
+
+      propagatedBuildInputs = [ boehmgc ];
+
+      # Seems to be required when using std::atomic with 64-bit types
+      NIX_LDFLAGS =
+        # need to list libraries individually until
+        # https://github.com/NixOS/nix/commit/3e85c57a6cbf46d5f0fe8a89b368a43abd26daba
+        # is in a release
+          lib.optionalString enableStatic "-lssl -lbrotlicommon -lssh2 -lz -lnghttp2 -lcrypto"
+
+        # need to detect it here until
+        # https://github.com/NixOS/nix/commits/74b4737d8f0e1922ef5314a158271acf81cd79f8
+        # is in a release
+        + lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic";
+
+      preConfigure =
+        # Copy libboost_context so we don't get all of Boost in our closure.
+        # https://github.com/NixOS/nixpkgs/issues/45462
+        lib.optionalString (!enableStatic) ''
+          mkdir -p $out/lib
+          cp -pd ${boost}/lib/{libboost_context*,libboost_thread*,libboost_system*} $out/lib
+          rm -f $out/lib/*.a
+          ${lib.optionalString stdenv.isLinux ''
+            chmod u+w $out/lib/*.so.*
+            patchelf --set-rpath $out/lib:${stdenv.cc.cc.lib}/lib $out/lib/libboost_thread.so.*
+          ''}
+        '' +
+        # Unpack the Rust crates.
+        lib.optionalString is24 ''
+          tar xvf ${crates} -C nix-rust/
+          mv nix-rust/nix-vendored-crates* nix-rust/vendor
+        '' +
+        # For Nix-2.3, patch around an issue where the Nix configure step pulls in the
+        # build system's bash and other utilities when cross-compiling
+        lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform && isExactly23) ''
+          mkdir tmp/
+          substitute corepkgs/config.nix.in tmp/config.nix.in \
+            --subst-var-by bash ${bash}/bin/bash \
+            --subst-var-by coreutils ${coreutils}/bin \
+            --subst-var-by bzip2 ${bzip2}/bin/bzip2 \
+            --subst-var-by gzip ${gzip}/bin/gzip \
+            --subst-var-by xz ${xz}/bin/xz \
+            --subst-var-by tar ${gnutar}/bin/tar \
+            --subst-var-by tr ${coreutils}/bin/tr
+          mv tmp/config.nix.in corepkgs/config.nix.in
+          '';
+
+      configureFlags =
+        [ "--with-store-dir=${storeDir}"
+          "--localstatedir=${stateDir}"
+          "--sysconfdir=${confDir}"
+          "--disable-init-state"
+          "--enable-gc"
+        ]
+        ++ lib.optionals stdenv.isLinux [
+          "--with-sandbox-shell=${sh}/bin/busybox"
+        ]
+        ++ lib.optional (
+            stdenv.hostPlatform != stdenv.buildPlatform && stdenv.hostPlatform ? nix && stdenv.hostPlatform.nix ? system
+        ) ''--with-system=${stdenv.hostPlatform.nix.system}''
+           # RISC-V support in progress https://github.com/seccomp/libseccomp/pull/50
+        ++ lib.optional (!withLibseccomp) "--disable-seccomp-sandboxing";
+
+      makeFlags = [ "profiledir=$(out)/etc/profile.d" ];
+
+      installFlags = [ "sysconfdir=$(out)/etc" ];
+
+      doInstallCheck = true; # not cross
+
+      # socket path becomes too long otherwise
+      preInstallCheck = lib.optional stdenv.isDarwin ''
+        export TMPDIR=$NIX_BUILD_TOP
+      '';
+
+      separateDebugInfo = stdenv.isLinux;
+
+      enableParallelBuilding = true;
+
+      meta = {
+        description = "Powerful package manager that makes package management reliable and reproducible";
+        longDescription = ''
+          Nix is a powerful package manager for Linux and other Unix systems that
+          makes package management reliable and reproducible. It provides atomic
+          upgrades and rollbacks, side-by-side installation of multiple versions of
+          a package, multi-user package management and easy setup of build
+          environments.
+        '';
+        homepage = "https://nixos.org/";
+        license = stdenv.lib.licenses.lgpl2Plus;
+        maintainers = [ stdenv.lib.maintainers.eelco ];
+        platforms = stdenv.lib.platforms.unix;
+        outputsToInstall = [ "out" "man" ];
+      };
+
+      passthru = {
+        perl-bindings = stdenv.mkDerivation {
+          pname = "nix-perl";
+          inherit version;
+
+          inherit src;
+
+          postUnpack = "sourceRoot=$sourceRoot/perl";
+
+          # This is not cross-compile safe, don't have time to fix right now
+          # but noting for future travellers.
+          nativeBuildInputs =
+            [ perl pkgconfig curl nix libsodium boost autoreconfHook autoconf-archive ];
+
+          configureFlags =
+            [ "--with-dbi=${perlPackages.DBI}/${perl.libPrefix}"
+              "--with-dbd-sqlite=${perlPackages.DBDSQLite}/${perl.libPrefix}"
+            ];
+
+          preConfigure = "export NIX_STATE_DIR=$TMPDIR";
+
+          preBuild = "unset NIX_INDENT_MAKE";
+        };
+      };
+    };
+  in nix;
+
+in rec {
+
+  nix = nixStable;
+
+  nixStable = callPackage common (rec {
+    name = "nix-2.3.6";
+    src = fetchurl {
+      url = "https://nixos.org/releases/nix/${name}/${name}.tar.xz";
+      sha256 = "05e90529c9dc9f4bf656cbceae61cafdca49935bb79cd291c8f078a095701d89";
+    };
+
+    inherit storeDir stateDir confDir boehmgc;
+  } // stdenv.lib.optionalAttrs stdenv.cc.isClang {
+    stdenv = llvmPackages_6.stdenv;
+  });
+
+  nixUnstable = lib.lowPrio (callPackage common rec {
+    name = "nix-2.4${suffix}";
+    suffix = "pre7534_b92f58f6";
+
+    src = fetchFromGitHub {
+      owner = "NixOS";
+      repo = "nix";
+      rev = "b92f58f6d9e44f97002d1722bd77bad939824c1c";
+      sha256 = "1p791961y5v04kpz37g6hm98f1ig7i34inxl9dcj3pbqhf5kicxg";
+    };
+
+    crates = fetchurl {
+      url = "https://hydra.nixos.org/build/118797694/download/1/nix-vendored-crates-2.4pre7534_b92f58f6.tar.xz";
+      sha256 = "a4c2612bbd81732bbb899bc0c230e07b16f6b6150ffbb19c4907dedbbc2bf9fc";
+    };
+
+    inherit storeDir stateDir confDir boehmgc;
+  });
+
+  nixFlakes = lib.lowPrio (callPackage common rec {
+    name = "nix-2.4${suffix}";
+    suffix = "pre20200521_00b562c";
+
+    src = fetchFromGitHub {
+      owner = "NixOS";
+      repo = "nix";
+      rev = "00b562c87ec4c3bbe514f5dc1f4d1c41f66f66bf";
+      sha256 = "0s8is2czpkcj1x1kcjqgbnsbbl03w3fwjjiclsd44zh1ij3wb90s";
+    };
+
+    crates = fetchurl {
+      url = "https://hydra.nixos.org/build/118093786/download/1/nix-vendored-crates-2.4pre20200501_941f952.tar.xz";
+      sha256 = "060f4n5srdbb8vsj0m14aqch7im79a4h5g3nrs41p1xc602vhcdl";
+    };
+
+    inherit storeDir stateDir confDir boehmgc;
+  });
+
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-compute/default.nix b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-compute/default.nix
new file mode 100644
index 000000000000..462c9e615a13
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-compute/default.nix
@@ -0,0 +1,37 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-mgmt-common
+}:
+
+buildPythonPackage rec {
+  version = "0.20.1";
+  pname = "azure-mgmt-compute";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "97298fc7f133f1d50a974ed6299151eda494a574b0f7fdf8192a388015c2215a";
+  };
+
+  preConfigure = ''
+    # Patch to make this package work on requests >= 2.11.x
+    # CAN BE REMOVED ON NEXT PACKAGE UPDATE
+    sed -i 's|len(request_content)|str(len(request_content))|' azure/mgmt/compute/computemanagement.py
+  '';
+
+  postInstall = ''
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+  '';
+
+  propagatedBuildInputs = [ azure-mgmt-common ];
+
+  meta = with pkgs.lib; {
+    description = "Microsoft Azure SDK for Python";
+    homepage = "https://azure.microsoft.com/en-us/develop/python/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ olcai ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-network/default.nix b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-network/default.nix
new file mode 100644
index 000000000000..fd47f8895fd4
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-network/default.nix
@@ -0,0 +1,37 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, azure-mgmt-common
+, python
+}:
+
+buildPythonPackage rec {
+  version = "0.20.1";
+  pname = "azure-mgmt-network";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "10vj22h6nxpw0qpvib5x2g6qs5j8z31142icvh4qk8k40fcrs9hx";
+  };
+
+  preConfigure = ''
+    # Patch to make this package work on requests >= 2.11.x
+    # CAN BE REMOVED ON NEXT PACKAGE UPDATE
+    sed -i 's|len(request_content)|str(len(request_content))|' azure/mgmt/network/networkresourceprovider.py
+  '';
+
+  postInstall = ''
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+  '';
+
+  propagatedBuildInputs = [ azure-mgmt-common ];
+
+  meta = with pkgs.lib; {
+    description = "Microsoft Azure SDK for Python";
+    homepage = "https://azure.microsoft.com/en-us/develop/python/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ olcai ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-nspkg/default.nix b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-nspkg/default.nix
new file mode 100644
index 000000000000..aa037b48b4f5
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-nspkg/default.nix
@@ -0,0 +1,25 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, azure-nspkg
+}:
+
+buildPythonPackage rec {
+  version = "1.0.0";
+  pname = "azure-mgmt-nspkg";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "1rq92fj3kvnqkk18596dybw0kvhgscvc6cd8hp1dhy3wrkqnhwmq";
+  };
+
+  propagatedBuildInputs = [ azure-nspkg ];
+
+  meta = with pkgs.lib; {
+    description = "Microsoft Azure SDK for Python";
+    homepage = "https://azure.microsoft.com/en-us/develop/python/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ olcai ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-resource/default.nix b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-resource/default.nix
new file mode 100644
index 000000000000..b60e3aee3402
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-resource/default.nix
@@ -0,0 +1,38 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-mgmt-common
+}:
+
+
+buildPythonPackage rec {
+  version = "0.20.1";
+  pname = "azure-mgmt-resource";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "0slh9qfm5nfacrdm3lid0sr8kwqzgxvrwf27laf9v38kylkfqvml";
+  };
+
+  preConfigure = ''
+    # Patch to make this package work on requests >= 2.11.x
+    # CAN BE REMOVED ON NEXT PACKAGE UPDATE
+    sed -i 's|len(request_content)|str(len(request_content))|' azure/mgmt/resource/resourcemanagement.py
+  '';
+
+  postInstall = ''
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+  '';
+
+  propagatedBuildInputs = [ azure-mgmt-common ];
+
+  meta = with pkgs.lib; {
+    description = "Microsoft Azure SDK for Python";
+    homepage = "https://azure.microsoft.com/en-us/develop/python/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ olcai ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-storage/default.nix b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-storage/default.nix
new file mode 100644
index 000000000000..2e0523bb25cc
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/azure-mgmt-storage/default.nix
@@ -0,0 +1,37 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-mgmt-common
+}:
+
+buildPythonPackage rec {
+  version = "0.20.0";
+  pname = "azure-mgmt-storage";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "16iw7hqhq97vlzfwixarfnirc60l5mz951p57brpcwyylphl3yim";
+  };
+
+  preConfigure = ''
+    # Patch to make this package work on requests >= 2.11.x
+    # CAN BE REMOVED ON NEXT PACKAGE UPDATE
+    sed -i 's|len(request_content)|str(len(request_content))|' azure/mgmt/storage/storagemanagement.py
+  '';
+
+  postInstall = ''
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py
+  '';
+
+  propagatedBuildInputs = [ azure-mgmt-common ];
+
+  meta = with pkgs.lib; {
+    description = "Microsoft Azure SDK for Python";
+    homepage = "https://azure.microsoft.com/en-us/develop/python/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ olcai ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/azure-storage/default.nix b/nixpkgs/pkgs/tools/package-management/nixops/azure-storage/default.nix
new file mode 100644
index 000000000000..6693a7464d43
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/azure-storage/default.nix
@@ -0,0 +1,35 @@
+{ pkgs
+, buildPythonPackage
+, fetchPypi
+, python
+, azure-common
+, futures
+, dateutil
+, requests
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  version = "0.20.3";
+  pname = "azure-storage";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "06bmw6k2000kln5jwk5r9bgcalqbyvqirmdh9gq4s6nb4fv3c0jb";
+  };
+
+  propagatedBuildInputs = [ azure-common dateutil requests ]
+                            ++ pkgs.lib.optionals (!isPy3k) [ futures ];
+
+  postInstall = ''
+    echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
+  '';
+
+  meta = with pkgs.lib; {
+    description = "Microsoft Azure SDK for Python";
+    homepage = "https://azure.microsoft.com/en-us/develop/python/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ olcai ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/default.nix b/nixpkgs/pkgs/tools/package-management/nixops/default.nix
new file mode 100644
index 000000000000..c761a3a47793
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/default.nix
@@ -0,0 +1,9 @@
+{ callPackage, fetchurl }:
+
+callPackage ./generic.nix (rec {
+  version = "1.7";
+  src = fetchurl {
+    url = "https://nixos.org/releases/nixops/nixops-${version}/nixops-${version}.tar.bz2";
+    sha256 = "091c0b5bca57d4aa20be20e826ec161efe3aec9c788fbbcf3806a734a517f0f3";
+  };
+})
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/deps.nix b/nixpkgs/pkgs/tools/package-management/nixops/deps.nix
new file mode 100644
index 000000000000..7da38f83e7fe
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/mattn/go-sqlite3";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-sqlite3";
+      rev = "b4142c444a8941d0d92b0b7103a24df9cd815e42";
+      sha256 = "0xq2y4am8dz9w9aaq24s1npg1sn8pf2gn4nki73ylz2fpjwq9vla";
+    };
+  }
+  {
+    goPackagePath = "github.com/miekg/dns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/miekg/dns";
+      rev = "75229eecb7af00b2736e93b779a78429dcb19472";
+      sha256 = "1vsjy07kkyx11iz4qsihhykac3ddq3ywdgv6bwrv407504f7x6wl";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/generic.nix b/nixpkgs/pkgs/tools/package-management/nixops/generic.nix
new file mode 100644
index 000000000000..59d139d28847
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/generic.nix
@@ -0,0 +1,55 @@
+{ lib, python2Packages, libxslt, docbook_xsl_ns, openssh, cacert, nixopsAzurePackages ? []
+# version args
+, src, version
+, meta ? {}
+}:
+
+python2Packages.buildPythonApplication {
+  name = "nixops-${version}";
+  inherit version src;
+
+  buildInputs = [ libxslt ];
+
+  pythonPath = with python2Packages;
+    [ prettytable
+      boto
+      boto3
+      hetzner
+      libcloud
+      adal
+      # Go back to sqlite once Python 2.7.13 is released
+      pysqlite
+      datadog
+      digital-ocean
+      libvirt
+      typing
+    ] ++ nixopsAzurePackages;
+
+  checkPhase =
+  # Ensure, that there are no (python) import errors
+  ''
+    SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt \
+    HOME=$(pwd) \
+      $out/bin/nixops --version
+  '';
+
+  postInstall = ''
+    make -C doc/manual install nixops.1 docbookxsl=${docbook_xsl_ns}/xml/xsl/docbook \
+      docdir=$out/share/doc/nixops mandir=$out/share/man
+
+    mkdir -p $out/share/nix/nixops
+    cp -av "nix/"* $out/share/nix/nixops
+
+    # Add openssh to nixops' PATH. On some platforms, e.g. CentOS and RHEL
+    # the version of openssh is causing errors when have big networks (40+)
+    wrapProgram $out/bin/nixops --prefix PATH : "${openssh}/bin"
+  '';
+
+  meta = {
+    homepage = "https://github.com/NixOS/nixops";
+    description = "NixOS cloud provisioning and deployment tool";
+    maintainers = with lib.maintainers; [ aminechikhaoui eelco rob domenkozar ];
+    platforms = lib.platforms.unix;
+    license = lib.licenses.lgpl3;
+  } // meta;
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/nixops-dns.nix b/nixpkgs/pkgs/tools/package-management/nixops/nixops-dns.nix
new file mode 100644
index 000000000000..cf633a65ca53
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/nixops-dns.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildGoPackage
+, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "nixops-dns";
+  version = "1.0";
+
+  goDeps = ./deps.nix;
+  goPackagePath = "github.com/kamilchm/nixops-dns";
+
+  src = fetchFromGitHub {
+    owner = "kamilchm";
+    repo = "nixops-dns";
+    rev = "v${version}";
+    sha256 = "1fyqwk2knrv40zpf71a56bjyaycr3p6fzrqq7gaan056ydy83cai";
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/kamilchm/nixops-dns/";
+    description = "DNS server for resolving NixOps machines";
+    license = licenses.mit;
+    maintainers = with maintainers; [ kamilchm sorki ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/nixops-v1_6_1.nix b/nixpkgs/pkgs/tools/package-management/nixops/nixops-v1_6_1.nix
new file mode 100644
index 000000000000..dc0c733ca7b1
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/nixops-v1_6_1.nix
@@ -0,0 +1,32 @@
+{ callPackage, newScope, pkgs, fetchurl }:
+
+callPackage ./generic.nix (rec {
+  version = "1.6.1";
+  src = fetchurl {
+    url = "https://nixos.org/releases/nixops/nixops-${version}/nixops-${version}.tar.bz2";
+    sha256 = "0lfx5fhyg3z6725ydsk0ibg5qqzp5s0x9nbdww02k8s307axiah3";
+  };
+  nixopsAzurePackages = with python2Packages; [
+    azure-storage
+    azure-mgmt-compute
+    azure-mgmt-network
+    azure-mgmt-resource
+    azure-mgmt-storage
+  ];
+  # nixops is incompatible with the most recent versions of listed
+  # azure-mgmt-* packages, therefore we are pinning them to
+  # package-private versions, so that they don't get trampled by
+  # updates.
+  # see
+  # https://github.com/NixOS/nixops/issues/1065
+  python2Packages = pkgs.python2Packages.override {
+    overrides = (self: super: let callPackage = newScope self; in {
+      azure-mgmt-compute = callPackage ./azure-mgmt-compute { };
+      azure-mgmt-network = callPackage ./azure-mgmt-network { };
+      azure-mgmt-nspkg = callPackage ./azure-mgmt-nspkg { };
+      azure-mgmt-resource = callPackage ./azure-mgmt-resource { };
+      azure-mgmt-storage = callPackage ./azure-mgmt-storage { };
+      azure-storage = callPackage ./azure-storage { };
+    });
+  };
+})
diff --git a/nixpkgs/pkgs/tools/package-management/nixops/unstable.nix b/nixpkgs/pkgs/tools/package-management/nixops/unstable.nix
new file mode 100644
index 000000000000..94975807dea6
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixops/unstable.nix
@@ -0,0 +1,13 @@
+{ callPackage, fetchurl }:
+
+# To upgrade pick the hydra job of the nixops revision that you want to upgrade
+# to from: https://hydra.nixos.org/job/nixops/master/tarball
+# Then copy the URL to the tarball.
+
+callPackage ./generic.nix (rec {
+  version = "1.7pre2764_932bf43";
+  src = fetchurl {
+    url = "https://hydra.nixos.org/build/92372343/download/2/nixops-${version}.tar.bz2";
+    sha256 = "f35bf81bf2805473ea54248d0ee92d163d00a1992f3f75d17e8cf430db1f9919";
+  };
+})
diff --git a/nixpkgs/pkgs/tools/package-management/nixpkgs-review/default.nix b/nixpkgs/pkgs/tools/package-management/nixpkgs-review/default.nix
new file mode 100644
index 000000000000..922546009fca
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixpkgs-review/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, python3
+, fetchFromGitHub
+, nix
+, git
+, lib
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "nixpkgs-review";
+  version = "2.3.1";
+
+  src = fetchFromGitHub {
+    owner = "Mic92";
+    repo = "nixpkgs-review";
+    rev = version;
+    sha256 = "1v988jsxx2r82q6mf3503130cny088hin2as00yi26jzxjkrjcli";
+  };
+
+  makeWrapperArgs = [
+    "--prefix" "PATH" ":" (lib.makeBinPath [ nix git ])
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Review pull-requests on https://github.com/NixOS/nixpkgs";
+    homepage = "https://github.com/Mic92/nixpkgs-review";
+    license = licenses.mit;
+    maintainers = [ maintainers.mic92 ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixui/default.nix b/nixpkgs/pkgs/tools/package-management/nixui/default.nix
new file mode 100644
index 000000000000..12bf229580f6
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixui/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, pkgs, fetchgit, nix, node_webkit, makeDesktopItem
+, writeScript }:
+let
+  version = "0.2.1";
+  src = fetchgit {
+    url = "git://github.com/matejc/nixui.git";
+    rev = "845a5f4a33f1d0c509c727c130d0792a5b450a38";
+    sha256 = "1ay3i4lgzs3axbby06l4vvspxi0aa9pwiil84qj0dqq1jb6isara";
+  };
+  nixui = (import ./nixui.nix {
+    inherit pkgs;
+    inherit (stdenv.hostPlatform) system;
+  })."nixui-git://github.com/matejc/nixui.git#0.2.1";
+  script = writeScript "nixui" ''
+    #! ${stdenv.shell}
+    export PATH="${nix}/bin:\$PATH"
+    ${node_webkit}/bin/nw ${nixui}/lib/node_modules/nixui/
+  '';
+  desktop = makeDesktopItem {
+    name = "nixui";
+    exec = script;
+    icon = "${nixui}/lib/node_modules/nixui/img/128.png";
+    desktopName = "NixUI";
+    genericName = "NixUI";
+  };
+in
+stdenv.mkDerivation {
+  pname = "nixui";
+  inherit version src;
+  installPhase = ''
+    mkdir -p $out/bin
+    ln -s ${script} $out/bin/nixui
+
+    mkdir -p $out/share/applications
+    ln -s ${desktop}/share/applications/* $out/share/applications/
+  '';
+  meta = {
+    description = "NodeWebkit user interface for Nix";
+    homepage = "https://github.com/matejc/nixui";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = [ stdenv.lib.maintainers.matejc ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixui/generate.sh b/nixpkgs/pkgs/tools/package-management/nixui/generate.sh
new file mode 100755
index 000000000000..fcb610c9d3b1
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixui/generate.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p nodePackages.node2nix
+
+exec node2nix --nodejs-10 -i pkg.json -c nixui.nix -e ../../../development/node-packages/node-env.nix --no-copy-node-env
diff --git a/nixpkgs/pkgs/tools/package-management/nixui/nixui.nix b/nixpkgs/pkgs/tools/package-management/nixui/nixui.nix
new file mode 100644
index 000000000000..e306e49c8498
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixui/nixui.nix
@@ -0,0 +1,17 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{pkgs ? import <nixpkgs> {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-10_x"}:
+
+let
+  nodeEnv = import ../../../development/node-packages/node-env.nix {
+    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
+    inherit nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+in
+import ./node-packages.nix {
+  inherit (pkgs) fetchurl fetchgit;
+  inherit nodeEnv;
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/tools/package-management/nixui/node-packages.nix b/nixpkgs/pkgs/tools/package-management/nixui/node-packages.nix
new file mode 100644
index 000000000000..b5b42e9164a2
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixui/node-packages.nix
@@ -0,0 +1,108 @@
+# This file has been generated by node2nix 1.8.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "async-0.2.10" = {
+      name = "async";
+      packageName = "async";
+      version = "0.2.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.2.10.tgz";
+        sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
+      };
+    };
+    "binary-search-tree-0.2.4" = {
+      name = "binary-search-tree";
+      packageName = "binary-search-tree";
+      version = "0.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.4.tgz";
+        sha1 = "14fe106366a59ca8efb68c0ae30c36aaff0cd510";
+      };
+    };
+    "isnumber-1.0.0" = {
+      name = "isnumber";
+      packageName = "isnumber";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isnumber/-/isnumber-1.0.0.tgz";
+        sha1 = "0e3f9759b581d99dd85086f0ec2a74909cfadd01";
+      };
+    };
+    "mkdirp-0.3.5" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz";
+        sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
+      };
+    };
+    "nedb-1.0.2" = {
+      name = "nedb";
+      packageName = "nedb";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nedb/-/nedb-1.0.2.tgz";
+        sha1 = "309f10ba29f2002f74a92fb870b8a53ba2131593";
+      };
+    };
+    "underscore-1.4.4" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz";
+        sha1 = "61a6a32010622afa07963bf325203cf12239d604";
+      };
+    };
+    "underscore-1.9.2" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz";
+        sha512 = "0fpcm4n2qlycl50j6k3fv7baybnzf1wbsm2ng0vwfsdi40fyvsvvl0k1i427hgpknhj5hbcwff3swckw6wx96kw4dgwvldi56v6lzqg";
+      };
+    };
+  };
+in
+{
+  "nixui-git://github.com/matejc/nixui.git#0.2.1" = nodeEnv.buildNodePackage {
+    name = "nixui";
+    packageName = "nixui";
+    version = "0.2.1";
+    src = fetchgit {
+      url = "git://github.com/matejc/nixui.git";
+      rev = "845a5f4a33f1d0c509c727c130d0792a5b450a38";
+      sha256 = "2a2b1dcd9201e306242688c6c86f520ac47ef5de841ae0d7ea6ae8ff2889c3ab";
+    };
+    dependencies = [
+      sources."async-0.2.10"
+      (sources."binary-search-tree-0.2.4" // {
+        dependencies = [
+          sources."underscore-1.4.4"
+        ];
+      })
+      sources."isnumber-1.0.0"
+      sources."mkdirp-0.3.5"
+      (sources."nedb-1.0.2" // {
+        dependencies = [
+          sources."underscore-1.4.4"
+        ];
+      })
+      sources."underscore-1.9.2"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "nix-env frontend written with Polymer";
+      homepage = "https://github.com/matejc/nixui";
+      license = "Apache-2.0";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nixui/pkg.json b/nixpkgs/pkgs/tools/package-management/nixui/pkg.json
new file mode 100644
index 000000000000..551df4f1b1c9
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nixui/pkg.json
@@ -0,0 +1,3 @@
+[
+  { "nixui": "git://github.com/matejc/nixui.git#0.2.1" }
+]
diff --git a/nixpkgs/pkgs/tools/package-management/nox/default.nix b/nixpkgs/pkgs/tools/package-management/nox/default.nix
new file mode 100644
index 000000000000..bf98f5400b8e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nox/default.nix
@@ -0,0 +1,32 @@
+{ lib, python3Packages, fetchurl, git }:
+
+python3Packages.buildPythonApplication rec {
+  name = "nox-${version}";
+  version = "0.0.6";
+  namePrefix = "";
+
+  src = fetchurl {
+    url = "mirror://pypi/n/nix-nox/nix-nox-${version}.tar.gz";
+    sha256 = "1qcbhdnhdhhv7q6cqdgv0q55ic8fk18526zn2yb12x9r1s0lfp9z";
+  };
+
+  patches = [ ./nox-review-wip.patch ];
+
+  buildInputs = [ python3Packages.pbr git ];
+
+  propagatedBuildInputs = with python3Packages; [
+      dogpile_cache
+      click
+      requests
+      characteristic
+      setuptools
+    ];
+
+  meta = {
+    homepage = "https://github.com/madjar/nox";
+    description = "Tools to make nix nicer to use";
+    maintainers = [ lib.maintainers.madjar ];
+    license = lib.licenses.mit;
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/nox/nox-review-wip.patch b/nixpkgs/pkgs/tools/package-management/nox/nox-review-wip.patch
new file mode 100644
index 000000000000..e82dc7a2c266
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/nox/nox-review-wip.patch
@@ -0,0 +1,11 @@
+--- a/nox/review.py	2017-09-23 04:04:37.322484753 +0200
++++ a/nox/review.py	2017-09-23 04:18:31.582692181 +0200
+@@ -84,7 +84,7 @@
+     ctx.obj['dry_run'] = dry_run
+ 
+ 
+-@cli.command(short_help='difference between working tree and a commit')
++@cli.command('wip', short_help='difference between working tree and a commit')
+ @click.option('--against', default='HEAD')
+ @click.pass_context
+ @setup_nixpkgs_config
diff --git a/nixpkgs/pkgs/tools/package-management/opkg-utils/default.nix b/nixpkgs/pkgs/tools/package-management/opkg-utils/default.nix
new file mode 100644
index 000000000000..373ebbeb02f8
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/opkg-utils/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchgit }:
+
+stdenv.mkDerivation {
+  name = "opkg-utils-20141030";
+
+  # No releases, only a git tree
+  src = fetchgit {
+    url = "git://git.yoctoproject.org/opkg-utils";
+    rev = "762d9dadce548108d4204c2113461a7dd6f57e60";
+    sha256 = "09jfkq2p5wv0ifxkw62f4m7pkvpaalh74j2skymi8lh4268krfwz";
+  };
+
+  preBuild = ''
+    makeFlagsArray+=(PREFIX="$out")
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Helper scripts for use with the opkg package manager";
+    homepage = "http://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils/";
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/opkg/default.nix b/nixpkgs/pkgs/tools/package-management/opkg/default.nix
new file mode 100644
index 000000000000..c097674135c7
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/opkg/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, curl, gpgme, libarchive, bzip2, lzma, attr, acl, libxml2
+, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  version = "0.4.2";
+  pname = "opkg";
+  src = fetchurl {
+    url = "https://downloads.yoctoproject.org/releases/opkg/opkg-${version}.tar.gz";
+    sha256 = "01p1a7hw9q9ixfk01djyy9axs71z1x9dkdnqz7zysmrlqi97i246";
+  };
+
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  buildInputs = [ curl gpgme libarchive bzip2 lzma attr acl libxml2 ];
+
+  meta = with stdenv.lib; {
+    description = "A lightweight package management system based upon ipkg";
+    homepage = "https://git.yoctoproject.org/cgit/cgit.cgi/opkg/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/packagekit/default.nix b/nixpkgs/pkgs/tools/package-management/packagekit/default.nix
new file mode 100644
index 000000000000..05877979e9c5
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/packagekit/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchFromGitHub, lib
+, intltool, glib, pkgconfig, polkit, python3, sqlite
+, gobject-introspection, vala, gtk-doc, autoreconfHook, autoconf-archive
+, nix, enableNixBackend ? false, boost
+, enableCommandNotFound ? false
+, enableBashCompletion ? false, bash-completion ? null
+, enableSystemd ? stdenv.isLinux, systemd }:
+
+stdenv.mkDerivation rec {
+  pname = "packagekit";
+  version = "1.1.13";
+
+  outputs = [ "out" "dev" ];
+
+  src = fetchFromGitHub {
+    owner = "hughsie";
+    repo = "PackageKit";
+    rev = "PACKAGEKIT_${lib.replaceStrings ["."] ["_"] version}";
+    sha256 = "0xmgac27p5z8wr56yw3cqhywnlvaf8kvyv1g0nzxnq167xj5vxam";
+  };
+
+  buildInputs = [ glib polkit python3 gobject-introspection ]
+                  ++ lib.optional enableSystemd systemd
+                  ++ lib.optional enableBashCompletion bash-completion;
+  propagatedBuildInputs =
+    [ sqlite boost ]
+    ++ lib.optional enableNixBackend nix;
+  nativeBuildInputs = [ vala intltool pkgconfig autoreconfHook autoconf-archive gtk-doc ];
+
+  preAutoreconf = ''
+    gtkdocize
+    intltoolize
+  '';
+
+  configureFlags = [
+    (if enableSystemd then "--enable-systemd" else "--disable-systemd")
+    "--disable-dummy"
+    "--disable-cron"
+    "--enable-introspection"
+    "--disable-offline-update"
+    "--localstatedir=/var"
+    "--sysconfdir=/etc"
+    "--with-dbus-sys=${placeholder "out"}/share/dbus-1/system.d"
+    "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
+    "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user"
+  ]
+  ++ lib.optional enableNixBackend "--enable-nix"
+  ++ lib.optional (!enableBashCompletion) "--disable-bash-completion"
+  ++ lib.optional (!enableCommandNotFound) "--disable-command-not-found";
+
+  enableParallelBuilding = true;
+
+  installFlags = [
+    "sysconfdir=${placeholder "out"}/etc"
+    "localstatedir=\${TMPDIR}"
+  ];
+
+  meta = with lib; {
+    description = "System to facilitate installing and updating packages";
+    longDescription = ''
+      PackageKit is a system designed to make installing and updating software
+      on your computer easier. The primary design goal is to unify all the
+      software graphical tools used in different distributions, and use some of
+      the latest technology like PolicyKit. The actual nuts-and-bolts distro
+      tool (dnf, apt, etc) is used by PackageKit using compiled and scripted
+      helpers. PackageKit isn't meant to replace these tools, instead providing
+      a common set of abstractions that can be used by standard GUI and text
+      mode package managers.
+    '';
+    homepage = "http://www.packagekit.org/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ matthewbauer ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/packagekit/qt.nix b/nixpkgs/pkgs/tools/package-management/packagekit/qt.nix
new file mode 100644
index 000000000000..987c834f505d
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/packagekit/qt.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig
+, qttools, packagekit }:
+
+stdenv.mkDerivation rec {
+  pname = "packagekit-qt";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner  = "hughsie";
+    repo   = "PackageKit-Qt";
+    rev    = "v${version}";
+    sha256 = "1ls6mn9abpwzw5wjgmslc5h9happj3516y1q67imppczk8g9h2yk";
+  };
+
+  buildInputs = [ packagekit ];
+
+  nativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  enableParallelBuilding = true;
+
+  meta = packagekit.meta // {
+    description = "System to facilitate installing and updating packages - Qt";
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/pacman/default.nix b/nixpkgs/pkgs/tools/package-management/pacman/default.nix
new file mode 100644
index 000000000000..3ca55ddbbf29
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/pacman/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchurl, pkgconfig, m4, perl, libarchive, openssl, zlib, bzip2,
+lzma, curl, runtimeShell }:
+
+stdenv.mkDerivation rec {
+  pname = "pacman";
+  version = "5.2.1";
+
+  src = fetchurl {
+    url = "https://sources.archlinux.org/other/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "04pkb8qvkldrayfns8cx4fljl4lyys1dqvlf7b5kkl2z4q3w8c0r";
+  };
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    # trying to build docs fails with a2x errors, unable to fix through asciidoc
+    "--disable-doc"
+
+    "--sysconfdir=/etc"
+    "--localstatedir=/var"
+    "--with-scriptlet-shell=${runtimeShell}"
+  ];
+
+  installFlags = [ "sysconfdir=${placeholder "out"}/etc" ];
+
+  nativeBuildInputs = [ pkgconfig m4 ];
+  buildInputs = [ curl perl libarchive openssl zlib bzip2 lzma ];
+
+  postFixup = ''
+    substituteInPlace $out/bin/repo-add \
+      --replace bsdtar "${libarchive}/bin/bsdtar"
+  '';
+
+  meta = with lib; {
+    description = "A simple library-based package manager";
+    homepage = "https://www.archlinux.org/pacman/";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ mt-caret ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/protontricks/default.nix b/nixpkgs/pkgs/tools/package-management/protontricks/default.nix
new file mode 100644
index 000000000000..fe7f41c4d08a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/protontricks/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, lib, buildPythonApplication, fetchFromGitHub
+, setuptools_scm, vdf
+, wine, winetricks, zenity
+, pytest
+}:
+
+buildPythonApplication rec {
+  pname = "protontricks";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "Matoking";
+    repo = pname;
+    rev = version;
+    sha256 = "083ncg6yjd7s3dx91zd52w166x709mnxknwwr78ggka8d8vlyi0b";
+  };
+
+  # Fix interpreter in mock run.sh for tests
+  postPatch = ''
+    substituteInPlace tests/conftest.py \
+      --replace '#!/bin/bash' '#!${stdenv.shell}' \
+  '';
+
+  preBuild = ''
+    export SETUPTOOLS_SCM_PRETEND_VERSION="${version}"
+  '';
+
+  nativeBuildInputs = [ setuptools_scm ];
+  propagatedBuildInputs = [ vdf ];
+
+  # The wine install shipped with Proton must run under steam's
+  # chrootenv, but winetricks and zenity break when running under
+  # it. See https://github.com/NixOS/nix/issues/902.
+  #
+  # The current workaround is to use wine from nixpkgs
+  makeWrapperArgs = [
+    "--set STEAM_RUNTIME 0"
+    "--set-default WINE ${wine}/bin/wine"
+    "--set-default WINESERVER ${wine}/bin/wineserver"
+    "--prefix PATH : ${lib.makeBinPath [ winetricks zenity ]}"
+  ];
+
+  checkInputs = [ pytest ];
+  checkPhase = "pytest";
+
+  meta = with stdenv.lib; {
+    description = "A simple wrapper for running Winetricks commands for Proton-enabled games";
+    homepage = "https://github.com/Matoking/protontricks";
+    license = licenses.gpl3;
+    platforms = with platforms; linux;
+    maintainers = with maintainers; [ metadark ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/python2nix/default.nix b/nixpkgs/pkgs/tools/package-management/python2nix/default.nix
new file mode 100644
index 000000000000..675ec61f4db9
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/python2nix/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+pythonPackages.buildPythonApplication {
+  name = "python2nix-20140927";
+ 
+  src = fetchFromGitHub {
+    owner = "proger";
+    repo = "python2nix";
+    rev = "84e3a5bbe82e5d9d694d6db8dabf73def4ac917b";
+    sha256 = "022gr0gw6azfi3iq4ggb3fhkw2jljs6n5rncn45hb5liwakigj8i";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ requests pip setuptools ];
+
+  meta = with stdenv.lib; {
+    maintainers = [ maintainers.domenkozar ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/reuse/default.nix b/nixpkgs/pkgs/tools/package-management/reuse/default.nix
new file mode 100644
index 000000000000..b51f0d061a9f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/reuse/default.nix
@@ -0,0 +1,35 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  pname = "reuse";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "fsfe";
+    repo = "reuse-tool";
+    rev = "v${version}";
+    sha256 = "08dzvrv28ylbq1bm16lakwzyqq530fcbrl71k33zyb84mvgszy97";
+  };
+
+  propagatedBuildInputs = [
+    binaryornot
+    boolean-py
+    debian
+    jinja2
+    license-expression
+    requests
+    setuptools
+    setuptools_scm
+  ];
+
+  checkInputs = [ pytest ];
+
+  meta = with lib; {
+    description = "A tool for compliance with the REUSE Initiative recommendations";
+    homepage = "https://github.com/fsfe/reuse-tool";
+    license = with licenses; [ asl20 cc-by-sa-40 cc0 gpl3Plus ];
+    maintainers = [ maintainers.FlorianFranzen ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/rpm/default.nix b/nixpkgs/pkgs/tools/package-management/rpm/default.nix
new file mode 100644
index 000000000000..fee282de52fc
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/rpm/default.nix
@@ -0,0 +1,70 @@
+{ stdenv, lib
+, pkgconfig, autoreconfHook
+, fetchurl, cpio, zlib, bzip2, file, elfutils, libbfd, libarchive, nspr, nss, popt, db, xz, python, lua
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rpm";
+  version = "4.15.1";
+
+  src = fetchurl {
+    url = "http://ftp.rpm.org/releases/rpm-${lib.versions.majorMinor version}.x/rpm-${version}.tar.bz2";
+    sha256 = "0c6jwail90fhha3bpx70w4a2i8ycxwvnx6zwxm121l8wc3wlbvyx";
+  };
+
+  outputs = [ "out" "dev" "man" ];
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ cpio zlib bzip2 file libarchive nspr nss db xz python lua ];
+
+  # rpm/rpmlib.h includes popt.h, and then the pkg-config file mentions these as linkage requirements
+  propagatedBuildInputs = [ popt nss db bzip2 libarchive libbfd ]
+    ++ stdenv.lib.optional stdenv.isLinux elfutils;
+
+  NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss";
+
+  configureFlags = [
+    "--with-external-db"
+    "--with-lua"
+    "--enable-python"
+    "--localstatedir=/var"
+    "--sharedstatedir=/com"
+  ];
+
+  postPatch = ''
+    # For Python3, the original expression evaluates as 'python3.4' but we want 'python3.4m' here
+    substituteInPlace configure.ac --replace 'python''${PYTHON_VERSION}' ${python.executable}
+
+    substituteInPlace Makefile.am --replace '@$(MKDIR_P) $(DESTDIR)$(localstatedir)/tmp' ""
+  '';
+
+  preFixup = ''
+    # Don't keep a reference to RPM headers or manpages
+    for f in $out/lib/rpm/platform/*/macros; do
+      substituteInPlace $f --replace "$dev" "/rpm-dev-path-was-here"
+      substituteInPlace $f --replace "$man" "/rpm-man-path-was-here"
+    done
+
+    # Avoid macros like '%__ld' pointing to absolute paths
+    for tool in ld nm objcopy objdump strip; do
+      sed -i $out/lib/rpm/macros -e "s/^%__$tool.*/%__$tool $tool/"
+    done
+
+    # Avoid helper scripts pointing to absolute paths
+    for tool in find-provides find-requires; do
+      sed -i $out/lib/rpm/$tool -e "s#/usr/lib/rpm/#$out/lib/rpm/#"
+    done
+
+    # symlinks produced by build are incorrect
+    ln -sf $out/bin/{rpm,rpmquery}
+    ln -sf $out/bin/{rpm,rpmverify}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://www.rpm.org/";
+    license = licenses.gpl2;
+    description = "The RPM Package Manager";
+    maintainers = with maintainers; [ copumpkin ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/package-management/xbps/cert-paths.patch b/nixpkgs/pkgs/tools/package-management/xbps/cert-paths.patch
new file mode 100644
index 000000000000..569161d9f2e4
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/xbps/cert-paths.patch
@@ -0,0 +1,25 @@
+From d13a550dbc8876c35b912fe3e0eadd45b278be27 Mon Sep 17 00:00:00 2001
+From: Will Dietz <w@wdtz.org>
+Date: Fri, 18 May 2018 09:51:48 -0500
+Subject: [PATCH] add certificate path fallbacks
+
+---
+ lib/fetch/common.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/lib/fetch/common.c b/lib/fetch/common.c
+index 94fb2651..79b50115 100644
+--- a/lib/fetch/common.c
++++ b/lib/fetch/common.c
+@@ -1012,6 +1012,8 @@ fetch_ssl_setup_peer_verification(SSL_CTX *ctx, int verbose)
+ 
+ 	if (getenv("SSL_NO_VERIFY_PEER") == NULL) {
+ 		ca_cert_file = getenv("SSL_CA_CERT_FILE");
++		ca_cert_file = ca_cert_file ? ca_cert_file : getenv("NIX_SSL_CERT_FILE");
++		ca_cert_file = ca_cert_file ? ca_cert_file : "/etc/ssl/certs/ca-certificates.crt";
+ 		ca_cert_path = getenv("SSL_CA_CERT_PATH") != NULL ?
+ 		    getenv("SSL_CA_CERT_PATH") : X509_get_default_cert_dir();
+ 		if (verbose) {
+-- 
+2.17.0
+
diff --git a/nixpkgs/pkgs/tools/package-management/xbps/default.nix b/nixpkgs/pkgs/tools/package-management/xbps/default.nix
new file mode 100644
index 000000000000..108b64bd8b2f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/package-management/xbps/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, pkgconfig, which, zlib, openssl, libarchive }:
+
+stdenv.mkDerivation rec {
+  pname = "xbps";
+  version = "0.59.1";
+
+  src = fetchFromGitHub {
+    owner = "void-linux";
+    repo = "xbps";
+    rev = version;
+    sha256 = "0pab3xf97y4wqlyrb92zxd3cfsrbnlx6pssbw4brgwcxccw9jrhy";
+  };
+
+  nativeBuildInputs = [ pkgconfig which ];
+
+  buildInputs = [ zlib openssl libarchive ];
+
+  patches = [ ./cert-paths.patch ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=unused-result";
+
+  postPatch = ''
+    # fix unprefixed ranlib (needed on cross)
+    substituteInPlace lib/Makefile \
+      --replace 'SILENT}ranlib ' 'SILENT}$(RANLIB) '
+
+    # Don't try to install keys to /var/db/xbps, put in $out/share for now
+    substituteInPlace data/Makefile \
+      --replace '$(DESTDIR)/$(DBDIR)' '$(DESTDIR)/$(SHAREDIR)'
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/void-linux/xbps";
+    description = "The X Binary Package System";
+    platforms = platforms.linux; # known to not work on Darwin, at least
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}