summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/strings.nix9
-rw-r--r--lib/tests/misc.nix2
-rw-r--r--maintainers/maintainer-list.nix10
-rw-r--r--nixos/modules/config/networking.nix61
-rw-r--r--nixos/modules/installer/cd-dvd/installation-cd-minimal.nix2
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/profiles/base.nix5
-rw-r--r--nixos/modules/profiles/installation-device.nix3
-rw-r--r--nixos/modules/programs/wavemon.nix28
-rw-r--r--nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix83
-rw-r--r--nixos/modules/system/boot/systemd.nix12
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/rsyslogd.nix37
-rw-r--r--pkgs/applications/altcoins/litecoin.nix4
-rw-r--r--pkgs/applications/gis/openorienteering-mapper/default.nix4
-rw-r--r--pkgs/applications/graphics/krita/default.nix4
-rw-r--r--pkgs/applications/misc/electrum/default.nix2
-rw-r--r--pkgs/applications/misc/mysql-workbench/default.nix4
-rw-r--r--pkgs/applications/misc/nnn/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/vivaldi/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix4
-rw-r--r--pkgs/applications/networking/mailreaders/inboxer/default.nix4
-rw-r--r--pkgs/applications/networking/sniffers/wireshark/default.nix11
-rw-r--r--pkgs/applications/networking/znc/default.nix9
-rw-r--r--pkgs/applications/networking/znc/modules.nix2
-rw-r--r--pkgs/applications/science/math/sage/sage-src.nix7
-rw-r--r--pkgs/applications/science/math/sage/sage-wrapper.nix2
-rw-r--r--pkgs/applications/science/math/sage/sage.nix2
-rw-r--r--pkgs/applications/video/mkvtoolnix/default.nix4
-rw-r--r--pkgs/applications/video/vlc/default.nix14
-rw-r--r--pkgs/applications/virtualization/containerd/default.nix4
-rw-r--r--pkgs/build-support/rust/build-rust-crate/build-crate.nix29
-rw-r--r--pkgs/build-support/rust/build-rust-crate/default.nix16
-rw-r--r--pkgs/build-support/rust/build-rust-crate/helpers.nix24
-rw-r--r--pkgs/build-support/rust/carnix.nix1685
-rw-r--r--pkgs/build-support/rust/crates-io.nix2050
-rw-r--r--pkgs/development/compilers/dotnet/sdk/default.nix6
-rw-r--r--pkgs/development/compilers/ponyc/default.nix4
-rw-r--r--pkgs/development/interpreters/bats/default.nix7
-rw-r--r--pkgs/development/interpreters/spidermonkey/52.nix10
-rw-r--r--pkgs/development/libraries/arb/default.nix4
-rw-r--r--pkgs/development/libraries/gtest/default.nix21
-rw-r--r--pkgs/development/libraries/libcouchbase/default.nix4
-rw-r--r--pkgs/development/libraries/libqmatrixclient/default.nix4
-rw-r--r--pkgs/development/libraries/libressl/default.nix4
-rw-r--r--pkgs/development/libraries/libsolv/default.nix4
-rw-r--r--pkgs/development/libraries/libversion/default.nix4
-rw-r--r--pkgs/development/libraries/matio/default.nix4
-rw-r--r--pkgs/development/libraries/nanomsg/default.nix4
-rw-r--r--pkgs/development/libraries/nix-plugins/default.nix4
-rw-r--r--pkgs/development/libraries/pupnp/default.nix5
-rw-r--r--pkgs/development/libraries/sfml/default.nix15
-rw-r--r--pkgs/development/libraries/wxwidgets/3.0/mac.nix56
-rw-r--r--pkgs/development/misc/loc/default.nix4
-rw-r--r--pkgs/development/python-modules/aiohttp/default.nix4
-rw-r--r--pkgs/development/python-modules/aniso8601/default.nix4
-rw-r--r--pkgs/development/python-modules/async_timeout/default.nix4
-rw-r--r--pkgs/development/python-modules/autobahn/default.nix4
-rw-r--r--pkgs/development/python-modules/djangorestframework/default.nix4
-rw-r--r--pkgs/development/python-modules/grip/default.nix4
-rw-r--r--pkgs/development/python-modules/phonenumbers/default.nix4
-rw-r--r--pkgs/development/python-modules/praw/default.nix4
-rw-r--r--pkgs/development/python-modules/pyslurm/default.nix6
-rw-r--r--pkgs/development/python-modules/txaio/default.nix4
-rw-r--r--pkgs/development/tools/go-junit-report/default.nix24
-rw-r--r--pkgs/development/tools/jbake/default.nix4
-rw-r--r--pkgs/development/tools/kind/default.nix26
-rw-r--r--pkgs/development/tools/minizinc/default.nix4
-rw-r--r--pkgs/development/tools/pipenv/default.nix4
-rw-r--r--pkgs/development/tools/rust/cbindgen/default.nix4
-rw-r--r--pkgs/development/tools/scalafix/default.nix43
-rw-r--r--pkgs/misc/emulators/higan/default.nix2
-rw-r--r--pkgs/os-specific/darwin/cf-private/default.nix16
-rw-r--r--pkgs/os-specific/darwin/goku/default.nix27
-rw-r--r--pkgs/os-specific/linux/alsa-tools/default.nix4
-rw-r--r--pkgs/os-specific/linux/alsa-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/open-isns/default.nix4
-rw-r--r--pkgs/servers/atlassian/jira.nix4
-rw-r--r--pkgs/servers/computing/slurm/default.nix4
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix60
-rw-r--r--pkgs/servers/home-assistant/default.nix6
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rw-r--r--pkgs/servers/http/lighttpd/default.nix4
-rw-r--r--pkgs/servers/mail/nullmailer/default.nix4
-rw-r--r--pkgs/servers/mail/rspamd/default.nix4
-rw-r--r--pkgs/servers/nosql/neo4j/default.nix4
-rw-r--r--pkgs/servers/sql/mysql/5.7.x.nix4
-rw-r--r--pkgs/servers/sql/postgresql/pgroonga/default.nix4
-rw-r--r--pkgs/servers/web-apps/matomo/default.nix4
-rw-r--r--pkgs/tools/misc/snapper/default.nix12
-rw-r--r--pkgs/tools/networking/urlwatch/default.nix4
-rw-r--r--pkgs/tools/networking/wireguard-tools/default.nix4
-rw-r--r--pkgs/tools/package-management/nix-review/default.nix4
-rw-r--r--pkgs/tools/package-management/nix/default.nix8
-rw-r--r--pkgs/tools/security/trufflehog/default.nix4
-rw-r--r--pkgs/tools/system/hwinfo/default.nix4
-rw-r--r--pkgs/tools/system/syslog-ng/default.nix4
-rw-r--r--pkgs/tools/text/icdiff/default.nix4
-rw-r--r--pkgs/tools/text/miller/default.nix4
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix19
-rw-r--r--pkgs/top-level/darwin-packages.nix6
102 files changed, 2986 insertions, 1717 deletions
diff --git a/lib/strings.nix b/lib/strings.nix
index 0c4095bb55cd..99399459bb48 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -502,9 +502,12 @@ rec {
        => false
   */
   isStorePath = x:
-       isCoercibleToString x
-    && builtins.substring 0 1 (toString x) == "/"
-    && dirOf x == builtins.storeDir;
+    if isCoercibleToString x then
+      let str = toString x; in
+      builtins.substring 0 1 str == "/"
+      && dirOf str == builtins.storeDir
+    else
+      false;
 
   /* Convert string to int
      Obviously, it is a bit hacky to use fromJSON that way.
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix
index 853d911cdc81..1604fbb39cbb 100644
--- a/lib/tests/misc.nix
+++ b/lib/tests/misc.nix
@@ -112,7 +112,7 @@ runTests {
         storePathAppendix = isStorePath
           "${goodPath}/bin/python";
         nonAbsolute = isStorePath (concatStrings (tail (stringToCharacters goodPath)));
-        asPath = isStorePath goodPath;
+        asPath = isStorePath (/. + goodPath);
         otherPath = isStorePath "/something/else";
         otherVals = {
           attrset = isStorePath {};
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 22ea07b9f118..b6add449b9bf 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -2967,6 +2967,11 @@
     github = "nequissimus";
     name = "Tim Steinbach";
   };
+  nikitavoloboev = {
+    email = "nikita.voloboev@gmail.com";
+    github = "nikitavoloboev";
+    name = "Nikita Voloboev";
+  };
   nfjinjing = {
     email = "nfjinjing@gmail.com";
     github = "nfjinjing";
@@ -4618,6 +4623,11 @@
     github = "wucke13";
     name = "Wucke";
   };
+  wykurz = {
+    email = "wykurz@gmail.com";
+    github = "wykurz";
+    name = "Mateusz Wykurz";
+  };
   wyvie = {
     email = "elijahrum@gmail.com";
     github = "wyvie";
diff --git a/nixos/modules/config/networking.nix b/nixos/modules/config/networking.nix
index 1ef5313d3fdd..1eb6fb43604a 100644
--- a/nixos/modules/config/networking.nix
+++ b/nixos/modules/config/networking.nix
@@ -16,6 +16,13 @@ let
   resolvconfOptions = cfg.resolvconfOptions
     ++ optional cfg.dnsSingleRequest "single-request"
     ++ optional cfg.dnsExtensionMechanism "edns0";
+
+
+  localhostMapped4 = cfg.hosts ? "127.0.0.1" && elem "localhost" cfg.hosts."127.0.0.1";
+  localhostMapped6 = cfg.hosts ? "::1"       && elem "localhost" cfg.hosts."::1";
+
+  localhostMultiple = any (elem "localhost") (attrValues (removeAttrs cfg.hosts [ "127.0.0.1" "::1" ]));
+
 in
 
 {
@@ -23,8 +30,7 @@ in
   options = {
 
     networking.hosts = lib.mkOption {
-      type = types.attrsOf ( types.listOf types.str );
-      default = {};
+      type = types.attrsOf (types.listOf types.str);
       example = literalExample ''
         {
           "127.0.0.1" = [ "foo.bar.baz" ];
@@ -192,6 +198,29 @@ in
 
   config = {
 
+    assertions = [{
+      assertion = localhostMapped4;
+      message = ''`networking.hosts` doesn't map "127.0.0.1" to "localhost"'';
+    } {
+      assertion = !cfg.enableIPv6 || localhostMapped6;
+      message = ''`networking.hosts` doesn't map "::1" to "localhost"'';
+    } {
+      assertion = !localhostMultiple;
+      message = ''
+        `networking.hosts` maps "localhost" to something other than "127.0.0.1"
+        or "::1". This will break some applications. Please use
+        `networking.extraHosts` if you really want to add such a mapping.
+      '';
+    }];
+
+    networking.hosts = {
+      "127.0.0.1" = [ "localhost" ];
+    } // optionalAttrs (cfg.hostName != "") {
+      "127.0.1.1" = [ cfg.hostName ];
+    } // optionalAttrs cfg.enableIPv6 {
+      "::1" = [ "localhost" ];
+    };
+
     environment.etc =
       { # /etc/services: TCP/UDP port assignments.
         "services".source = pkgs.iana-etc + "/etc/services";
@@ -203,25 +232,13 @@ in
         "rpc".source = pkgs.glibc.out + "/etc/rpc";
 
         # /etc/hosts: Hostname-to-IP mappings.
-        "hosts".text =
-          let oneToString = set : ip : ip + " " + concatStringsSep " " ( getAttr ip set );
-              allToString = set : concatMapStringsSep "\n" ( oneToString set ) ( attrNames set );
-              userLocalHosts = optionalString
-                ( builtins.hasAttr "127.0.0.1" cfg.hosts )
-                ( concatStringsSep " " ( remove "localhost" cfg.hosts."127.0.0.1" ));
-              userLocalHosts6 = optionalString
-                ( builtins.hasAttr "::1" cfg.hosts )
-                ( concatStringsSep " " ( remove "localhost" cfg.hosts."::1" ));
-              otherHosts = allToString ( removeAttrs cfg.hosts [ "127.0.0.1" "::1" ]);
-          in
-          ''
-            127.0.0.1 ${userLocalHosts} localhost
-            ${optionalString cfg.enableIPv6 ''
-              ::1 ${userLocalHosts6} localhost
-            ''}
-            ${otherHosts}
-            ${cfg.extraHosts}
-          '';
+        "hosts".text = let
+          oneToString = set: ip: ip + " " + concatStringsSep " " set.${ip};
+          allToString = set: concatMapStringsSep "\n" (oneToString set) (attrNames set);
+        in ''
+          ${allToString cfg.hosts}
+          ${cfg.extraHosts}
+        '';
 
         # /etc/host.conf: resolver configuration file
         "host.conf".text = cfg.hostConf;
@@ -296,4 +313,4 @@ in
 
   };
 
-  }
+}
diff --git a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix
index 3dc0f606bf60..bcdbffdc20b7 100644
--- a/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix
+++ b/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix
@@ -7,4 +7,6 @@
   imports =
     [ ./installation-cd-base.nix
     ];
+
+  fonts.fontconfig.enable = false;
 }
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index bd921f230bd0..660644eade8d 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -126,6 +126,7 @@
   ./programs/udevil.nix
   ./programs/venus.nix
   ./programs/vim.nix
+  ./programs/wavemon.nix
   ./programs/way-cooler.nix
   ./programs/wireshark.nix
   ./programs/xfs_quota.nix
diff --git a/nixos/modules/profiles/base.nix b/nixos/modules/profiles/base.nix
index 5aaffa4f1f2a..7e14b0e21143 100644
--- a/nixos/modules/profiles/base.nix
+++ b/nixos/modules/profiles/base.nix
@@ -7,7 +7,7 @@
   # Include some utilities that are useful for installing or repairing
   # the system.
   environment.systemPackages = [
-    pkgs.w3m-nox # needed for the manual anyway
+    pkgs.w3m-nographics # needed for the manual anyway
     pkgs.testdisk # useful for repairing boot problems
     pkgs.ms-sys # for writing Microsoft boot sectors / MBRs
     pkgs.efibootmgr
@@ -19,6 +19,9 @@
     pkgs.cryptsetup # needed for dm-crypt volumes
     pkgs.mkpasswd # for generating password files
 
+    # Some text editors.
+    pkgs.vim
+
     # Some networking tools.
     pkgs.fuse
     pkgs.fuse3
diff --git a/nixos/modules/profiles/installation-device.nix b/nixos/modules/profiles/installation-device.nix
index d51ed195580d..370db2b08452 100644
--- a/nixos/modules/profiles/installation-device.nix
+++ b/nixos/modules/profiles/installation-device.nix
@@ -87,9 +87,6 @@ with lib;
     # console less cumbersome if the machine has a public IP.
     networking.firewall.logRefusedConnections = mkDefault false;
 
-    environment.systemPackages = [ pkgs.vim ];
-
-
     # Allow the user to log in as root without a password.
     users.users.root.initialHashedPassword = "";
   };
diff --git a/nixos/modules/programs/wavemon.nix b/nixos/modules/programs/wavemon.nix
new file mode 100644
index 000000000000..ac665fe4a023
--- /dev/null
+++ b/nixos/modules/programs/wavemon.nix
@@ -0,0 +1,28 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.programs.wavemon;
+in {
+  options = {
+    programs.wavemon = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to add wavemon to the global environment and configure a
+          setcap wrapper for it.
+        '';
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    environment.systemPackages = with pkgs; [ wavemon ];
+    security.wrappers.wavemon = {
+      source = "${pkgs.wavemon}/bin/wavemon";
+      capabilities = "cap_net_admin+ep";
+    };
+  };
+}
diff --git a/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix b/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix
index b16d299917fe..d4f7e95f859f 100644
--- a/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix
+++ b/nixos/modules/services/networking/strongswan-swanctl/swanctl-params.nix
@@ -248,6 +248,14 @@ in {
       </itemizedlist>
     '';
 
+    ppk_id = mkOptionalStrParam ''
+       String identifying the Postquantum Preshared Key (PPK) to be used.
+    '';
+
+    ppk_required = mkYesNoParam no ''
+       Whether a Postquantum Preshared Key (PPK) is required for this connection.
+    '';
+
     keyingtries = mkIntParam 1 ''
       Number of retransmission sequences to perform during initial
       connect. Instead of giving up initiation after the first retransmission
@@ -922,6 +930,36 @@ in {
         <literal>0xffffffff</literal>.
       '';
 
+      set_mark_in = mkStrParam "0/0x00000000" ''
+        Netfilter mark applied to packets after the inbound IPsec SA processed
+        them. This way it's not necessary to mark packets via Netfilter before
+        decryption or right afterwards to match policies or process them
+        differently (e.g. via policy routing).
+
+        An additional mask may be appended to the mark, separated by
+        <literal>/</literal>. The default mask if omitted is 0xffffffff. The
+        special value <literal>%same</literal> uses the value (but not the mask)
+        from <option>mark_in</option> as mark value, which can be fixed,
+        <literal>%unique</literal> or <literal>%unique-dir</literal>.
+
+        Setting marks in XFRM input requires Linux 4.19 or higher.
+      '';
+
+      set_mark_out = mkStrParam "0/0x00000000" ''
+        Netfilter mark applied to packets after the outbound IPsec SA processed
+        them. This allows processing ESP packets differently than the original
+        traffic (e.g. via policy routing).
+
+        An additional mask may be appended to the mark, separated by
+        <literal>/</literal>. The default mask if omitted is 0xffffffff. The
+        special value <literal>%same</literal> uses the value (but not the mask)
+        from <option>mark_out</option> as mark value, which can be fixed,
+        <literal>%unique_</literal> or <literal>%unique-dir</literal>.
+
+        Setting marks in XFRM output is supported since Linux 4.14. Setting a
+        mask requires at least Linux 4.19.
+      '';
+
       tfc_padding = mkParamOfType (with lib.types; either int (enum ["mtu"])) 0 ''
         Pads ESP packets with additional data to have a consistent ESP packet
         size for improved Traffic Flow Confidentiality. The padding defines the
@@ -946,6 +984,33 @@ in {
         supported, but the installation does not fail otherwise.
       '';
 
+      copy_df = mkYesNoParam yes ''
+        Whether to copy the DF bit to the outer IPv4 header in tunnel mode. This
+        effectively disables Path MTU discovery (PMTUD). Controlling this
+        behavior is not supported by all kernel interfaces.
+      '';
+
+      copy_ecn = mkYesNoParam yes ''
+        Whether to copy the ECN (Explicit Congestion Notification) header field
+        to/from the outer IP header in tunnel mode. Controlling this behavior is
+        not supported by all kernel interfaces.
+      '';
+
+      copy_dscp = mkEnumParam [ "out" "in" "yes" "no" ] "out" ''
+        Whether to copy the DSCP (Differentiated Services Field Codepoint)
+        header field to/from the outer IP header in tunnel mode. The value
+        <literal>out</literal> only copies the field from the inner to the outer
+        header, the value <literal>in</literal> does the opposite and only
+        copies the field from the outer to the inner header when decapsulating,
+        the value <literal>yes</literal> copies the field in both directions,
+        and the value <literal>no</literal> disables copying the field
+        altogether. Setting this to <literal>yes</literal> or
+        <literal>in</literal> could allow an attacker to adversely affect other
+        traffic at the receiver, which is why the default is
+        <literal>out</literal>. Controlling this behavior is not supported by
+        all kernel interfaces.
+      '';
+
       start_action = mkEnumParam ["none" "trap" "start"] "none" ''
         Action to perform after loading the configuration.
         <itemizedlist>
@@ -1060,6 +1125,24 @@ in {
       defined in a unique section having the <literal>ike</literal> prefix.
     '';
 
+    ppk = mkPrefixedAttrsOfParams {
+      secret = mkOptionalStrParam ''
+	      Value of the PPK. It may either be an ASCII string, a hex encoded string
+	      if it has a <literal>0x</literal> prefix or a Base64 encoded string if
+	      it has a <literal>0s</literal> prefix in its value. Should have at least
+	      256 bits of entropy for 128-bit security.
+      '';
+
+      id = mkPrefixedAttrsOfParam (mkOptionalStrParam "") ''
+	      PPK identity the PPK belongs to. Multiple unique identities may be
+	      specified, each having an <literal>id</literal> prefix, if a secret is
+	      shared between multiple peers.
+      '';
+    } ''
+	    Postquantum Preshared Key (PPK) section for a specific secret. Each PPK is
+	    defined in a unique section having the <literal>ppk</literal> prefix.
+    '';
+
     private = mkPrefixedAttrsOfParams {
       file = mkOptionalStrParam ''
         File name in the private folder for which this passphrase should be used.
diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix
index a1412bc32904..3d9fa53ce522 100644
--- a/nixos/modules/system/boot/systemd.nix
+++ b/nixos/modules/system/boot/systemd.nix
@@ -587,6 +587,15 @@ in
       '';
     };
 
+    services.journald.forwardToSyslog = mkOption {
+      default = config.services.rsyslogd.enable || config.services.syslog-ng.enable;
+      defaultText = "config.services.rsyslogd.enable || config.services.syslog-ng.enable";
+      type = types.bool;
+      description = ''
+        Whether to forward log messages to syslog.
+      '';
+    };
+
     services.logind.extraConfig = mkOption {
       default = "";
       type = types.lines;
@@ -754,6 +763,9 @@ in
           ForwardToConsole=yes
           TTYPath=${config.services.journald.console}
         ''}
+        ${optionalString (config.services.journald.forwardToSyslog) ''
+          ForwardToSyslog=yes
+        ''}
         ${config.services.journald.extraConfig}
       '';
 
diff --git a/nixos/release.nix b/nixos/release.nix
index 5412080cca18..46dbe4aa77b2 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -399,6 +399,7 @@ in rec {
   tests.radicale = callTest tests/radicale.nix {};
   tests.redmine = callTest tests/redmine.nix {};
   tests.rspamd = callSubTests tests/rspamd.nix {};
+  tests.rsyslogd = callSubTests tests/rsyslogd.nix {};
   tests.runInMachine = callTest tests/run-in-machine.nix {};
   tests.rxe = callTest tests/rxe.nix {};
   tests.samba = callTest tests/samba.nix {};
diff --git a/nixos/tests/rsyslogd.nix b/nixos/tests/rsyslogd.nix
new file mode 100644
index 000000000000..4836419f0c2f
--- /dev/null
+++ b/nixos/tests/rsyslogd.nix
@@ -0,0 +1,37 @@
+{ system ? builtins.currentSystem }:
+
+with import ../lib/testing.nix { inherit system; };
+{
+  test1 = makeTest {
+    name = "rsyslogd-test1";
+    meta.maintainers = [ lib.maintainers.aanderse ];
+
+    machine =
+      { config, pkgs, ... }:
+      { services.rsyslogd.enable = true;
+        services.journald.forwardToSyslog = false;
+      };
+
+    # ensure rsyslogd isn't receiving messages from journald if explicitly disabled
+    testScript = ''
+      $machine->waitForUnit("default.target");
+      $machine->fail("test -f /var/log/messages");
+    '';
+  };
+
+  test2 = makeTest {
+    name = "rsyslogd-test2";
+    meta.maintainers = [ lib.maintainers.aanderse ];
+
+    machine =
+      { config, pkgs, ... }:
+      { services.rsyslogd.enable = true;
+      };
+
+    # ensure rsyslogd is receiving messages from journald
+    testScript = ''
+      $machine->waitForUnit("default.target");
+      $machine->succeed("test -f /var/log/messages");
+    '';
+  };
+}
diff --git a/pkgs/applications/altcoins/litecoin.nix b/pkgs/applications/altcoins/litecoin.nix
index b23f3ad42434..33ac2be18322 100644
--- a/pkgs/applications/altcoins/litecoin.nix
+++ b/pkgs/applications/altcoins/litecoin.nix
@@ -11,13 +11,13 @@ with stdenv.lib;
 stdenv.mkDerivation rec {
 
   name = "litecoin" + (toString (optional (!withGui) "d")) + "-" + version;
-  version = "0.16.2";
+  version = "0.16.3";
 
   src = fetchFromGitHub {
     owner = "litecoin-project";
     repo = "litecoin";
     rev = "v${version}";
-    sha256 = "0xfwh7cxxz6w8kgr4kl48w3zm81n1hv8fxb5l9zx3460im1ffgy6";
+    sha256 = "0vc184qfdkjky1qffa7309k6973k4197bkzwcmffc9r5sdfhrhkp";
   };
 
   nativeBuildInputs = [ pkgconfig autoreconfHook ];
diff --git a/pkgs/applications/gis/openorienteering-mapper/default.nix b/pkgs/applications/gis/openorienteering-mapper/default.nix
index 6ed6326f16e5..3517351090d7 100644
--- a/pkgs/applications/gis/openorienteering-mapper/default.nix
+++ b/pkgs/applications/gis/openorienteering-mapper/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   name = "OpenOrienteering-Mapper-${version}";
-  version = "0.8.2";
+  version = "0.8.3";
 
   buildInputs = [ gdal qtbase qttools qtlocation qtimageformats
                   qtsensors clipper zlib proj doxygen cups];
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     owner = "OpenOrienteering";
     repo = "mapper";
     rev = "v${version}";
-    sha256 = "02lga6nlal4c7898zc3lv1pcwyv1wpkn7v2xji2kgq68r6aw6j59";
+    sha256 = "0pnqwvmg97mgc2ci3abmx07l0njxcrbljh75w8ym31g0jq76pgr9";
   };
 
   cmakeFlags =
diff --git a/pkgs/applications/graphics/krita/default.nix b/pkgs/applications/graphics/krita/default.nix
index 9aa80fc789c9..ce2bdcbd298c 100644
--- a/pkgs/applications/graphics/krita/default.nix
+++ b/pkgs/applications/graphics/krita/default.nix
@@ -10,11 +10,11 @@
 
 mkDerivation rec {
   name = "krita-${version}";
-  version = "4.1.3";
+  version = "4.1.5";
 
   src = fetchurl {
     url = "https://download.kde.org/stable/krita/${version}/${name}.tar.gz";
-    sha256 = "0d546dxs552z0pxnaka1jm7ksravw17f777wf593z0pl4ds8dgdx";
+    sha256 = "1by8p8ifdp03f05bhg8ygdd1j036anfpjjnzbx63l2fbmy9k6q10";
   };
 
   nativeBuildInputs = [ cmake extra-cmake-modules ];
diff --git a/pkgs/applications/misc/electrum/default.nix b/pkgs/applications/misc/electrum/default.nix
index 537627a10d2d..843257a74e55 100644
--- a/pkgs/applications/misc/electrum/default.nix
+++ b/pkgs/applications/misc/electrum/default.nix
@@ -18,7 +18,7 @@ python3Packages.buildPythonApplication rec {
 
   src = fetchurl {
     url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz";
-    sha256 = "022iw4cq0c009wvqn7wd815jc0nv8198lq3cawn8h6c28hw2mhs1";
+    sha256 = "139kzapas1l61w1in9f7c6ybricid4fzryfnvsrfhpaqh83ydn2c";
   };
 
   propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/applications/misc/mysql-workbench/default.nix b/pkgs/applications/misc/mysql-workbench/default.nix
index 7068d8aedd37..daeb8b159f7a 100644
--- a/pkgs/applications/misc/mysql-workbench/default.nix
+++ b/pkgs/applications/misc/mysql-workbench/default.nix
@@ -13,12 +13,12 @@ let
   inherit (python2.pkgs) paramiko pycairo pyodbc;
 in stdenv.mkDerivation rec {
   pname = "mysql-workbench";
-  version = "8.0.12";
+  version = "8.0.13";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-${version}-src.tar.gz";
-    sha256 = "0d6k1kw0bi3q5dlilzlgds1gcrlf7pis4asm3d6pssh2jmn5hh82";
+    sha256 = "1p4xy2a5cin1l06j4ixpgp1ynhjdj5gax4fjhznspch3c63jp9hj";
   };
 
   patches = [
diff --git a/pkgs/applications/misc/nnn/default.nix b/pkgs/applications/misc/nnn/default.nix
index d97f2d2c0489..051e7139a23d 100644
--- a/pkgs/applications/misc/nnn/default.nix
+++ b/pkgs/applications/misc/nnn/default.nix
@@ -4,13 +4,13 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name = "nnn-${version}";
-  version = "1.9";
+  version = "2.0";
 
   src = fetchFromGitHub {
     owner = "jarun";
     repo = "nnn";
     rev = "v${version}";
-    sha256 = "0z7mr9lql5hz0518wzkj8fdsdp8yh17fr418arjxjn66md4kwgpg";
+    sha256 = "16c6fimr1ayb2x3mvli70x2va3nz106jdfyqn53bhss7zjqvszxl";
   };
 
   configFile = optionalString (conf!=null) (builtins.toFile "nnn.h" conf);
diff --git a/pkgs/applications/networking/browsers/vivaldi/default.nix b/pkgs/applications/networking/browsers/vivaldi/default.nix
index 8a21f2f0cc2a..7ef2bde68f20 100644
--- a/pkgs/applications/networking/browsers/vivaldi/default.nix
+++ b/pkgs/applications/networking/browsers/vivaldi/default.nix
@@ -13,11 +13,11 @@
 stdenv.mkDerivation rec {
   name = "${product}-${version}";
   product = "vivaldi";
-  version = "2.0.1309.29-2";
+  version = "2.1.1337.36-1";
 
   src = fetchurl {
     url = "https://downloads.vivaldi.com/stable/${product}-stable_${version}_amd64.deb";
-    sha256 = "09vaf191djbrfijvhklivh2ifj8w68car2vz956gsw4lhz07kzck";
+    sha256 = "14qf3gk46m65yfc7q7gsnkj6av8yhg7byi0h1yv24sr7n4rrnrsc";
   };
 
   unpackPhase = ''
diff --git a/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix b/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix
index 87ca350731db..349ef233ae21 100644
--- a/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix
+++ b/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix
@@ -6,11 +6,11 @@
 stdenv.mkDerivation rec {
   name = "${product}-${version}";
   product = "vivaldi-ffmpeg-codecs";
-  version = "69.0.3497.73";
+  version = "70.0.3538.77";
 
   src = fetchurl {
     url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
-    sha512 = "3qyzxdybiszwy62izr35wffnh1a1plg9y536vrmd4b2xl8p4nz18c7439blr0cdzsr5qplgrdl64446a27mkyhbw8c3iy0gb4zgb5j9";
+    sha512 = "128hvkcbyw70j31dj4jviqqjrzyfx38689nb8v0kk5vi2zlgfy5ibz2gyrv4bvrb53ld262y9pvam51nbdmrx2vqd9xrs173py7v0a0";
   };
 
   buildInputs = [ ];
diff --git a/pkgs/applications/networking/mailreaders/inboxer/default.nix b/pkgs/applications/networking/mailreaders/inboxer/default.nix
index eb4d710857c1..72b9ce09d76d 100644
--- a/pkgs/applications/networking/mailreaders/inboxer/default.nix
+++ b/pkgs/applications/networking/mailreaders/inboxer/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   name = "inboxer-${version}";
-  version = "1.1.5";
+  version = "1.2.1";
 
   meta = with stdenv.lib; {
     description = "Unofficial, free and open-source Google Inbox Desktop App";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://github.com/denysdovhan/inboxer/releases/download/v${version}/inboxer_${version}_amd64.deb";
-    sha256 = "11xid07rqn7j6nxn0azxwf0g8g3jhams2fmf9q7xc1is99zfy7z4";
+    sha256 = "0nyxas07d6ckgjazxapmc6iyakd2cddla6wflr5rhfp78d7kax3a";
   };
 
   unpackPhase = ''
diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix
index 753defb0b4f0..5d82b1174866 100644
--- a/pkgs/applications/networking/sniffers/wireshark/default.nix
+++ b/pkgs/applications/networking/sniffers/wireshark/default.nix
@@ -17,6 +17,7 @@ let
 
 in stdenv.mkDerivation {
   name = "wireshark-${variant}-${version}";
+  outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz";
@@ -87,6 +88,16 @@ in stdenv.mkDerivation {
       --replace "Exec=wireshark" "Exec=$out/bin/wireshark"
 
     install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg
+    mkdir $dev/include/{epan/{wmem,ftypes,dfilter},wsutil,wiretap} -pv
+
+    cp config.h $dev/include/
+    cp ../ws_*.h $dev/include
+    cp ../epan/*.h $dev/include/epan/
+    cp ../epan/wmem/*.h $dev/include/epan/wmem/
+    cp ../epan/ftypes/*.h $dev/include/epan/ftypes/
+    cp ../epan/dfilter/*.h $dev/include/epan/dfilter/
+    cp ../wsutil/*.h $dev/include/wsutil/
+    cp ../wiretap/*.h $dev/include/wiretap
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/applications/networking/znc/default.nix b/pkgs/applications/networking/znc/default.nix
index 861e7d24275d..2f736dd5856d 100644
--- a/pkgs/applications/networking/znc/default.nix
+++ b/pkgs/applications/networking/znc/default.nix
@@ -4,6 +4,9 @@
 , withTcl ? false, tcl
 , withCyrus ? true, cyrus_sasl
 , withUnicode ? true, icu
+, withZlib ? true, zlib
+, withIPv6 ? true
+, withDebug ? false
 }:
 
 with stdenv.lib;
@@ -24,7 +27,8 @@ stdenv.mkDerivation rec {
     ++ optional withPython python3
     ++ optional withTcl tcl
     ++ optional withCyrus cyrus_sasl
-    ++ optional withUnicode icu;
+    ++ optional withUnicode icu
+    ++ optional withZlib zlib;
 
   configureFlags = [
     (stdenv.lib.enableFeature withPerl "perl")
@@ -32,7 +36,8 @@ stdenv.mkDerivation rec {
     (stdenv.lib.enableFeature withTcl "tcl")
     (stdenv.lib.withFeatureAs withTcl "tcl" "${tcl}/lib")
     (stdenv.lib.enableFeature withCyrus "cyrus")
-  ];
+  ] ++ optional (!withIPv6) [ "--disable-ipv6" ]
+    ++ optional withDebug [ "--enable-debug" ];
 
   meta = with stdenv.lib; {
     description = "Advanced IRC bouncer";
diff --git a/pkgs/applications/networking/znc/modules.nix b/pkgs/applications/networking/znc/modules.nix
index a799df2d1ed0..42d2093ee3a0 100644
--- a/pkgs/applications/networking/znc/modules.nix
+++ b/pkgs/applications/networking/znc/modules.nix
@@ -9,6 +9,8 @@ let
     inherit buildPhase;
     inherit installPhase;
 
+    buildInputs = znc.buildInputs;
+
     meta = a.meta // { platforms = stdenv.lib.platforms.unix; };
     passthru.module_name = module_name;
   });
diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix
index b86f9d1aa0de..f631fe38a5b0 100644
--- a/pkgs/applications/science/math/sage/sage-src.nix
+++ b/pkgs/applications/science/math/sage/sage-src.nix
@@ -58,6 +58,13 @@ stdenv.mkDerivation rec {
       url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/sagemath-lcalc-c++11.patch?h=packages/sagemath&id=0e31ae526ab7c6b5c0bfacb3f8b1c4fd490035aa";
       sha256 = "0p5wnvbx65i7cp0bjyaqgp4rly8xgnk12pqwaq3dqby0j2bk6ijb";
     })
+
+    # https://trac.sagemath.org/ticket/26360
+    (fetchpatch {
+      name = "arb-2.15.1.patch";
+      url = "https://git.sagemath.org/sage.git/patch/?id=30cc778d46579bd0c7537ed33e8d7a4f40fd5c31";
+      sha256 = "13vc2q799dh745sm59xjjabllfj0sfjzcacf8k59kwj04x755d30";
+    })
   ];
 
   patches = nixPatches ++ packageUpgradePatches ++ [
diff --git a/pkgs/applications/science/math/sage/sage-wrapper.nix b/pkgs/applications/science/math/sage/sage-wrapper.nix
index 06b667f426fa..4b2f9c461c18 100644
--- a/pkgs/applications/science/math/sage/sage-wrapper.nix
+++ b/pkgs/applications/science/math/sage/sage-wrapper.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   version = sage.version;
-  name = "sage-wrapper-${version}";
+  name = "sage-${version}";
 
   buildInputs = [
     makeWrapper
diff --git a/pkgs/applications/science/math/sage/sage.nix b/pkgs/applications/science/math/sage/sage.nix
index b1e5d7278b0f..ad9a32e0ca56 100644
--- a/pkgs/applications/science/math/sage/sage.nix
+++ b/pkgs/applications/science/math/sage/sage.nix
@@ -5,7 +5,7 @@
 
 stdenv.mkDerivation rec {
   version = sage-with-env.version;
-  name = "sage-${version}";
+  name = "sage-tests-${version}";
 
   buildInputs = [
     makeWrapper
diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix
index 7d9ce1ac453b..3464b7aaeaa2 100644
--- a/pkgs/applications/video/mkvtoolnix/default.nix
+++ b/pkgs/applications/video/mkvtoolnix/default.nix
@@ -12,13 +12,13 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name = "mkvtoolnix-${version}";
-  version = "27.0.0";
+  version = "28.2.0";
 
   src = fetchFromGitLab {
     owner  = "mbunkus";
     repo   = "mkvtoolnix";
     rev    = "release-${version}";
-    sha256 = "0pcf0bzs588p0a4j01jzcy5y9c4hiblz3kwfznn1sjcyxm552z6n";
+    sha256 = "162qj5z9wzm63im6jnd0n95ggzdk6fzq5bxgrr0l3y82ahfb7qwa";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/vlc/default.nix b/pkgs/applications/video/vlc/default.nix
index b08ff812ace4..6cba5236a5f1 100644
--- a/pkgs/applications/video/vlc/default.nix
+++ b/pkgs/applications/video/vlc/default.nix
@@ -12,6 +12,7 @@
 , withQt5 ? true, qtbase ? null, qtsvg ? null, qtx11extras ? null
 , jackSupport ? false
 , fetchpatch
+, removeReferencesTo
 }:
 
 with stdenv.lib;
@@ -42,7 +43,7 @@ stdenv.mkDerivation rec {
   ] ++ optionals withQt5    [ qtbase qtsvg qtx11extras ]
     ++ optional jackSupport libjack2;
 
-  nativeBuildInputs = [ autoreconfHook perl pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook perl pkgconfig removeReferencesTo ];
 
   enableParallelBuilding = true;
 
@@ -60,10 +61,14 @@ stdenv.mkDerivation rec {
       /usr/share/fonts/truetype/freefont ${freefont_ttf}/share/fonts/truetype
   '';
 
-  # https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830
+  # - Touch plugins (plugins cache keyed off mtime and file size:
+  #     https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830
+  # - Remove references to the Qt development headers (used in error messages)
   postFixup = ''
     find $out/lib/vlc/plugins -exec touch -d @1 '{}' ';'
     $out/lib/vlc/vlc-cache-gen $out/vlc/plugins
+
+    remove-references-to -t "${qtbase.dev}" $out/lib/vlc/plugins/gui/libqt_plugin.so
   '';
 
   # Most of the libraries are auto-detected so we don't need to set a bunch of
@@ -72,6 +77,11 @@ stdenv.mkDerivation rec {
     "--with-kde-solid=$out/share/apps/solid/actions"
   ] ++ optional onlyLibVLC "--disable-vlc";
 
+  # Remove runtime dependencies on libraries
+  postConfigure = ''
+    sed -i 's|^#define CONFIGURE_LINE.*$|#define CONFIGURE_LINE "<removed>"|g' config.h
+  '';
+
   meta = with stdenv.lib; {
     description = "Cross-platform media player and streaming server";
     homepage = http://www.videolan.org/vlc/;
diff --git a/pkgs/applications/virtualization/containerd/default.nix b/pkgs/applications/virtualization/containerd/default.nix
index a1ff9bde3ed8..bd44b4fcbfeb 100644
--- a/pkgs/applications/virtualization/containerd/default.nix
+++ b/pkgs/applications/virtualization/containerd/default.nix
@@ -5,13 +5,13 @@ with lib;
 
 stdenv.mkDerivation rec {
   name = "containerd-${version}";
-  version = "1.1.4";
+  version = "1.2.0";
 
   src = fetchFromGitHub {
     owner = "containerd";
     repo = "containerd";
     rev = "v${version}";
-    sha256 = "1d4qnviv20zi3zk17zz8271mlfqqgfrxblw86izwwfvj3cvsyrah";
+    sha256 = "03d244v85975bavmlg66kd283jdb22yyvwkwcgy91n63jhvvbadk";
   };
 
   hardeningDisable = [ "fortify" ];
diff --git a/pkgs/build-support/rust/build-rust-crate/build-crate.nix b/pkgs/build-support/rust/build-rust-crate/build-crate.nix
index f65118ba4a64..252a0ff521fd 100644
--- a/pkgs/build-support/rust/build-rust-crate/build-crate.nix
+++ b/pkgs/build-support/rust/build-rust-crate/build-crate.nix
@@ -2,7 +2,7 @@
 { crateName,
   dependencies,
   crateFeatures, libName, release, libPath,
-  crateType, metadata, crateBin,
+  crateType, metadata, crateBin, hasCrateBin,
   extraRustcOpts, verbose, colors }:
 
   let
@@ -13,6 +13,17 @@
             (if release then "-C opt-level=3" else "-C debuginfo=2")
             (["-C codegen-units=1"] ++ extraRustcOpts);
         rustcMeta = "-C metadata=${metadata} -C extra-filename=-${metadata}";
+
+    # Some platforms have different names for rustc.
+    rustPlatform =
+      with stdenv.hostPlatform.parsed;
+      let cpu_ = if cpu.name == "armv7a" then "armv7"
+                 else cpu.name;
+          vendor_ = vendor.name;
+          kernel_ = kernel.name;
+          abi_ = abi.name;
+      in
+      "${cpu_}-${vendor_}-${kernel_}-${abi_}";
   in ''
     runHook preBuild
     norm=""
@@ -32,7 +43,8 @@
        lib_src=$1
        echo_build_heading $lib_src ${libName}
 
-       noisily rustc --crate-name $CRATE_NAME $lib_src --crate-type ${crateType} \
+       noisily rustc --crate-name $CRATE_NAME $lib_src \
+         ${lib.strings.concatStrings (map (x: " --crate-type ${x}") crateType)}  \
          ${rustcOpts} ${rustcMeta} ${crateFeatures} --out-dir target/lib \
          --emit=dep-info,link -L dependency=target/deps ${deps} --cap-lints allow \
          $BUILD_OUT_DIR $EXTRA_BUILD $EXTRA_FEATURES --color ${colors}
@@ -54,7 +66,8 @@
       noisily rustc --crate-name $crate_name_ $main_file --crate-type bin ${rustcOpts}\
         ${crateFeatures} --out-dir target/bin --emit=dep-info,link -L dependency=target/deps \
         $LINK ${deps}$EXTRA_LIB --cap-lints allow \
-        $BUILD_OUT_DIR $EXTRA_BUILD $EXTRA_FEATURES --color ${colors}
+        $BUILD_OUT_DIR $EXTRA_BUILD $EXTRA_FEATURES --color ${colors} \
+        ${if stdenv.hostPlatform != stdenv.buildPlatform then "--target ${rustPlatform} -C linker=${stdenv.hostPlatform.config}-gcc" else ""}
       if [ "$crate_name_" != "$crate_name" ]; then
         mv target/bin/$crate_name_ target/bin/$crate_name
       fi
@@ -103,9 +116,9 @@
        tr '\n' ' ' < target/link > target/link_
        LINK=$(cat target/link_)
     fi
-
-    mkdir -p target/bin
+    ${lib.optionalString (crateBin != "") ''
     printf "%s\n" "${crateBin}" | head -n1 | tr -s ',' '\n' | while read -r BIN_NAME BIN_PATH; do
+      mkdir -p target/bin
       # filter empty entries / empty "lines"
       if [[ -z "$BIN_NAME" ]]; then
            continue
@@ -141,13 +154,15 @@
       fi
       build_bin "$BIN_NAME" "$BIN_PATH"
     done
+    ''}
 
-
-    ${lib.optionalString (crateBin == "") ''
+    ${lib.optionalString (crateBin == "" && !hasCrateBin) ''
       if [[ -e src/main.rs ]]; then
+        mkdir -p target/bin
         build_bin ${crateName} src/main.rs
       fi
       for i in src/bin/*.rs; do #*/
+        mkdir -p target/bin
         build_bin "$(basename $i .rs)" "$i"
       done
     ''}
diff --git a/pkgs/build-support/rust/build-rust-crate/default.nix b/pkgs/build-support/rust/build-rust-crate/default.nix
index a11cef9f1f46..ec11472bbaeb 100644
--- a/pkgs/build-support/rust/build-rust-crate/default.nix
+++ b/pkgs/build-support/rust/build-rust-crate/default.nix
@@ -4,7 +4,7 @@
 # This can be useful for deploying packages with NixOps, and to share
 # binary dependencies between projects.
 
-{ lib, stdenv, defaultCrateOverrides, fetchCrate, ncurses, rustc  }:
+{ lib, stdenv, defaultCrateOverrides, fetchCrate, rustc }:
 
 let
     # This doesn't appear to be officially documented anywhere yet.
@@ -16,7 +16,7 @@ let
     makeDeps = dependencies:
       (lib.concatMapStringsSep " " (dep:
         let extern = lib.strings.replaceStrings ["-"] ["_"] dep.libName; in
-        (if dep.crateType == "lib" then
+        (if lib.lists.any (x: x == "lib") dep.crateType then
            " --extern ${extern}=${dep.out}/lib/lib${extern}-${dep.metadata}.rlib"
          else
            " --extern ${extern}=${dep.out}/lib/lib${extern}-${dep.metadata}${stdenv.hostPlatform.extensions.sharedLibrary}")
@@ -86,7 +86,8 @@ stdenv.mkDerivation (rec {
       else
         fetchCrate { inherit (crate) crateName version sha256; };
     name = "rust_${crate.crateName}-${crate.version}";
-    buildInputs = [ rust ncurses ] ++ (crate.buildInputs or []) ++ buildInputs_;
+    depsBuildBuild = [ rust stdenv.cc ];
+    buildInputs = (crate.buildInputs or []) ++ buildInputs_;
     dependencies =
       builtins.map
         (dep: dep.override { rust = rust; release = release; verbose = verbose; crateOverrides = crateOverrides; })
@@ -122,15 +123,16 @@ stdenv.mkDerivation (rec {
 
        ) "" crate.crateBin
     else "";
+    hasCrateBin = crate ? crateBin;
 
     build = crate.build or "";
     workspace_member = crate.workspace_member or ".";
     crateVersion = crate.version;
     crateAuthors = if crate ? authors && lib.isList crate.authors then crate.authors else [];
     crateType =
-      if lib.attrByPath ["procMacro"] false crate then "proc-macro" else
-      if lib.attrByPath ["plugin"] false crate then "dylib" else
-      (crate.type or "lib");
+      if lib.attrByPath ["procMacro"] false crate then ["proc-macro"] else
+      if lib.attrByPath ["plugin"] false crate then ["dylib"] else
+        (crate.type or ["lib"]);
     colors = lib.attrByPath [ "colors" ] "always" crate;
     extraLinkFlags = builtins.concatStringsSep " " (crate.extraLinkFlags or []);
     configurePhase = configureCrate {
@@ -143,7 +145,7 @@ stdenv.mkDerivation (rec {
     buildPhase = buildCrate {
       inherit crateName dependencies
               crateFeatures libName release libPath crateType
-              metadata crateBin verbose colors
+              metadata crateBin hasCrateBin verbose colors
               extraRustcOpts;
     };
     installPhase = installCrate crateName metadata;
diff --git a/pkgs/build-support/rust/build-rust-crate/helpers.nix b/pkgs/build-support/rust/build-rust-crate/helpers.nix
new file mode 100644
index 000000000000..e04324684e50
--- /dev/null
+++ b/pkgs/build-support/rust/build-rust-crate/helpers.nix
@@ -0,0 +1,24 @@
+{stdenv, lib}:
+{
+  kernel = stdenv.hostPlatform.parsed.kernel.name;
+  abi = stdenv.hostPlatform.parsed.abi.name;
+   updateFeatures = f: up: functions: builtins.deepSeq f (lib.lists.foldl' (features: fun: fun features) (lib.attrsets.recursiveUpdate f up) functions);
+   mapFeatures = features: map (fun: fun { features = features; });
+   mkFeatures = feat: lib.lists.foldl (features: featureName:
+     if feat.${featureName} or false then
+       [ featureName ] ++ features
+     else
+       features
+   ) [] (builtins.attrNames feat);
+  include = includedFiles: src: builtins.filterSource (path: type:
+    lib.lists.any (f:
+      let p = toString (src + ("/" + f)); in
+      (path == p) || (type == "directory" && lib.strings.hasPrefix path p)
+    ) includedFiles
+  ) src;
+  exclude = excludedFiles: src: builtins.filterSource (path: type:
+    lib.lists.all (f:
+       !lib.strings.hasPrefix (toString (src + ("/" + f))) path
+    ) excludedFiles
+  ) src;
+}
diff --git a/pkgs/build-support/rust/carnix.nix b/pkgs/build-support/rust/carnix.nix
index 0b8b3d60b6c9..7a0d92f81b45 100644
--- a/pkgs/build-support/rust/carnix.nix
+++ b/pkgs/build-support/rust/carnix.nix
@@ -1,1444 +1,251 @@
-# Generated by carnix 0.7.2: carnix nix
-{ lib, stdenv, buildRustCrate, fetchgit }:
-let kernel = stdenv.hostPlatform.parsed.kernel.name;
-    abi = stdenv.hostPlatform.parsed.abi.name;
-    updateFeatures = f: up: functions: builtins.deepSeq f (lib.lists.foldl' (features: fun: fun features) (lib.attrsets.recursiveUpdate f up) functions);
-    mapFeatures = features: map (fun: fun { features = features; });
-    mkFeatures = feat: lib.lists.foldl (features: featureName:
-      if feat.${featureName} or false then
-        [ featureName ] ++ features
-      else
-        features
-    ) [] (builtins.attrNames feat);
+# Generated by carnix 0.8.11: carnix generate-nix
+{ lib, buildPlatform, buildRustCrate, buildRustCrateHelpers, cratesIO, fetchgit }:
+with buildRustCrateHelpers;
+let inherit (lib.lists) fold;
+    inherit (lib.attrsets) recursiveUpdate;
 in
+let crates = cratesIO; in
 rec {
-  carnix = f: carnix_0_7_2 { features = carnix_0_7_2_features { carnix_0_7_2 = f; }; };
+  carnix = crates.crates.carnix."0.8.11" deps;
   __all = [ (carnix {}) ];
-  aho_corasick_0_6_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "aho-corasick";
-    version = "0.6.4";
-    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
-    sha256 = "189v919mp6rzzgjp1khpn4zlq8ls81gh43x1lmc8kbkagdlpq888";
-    libName = "aho_corasick";
-    crateBin = [ {  name = "aho-corasick-dot"; } ];
-    inherit dependencies buildDependencies features;
+  deps.aho_corasick."0.6.8" = {
+    memchr = "2.1.0";
+  };
+  deps.ansi_term."0.11.0" = {
+    winapi = "0.3.6";
+  };
+  deps.argon2rs."0.2.5" = {
+    blake2_rfc = "0.2.18";
+    scoped_threadpool = "0.1.9";
+  };
+  deps.arrayvec."0.4.7" = {
+    nodrop = "0.1.12";
+  };
+  deps.atty."0.2.11" = {
+    termion = "1.5.1";
+    libc = "0.2.43";
+    winapi = "0.3.6";
+  };
+  deps.backtrace."0.3.9" = {
+    cfg_if = "0.1.6";
+    rustc_demangle = "0.1.9";
+    backtrace_sys = "0.1.24";
+    libc = "0.2.43";
+    winapi = "0.3.6";
+  };
+  deps.backtrace_sys."0.1.24" = {
+    libc = "0.2.43";
+    cc = "1.0.25";
+  };
+  deps.bitflags."1.0.4" = {};
+  deps.blake2_rfc."0.2.18" = {
+    arrayvec = "0.4.7";
+    constant_time_eq = "0.1.3";
+  };
+  deps.carnix."0.8.11" = {
+    clap = "2.32.0";
+    dirs = "1.0.4";
+    env_logger = "0.5.13";
+    error_chain = "0.12.0";
+    itertools = "0.7.8";
+    log = "0.4.5";
+    nom = "3.2.1";
+    regex = "1.0.5";
+    rusqlite = "0.14.0";
+    serde = "1.0.80";
+    serde_derive = "1.0.80";
+    serde_json = "1.0.32";
+    tempdir = "0.3.7";
+    toml = "0.4.8";
+  };
+  deps.cc."1.0.25" = {};
+  deps.cfg_if."0.1.6" = {};
+  deps.clap."2.32.0" = {
+    atty = "0.2.11";
+    bitflags = "1.0.4";
+    strsim = "0.7.0";
+    textwrap = "0.10.0";
+    unicode_width = "0.1.5";
+    vec_map = "0.8.1";
+    ansi_term = "0.11.0";
+  };
+  deps.constant_time_eq."0.1.3" = {};
+  deps.dirs."1.0.4" = {
+    redox_users = "0.2.0";
+    libc = "0.2.43";
+    winapi = "0.3.6";
+  };
+  deps.either."1.5.0" = {};
+  deps.env_logger."0.5.13" = {
+    atty = "0.2.11";
+    humantime = "1.1.1";
+    log = "0.4.5";
+    regex = "1.0.5";
+    termcolor = "1.0.4";
+  };
+  deps.error_chain."0.12.0" = {
+    backtrace = "0.3.9";
+  };
+  deps.failure."0.1.3" = {
+    backtrace = "0.3.9";
+    failure_derive = "0.1.3";
+  };
+  deps.failure_derive."0.1.3" = {
+    proc_macro2 = "0.4.20";
+    quote = "0.6.8";
+    syn = "0.15.13";
+    synstructure = "0.10.0";
+  };
+  deps.fuchsia_zircon."0.3.3" = {
+    bitflags = "1.0.4";
+    fuchsia_zircon_sys = "0.3.3";
+  };
+  deps.fuchsia_zircon_sys."0.3.3" = {};
+  deps.humantime."1.1.1" = {
+    quick_error = "1.2.2";
+  };
+  deps.itertools."0.7.8" = {
+    either = "1.5.0";
+  };
+  deps.itoa."0.4.3" = {};
+  deps.lazy_static."1.1.0" = {
+    version_check = "0.1.5";
+  };
+  deps.libc."0.2.43" = {};
+  deps.libsqlite3_sys."0.9.3" = {
+    pkg_config = "0.3.14";
+  };
+  deps.linked_hash_map."0.4.2" = {};
+  deps.log."0.4.5" = {
+    cfg_if = "0.1.6";
+  };
+  deps.lru_cache."0.1.1" = {
+    linked_hash_map = "0.4.2";
+  };
+  deps.memchr."1.0.2" = {
+    libc = "0.2.43";
+  };
+  deps.memchr."2.1.0" = {
+    cfg_if = "0.1.6";
+    libc = "0.2.43";
+    version_check = "0.1.5";
+  };
+  deps.nodrop."0.1.12" = {};
+  deps.nom."3.2.1" = {
+    memchr = "1.0.2";
+  };
+  deps.pkg_config."0.3.14" = {};
+  deps.proc_macro2."0.4.20" = {
+    unicode_xid = "0.1.0";
+  };
+  deps.quick_error."1.2.2" = {};
+  deps.quote."0.6.8" = {
+    proc_macro2 = "0.4.20";
+  };
+  deps.rand."0.4.3" = {
+    fuchsia_zircon = "0.3.3";
+    libc = "0.2.43";
+    winapi = "0.3.6";
+  };
+  deps.redox_syscall."0.1.40" = {};
+  deps.redox_termios."0.1.1" = {
+    redox_syscall = "0.1.40";
+  };
+  deps.redox_users."0.2.0" = {
+    argon2rs = "0.2.5";
+    failure = "0.1.3";
+    rand = "0.4.3";
+    redox_syscall = "0.1.40";
+  };
+  deps.regex."1.0.5" = {
+    aho_corasick = "0.6.8";
+    memchr = "2.1.0";
+    regex_syntax = "0.6.2";
+    thread_local = "0.3.6";
+    utf8_ranges = "1.0.1";
+  };
+  deps.regex_syntax."0.6.2" = {
+    ucd_util = "0.1.1";
+  };
+  deps.remove_dir_all."0.5.1" = {
+    winapi = "0.3.6";
+  };
+  deps.rusqlite."0.14.0" = {
+    bitflags = "1.0.4";
+    libsqlite3_sys = "0.9.3";
+    lru_cache = "0.1.1";
+    time = "0.1.40";
+  };
+  deps.rustc_demangle."0.1.9" = {};
+  deps.ryu."0.2.6" = {};
+  deps.scoped_threadpool."0.1.9" = {};
+  deps.serde."1.0.80" = {};
+  deps.serde_derive."1.0.80" = {
+    proc_macro2 = "0.4.20";
+    quote = "0.6.8";
+    syn = "0.15.13";
+  };
+  deps.serde_json."1.0.32" = {
+    itoa = "0.4.3";
+    ryu = "0.2.6";
+    serde = "1.0.80";
+  };
+  deps.strsim."0.7.0" = {};
+  deps.syn."0.15.13" = {
+    proc_macro2 = "0.4.20";
+    quote = "0.6.8";
+    unicode_xid = "0.1.0";
+  };
+  deps.synstructure."0.10.0" = {
+    proc_macro2 = "0.4.20";
+    quote = "0.6.8";
+    syn = "0.15.13";
+    unicode_xid = "0.1.0";
+  };
+  deps.tempdir."0.3.7" = {
+    rand = "0.4.3";
+    remove_dir_all = "0.5.1";
+  };
+  deps.termcolor."1.0.4" = {
+    wincolor = "1.0.1";
+  };
+  deps.termion."1.5.1" = {
+    libc = "0.2.43";
+    redox_syscall = "0.1.40";
+    redox_termios = "0.1.1";
+  };
+  deps.textwrap."0.10.0" = {
+    unicode_width = "0.1.5";
+  };
+  deps.thread_local."0.3.6" = {
+    lazy_static = "1.1.0";
+  };
+  deps.time."0.1.40" = {
+    libc = "0.2.43";
+    redox_syscall = "0.1.40";
+    winapi = "0.3.6";
+  };
+  deps.toml."0.4.8" = {
+    serde = "1.0.80";
+  };
+  deps.ucd_util."0.1.1" = {};
+  deps.unicode_width."0.1.5" = {};
+  deps.unicode_xid."0.1.0" = {};
+  deps.utf8_ranges."1.0.1" = {};
+  deps.vcpkg."0.2.6" = {};
+  deps.vec_map."0.8.1" = {};
+  deps.version_check."0.1.5" = {};
+  deps.winapi."0.3.6" = {
+    winapi_i686_pc_windows_gnu = "0.4.0";
+    winapi_x86_64_pc_windows_gnu = "0.4.0";
+  };
+  deps.winapi_i686_pc_windows_gnu."0.4.0" = {};
+  deps.winapi_util."0.1.1" = {
+    winapi = "0.3.6";
+  };
+  deps.winapi_x86_64_pc_windows_gnu."0.4.0" = {};
+  deps.wincolor."1.0.1" = {
+    winapi = "0.3.6";
+    winapi_util = "0.1.1";
   };
-  ansi_term_0_11_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "ansi_term";
-    version = "0.11.0";
-    authors = [ "ogham@bsago.me" "Ryan Scheel (Havvy) <ryan.havvy@gmail.com>" "Josh Triplett <josh@joshtriplett.org>" ];
-    sha256 = "08fk0p2xvkqpmz3zlrwnf6l8sj2vngw464rvzspzp31sbgxbwm4v";
-    inherit dependencies buildDependencies features;
-  };
-  atty_0_2_8_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "atty";
-    version = "0.2.8";
-    authors = [ "softprops <d.tangren@gmail.com>" ];
-    sha256 = "03w1q3h4w7vhcdxdwa9cirjkzdjz3ja636fj3g64659z6yax6p6d";
-    inherit dependencies buildDependencies features;
-  };
-  backtrace_0_3_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "backtrace";
-    version = "0.3.6";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" "The Rust Project Developers" ];
-    sha256 = "00p77iqrv2p47m4y5lq1clb8fi1xfmnz2520frqx88497ff4zhrx";
-    inherit dependencies buildDependencies features;
-  };
-  backtrace_sys_0_1_16_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "backtrace-sys";
-    version = "0.1.16";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
-    sha256 = "1cn2c8q3dn06crmnk0p62czkngam4l8nf57wy33nz1y5g25pszwy";
-    build = "build.rs";
-    inherit dependencies buildDependencies features;
-  };
-  bitflags_1_0_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "bitflags";
-    version = "1.0.1";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "0p4b3nr0s5nda2qmm7xdhnvh4lkqk3xd8l9ffmwbvqw137vx7mj1";
-    inherit dependencies buildDependencies features;
-  };
-  carnix_0_7_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "carnix";
-    version = "0.7.2";
-    authors = [ "pe@pijul.org <pe@pijul.org>" ];
-    sha256 = "0zsmc4wiz7vill676mcdh6ibyzmr9rn030j555ncqgavs7k5yhq5";
-    crateBin = [ {  name = "cargo-generate-nixfile";  path = "src/cargo-generate-nixfile.rs"; } {  name = "carnix";  path = "src/main.rs"; } ];
-    inherit dependencies buildDependencies features;
-  };
-  cc_1_0_10_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "cc";
-    version = "1.0.10";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
-    sha256 = "0fqchrxcrd2j2b9x7cqs49ck7b3ilsap8s9xhs75gzgl6c1ylpdn";
-    inherit dependencies buildDependencies features;
-  };
-  cfg_if_0_1_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "cfg-if";
-    version = "0.1.2";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
-    sha256 = "0x06hvrrqy96m97593823vvxcgvjaxckghwyy2jcyc8qc7c6cyhi";
-    inherit dependencies buildDependencies features;
-  };
-  clap_2_31_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "clap";
-    version = "2.31.2";
-    authors = [ "Kevin K. <kbknapp@gmail.com>" ];
-    sha256 = "0r24ziw85a8y1sf2l21y4mvv5qan3rjafcshpyfsjfadqfxsij72";
-    inherit dependencies buildDependencies features;
-  };
-  dtoa_0_4_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "dtoa";
-    version = "0.4.2";
-    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "1bxsh6fags7nr36vlz07ik2a1rzyipc8x1y30kjk832hf2pzadmw";
-    inherit dependencies buildDependencies features;
-  };
-  either_1_5_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "either";
-    version = "1.5.0";
-    authors = [ "bluss" ];
-    sha256 = "1f7kl2ln01y02m8fpd2zrdjiwqmgfvl9nxxrfry3k19d1gd2bsvz";
-    inherit dependencies buildDependencies features;
-  };
-  env_logger_0_5_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "env_logger";
-    version = "0.5.7";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "0wgd9fashmwbx5ssrxx69naam6hlb5c7qmh1nln645q4gms35i2l";
-    inherit dependencies buildDependencies features;
-  };
-  error_chain_0_11_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "error-chain";
-    version = "0.11.0";
-    authors = [ "Brian Anderson <banderson@mozilla.com>" "Paul Colomiets <paul@colomiets.name>" "Colin Kiegel <kiegel@gmx.de>" "Yamakaky <yamakaky@yamaworld.fr>" ];
-    sha256 = "19nz17q6dzp0mx2jhh9qbj45gkvvgcl7zq9z2ai5a8ihbisfj6d7";
-    inherit dependencies buildDependencies features;
-  };
-  fuchsia_zircon_0_3_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "fuchsia-zircon";
-    version = "0.3.3";
-    authors = [ "Raph Levien <raph@google.com>" ];
-    sha256 = "0jrf4shb1699r4la8z358vri8318w4mdi6qzfqy30p2ymjlca4gk";
-    inherit dependencies buildDependencies features;
-  };
-  fuchsia_zircon_sys_0_3_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "fuchsia-zircon-sys";
-    version = "0.3.3";
-    authors = [ "Raph Levien <raph@google.com>" ];
-    sha256 = "08jp1zxrm9jbrr6l26bjal4dbm8bxfy57ickdgibsqxr1n9j3hf5";
-    inherit dependencies buildDependencies features;
-  };
-  humantime_1_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "humantime";
-    version = "1.1.1";
-    authors = [ "Paul Colomiets <paul@colomiets.name>" ];
-    sha256 = "1lzdfsfzdikcp1qb6wcdvnsdv16pmzr7p7cv171vnbnyz2lrwbgn";
-    libPath = "src/lib.rs";
-    inherit dependencies buildDependencies features;
-  };
-  itertools_0_7_8_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "itertools";
-    version = "0.7.8";
-    authors = [ "bluss" ];
-    sha256 = "0ib30cd7d1icjxsa13mji1gry3grp72kx8p33yd84mphdbc3d357";
-    inherit dependencies buildDependencies features;
-  };
-  itoa_0_4_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "itoa";
-    version = "0.4.1";
-    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "1jyrsmrm5q4r2ipmq5hvvkqg0mgnlbk44lm7gr0v9ymvbrh2gbij";
-    inherit dependencies buildDependencies features;
-  };
-  lazy_static_1_0_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "lazy_static";
-    version = "1.0.0";
-    authors = [ "Marvin Löbel <loebel.marvin@gmail.com>" ];
-    sha256 = "0wfvqyr2nvx2mbsrscg5y7gfa9skhb8p72ayanl8vl49pw24v4fh";
-    inherit dependencies buildDependencies features;
-  };
-  libc_0_2_40_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "libc";
-    version = "0.2.40";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "1xfc39237ldzgr8x8wcflgdr8zssi3wif7g2zxc02d94gzkjsw83";
-    inherit dependencies buildDependencies features;
-  };
-  libsqlite3_sys_0_9_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "libsqlite3-sys";
-    version = "0.9.1";
-    authors = [ "John Gallagher <jgallagher@bignerdranch.com>" ];
-    sha256 = "1j599xygsh564xmx29942w0sq7w05c1jipk6dsyrxj6b33kw3fw7";
-    build = "build.rs";
-    inherit dependencies buildDependencies features;
-  };
-  linked_hash_map_0_4_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "linked-hash-map";
-    version = "0.4.2";
-    authors = [ "Stepan Koltsov <stepan.koltsov@gmail.com>" "Andrew Paseltiner <apaseltiner@gmail.com>" ];
-    sha256 = "04da208h6jb69f46j37jnvsw2i1wqplglp4d61csqcrhh83avbgl";
-    inherit dependencies buildDependencies features;
-  };
-  log_0_4_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "log";
-    version = "0.4.1";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "01vm8yy3wngvyj6qp1x3xpcb4xq7v67yn9l7fsma8kz28mliz90d";
-    inherit dependencies buildDependencies features;
-  };
-  lru_cache_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "lru-cache";
-    version = "0.1.1";
-    authors = [ "Stepan Koltsov <stepan.koltsov@gmail.com>" ];
-    sha256 = "1hl6kii1g54sq649gnscv858mmw7a02xj081l4vcgvrswdi2z8fw";
-    inherit dependencies buildDependencies features;
-  };
-  memchr_1_0_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "memchr";
-    version = "1.0.2";
-    authors = [ "Andrew Gallant <jamslam@gmail.com>" "bluss" ];
-    sha256 = "0dfb8ifl9nrc9kzgd5z91q6qg87sh285q1ih7xgrsglmqfav9lg7";
-    inherit dependencies buildDependencies features;
-  };
-  memchr_2_0_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "memchr";
-    version = "2.0.1";
-    authors = [ "Andrew Gallant <jamslam@gmail.com>" "bluss" ];
-    sha256 = "0ls2y47rjwapjdax6bp974gdp06ggm1v8d1h69wyydmh1nhgm5gr";
-    inherit dependencies buildDependencies features;
-  };
-  nom_3_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "nom";
-    version = "3.2.1";
-    authors = [ "contact@geoffroycouprie.com" ];
-    sha256 = "1vcllxrz9hdw6j25kn020ka3psz1vkaqh1hm3yfak2240zrxgi07";
-    inherit dependencies buildDependencies features;
-  };
-  num_traits_0_2_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "num-traits";
-    version = "0.2.2";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "1gcqhcd27gi72al5salxlp3m374qr3xnc3zh249f7dsrxc9rmgh0";
-    inherit dependencies buildDependencies features;
-  };
-  pkg_config_0_3_9_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "pkg-config";
-    version = "0.3.9";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
-    sha256 = "06k8fxgrsrxj8mjpjcq1n7mn2p1shpxif4zg9y5h09c7vy20s146";
-    inherit dependencies buildDependencies features;
-  };
-  proc_macro2_0_3_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "proc-macro2";
-    version = "0.3.6";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
-    sha256 = "1viqlvsknzvgc2j0bcz53n94zxv7c816py7hv2r27y0bv1dq4iqp";
-    inherit dependencies buildDependencies features;
-  };
-  quick_error_1_2_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "quick-error";
-    version = "1.2.1";
-    authors = [ "Paul Colomiets <paul@colomiets.name>" "Colin Kiegel <kiegel@gmx.de>" ];
-    sha256 = "0vq41csw68ynaq2fy5dvldh4lx7pnbw6pr332kv5rvrz4pz0jnq6";
-    inherit dependencies buildDependencies features;
-  };
-  quote_0_5_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "quote";
-    version = "0.5.1";
-    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "0jppgddqp6vp67ns4hpyf644n5678fligp711isp0xkvfv19la3r";
-    inherit dependencies buildDependencies features;
-  };
-  rand_0_4_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "rand";
-    version = "0.4.2";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "0h8pkg23wb67i8904sm76iyr1jlmhklb85vbpz9c9191a24xzkfm";
-    inherit dependencies buildDependencies features;
-  };
-  redox_syscall_0_1_37_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "redox_syscall";
-    version = "0.1.37";
-    authors = [ "Jeremy Soller <jackpot51@gmail.com>" ];
-    sha256 = "0qa0jl9cr3qp80an8vshp2mcn8rzvwiavs1398hq1vsjw7pc3h2v";
-    libName = "syscall";
-    inherit dependencies buildDependencies features;
-  };
-  redox_termios_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "redox_termios";
-    version = "0.1.1";
-    authors = [ "Jeremy Soller <jackpot51@gmail.com>" ];
-    sha256 = "04s6yyzjca552hdaqlvqhp3vw0zqbc304md5czyd3axh56iry8wh";
-    libPath = "src/lib.rs";
-    inherit dependencies buildDependencies features;
-  };
-  regex_0_2_10_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "regex";
-    version = "0.2.10";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "0cwdmcllssm984b5nnpr55rgla1yzw31kmp2imxdpgk6hvlhf1ca";
-    inherit dependencies buildDependencies features;
-  };
-  regex_syntax_0_5_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "regex-syntax";
-    version = "0.5.5";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "1m5v66r6xxglgkdl1ci23qq0bl0k2wqplm6li4pmg1k7szvgxcbp";
-    inherit dependencies buildDependencies features;
-  };
-  remove_dir_all_0_5_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "remove_dir_all";
-    version = "0.5.0";
-    authors = [ "Aaronepower <theaaronepower@gmail.com>" ];
-    sha256 = "0cgmlm9xvf19z84zcb7d62c2lfv60g6gd58c9717giq7c9ib284y";
-    inherit dependencies buildDependencies features;
-  };
-  rusqlite_0_13_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "rusqlite";
-    version = "0.13.0";
-    authors = [ "John Gallagher <jgallagher@bignerdranch.com>" ];
-    sha256 = "1hj2464ar2y4324sk3jx7m9byhkcp60krrrs1v1i8dlhhlnkb9hc";
-    inherit dependencies buildDependencies features;
-  };
-  rustc_demangle_0_1_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "rustc-demangle";
-    version = "0.1.7";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
-    sha256 = "0wrln6jvwmqrhyvqlw5vq9a2s4r04ja8mrybxjj9aaaar1fyvns6";
-    inherit dependencies buildDependencies features;
-  };
-  serde_1_0_38_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "serde";
-    version = "1.0.38";
-    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "0dri7vmzjsfmak1qq5wdinykqqvd5shpms504p8acpgyx7817jgk";
-    inherit dependencies buildDependencies features;
-  };
-  serde_derive_1_0_38_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "serde_derive";
-    version = "1.0.38";
-    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "027c13sbnqkfzc8vxx0m6wnkr68im8kdbkbnix07dgw1l616yw0m";
-    procMacro = true;
-    inherit dependencies buildDependencies features;
-  };
-  serde_derive_internals_0_23_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "serde_derive_internals";
-    version = "0.23.1";
-    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "0bjgcn2irh6sd34q3j3xkbn5ghfgiv3cfdlffb31lh0bikwpk1b4";
-    inherit dependencies buildDependencies features;
-  };
-  serde_json_1_0_14_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "serde_json";
-    version = "1.0.14";
-    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "053n2vbcx32f28pr8fxi0fxq7m3g0gm94kz9i1fmi1kiwq9j5lsj";
-    inherit dependencies buildDependencies features;
-  };
-  strsim_0_7_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "strsim";
-    version = "0.7.0";
-    authors = [ "Danny Guo <dannyguo91@gmail.com>" ];
-    sha256 = "0fy0k5f2705z73mb3x9459bpcvrx4ky8jpr4zikcbiwan4bnm0iv";
-    inherit dependencies buildDependencies features;
-  };
-  syn_0_13_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "syn";
-    version = "0.13.1";
-    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
-    sha256 = "1pimp7fpvillhz06xz0k6450h9nis3ab6h1j2hzrzykrpxs2qnyg";
-    inherit dependencies buildDependencies features;
-  };
-  tempdir_0_3_7_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "tempdir";
-    version = "0.3.7";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "0y53sxybyljrr7lh0x0ysrsa7p7cljmwv9v80acy3rc6n97g67vy";
-    inherit dependencies buildDependencies features;
-  };
-  termcolor_0_3_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "termcolor";
-    version = "0.3.6";
-    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
-    sha256 = "0w609sa1apl1kii67ln2g82r4rrycw45zgjq7mxxjrx1fa21v05z";
-    inherit dependencies buildDependencies features;
-  };
-  termion_1_5_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "termion";
-    version = "1.5.1";
-    authors = [ "ticki <Ticki@users.noreply.github.com>" "gycos <alexandre.bury@gmail.com>" "IGI-111 <igi-111@protonmail.com>" ];
-    sha256 = "02gq4vd8iws1f3gjrgrgpajsk2bk43nds5acbbb4s8dvrdvr8nf1";
-    inherit dependencies buildDependencies features;
-  };
-  textwrap_0_9_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "textwrap";
-    version = "0.9.0";
-    authors = [ "Martin Geisler <martin@geisler.net>" ];
-    sha256 = "18jg79ndjlwndz01mlbh82kkr2arqm658yn5kwp65l5n1hz8w4yb";
-    inherit dependencies buildDependencies features;
-  };
-  thread_local_0_3_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "thread_local";
-    version = "0.3.5";
-    authors = [ "Amanieu d'Antras <amanieu@gmail.com>" ];
-    sha256 = "0mkp0sp91aqsk7brgygai4igv751r1754rsxn37mig3ag5rx8np6";
-    inherit dependencies buildDependencies features;
-  };
-  time_0_1_39_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "time";
-    version = "0.1.39";
-    authors = [ "The Rust Project Developers" ];
-    sha256 = "1ryy3bwhvyzj6fym123il38mk9ranm4vradj2a47l5ij8jd7w5if";
-    inherit dependencies buildDependencies features;
-  };
-  toml_0_4_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "toml";
-    version = "0.4.6";
-    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
-    sha256 = "0rfl7lyb5f67spk69s604nw87f97g7fvv36hj9v88qlr2bwyrn8v";
-    inherit dependencies buildDependencies features;
-  };
-  ucd_util_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "ucd-util";
-    version = "0.1.1";
-    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
-    sha256 = "02a8h3siipx52b832xc8m8rwasj6nx9jpiwfldw8hp6k205hgkn0";
-    inherit dependencies buildDependencies features;
-  };
-  unicode_width_0_1_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "unicode-width";
-    version = "0.1.4";
-    authors = [ "kwantam <kwantam@gmail.com>" ];
-    sha256 = "1rp7a04icn9y5c0lm74nrd4py0rdl0af8bhdwq7g478n1xifpifl";
-    inherit dependencies buildDependencies features;
-  };
-  unicode_xid_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "unicode-xid";
-    version = "0.1.0";
-    authors = [ "erick.tryzelaar <erick.tryzelaar@gmail.com>" "kwantam <kwantam@gmail.com>" ];
-    sha256 = "05wdmwlfzxhq3nhsxn6wx4q8dhxzzfb9szsz6wiw092m1rjj01zj";
-    inherit dependencies buildDependencies features;
-  };
-  unreachable_1_0_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "unreachable";
-    version = "1.0.0";
-    authors = [ "Jonathan Reem <jonathan.reem@gmail.com>" ];
-    sha256 = "1am8czbk5wwr25gbp2zr007744fxjshhdqjz9liz7wl4pnv3whcf";
-    inherit dependencies buildDependencies features;
-  };
-  utf8_ranges_1_0_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "utf8-ranges";
-    version = "1.0.0";
-    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
-    sha256 = "0rzmqprwjv9yp1n0qqgahgm24872x6c0xddfym5pfndy7a36vkn0";
-    inherit dependencies buildDependencies features;
-  };
-  vcpkg_0_2_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "vcpkg";
-    version = "0.2.3";
-    authors = [ "Jim McGrath <jimmc2@gmail.com>" ];
-    sha256 = "0achi8sfy0wm4q04gj7nwpq9xfx8ynk6vv4r12a3ijg26hispq0c";
-    inherit dependencies buildDependencies features;
-  };
-  vec_map_0_8_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "vec_map";
-    version = "0.8.0";
-    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";
-    inherit dependencies buildDependencies features;
-  };
-  void_1_0_2_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "void";
-    version = "1.0.2";
-    authors = [ "Jonathan Reem <jonathan.reem@gmail.com>" ];
-    sha256 = "0h1dm0dx8dhf56a83k68mijyxigqhizpskwxfdrs1drwv2cdclv3";
-    inherit dependencies buildDependencies features;
-  };
-  winapi_0_3_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "winapi";
-    version = "0.3.4";
-    authors = [ "Peter Atashian <retep998@gmail.com>" ];
-    sha256 = "1qbrf5dcnd8j36cawby5d9r5vx07r0l4ryf672pfncnp8895k9lx";
-    build = "build.rs";
-    inherit dependencies buildDependencies features;
-  };
-  winapi_i686_pc_windows_gnu_0_4_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "winapi-i686-pc-windows-gnu";
-    version = "0.4.0";
-    authors = [ "Peter Atashian <retep998@gmail.com>" ];
-    sha256 = "05ihkij18r4gamjpxj4gra24514can762imjzlmak5wlzidplzrp";
-    build = "build.rs";
-    inherit dependencies buildDependencies features;
-  };
-  winapi_x86_64_pc_windows_gnu_0_4_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "winapi-x86_64-pc-windows-gnu";
-    version = "0.4.0";
-    authors = [ "Peter Atashian <retep998@gmail.com>" ];
-    sha256 = "0n1ylmlsb8yg1v583i4xy0qmqg42275flvbc51hdqjjfjcl9vlbj";
-    build = "build.rs";
-    inherit dependencies buildDependencies features;
-  };
-  wincolor_0_1_6_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-    crateName = "wincolor";
-    version = "0.1.6";
-    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
-    sha256 = "0f8m3l86pw6qi31jidqj78pgd15xj914850lyvsxkbln4f1drv47";
-    inherit dependencies buildDependencies features;
-  };
-  aho_corasick_0_6_4 = { features?(aho_corasick_0_6_4_features {}) }: aho_corasick_0_6_4_ {
-    dependencies = mapFeatures features ([ memchr_2_0_1 ]);
-  };
-  aho_corasick_0_6_4_features = f: updateFeatures f (rec {
-    aho_corasick_0_6_4.default = (f.aho_corasick_0_6_4.default or true);
-    memchr_2_0_1.default = true;
-  }) [ memchr_2_0_1_features ];
-  ansi_term_0_11_0 = { features?(ansi_term_0_11_0_features {}) }: ansi_term_0_11_0_ {
-    dependencies = (if kernel == "windows" then mapFeatures features ([ winapi_0_3_4 ]) else []);
-  };
-  ansi_term_0_11_0_features = f: updateFeatures f (rec {
-    ansi_term_0_11_0.default = (f.ansi_term_0_11_0.default or true);
-    winapi_0_3_4.consoleapi = true;
-    winapi_0_3_4.default = true;
-    winapi_0_3_4.errhandlingapi = true;
-    winapi_0_3_4.processenv = true;
-  }) [ winapi_0_3_4_features ];
-  atty_0_2_8 = { features?(atty_0_2_8_features {}) }: atty_0_2_8_ {
-    dependencies = (if kernel == "redox" then mapFeatures features ([ termion_1_5_1 ]) else [])
-      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_40 ]) else [])
-      ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_4 ]) else []);
-  };
-  atty_0_2_8_features = f: updateFeatures f (rec {
-    atty_0_2_8.default = (f.atty_0_2_8.default or true);
-    libc_0_2_40.default = (f.libc_0_2_40.default or false);
-    termion_1_5_1.default = true;
-    winapi_0_3_4.consoleapi = true;
-    winapi_0_3_4.default = true;
-    winapi_0_3_4.minwinbase = true;
-    winapi_0_3_4.minwindef = true;
-    winapi_0_3_4.processenv = true;
-    winapi_0_3_4.winbase = true;
-  }) [ termion_1_5_1_features libc_0_2_40_features winapi_0_3_4_features ];
-  backtrace_0_3_6 = { features?(backtrace_0_3_6_features {}) }: backtrace_0_3_6_ {
-    dependencies = mapFeatures features ([ cfg_if_0_1_2 rustc_demangle_0_1_7 ])
-      ++ (if (kernel == "linux" || kernel == "darwin") && !(kernel == "fuchsia") && !(kernel == "emscripten") && !(kernel == "darwin") && !(kernel == "ios") then mapFeatures features ([ ]
-      ++ (if features.backtrace_0_3_6.backtrace-sys or false then [ backtrace_sys_0_1_16 ] else [])) else [])
-      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_40 ]) else [])
-      ++ (if kernel == "windows" then mapFeatures features ([ ]
-      ++ (if features.backtrace_0_3_6.winapi or false then [ winapi_0_3_4 ] else [])) else []);
-    features = mkFeatures (features.backtrace_0_3_6 or {});
-  };
-  backtrace_0_3_6_features = f: updateFeatures f (rec {
-    backtrace_0_3_6.addr2line =
-      (f.backtrace_0_3_6.addr2line or false) ||
-      (f.backtrace_0_3_6.gimli-symbolize or false) ||
-      (backtrace_0_3_6.gimli-symbolize or false);
-    backtrace_0_3_6.backtrace-sys =
-      (f.backtrace_0_3_6.backtrace-sys or false) ||
-      (f.backtrace_0_3_6.libbacktrace or false) ||
-      (backtrace_0_3_6.libbacktrace or false);
-    backtrace_0_3_6.coresymbolication =
-      (f.backtrace_0_3_6.coresymbolication or false) ||
-      (f.backtrace_0_3_6.default or false) ||
-      (backtrace_0_3_6.default or false);
-    backtrace_0_3_6.dbghelp =
-      (f.backtrace_0_3_6.dbghelp or false) ||
-      (f.backtrace_0_3_6.default or false) ||
-      (backtrace_0_3_6.default or false);
-    backtrace_0_3_6.default = (f.backtrace_0_3_6.default or true);
-    backtrace_0_3_6.dladdr =
-      (f.backtrace_0_3_6.dladdr or false) ||
-      (f.backtrace_0_3_6.default or false) ||
-      (backtrace_0_3_6.default or false);
-    backtrace_0_3_6.findshlibs =
-      (f.backtrace_0_3_6.findshlibs or false) ||
-      (f.backtrace_0_3_6.gimli-symbolize or false) ||
-      (backtrace_0_3_6.gimli-symbolize or false);
-    backtrace_0_3_6.gimli =
-      (f.backtrace_0_3_6.gimli or false) ||
-      (f.backtrace_0_3_6.gimli-symbolize or false) ||
-      (backtrace_0_3_6.gimli-symbolize or false);
-    backtrace_0_3_6.libbacktrace =
-      (f.backtrace_0_3_6.libbacktrace or false) ||
-      (f.backtrace_0_3_6.default or false) ||
-      (backtrace_0_3_6.default or false);
-    backtrace_0_3_6.libunwind =
-      (f.backtrace_0_3_6.libunwind or false) ||
-      (f.backtrace_0_3_6.default or false) ||
-      (backtrace_0_3_6.default or false);
-    backtrace_0_3_6.memmap =
-      (f.backtrace_0_3_6.memmap or false) ||
-      (f.backtrace_0_3_6.gimli-symbolize or false) ||
-      (backtrace_0_3_6.gimli-symbolize or false);
-    backtrace_0_3_6.object =
-      (f.backtrace_0_3_6.object or false) ||
-      (f.backtrace_0_3_6.gimli-symbolize or false) ||
-      (backtrace_0_3_6.gimli-symbolize or false);
-    backtrace_0_3_6.rustc-serialize =
-      (f.backtrace_0_3_6.rustc-serialize or false) ||
-      (f.backtrace_0_3_6.serialize-rustc or false) ||
-      (backtrace_0_3_6.serialize-rustc or false);
-    backtrace_0_3_6.serde =
-      (f.backtrace_0_3_6.serde or false) ||
-      (f.backtrace_0_3_6.serialize-serde or false) ||
-      (backtrace_0_3_6.serialize-serde or false);
-    backtrace_0_3_6.serde_derive =
-      (f.backtrace_0_3_6.serde_derive or false) ||
-      (f.backtrace_0_3_6.serialize-serde or false) ||
-      (backtrace_0_3_6.serialize-serde or false);
-    backtrace_0_3_6.winapi =
-      (f.backtrace_0_3_6.winapi or false) ||
-      (f.backtrace_0_3_6.dbghelp or false) ||
-      (backtrace_0_3_6.dbghelp or false);
-    backtrace_sys_0_1_16.default = true;
-    cfg_if_0_1_2.default = true;
-    libc_0_2_40.default = true;
-    rustc_demangle_0_1_7.default = true;
-    winapi_0_3_4.dbghelp = true;
-    winapi_0_3_4.default = true;
-    winapi_0_3_4.minwindef = true;
-    winapi_0_3_4.processthreadsapi = true;
-    winapi_0_3_4.std = true;
-    winapi_0_3_4.winnt = true;
-  }) [ cfg_if_0_1_2_features rustc_demangle_0_1_7_features backtrace_sys_0_1_16_features libc_0_2_40_features winapi_0_3_4_features ];
-  backtrace_sys_0_1_16 = { features?(backtrace_sys_0_1_16_features {}) }: backtrace_sys_0_1_16_ {
-    dependencies = mapFeatures features ([ libc_0_2_40 ]);
-    buildDependencies = mapFeatures features ([ cc_1_0_10 ]);
-  };
-  backtrace_sys_0_1_16_features = f: updateFeatures f (rec {
-    backtrace_sys_0_1_16.default = (f.backtrace_sys_0_1_16.default or true);
-    cc_1_0_10.default = true;
-    libc_0_2_40.default = true;
-  }) [ libc_0_2_40_features cc_1_0_10_features ];
-  bitflags_1_0_1 = { features?(bitflags_1_0_1_features {}) }: bitflags_1_0_1_ {
-    features = mkFeatures (features.bitflags_1_0_1 or {});
-  };
-  bitflags_1_0_1_features = f: updateFeatures f (rec {
-    bitflags_1_0_1.default = (f.bitflags_1_0_1.default or true);
-    bitflags_1_0_1.example_generated =
-      (f.bitflags_1_0_1.example_generated or false) ||
-      (f.bitflags_1_0_1.default or false) ||
-      (bitflags_1_0_1.default or false);
-  }) [];
-  carnix_0_7_2 = { features?(carnix_0_7_2_features {}) }: carnix_0_7_2_ {
-    dependencies = mapFeatures features ([ clap_2_31_2 env_logger_0_5_7 error_chain_0_11_0 itertools_0_7_8 log_0_4_1 nom_3_2_1 regex_0_2_10 rusqlite_0_13_0 serde_1_0_38 serde_derive_1_0_38 serde_json_1_0_14 tempdir_0_3_7 toml_0_4_6 ]);
-  };
-  carnix_0_7_2_features = f: updateFeatures f (rec {
-    carnix_0_7_2.default = (f.carnix_0_7_2.default or true);
-    clap_2_31_2.default = true;
-    env_logger_0_5_7.default = true;
-    error_chain_0_11_0.default = true;
-    itertools_0_7_8.default = true;
-    log_0_4_1.default = true;
-    nom_3_2_1.default = true;
-    regex_0_2_10.default = true;
-    rusqlite_0_13_0.default = true;
-    serde_1_0_38.default = true;
-    serde_derive_1_0_38.default = true;
-    serde_json_1_0_14.default = true;
-    tempdir_0_3_7.default = true;
-    toml_0_4_6.default = true;
-  }) [ clap_2_31_2_features env_logger_0_5_7_features error_chain_0_11_0_features itertools_0_7_8_features log_0_4_1_features nom_3_2_1_features regex_0_2_10_features rusqlite_0_13_0_features serde_1_0_38_features serde_derive_1_0_38_features serde_json_1_0_14_features tempdir_0_3_7_features toml_0_4_6_features ];
-  cc_1_0_10 = { features?(cc_1_0_10_features {}) }: cc_1_0_10_ {
-    dependencies = mapFeatures features ([]);
-    features = mkFeatures (features.cc_1_0_10 or {});
-  };
-  cc_1_0_10_features = f: updateFeatures f (rec {
-    cc_1_0_10.default = (f.cc_1_0_10.default or true);
-    cc_1_0_10.rayon =
-      (f.cc_1_0_10.rayon or false) ||
-      (f.cc_1_0_10.parallel or false) ||
-      (cc_1_0_10.parallel or false);
-  }) [];
-  cfg_if_0_1_2 = { features?(cfg_if_0_1_2_features {}) }: cfg_if_0_1_2_ {};
-  cfg_if_0_1_2_features = f: updateFeatures f (rec {
-    cfg_if_0_1_2.default = (f.cfg_if_0_1_2.default or true);
-  }) [];
-  clap_2_31_2 = { features?(clap_2_31_2_features {}) }: clap_2_31_2_ {
-    dependencies = mapFeatures features ([ bitflags_1_0_1 textwrap_0_9_0 unicode_width_0_1_4 ]
-      ++ (if features.clap_2_31_2.atty or false then [ atty_0_2_8 ] else [])
-      ++ (if features.clap_2_31_2.strsim or false then [ strsim_0_7_0 ] else [])
-      ++ (if features.clap_2_31_2.vec_map or false then [ vec_map_0_8_0 ] else []))
-      ++ (if !(kernel == "windows") then mapFeatures features ([ ]
-      ++ (if features.clap_2_31_2.ansi_term or false then [ ansi_term_0_11_0 ] else [])) else []);
-    features = mkFeatures (features.clap_2_31_2 or {});
-  };
-  clap_2_31_2_features = f: updateFeatures f (rec {
-    ansi_term_0_11_0.default = true;
-    atty_0_2_8.default = true;
-    bitflags_1_0_1.default = true;
-    clap_2_31_2.ansi_term =
-      (f.clap_2_31_2.ansi_term or false) ||
-      (f.clap_2_31_2.color or false) ||
-      (clap_2_31_2.color or false);
-    clap_2_31_2.atty =
-      (f.clap_2_31_2.atty or false) ||
-      (f.clap_2_31_2.color or false) ||
-      (clap_2_31_2.color or false);
-    clap_2_31_2.clippy =
-      (f.clap_2_31_2.clippy or false) ||
-      (f.clap_2_31_2.lints or false) ||
-      (clap_2_31_2.lints or false);
-    clap_2_31_2.color =
-      (f.clap_2_31_2.color or false) ||
-      (f.clap_2_31_2.default or false) ||
-      (clap_2_31_2.default or false);
-    clap_2_31_2.default = (f.clap_2_31_2.default or true);
-    clap_2_31_2.strsim =
-      (f.clap_2_31_2.strsim or false) ||
-      (f.clap_2_31_2.suggestions or false) ||
-      (clap_2_31_2.suggestions or false);
-    clap_2_31_2.suggestions =
-      (f.clap_2_31_2.suggestions or false) ||
-      (f.clap_2_31_2.default or false) ||
-      (clap_2_31_2.default or false);
-    clap_2_31_2.term_size =
-      (f.clap_2_31_2.term_size or false) ||
-      (f.clap_2_31_2.wrap_help or false) ||
-      (clap_2_31_2.wrap_help or false);
-    clap_2_31_2.vec_map =
-      (f.clap_2_31_2.vec_map or false) ||
-      (f.clap_2_31_2.default or false) ||
-      (clap_2_31_2.default or false);
-    clap_2_31_2.yaml =
-      (f.clap_2_31_2.yaml or false) ||
-      (f.clap_2_31_2.doc or false) ||
-      (clap_2_31_2.doc or false);
-    clap_2_31_2.yaml-rust =
-      (f.clap_2_31_2.yaml-rust or false) ||
-      (f.clap_2_31_2.yaml or false) ||
-      (clap_2_31_2.yaml or false);
-    strsim_0_7_0.default = true;
-    textwrap_0_9_0.default = true;
-    textwrap_0_9_0.term_size =
-      (f.textwrap_0_9_0.term_size or false) ||
-      (clap_2_31_2.wrap_help or false) ||
-      (f.clap_2_31_2.wrap_help or false);
-    unicode_width_0_1_4.default = true;
-    vec_map_0_8_0.default = true;
-  }) [ atty_0_2_8_features bitflags_1_0_1_features strsim_0_7_0_features textwrap_0_9_0_features unicode_width_0_1_4_features vec_map_0_8_0_features ansi_term_0_11_0_features ];
-  dtoa_0_4_2 = { features?(dtoa_0_4_2_features {}) }: dtoa_0_4_2_ {};
-  dtoa_0_4_2_features = f: updateFeatures f (rec {
-    dtoa_0_4_2.default = (f.dtoa_0_4_2.default or true);
-  }) [];
-  either_1_5_0 = { features?(either_1_5_0_features {}) }: either_1_5_0_ {
-    dependencies = mapFeatures features ([]);
-    features = mkFeatures (features.either_1_5_0 or {});
-  };
-  either_1_5_0_features = f: updateFeatures f (rec {
-    either_1_5_0.default = (f.either_1_5_0.default or true);
-    either_1_5_0.use_std =
-      (f.either_1_5_0.use_std or false) ||
-      (f.either_1_5_0.default or false) ||
-      (either_1_5_0.default or false);
-  }) [];
-  env_logger_0_5_7 = { features?(env_logger_0_5_7_features {}) }: env_logger_0_5_7_ {
-    dependencies = mapFeatures features ([ atty_0_2_8 humantime_1_1_1 log_0_4_1 termcolor_0_3_6 ]
-      ++ (if features.env_logger_0_5_7.regex or false then [ regex_0_2_10 ] else []));
-    features = mkFeatures (features.env_logger_0_5_7 or {});
-  };
-  env_logger_0_5_7_features = f: updateFeatures f (rec {
-    atty_0_2_8.default = true;
-    env_logger_0_5_7.default = (f.env_logger_0_5_7.default or true);
-    env_logger_0_5_7.regex =
-      (f.env_logger_0_5_7.regex or false) ||
-      (f.env_logger_0_5_7.default or false) ||
-      (env_logger_0_5_7.default or false);
-    humantime_1_1_1.default = true;
-    log_0_4_1.default = true;
-    log_0_4_1.std = true;
-    regex_0_2_10.default = true;
-    termcolor_0_3_6.default = true;
-  }) [ atty_0_2_8_features humantime_1_1_1_features log_0_4_1_features regex_0_2_10_features termcolor_0_3_6_features ];
-  error_chain_0_11_0 = { features?(error_chain_0_11_0_features {}) }: error_chain_0_11_0_ {
-    dependencies = mapFeatures features ([ ]
-      ++ (if features.error_chain_0_11_0.backtrace or false then [ backtrace_0_3_6 ] else []));
-    features = mkFeatures (features.error_chain_0_11_0 or {});
-  };
-  error_chain_0_11_0_features = f: updateFeatures f (rec {
-    backtrace_0_3_6.default = true;
-    error_chain_0_11_0.backtrace =
-      (f.error_chain_0_11_0.backtrace or false) ||
-      (f.error_chain_0_11_0.default or false) ||
-      (error_chain_0_11_0.default or false);
-    error_chain_0_11_0.default = (f.error_chain_0_11_0.default or true);
-    error_chain_0_11_0.example_generated =
-      (f.error_chain_0_11_0.example_generated or false) ||
-      (f.error_chain_0_11_0.default or false) ||
-      (error_chain_0_11_0.default or false);
-  }) [ backtrace_0_3_6_features ];
-  fuchsia_zircon_0_3_3 = { features?(fuchsia_zircon_0_3_3_features {}) }: fuchsia_zircon_0_3_3_ {
-    dependencies = mapFeatures features ([ bitflags_1_0_1 fuchsia_zircon_sys_0_3_3 ]);
-  };
-  fuchsia_zircon_0_3_3_features = f: updateFeatures f (rec {
-    bitflags_1_0_1.default = true;
-    fuchsia_zircon_0_3_3.default = (f.fuchsia_zircon_0_3_3.default or true);
-    fuchsia_zircon_sys_0_3_3.default = true;
-  }) [ bitflags_1_0_1_features fuchsia_zircon_sys_0_3_3_features ];
-  fuchsia_zircon_sys_0_3_3 = { features?(fuchsia_zircon_sys_0_3_3_features {}) }: fuchsia_zircon_sys_0_3_3_ {};
-  fuchsia_zircon_sys_0_3_3_features = f: updateFeatures f (rec {
-    fuchsia_zircon_sys_0_3_3.default = (f.fuchsia_zircon_sys_0_3_3.default or true);
-  }) [];
-  humantime_1_1_1 = { features?(humantime_1_1_1_features {}) }: humantime_1_1_1_ {
-    dependencies = mapFeatures features ([ quick_error_1_2_1 ]);
-  };
-  humantime_1_1_1_features = f: updateFeatures f (rec {
-    humantime_1_1_1.default = (f.humantime_1_1_1.default or true);
-    quick_error_1_2_1.default = true;
-  }) [ quick_error_1_2_1_features ];
-  itertools_0_7_8 = { features?(itertools_0_7_8_features {}) }: itertools_0_7_8_ {
-    dependencies = mapFeatures features ([ either_1_5_0 ]);
-    features = mkFeatures (features.itertools_0_7_8 or {});
-  };
-  itertools_0_7_8_features = f: updateFeatures f (rec {
-    either_1_5_0.default = (f.either_1_5_0.default or false);
-    itertools_0_7_8.default = (f.itertools_0_7_8.default or true);
-    itertools_0_7_8.use_std =
-      (f.itertools_0_7_8.use_std or false) ||
-      (f.itertools_0_7_8.default or false) ||
-      (itertools_0_7_8.default or false);
-  }) [ either_1_5_0_features ];
-  itoa_0_4_1 = { features?(itoa_0_4_1_features {}) }: itoa_0_4_1_ {
-    features = mkFeatures (features.itoa_0_4_1 or {});
-  };
-  itoa_0_4_1_features = f: updateFeatures f (rec {
-    itoa_0_4_1.default = (f.itoa_0_4_1.default or true);
-    itoa_0_4_1.std =
-      (f.itoa_0_4_1.std or false) ||
-      (f.itoa_0_4_1.default or false) ||
-      (itoa_0_4_1.default or false);
-  }) [];
-  lazy_static_1_0_0 = { features?(lazy_static_1_0_0_features {}) }: lazy_static_1_0_0_ {
-    dependencies = mapFeatures features ([]);
-    features = mkFeatures (features.lazy_static_1_0_0 or {});
-  };
-  lazy_static_1_0_0_features = f: updateFeatures f (rec {
-    lazy_static_1_0_0.compiletest_rs =
-      (f.lazy_static_1_0_0.compiletest_rs or false) ||
-      (f.lazy_static_1_0_0.compiletest or false) ||
-      (lazy_static_1_0_0.compiletest or false);
-    lazy_static_1_0_0.default = (f.lazy_static_1_0_0.default or true);
-    lazy_static_1_0_0.nightly =
-      (f.lazy_static_1_0_0.nightly or false) ||
-      (f.lazy_static_1_0_0.spin_no_std or false) ||
-      (lazy_static_1_0_0.spin_no_std or false);
-    lazy_static_1_0_0.spin =
-      (f.lazy_static_1_0_0.spin or false) ||
-      (f.lazy_static_1_0_0.spin_no_std or false) ||
-      (lazy_static_1_0_0.spin_no_std or false);
-  }) [];
-  libc_0_2_40 = { features?(libc_0_2_40_features {}) }: libc_0_2_40_ {
-    features = mkFeatures (features.libc_0_2_40 or {});
-  };
-  libc_0_2_40_features = f: updateFeatures f (rec {
-    libc_0_2_40.default = (f.libc_0_2_40.default or true);
-    libc_0_2_40.use_std =
-      (f.libc_0_2_40.use_std or false) ||
-      (f.libc_0_2_40.default or false) ||
-      (libc_0_2_40.default or false);
-  }) [];
-  libsqlite3_sys_0_9_1 = { features?(libsqlite3_sys_0_9_1_features {}) }: libsqlite3_sys_0_9_1_ {
-    dependencies = (if abi == "msvc" then mapFeatures features ([]) else []);
-    buildDependencies = mapFeatures features ([ ]
-      ++ (if features.libsqlite3_sys_0_9_1.pkg-config or false then [ pkg_config_0_3_9 ] else []));
-    features = mkFeatures (features.libsqlite3_sys_0_9_1 or {});
-  };
-  libsqlite3_sys_0_9_1_features = f: updateFeatures f (rec {
-    libsqlite3_sys_0_9_1.bindgen =
-      (f.libsqlite3_sys_0_9_1.bindgen or false) ||
-      (f.libsqlite3_sys_0_9_1.buildtime_bindgen or false) ||
-      (libsqlite3_sys_0_9_1.buildtime_bindgen or false);
-    libsqlite3_sys_0_9_1.cc =
-      (f.libsqlite3_sys_0_9_1.cc or false) ||
-      (f.libsqlite3_sys_0_9_1.bundled or false) ||
-      (libsqlite3_sys_0_9_1.bundled or false);
-    libsqlite3_sys_0_9_1.default = (f.libsqlite3_sys_0_9_1.default or true);
-    libsqlite3_sys_0_9_1.min_sqlite_version_3_6_8 =
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_8 or false) ||
-      (f.libsqlite3_sys_0_9_1.default or false) ||
-      (libsqlite3_sys_0_9_1.default or false);
-    libsqlite3_sys_0_9_1.pkg-config =
-      (f.libsqlite3_sys_0_9_1.pkg-config or false) ||
-      (f.libsqlite3_sys_0_9_1.buildtime_bindgen or false) ||
-      (libsqlite3_sys_0_9_1.buildtime_bindgen or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_11 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_6_11 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_23 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_6_23 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_8 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_6_8 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_16 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_7_16 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_3 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_7_3 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_4 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_7_4 or false);
-    libsqlite3_sys_0_9_1.vcpkg =
-      (f.libsqlite3_sys_0_9_1.vcpkg or false) ||
-      (f.libsqlite3_sys_0_9_1.buildtime_bindgen or false) ||
-      (libsqlite3_sys_0_9_1.buildtime_bindgen or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_11 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_6_11 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_23 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_6_23 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_8 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_6_8 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_16 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_7_16 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_3 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_7_3 or false) ||
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_4 or false) ||
-      (libsqlite3_sys_0_9_1.min_sqlite_version_3_7_4 or false);
-    pkg_config_0_3_9.default = true;
-  }) [ pkg_config_0_3_9_features ];
-  linked_hash_map_0_4_2 = { features?(linked_hash_map_0_4_2_features {}) }: linked_hash_map_0_4_2_ {
-    dependencies = mapFeatures features ([]);
-    features = mkFeatures (features.linked_hash_map_0_4_2 or {});
-  };
-  linked_hash_map_0_4_2_features = f: updateFeatures f (rec {
-    linked_hash_map_0_4_2.default = (f.linked_hash_map_0_4_2.default or true);
-    linked_hash_map_0_4_2.heapsize =
-      (f.linked_hash_map_0_4_2.heapsize or false) ||
-      (f.linked_hash_map_0_4_2.heapsize_impl or false) ||
-      (linked_hash_map_0_4_2.heapsize_impl or false);
-    linked_hash_map_0_4_2.serde =
-      (f.linked_hash_map_0_4_2.serde or false) ||
-      (f.linked_hash_map_0_4_2.serde_impl or false) ||
-      (linked_hash_map_0_4_2.serde_impl or false);
-    linked_hash_map_0_4_2.serde_test =
-      (f.linked_hash_map_0_4_2.serde_test or false) ||
-      (f.linked_hash_map_0_4_2.serde_impl or false) ||
-      (linked_hash_map_0_4_2.serde_impl or false);
-  }) [];
-  log_0_4_1 = { features?(log_0_4_1_features {}) }: log_0_4_1_ {
-    dependencies = mapFeatures features ([ cfg_if_0_1_2 ]);
-    features = mkFeatures (features.log_0_4_1 or {});
-  };
-  log_0_4_1_features = f: updateFeatures f (rec {
-    cfg_if_0_1_2.default = true;
-    log_0_4_1.default = (f.log_0_4_1.default or true);
-  }) [ cfg_if_0_1_2_features ];
-  lru_cache_0_1_1 = { features?(lru_cache_0_1_1_features {}) }: lru_cache_0_1_1_ {
-    dependencies = mapFeatures features ([ linked_hash_map_0_4_2 ]);
-    features = mkFeatures (features.lru_cache_0_1_1 or {});
-  };
-  lru_cache_0_1_1_features = f: updateFeatures f (rec {
-    linked_hash_map_0_4_2.default = true;
-    linked_hash_map_0_4_2.heapsize_impl =
-      (f.linked_hash_map_0_4_2.heapsize_impl or false) ||
-      (lru_cache_0_1_1.heapsize_impl or false) ||
-      (f.lru_cache_0_1_1.heapsize_impl or false);
-    lru_cache_0_1_1.default = (f.lru_cache_0_1_1.default or true);
-    lru_cache_0_1_1.heapsize =
-      (f.lru_cache_0_1_1.heapsize or false) ||
-      (f.lru_cache_0_1_1.heapsize_impl or false) ||
-      (lru_cache_0_1_1.heapsize_impl or false);
-  }) [ linked_hash_map_0_4_2_features ];
-  memchr_1_0_2 = { features?(memchr_1_0_2_features {}) }: memchr_1_0_2_ {
-    dependencies = mapFeatures features ([ ]
-      ++ (if features.memchr_1_0_2.libc or false then [ libc_0_2_40 ] else []));
-    features = mkFeatures (features.memchr_1_0_2 or {});
-  };
-  memchr_1_0_2_features = f: updateFeatures f (rec {
-    libc_0_2_40.default = (f.libc_0_2_40.default or false);
-    libc_0_2_40.use_std =
-      (f.libc_0_2_40.use_std or false) ||
-      (memchr_1_0_2.use_std or false) ||
-      (f.memchr_1_0_2.use_std or false);
-    memchr_1_0_2.default = (f.memchr_1_0_2.default or true);
-    memchr_1_0_2.libc =
-      (f.memchr_1_0_2.libc or false) ||
-      (f.memchr_1_0_2.default or false) ||
-      (memchr_1_0_2.default or false) ||
-      (f.memchr_1_0_2.use_std or false) ||
-      (memchr_1_0_2.use_std or false);
-    memchr_1_0_2.use_std =
-      (f.memchr_1_0_2.use_std or false) ||
-      (f.memchr_1_0_2.default or false) ||
-      (memchr_1_0_2.default or false);
-  }) [ libc_0_2_40_features ];
-  memchr_2_0_1 = { features?(memchr_2_0_1_features {}) }: memchr_2_0_1_ {
-    dependencies = mapFeatures features ([ ]
-      ++ (if features.memchr_2_0_1.libc or false then [ libc_0_2_40 ] else []));
-    features = mkFeatures (features.memchr_2_0_1 or {});
-  };
-  memchr_2_0_1_features = f: updateFeatures f (rec {
-    libc_0_2_40.default = (f.libc_0_2_40.default or false);
-    libc_0_2_40.use_std =
-      (f.libc_0_2_40.use_std or false) ||
-      (memchr_2_0_1.use_std or false) ||
-      (f.memchr_2_0_1.use_std or false);
-    memchr_2_0_1.default = (f.memchr_2_0_1.default or true);
-    memchr_2_0_1.libc =
-      (f.memchr_2_0_1.libc or false) ||
-      (f.memchr_2_0_1.default or false) ||
-      (memchr_2_0_1.default or false) ||
-      (f.memchr_2_0_1.use_std or false) ||
-      (memchr_2_0_1.use_std or false);
-    memchr_2_0_1.use_std =
-      (f.memchr_2_0_1.use_std or false) ||
-      (f.memchr_2_0_1.default or false) ||
-      (memchr_2_0_1.default or false);
-  }) [ libc_0_2_40_features ];
-  nom_3_2_1 = { features?(nom_3_2_1_features {}) }: nom_3_2_1_ {
-    dependencies = mapFeatures features ([ memchr_1_0_2 ]);
-    features = mkFeatures (features.nom_3_2_1 or {});
-  };
-  nom_3_2_1_features = f: updateFeatures f (rec {
-    memchr_1_0_2.default = (f.memchr_1_0_2.default or false);
-    memchr_1_0_2.use_std =
-      (f.memchr_1_0_2.use_std or false) ||
-      (nom_3_2_1.std or false) ||
-      (f.nom_3_2_1.std or false);
-    nom_3_2_1.compiler_error =
-      (f.nom_3_2_1.compiler_error or false) ||
-      (f.nom_3_2_1.nightly or false) ||
-      (nom_3_2_1.nightly or false);
-    nom_3_2_1.default = (f.nom_3_2_1.default or true);
-    nom_3_2_1.lazy_static =
-      (f.nom_3_2_1.lazy_static or false) ||
-      (f.nom_3_2_1.regexp_macros or false) ||
-      (nom_3_2_1.regexp_macros or false);
-    nom_3_2_1.regex =
-      (f.nom_3_2_1.regex or false) ||
-      (f.nom_3_2_1.regexp or false) ||
-      (nom_3_2_1.regexp or false);
-    nom_3_2_1.regexp =
-      (f.nom_3_2_1.regexp or false) ||
-      (f.nom_3_2_1.regexp_macros or false) ||
-      (nom_3_2_1.regexp_macros or false);
-    nom_3_2_1.std =
-      (f.nom_3_2_1.std or false) ||
-      (f.nom_3_2_1.default or false) ||
-      (nom_3_2_1.default or false);
-    nom_3_2_1.stream =
-      (f.nom_3_2_1.stream or false) ||
-      (f.nom_3_2_1.default or false) ||
-      (nom_3_2_1.default or false);
-  }) [ memchr_1_0_2_features ];
-  num_traits_0_2_2 = { features?(num_traits_0_2_2_features {}) }: num_traits_0_2_2_ {
-    features = mkFeatures (features.num_traits_0_2_2 or {});
-  };
-  num_traits_0_2_2_features = f: updateFeatures f (rec {
-    num_traits_0_2_2.default = (f.num_traits_0_2_2.default or true);
-    num_traits_0_2_2.std =
-      (f.num_traits_0_2_2.std or false) ||
-      (f.num_traits_0_2_2.default or false) ||
-      (num_traits_0_2_2.default or false);
-  }) [];
-  pkg_config_0_3_9 = { features?(pkg_config_0_3_9_features {}) }: pkg_config_0_3_9_ {};
-  pkg_config_0_3_9_features = f: updateFeatures f (rec {
-    pkg_config_0_3_9.default = (f.pkg_config_0_3_9.default or true);
-  }) [];
-  proc_macro2_0_3_6 = { features?(proc_macro2_0_3_6_features {}) }: proc_macro2_0_3_6_ {
-    dependencies = mapFeatures features ([ unicode_xid_0_1_0 ]);
-    features = mkFeatures (features.proc_macro2_0_3_6 or {});
-  };
-  proc_macro2_0_3_6_features = f: updateFeatures f (rec {
-    proc_macro2_0_3_6.default = (f.proc_macro2_0_3_6.default or true);
-    proc_macro2_0_3_6.proc-macro =
-      (f.proc_macro2_0_3_6.proc-macro or false) ||
-      (f.proc_macro2_0_3_6.default or false) ||
-      (proc_macro2_0_3_6.default or false) ||
-      (f.proc_macro2_0_3_6.nightly or false) ||
-      (proc_macro2_0_3_6.nightly or false);
-    unicode_xid_0_1_0.default = true;
-  }) [ unicode_xid_0_1_0_features ];
-  quick_error_1_2_1 = { features?(quick_error_1_2_1_features {}) }: quick_error_1_2_1_ {};
-  quick_error_1_2_1_features = f: updateFeatures f (rec {
-    quick_error_1_2_1.default = (f.quick_error_1_2_1.default or true);
-  }) [];
-  quote_0_5_1 = { features?(quote_0_5_1_features {}) }: quote_0_5_1_ {
-    dependencies = mapFeatures features ([ proc_macro2_0_3_6 ]);
-    features = mkFeatures (features.quote_0_5_1 or {});
-  };
-  quote_0_5_1_features = f: updateFeatures f (rec {
-    proc_macro2_0_3_6.default = (f.proc_macro2_0_3_6.default or false);
-    proc_macro2_0_3_6.proc-macro =
-      (f.proc_macro2_0_3_6.proc-macro or false) ||
-      (quote_0_5_1.proc-macro or false) ||
-      (f.quote_0_5_1.proc-macro or false);
-    quote_0_5_1.default = (f.quote_0_5_1.default or true);
-    quote_0_5_1.proc-macro =
-      (f.quote_0_5_1.proc-macro or false) ||
-      (f.quote_0_5_1.default or false) ||
-      (quote_0_5_1.default or false);
-  }) [ proc_macro2_0_3_6_features ];
-  rand_0_4_2 = { features?(rand_0_4_2_features {}) }: rand_0_4_2_ {
-    dependencies = (if kernel == "fuchsia" then mapFeatures features ([ fuchsia_zircon_0_3_3 ]) else [])
-      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ ]
-      ++ (if features.rand_0_4_2.libc or false then [ libc_0_2_40 ] else [])) else [])
-      ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_4 ]) else []);
-    features = mkFeatures (features.rand_0_4_2 or {});
-  };
-  rand_0_4_2_features = f: updateFeatures f (rec {
-    fuchsia_zircon_0_3_3.default = true;
-    libc_0_2_40.default = true;
-    rand_0_4_2.default = (f.rand_0_4_2.default or true);
-    rand_0_4_2.i128_support =
-      (f.rand_0_4_2.i128_support or false) ||
-      (f.rand_0_4_2.nightly or false) ||
-      (rand_0_4_2.nightly or false);
-    rand_0_4_2.libc =
-      (f.rand_0_4_2.libc or false) ||
-      (f.rand_0_4_2.std or false) ||
-      (rand_0_4_2.std or false);
-    rand_0_4_2.std =
-      (f.rand_0_4_2.std or false) ||
-      (f.rand_0_4_2.default or false) ||
-      (rand_0_4_2.default or false);
-    winapi_0_3_4.default = true;
-    winapi_0_3_4.minwindef = true;
-    winapi_0_3_4.ntsecapi = true;
-    winapi_0_3_4.profileapi = true;
-    winapi_0_3_4.winnt = true;
-  }) [ fuchsia_zircon_0_3_3_features libc_0_2_40_features winapi_0_3_4_features ];
-  redox_syscall_0_1_37 = { features?(redox_syscall_0_1_37_features {}) }: redox_syscall_0_1_37_ {};
-  redox_syscall_0_1_37_features = f: updateFeatures f (rec {
-    redox_syscall_0_1_37.default = (f.redox_syscall_0_1_37.default or true);
-  }) [];
-  redox_termios_0_1_1 = { features?(redox_termios_0_1_1_features {}) }: redox_termios_0_1_1_ {
-    dependencies = mapFeatures features ([ redox_syscall_0_1_37 ]);
-  };
-  redox_termios_0_1_1_features = f: updateFeatures f (rec {
-    redox_syscall_0_1_37.default = true;
-    redox_termios_0_1_1.default = (f.redox_termios_0_1_1.default or true);
-  }) [ redox_syscall_0_1_37_features ];
-  regex_0_2_10 = { features?(regex_0_2_10_features {}) }: regex_0_2_10_ {
-    dependencies = mapFeatures features ([ aho_corasick_0_6_4 memchr_2_0_1 regex_syntax_0_5_5 thread_local_0_3_5 utf8_ranges_1_0_0 ]);
-    features = mkFeatures (features.regex_0_2_10 or {});
-  };
-  regex_0_2_10_features = f: updateFeatures f (rec {
-    aho_corasick_0_6_4.default = true;
-    memchr_2_0_1.default = true;
-    regex_0_2_10.default = (f.regex_0_2_10.default or true);
-    regex_0_2_10.pattern =
-      (f.regex_0_2_10.pattern or false) ||
-      (f.regex_0_2_10.unstable or false) ||
-      (regex_0_2_10.unstable or false);
-    regex_syntax_0_5_5.default = true;
-    thread_local_0_3_5.default = true;
-    utf8_ranges_1_0_0.default = true;
-  }) [ aho_corasick_0_6_4_features memchr_2_0_1_features regex_syntax_0_5_5_features thread_local_0_3_5_features utf8_ranges_1_0_0_features ];
-  regex_syntax_0_5_5 = { features?(regex_syntax_0_5_5_features {}) }: regex_syntax_0_5_5_ {
-    dependencies = mapFeatures features ([ ucd_util_0_1_1 ]);
-  };
-  regex_syntax_0_5_5_features = f: updateFeatures f (rec {
-    regex_syntax_0_5_5.default = (f.regex_syntax_0_5_5.default or true);
-    ucd_util_0_1_1.default = true;
-  }) [ ucd_util_0_1_1_features ];
-  remove_dir_all_0_5_0 = { features?(remove_dir_all_0_5_0_features {}) }: remove_dir_all_0_5_0_ {
-    dependencies = (if kernel == "windows" then mapFeatures features ([ winapi_0_3_4 ]) else []);
-  };
-  remove_dir_all_0_5_0_features = f: updateFeatures f (rec {
-    remove_dir_all_0_5_0.default = (f.remove_dir_all_0_5_0.default or true);
-    winapi_0_3_4.default = true;
-    winapi_0_3_4.errhandlingapi = true;
-    winapi_0_3_4.fileapi = true;
-    winapi_0_3_4.std = true;
-    winapi_0_3_4.winbase = true;
-    winapi_0_3_4.winerror = true;
-  }) [ winapi_0_3_4_features ];
-  rusqlite_0_13_0 = { features?(rusqlite_0_13_0_features {}) }: rusqlite_0_13_0_ {
-    dependencies = mapFeatures features ([ bitflags_1_0_1 libsqlite3_sys_0_9_1 lru_cache_0_1_1 time_0_1_39 ]);
-    features = mkFeatures (features.rusqlite_0_13_0 or {});
-  };
-  rusqlite_0_13_0_features = f: updateFeatures f (rec {
-    bitflags_1_0_1.default = true;
-    libsqlite3_sys_0_9_1.buildtime_bindgen =
-      (f.libsqlite3_sys_0_9_1.buildtime_bindgen or false) ||
-      (rusqlite_0_13_0.buildtime_bindgen or false) ||
-      (f.rusqlite_0_13_0.buildtime_bindgen or false);
-    libsqlite3_sys_0_9_1.bundled =
-      (f.libsqlite3_sys_0_9_1.bundled or false) ||
-      (rusqlite_0_13_0.bundled or false) ||
-      (f.rusqlite_0_13_0.bundled or false);
-    libsqlite3_sys_0_9_1.default = true;
-    libsqlite3_sys_0_9_1.min_sqlite_version_3_6_11 =
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_11 or false) ||
-      (rusqlite_0_13_0.backup or false) ||
-      (f.rusqlite_0_13_0.backup or false);
-    libsqlite3_sys_0_9_1.min_sqlite_version_3_6_23 =
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_6_23 or false) ||
-      (rusqlite_0_13_0.trace or false) ||
-      (f.rusqlite_0_13_0.trace or false);
-    libsqlite3_sys_0_9_1.min_sqlite_version_3_7_3 =
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_3 or false) ||
-      (rusqlite_0_13_0.functions or false) ||
-      (f.rusqlite_0_13_0.functions or false);
-    libsqlite3_sys_0_9_1.min_sqlite_version_3_7_4 =
-      (f.libsqlite3_sys_0_9_1.min_sqlite_version_3_7_4 or false) ||
-      (rusqlite_0_13_0.blob or false) ||
-      (f.rusqlite_0_13_0.blob or false);
-    libsqlite3_sys_0_9_1.sqlcipher =
-      (f.libsqlite3_sys_0_9_1.sqlcipher or false) ||
-      (rusqlite_0_13_0.sqlcipher or false) ||
-      (f.rusqlite_0_13_0.sqlcipher or false);
-    lru_cache_0_1_1.default = true;
-    rusqlite_0_13_0.default = (f.rusqlite_0_13_0.default or true);
-    time_0_1_39.default = true;
-  }) [ bitflags_1_0_1_features libsqlite3_sys_0_9_1_features lru_cache_0_1_1_features time_0_1_39_features ];
-  rustc_demangle_0_1_7 = { features?(rustc_demangle_0_1_7_features {}) }: rustc_demangle_0_1_7_ {};
-  rustc_demangle_0_1_7_features = f: updateFeatures f (rec {
-    rustc_demangle_0_1_7.default = (f.rustc_demangle_0_1_7.default or true);
-  }) [];
-  serde_1_0_38 = { features?(serde_1_0_38_features {}) }: serde_1_0_38_ {
-    dependencies = mapFeatures features ([]);
-    features = mkFeatures (features.serde_1_0_38 or {});
-  };
-  serde_1_0_38_features = f: updateFeatures f (rec {
-    serde_1_0_38.default = (f.serde_1_0_38.default or true);
-    serde_1_0_38.serde_derive =
-      (f.serde_1_0_38.serde_derive or false) ||
-      (f.serde_1_0_38.derive or false) ||
-      (serde_1_0_38.derive or false) ||
-      (f.serde_1_0_38.playground or false) ||
-      (serde_1_0_38.playground or false);
-    serde_1_0_38.std =
-      (f.serde_1_0_38.std or false) ||
-      (f.serde_1_0_38.default or false) ||
-      (serde_1_0_38.default or false);
-    serde_1_0_38.unstable =
-      (f.serde_1_0_38.unstable or false) ||
-      (f.serde_1_0_38.alloc or false) ||
-      (serde_1_0_38.alloc or false);
-  }) [];
-  serde_derive_1_0_38 = { features?(serde_derive_1_0_38_features {}) }: serde_derive_1_0_38_ {
-    dependencies = mapFeatures features ([ proc_macro2_0_3_6 quote_0_5_1 serde_derive_internals_0_23_1 syn_0_13_1 ]);
-    features = mkFeatures (features.serde_derive_1_0_38 or {});
-  };
-  serde_derive_1_0_38_features = f: updateFeatures f (rec {
-    proc_macro2_0_3_6.default = true;
-    quote_0_5_1.default = true;
-    serde_derive_1_0_38.default = (f.serde_derive_1_0_38.default or true);
-    serde_derive_internals_0_23_1.default = (f.serde_derive_internals_0_23_1.default or false);
-    syn_0_13_1.default = true;
-    syn_0_13_1.visit = true;
-  }) [ proc_macro2_0_3_6_features quote_0_5_1_features serde_derive_internals_0_23_1_features syn_0_13_1_features ];
-  serde_derive_internals_0_23_1 = { features?(serde_derive_internals_0_23_1_features {}) }: serde_derive_internals_0_23_1_ {
-    dependencies = mapFeatures features ([ proc_macro2_0_3_6 syn_0_13_1 ]);
-  };
-  serde_derive_internals_0_23_1_features = f: updateFeatures f (rec {
-    proc_macro2_0_3_6.default = true;
-    serde_derive_internals_0_23_1.default = (f.serde_derive_internals_0_23_1.default or true);
-    syn_0_13_1.clone-impls = true;
-    syn_0_13_1.default = (f.syn_0_13_1.default or false);
-    syn_0_13_1.derive = true;
-    syn_0_13_1.parsing = true;
-  }) [ proc_macro2_0_3_6_features syn_0_13_1_features ];
-  serde_json_1_0_14 = { features?(serde_json_1_0_14_features {}) }: serde_json_1_0_14_ {
-    dependencies = mapFeatures features ([ dtoa_0_4_2 itoa_0_4_1 num_traits_0_2_2 serde_1_0_38 ]);
-    features = mkFeatures (features.serde_json_1_0_14 or {});
-  };
-  serde_json_1_0_14_features = f: updateFeatures f (rec {
-    dtoa_0_4_2.default = true;
-    itoa_0_4_1.default = true;
-    num_traits_0_2_2.default = (f.num_traits_0_2_2.default or false);
-    serde_1_0_38.default = true;
-    serde_json_1_0_14.default = (f.serde_json_1_0_14.default or true);
-    serde_json_1_0_14.linked-hash-map =
-      (f.serde_json_1_0_14.linked-hash-map or false) ||
-      (f.serde_json_1_0_14.preserve_order or false) ||
-      (serde_json_1_0_14.preserve_order or false);
-  }) [ dtoa_0_4_2_features itoa_0_4_1_features num_traits_0_2_2_features serde_1_0_38_features ];
-  strsim_0_7_0 = { features?(strsim_0_7_0_features {}) }: strsim_0_7_0_ {};
-  strsim_0_7_0_features = f: updateFeatures f (rec {
-    strsim_0_7_0.default = (f.strsim_0_7_0.default or true);
-  }) [];
-  syn_0_13_1 = { features?(syn_0_13_1_features {}) }: syn_0_13_1_ {
-    dependencies = mapFeatures features ([ proc_macro2_0_3_6 unicode_xid_0_1_0 ]
-      ++ (if features.syn_0_13_1.quote or false then [ quote_0_5_1 ] else []));
-    features = mkFeatures (features.syn_0_13_1 or {});
-  };
-  syn_0_13_1_features = f: updateFeatures f (rec {
-    proc_macro2_0_3_6.default = (f.proc_macro2_0_3_6.default or false);
-    proc_macro2_0_3_6.proc-macro =
-      (f.proc_macro2_0_3_6.proc-macro or false) ||
-      (syn_0_13_1.proc-macro or false) ||
-      (f.syn_0_13_1.proc-macro or false);
-    quote_0_5_1.default = (f.quote_0_5_1.default or false);
-    quote_0_5_1.proc-macro =
-      (f.quote_0_5_1.proc-macro or false) ||
-      (syn_0_13_1.proc-macro or false) ||
-      (f.syn_0_13_1.proc-macro or false);
-    syn_0_13_1.clone-impls =
-      (f.syn_0_13_1.clone-impls or false) ||
-      (f.syn_0_13_1.default or false) ||
-      (syn_0_13_1.default or false);
-    syn_0_13_1.default = (f.syn_0_13_1.default or true);
-    syn_0_13_1.derive =
-      (f.syn_0_13_1.derive or false) ||
-      (f.syn_0_13_1.default or false) ||
-      (syn_0_13_1.default or false);
-    syn_0_13_1.parsing =
-      (f.syn_0_13_1.parsing or false) ||
-      (f.syn_0_13_1.default or false) ||
-      (syn_0_13_1.default or false);
-    syn_0_13_1.printing =
-      (f.syn_0_13_1.printing or false) ||
-      (f.syn_0_13_1.default or false) ||
-      (syn_0_13_1.default or false);
-    syn_0_13_1.proc-macro =
-      (f.syn_0_13_1.proc-macro or false) ||
-      (f.syn_0_13_1.default or false) ||
-      (syn_0_13_1.default or false);
-    syn_0_13_1.quote =
-      (f.syn_0_13_1.quote or false) ||
-      (f.syn_0_13_1.printing or false) ||
-      (syn_0_13_1.printing or false);
-    unicode_xid_0_1_0.default = true;
-  }) [ proc_macro2_0_3_6_features quote_0_5_1_features unicode_xid_0_1_0_features ];
-  tempdir_0_3_7 = { features?(tempdir_0_3_7_features {}) }: tempdir_0_3_7_ {
-    dependencies = mapFeatures features ([ rand_0_4_2 remove_dir_all_0_5_0 ]);
-  };
-  tempdir_0_3_7_features = f: updateFeatures f (rec {
-    rand_0_4_2.default = true;
-    remove_dir_all_0_5_0.default = true;
-    tempdir_0_3_7.default = (f.tempdir_0_3_7.default or true);
-  }) [ rand_0_4_2_features remove_dir_all_0_5_0_features ];
-  termcolor_0_3_6 = { features?(termcolor_0_3_6_features {}) }: termcolor_0_3_6_ {
-    dependencies = (if kernel == "windows" then mapFeatures features ([ wincolor_0_1_6 ]) else []);
-  };
-  termcolor_0_3_6_features = f: updateFeatures f (rec {
-    termcolor_0_3_6.default = (f.termcolor_0_3_6.default or true);
-    wincolor_0_1_6.default = true;
-  }) [ wincolor_0_1_6_features ];
-  termion_1_5_1 = { features?(termion_1_5_1_features {}) }: termion_1_5_1_ {
-    dependencies = (if !(kernel == "redox") then mapFeatures features ([ libc_0_2_40 ]) else [])
-      ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_37 redox_termios_0_1_1 ]) else []);
-  };
-  termion_1_5_1_features = f: updateFeatures f (rec {
-    libc_0_2_40.default = true;
-    redox_syscall_0_1_37.default = true;
-    redox_termios_0_1_1.default = true;
-    termion_1_5_1.default = (f.termion_1_5_1.default or true);
-  }) [ libc_0_2_40_features redox_syscall_0_1_37_features redox_termios_0_1_1_features ];
-  textwrap_0_9_0 = { features?(textwrap_0_9_0_features {}) }: textwrap_0_9_0_ {
-    dependencies = mapFeatures features ([ unicode_width_0_1_4 ]);
-  };
-  textwrap_0_9_0_features = f: updateFeatures f (rec {
-    textwrap_0_9_0.default = (f.textwrap_0_9_0.default or true);
-    unicode_width_0_1_4.default = true;
-  }) [ unicode_width_0_1_4_features ];
-  thread_local_0_3_5 = { features?(thread_local_0_3_5_features {}) }: thread_local_0_3_5_ {
-    dependencies = mapFeatures features ([ lazy_static_1_0_0 unreachable_1_0_0 ]);
-  };
-  thread_local_0_3_5_features = f: updateFeatures f (rec {
-    lazy_static_1_0_0.default = true;
-    thread_local_0_3_5.default = (f.thread_local_0_3_5.default or true);
-    unreachable_1_0_0.default = true;
-  }) [ lazy_static_1_0_0_features unreachable_1_0_0_features ];
-  time_0_1_39 = { features?(time_0_1_39_features {}) }: time_0_1_39_ {
-    dependencies = mapFeatures features ([ libc_0_2_40 ])
-      ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_37 ]) else [])
-      ++ (if kernel == "windows" then mapFeatures features ([ winapi_0_3_4 ]) else []);
-  };
-  time_0_1_39_features = f: updateFeatures f (rec {
-    libc_0_2_40.default = true;
-    redox_syscall_0_1_37.default = true;
-    time_0_1_39.default = (f.time_0_1_39.default or true);
-    winapi_0_3_4.default = true;
-    winapi_0_3_4.minwinbase = true;
-    winapi_0_3_4.minwindef = true;
-    winapi_0_3_4.ntdef = true;
-    winapi_0_3_4.profileapi = true;
-    winapi_0_3_4.std = true;
-    winapi_0_3_4.sysinfoapi = true;
-    winapi_0_3_4.timezoneapi = true;
-  }) [ libc_0_2_40_features redox_syscall_0_1_37_features winapi_0_3_4_features ];
-  toml_0_4_6 = { features?(toml_0_4_6_features {}) }: toml_0_4_6_ {
-    dependencies = mapFeatures features ([ serde_1_0_38 ]);
-  };
-  toml_0_4_6_features = f: updateFeatures f (rec {
-    serde_1_0_38.default = true;
-    toml_0_4_6.default = (f.toml_0_4_6.default or true);
-  }) [ serde_1_0_38_features ];
-  ucd_util_0_1_1 = { features?(ucd_util_0_1_1_features {}) }: ucd_util_0_1_1_ {};
-  ucd_util_0_1_1_features = f: updateFeatures f (rec {
-    ucd_util_0_1_1.default = (f.ucd_util_0_1_1.default or true);
-  }) [];
-  unicode_width_0_1_4 = { features?(unicode_width_0_1_4_features {}) }: unicode_width_0_1_4_ {
-    features = mkFeatures (features.unicode_width_0_1_4 or {});
-  };
-  unicode_width_0_1_4_features = f: updateFeatures f (rec {
-    unicode_width_0_1_4.default = (f.unicode_width_0_1_4.default or true);
-  }) [];
-  unicode_xid_0_1_0 = { features?(unicode_xid_0_1_0_features {}) }: unicode_xid_0_1_0_ {
-    features = mkFeatures (features.unicode_xid_0_1_0 or {});
-  };
-  unicode_xid_0_1_0_features = f: updateFeatures f (rec {
-    unicode_xid_0_1_0.default = (f.unicode_xid_0_1_0.default or true);
-  }) [];
-  unreachable_1_0_0 = { features?(unreachable_1_0_0_features {}) }: unreachable_1_0_0_ {
-    dependencies = mapFeatures features ([ void_1_0_2 ]);
-  };
-  unreachable_1_0_0_features = f: updateFeatures f (rec {
-    unreachable_1_0_0.default = (f.unreachable_1_0_0.default or true);
-    void_1_0_2.default = (f.void_1_0_2.default or false);
-  }) [ void_1_0_2_features ];
-  utf8_ranges_1_0_0 = { features?(utf8_ranges_1_0_0_features {}) }: utf8_ranges_1_0_0_ {};
-  utf8_ranges_1_0_0_features = f: updateFeatures f (rec {
-    utf8_ranges_1_0_0.default = (f.utf8_ranges_1_0_0.default or true);
-  }) [];
-  vcpkg_0_2_3 = { features?(vcpkg_0_2_3_features {}) }: vcpkg_0_2_3_ {};
-  vcpkg_0_2_3_features = f: updateFeatures f (rec {
-    vcpkg_0_2_3.default = (f.vcpkg_0_2_3.default or true);
-  }) [];
-  vec_map_0_8_0 = { features?(vec_map_0_8_0_features {}) }: vec_map_0_8_0_ {
-    dependencies = mapFeatures features ([]);
-    features = mkFeatures (features.vec_map_0_8_0 or {});
-  };
-  vec_map_0_8_0_features = f: updateFeatures f (rec {
-    vec_map_0_8_0.default = (f.vec_map_0_8_0.default or true);
-    vec_map_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);
-    vec_map_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);
-  }) [];
-  void_1_0_2 = { features?(void_1_0_2_features {}) }: void_1_0_2_ {
-    features = mkFeatures (features.void_1_0_2 or {});
-  };
-  void_1_0_2_features = f: updateFeatures f (rec {
-    void_1_0_2.default = (f.void_1_0_2.default or true);
-    void_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);
-  }) [];
-  winapi_0_3_4 = { features?(winapi_0_3_4_features {}) }: winapi_0_3_4_ {
-    dependencies = (if kernel == "i686-pc-windows-gnu" then mapFeatures features ([ winapi_i686_pc_windows_gnu_0_4_0 ]) else [])
-      ++ (if kernel == "x86_64-pc-windows-gnu" then mapFeatures features ([ winapi_x86_64_pc_windows_gnu_0_4_0 ]) else []);
-    features = mkFeatures (features.winapi_0_3_4 or {});
-  };
-  winapi_0_3_4_features = f: updateFeatures f (rec {
-    winapi_0_3_4.default = (f.winapi_0_3_4.default or true);
-    winapi_i686_pc_windows_gnu_0_4_0.default = true;
-    winapi_x86_64_pc_windows_gnu_0_4_0.default = true;
-  }) [ winapi_i686_pc_windows_gnu_0_4_0_features winapi_x86_64_pc_windows_gnu_0_4_0_features ];
-  winapi_i686_pc_windows_gnu_0_4_0 = { features?(winapi_i686_pc_windows_gnu_0_4_0_features {}) }: winapi_i686_pc_windows_gnu_0_4_0_ {};
-  winapi_i686_pc_windows_gnu_0_4_0_features = 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);
-  }) [];
-  winapi_x86_64_pc_windows_gnu_0_4_0 = { features?(winapi_x86_64_pc_windows_gnu_0_4_0_features {}) }: winapi_x86_64_pc_windows_gnu_0_4_0_ {};
-  winapi_x86_64_pc_windows_gnu_0_4_0_features = 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);
-  }) [];
-  wincolor_0_1_6 = { features?(wincolor_0_1_6_features {}) }: wincolor_0_1_6_ {
-    dependencies = mapFeatures features ([ winapi_0_3_4 ]);
-  };
-  wincolor_0_1_6_features = f: updateFeatures f (rec {
-    winapi_0_3_4.consoleapi = true;
-    winapi_0_3_4.default = true;
-    winapi_0_3_4.minwindef = true;
-    winapi_0_3_4.processenv = true;
-    winapi_0_3_4.winbase = true;
-    winapi_0_3_4.wincon = true;
-    wincolor_0_1_6.default = (f.wincolor_0_1_6.default or true);
-  }) [ winapi_0_3_4_features ];
 }
diff --git a/pkgs/build-support/rust/crates-io.nix b/pkgs/build-support/rust/crates-io.nix
new file mode 100644
index 000000000000..9d9cafe4cbf2
--- /dev/null
+++ b/pkgs/build-support/rust/crates-io.nix
@@ -0,0 +1,2050 @@
+{ lib, buildRustCrate, buildRustCrateHelpers }:
+with buildRustCrateHelpers;
+let inherit (lib.lists) fold;
+    inherit (lib.attrsets) recursiveUpdate;
+in
+rec {
+
+  crates.aho_corasick."0.6.8" = deps: { features?(features_.aho_corasick."0.6.8" deps {}) }: buildRustCrate {
+    crateName = "aho-corasick";
+    version = "0.6.8";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "04bz5m32ykyn946iwxgbrl8nwca7ssxsqma140hgmkchaay80nfr";
+    libName = "aho_corasick";
+    crateBin =
+      [{  name = "aho-corasick-dot";  path = "src/main.rs"; }];
+    dependencies = mapFeatures features ([
+      (crates."memchr"."${deps."aho_corasick"."0.6.8"."memchr"}" deps)
+    ]);
+  };
+  features_.aho_corasick."0.6.8" = deps: f: updateFeatures f (rec {
+    aho_corasick."0.6.8".default = (f.aho_corasick."0.6.8".default or true);
+    memchr."${deps.aho_corasick."0.6.8".memchr}".default = true;
+  }) [
+    (features_.memchr."${deps."aho_corasick"."0.6.8"."memchr"}" deps)
+  ];
+
+
+  crates.ansi_term."0.11.0" = deps: { features?(features_.ansi_term."0.11.0" deps {}) }: buildRustCrate {
+    crateName = "ansi_term";
+    version = "0.11.0";
+    authors = [ "ogham@bsago.me" "Ryan Scheel (Havvy) <ryan.havvy@gmail.com>" "Josh Triplett <josh@joshtriplett.org>" ];
+    sha256 = "08fk0p2xvkqpmz3zlrwnf6l8sj2vngw464rvzspzp31sbgxbwm4v";
+    dependencies = (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."ansi_term"."0.11.0"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.ansi_term."0.11.0" = deps: f: updateFeatures f (rec {
+    ansi_term."0.11.0".default = (f.ansi_term."0.11.0".default or true);
+    winapi = fold recursiveUpdate {} [
+      { "${deps.ansi_term."0.11.0".winapi}"."consoleapi" = true; }
+      { "${deps.ansi_term."0.11.0".winapi}"."errhandlingapi" = true; }
+      { "${deps.ansi_term."0.11.0".winapi}"."processenv" = true; }
+      { "${deps.ansi_term."0.11.0".winapi}".default = true; }
+    ];
+  }) [
+    (features_.winapi."${deps."ansi_term"."0.11.0"."winapi"}" deps)
+  ];
+
+
+  crates.argon2rs."0.2.5" = deps: { features?(features_.argon2rs."0.2.5" deps {}) }: buildRustCrate {
+    crateName = "argon2rs";
+    version = "0.2.5";
+    authors = [ "bryant <bryant@defrag.in>" ];
+    sha256 = "1byl9b3wwyrarn8qack21v5fi2qsnn3y5clvikk2apskhmnih1rw";
+    dependencies = mapFeatures features ([
+      (crates."blake2_rfc"."${deps."argon2rs"."0.2.5"."blake2_rfc"}" deps)
+      (crates."scoped_threadpool"."${deps."argon2rs"."0.2.5"."scoped_threadpool"}" deps)
+    ]);
+    features = mkFeatures (features."argon2rs"."0.2.5" or {});
+  };
+  features_.argon2rs."0.2.5" = deps: f: updateFeatures f (rec {
+    argon2rs."0.2.5".default = (f.argon2rs."0.2.5".default or true);
+    blake2_rfc = fold recursiveUpdate {} [
+      { "${deps.argon2rs."0.2.5".blake2_rfc}".default = true; }
+      { "0.2.18".simd_asm =
+        (f.blake2_rfc."0.2.18".simd_asm or false) ||
+        (argon2rs."0.2.5"."simd" or false) ||
+        (f."argon2rs"."0.2.5"."simd" or false); }
+    ];
+    scoped_threadpool."${deps.argon2rs."0.2.5".scoped_threadpool}".default = true;
+  }) [
+    (features_.blake2_rfc."${deps."argon2rs"."0.2.5"."blake2_rfc"}" deps)
+    (features_.scoped_threadpool."${deps."argon2rs"."0.2.5"."scoped_threadpool"}" deps)
+  ];
+
+
+  crates.arrayvec."0.4.7" = deps: { features?(features_.arrayvec."0.4.7" deps {}) }: buildRustCrate {
+    crateName = "arrayvec";
+    version = "0.4.7";
+    authors = [ "bluss" ];
+    sha256 = "0fzgv7z1x1qnyd7j32vdcadk4k9wfx897y06mr3bw1yi52iqf4z4";
+    dependencies = mapFeatures features ([
+      (crates."nodrop"."${deps."arrayvec"."0.4.7"."nodrop"}" deps)
+    ]);
+    features = mkFeatures (features."arrayvec"."0.4.7" or {});
+  };
+  features_.arrayvec."0.4.7" = deps: f: updateFeatures f (rec {
+    arrayvec = fold recursiveUpdate {} [
+      { "0.4.7".default = (f.arrayvec."0.4.7".default or true); }
+      { "0.4.7".serde =
+        (f.arrayvec."0.4.7".serde or false) ||
+        (f.arrayvec."0.4.7".serde-1 or false) ||
+        (arrayvec."0.4.7"."serde-1" or false); }
+      { "0.4.7".std =
+        (f.arrayvec."0.4.7".std or false) ||
+        (f.arrayvec."0.4.7".default or false) ||
+        (arrayvec."0.4.7"."default" or false); }
+    ];
+    nodrop."${deps.arrayvec."0.4.7".nodrop}".default = (f.nodrop."${deps.arrayvec."0.4.7".nodrop}".default or false);
+  }) [
+    (features_.nodrop."${deps."arrayvec"."0.4.7"."nodrop"}" deps)
+  ];
+
+
+  crates.atty."0.2.11" = deps: { features?(features_.atty."0.2.11" deps {}) }: buildRustCrate {
+    crateName = "atty";
+    version = "0.2.11";
+    authors = [ "softprops <d.tangren@gmail.com>" ];
+    sha256 = "0by1bj2km9jxi4i4g76zzi76fc2rcm9934jpnyrqd95zw344pb20";
+    dependencies = (if kernel == "redox" then mapFeatures features ([
+      (crates."termion"."${deps."atty"."0.2.11"."termion"}" deps)
+    ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."atty"."0.2.11"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."atty"."0.2.11"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.atty."0.2.11" = deps: f: updateFeatures f (rec {
+    atty."0.2.11".default = (f.atty."0.2.11".default or true);
+    libc."${deps.atty."0.2.11".libc}".default = (f.libc."${deps.atty."0.2.11".libc}".default or false);
+    termion."${deps.atty."0.2.11".termion}".default = true;
+    winapi = fold recursiveUpdate {} [
+      { "${deps.atty."0.2.11".winapi}"."consoleapi" = true; }
+      { "${deps.atty."0.2.11".winapi}"."minwinbase" = true; }
+      { "${deps.atty."0.2.11".winapi}"."minwindef" = true; }
+      { "${deps.atty."0.2.11".winapi}"."processenv" = true; }
+      { "${deps.atty."0.2.11".winapi}"."winbase" = true; }
+      { "${deps.atty."0.2.11".winapi}".default = true; }
+    ];
+  }) [
+    (features_.termion."${deps."atty"."0.2.11"."termion"}" deps)
+    (features_.libc."${deps."atty"."0.2.11"."libc"}" deps)
+    (features_.winapi."${deps."atty"."0.2.11"."winapi"}" deps)
+  ];
+
+
+  crates.backtrace."0.3.9" = deps: { features?(features_.backtrace."0.3.9" deps {}) }: buildRustCrate {
+    crateName = "backtrace";
+    version = "0.3.9";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" "The Rust Project Developers" ];
+    sha256 = "137pjkcn89b7fqk78w65ggj92pynmf1hkr1sjz53aga4b50lkmwm";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."backtrace"."0.3.9"."cfg_if"}" deps)
+      (crates."rustc_demangle"."${deps."backtrace"."0.3.9"."rustc_demangle"}" deps)
+    ])
+      ++ (if (kernel == "linux" || kernel == "darwin") && !(kernel == "fuchsia") && !(kernel == "emscripten") && !(kernel == "darwin") && !(kernel == "ios") then mapFeatures features ([
+    ]
+      ++ (if features.backtrace."0.3.9".backtrace-sys or false then [ (crates.backtrace_sys."0.1.24" deps) ] else [])) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."backtrace"."0.3.9"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+    ]
+      ++ (if features.backtrace."0.3.9".winapi or false then [ (crates.winapi."0.3.6" deps) ] else [])) else []);
+    features = mkFeatures (features."backtrace"."0.3.9" or {});
+  };
+  features_.backtrace."0.3.9" = deps: f: updateFeatures f (rec {
+    backtrace = fold recursiveUpdate {} [
+      { "0.3.9".addr2line =
+        (f.backtrace."0.3.9".addr2line or false) ||
+        (f.backtrace."0.3.9".gimli-symbolize or false) ||
+        (backtrace."0.3.9"."gimli-symbolize" or false); }
+      { "0.3.9".backtrace-sys =
+        (f.backtrace."0.3.9".backtrace-sys or false) ||
+        (f.backtrace."0.3.9".libbacktrace or false) ||
+        (backtrace."0.3.9"."libbacktrace" or false); }
+      { "0.3.9".coresymbolication =
+        (f.backtrace."0.3.9".coresymbolication or false) ||
+        (f.backtrace."0.3.9".default or false) ||
+        (backtrace."0.3.9"."default" or false); }
+      { "0.3.9".dbghelp =
+        (f.backtrace."0.3.9".dbghelp or false) ||
+        (f.backtrace."0.3.9".default or false) ||
+        (backtrace."0.3.9"."default" or false); }
+      { "0.3.9".default = (f.backtrace."0.3.9".default or true); }
+      { "0.3.9".dladdr =
+        (f.backtrace."0.3.9".dladdr or false) ||
+        (f.backtrace."0.3.9".default or false) ||
+        (backtrace."0.3.9"."default" or false); }
+      { "0.3.9".findshlibs =
+        (f.backtrace."0.3.9".findshlibs or false) ||
+        (f.backtrace."0.3.9".gimli-symbolize or false) ||
+        (backtrace."0.3.9"."gimli-symbolize" or false); }
+      { "0.3.9".gimli =
+        (f.backtrace."0.3.9".gimli or false) ||
+        (f.backtrace."0.3.9".gimli-symbolize or false) ||
+        (backtrace."0.3.9"."gimli-symbolize" or false); }
+      { "0.3.9".libbacktrace =
+        (f.backtrace."0.3.9".libbacktrace or false) ||
+        (f.backtrace."0.3.9".default or false) ||
+        (backtrace."0.3.9"."default" or false); }
+      { "0.3.9".libunwind =
+        (f.backtrace."0.3.9".libunwind or false) ||
+        (f.backtrace."0.3.9".default or false) ||
+        (backtrace."0.3.9"."default" or false); }
+      { "0.3.9".memmap =
+        (f.backtrace."0.3.9".memmap or false) ||
+        (f.backtrace."0.3.9".gimli-symbolize or false) ||
+        (backtrace."0.3.9"."gimli-symbolize" or false); }
+      { "0.3.9".object =
+        (f.backtrace."0.3.9".object or false) ||
+        (f.backtrace."0.3.9".gimli-symbolize or false) ||
+        (backtrace."0.3.9"."gimli-symbolize" or false); }
+      { "0.3.9".rustc-serialize =
+        (f.backtrace."0.3.9".rustc-serialize or false) ||
+        (f.backtrace."0.3.9".serialize-rustc or false) ||
+        (backtrace."0.3.9"."serialize-rustc" or false); }
+      { "0.3.9".serde =
+        (f.backtrace."0.3.9".serde or false) ||
+        (f.backtrace."0.3.9".serialize-serde or false) ||
+        (backtrace."0.3.9"."serialize-serde" or false); }
+      { "0.3.9".serde_derive =
+        (f.backtrace."0.3.9".serde_derive or false) ||
+        (f.backtrace."0.3.9".serialize-serde or false) ||
+        (backtrace."0.3.9"."serialize-serde" or false); }
+      { "0.3.9".winapi =
+        (f.backtrace."0.3.9".winapi or false) ||
+        (f.backtrace."0.3.9".dbghelp or false) ||
+        (backtrace."0.3.9"."dbghelp" or false); }
+    ];
+    backtrace_sys."${deps.backtrace."0.3.9".backtrace_sys}".default = true;
+    cfg_if."${deps.backtrace."0.3.9".cfg_if}".default = true;
+    libc."${deps.backtrace."0.3.9".libc}".default = true;
+    rustc_demangle."${deps.backtrace."0.3.9".rustc_demangle}".default = true;
+    winapi = fold recursiveUpdate {} [
+      { "${deps.backtrace."0.3.9".winapi}"."dbghelp" = true; }
+      { "${deps.backtrace."0.3.9".winapi}"."minwindef" = true; }
+      { "${deps.backtrace."0.3.9".winapi}"."processthreadsapi" = true; }
+      { "${deps.backtrace."0.3.9".winapi}"."std" = true; }
+      { "${deps.backtrace."0.3.9".winapi}"."winnt" = true; }
+      { "${deps.backtrace."0.3.9".winapi}".default = true; }
+    ];
+  }) [
+    (features_.cfg_if."${deps."backtrace"."0.3.9"."cfg_if"}" deps)
+    (features_.rustc_demangle."${deps."backtrace"."0.3.9"."rustc_demangle"}" deps)
+    (features_.backtrace_sys."${deps."backtrace"."0.3.9"."backtrace_sys"}" deps)
+    (features_.libc."${deps."backtrace"."0.3.9"."libc"}" deps)
+    (features_.winapi."${deps."backtrace"."0.3.9"."winapi"}" deps)
+  ];
+
+
+  crates.backtrace_sys."0.1.24" = deps: { features?(features_.backtrace_sys."0.1.24" deps {}) }: buildRustCrate {
+    crateName = "backtrace-sys";
+    version = "0.1.24";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "15d6jlknykiijcin3vqbx33760w24ss5qw3l1xd3hms5k4vc8305";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."backtrace_sys"."0.1.24"."libc"}" deps)
+    ]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."cc"."${deps."backtrace_sys"."0.1.24"."cc"}" deps)
+    ]);
+  };
+  features_.backtrace_sys."0.1.24" = deps: f: updateFeatures f (rec {
+    backtrace_sys."0.1.24".default = (f.backtrace_sys."0.1.24".default or true);
+    cc."${deps.backtrace_sys."0.1.24".cc}".default = true;
+    libc."${deps.backtrace_sys."0.1.24".libc}".default = true;
+  }) [
+    (features_.libc."${deps."backtrace_sys"."0.1.24"."libc"}" deps)
+    (features_.cc."${deps."backtrace_sys"."0.1.24"."cc"}" deps)
+  ];
+
+
+  crates.bitflags."1.0.4" = deps: { features?(features_.bitflags."1.0.4" deps {}) }: buildRustCrate {
+    crateName = "bitflags";
+    version = "1.0.4";
+    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);
+  }) [];
+
+
+  crates.blake2_rfc."0.2.18" = deps: { features?(features_.blake2_rfc."0.2.18" deps {}) }: buildRustCrate {
+    crateName = "blake2-rfc";
+    version = "0.2.18";
+    authors = [ "Cesar Eduardo Barros <cesarb@cesarb.eti.br>" ];
+    sha256 = "0pyqrik4471ljk16prs0iwb2sam39z0z6axyyjxlqxdmf4wprf0l";
+    dependencies = mapFeatures features ([
+      (crates."arrayvec"."${deps."blake2_rfc"."0.2.18"."arrayvec"}" deps)
+      (crates."constant_time_eq"."${deps."blake2_rfc"."0.2.18"."constant_time_eq"}" deps)
+    ]);
+    features = mkFeatures (features."blake2_rfc"."0.2.18" or {});
+  };
+  features_.blake2_rfc."0.2.18" = deps: f: updateFeatures f (rec {
+    arrayvec."${deps.blake2_rfc."0.2.18".arrayvec}".default = (f.arrayvec."${deps.blake2_rfc."0.2.18".arrayvec}".default or false);
+    blake2_rfc = fold recursiveUpdate {} [
+      { "0.2.18".default = (f.blake2_rfc."0.2.18".default or true); }
+      { "0.2.18".simd =
+        (f.blake2_rfc."0.2.18".simd or false) ||
+        (f.blake2_rfc."0.2.18".simd_opt or false) ||
+        (blake2_rfc."0.2.18"."simd_opt" or false); }
+      { "0.2.18".simd_opt =
+        (f.blake2_rfc."0.2.18".simd_opt or false) ||
+        (f.blake2_rfc."0.2.18".simd_asm or false) ||
+        (blake2_rfc."0.2.18"."simd_asm" or false); }
+      { "0.2.18".std =
+        (f.blake2_rfc."0.2.18".std or false) ||
+        (f.blake2_rfc."0.2.18".default or false) ||
+        (blake2_rfc."0.2.18"."default" or false); }
+    ];
+    constant_time_eq."${deps.blake2_rfc."0.2.18".constant_time_eq}".default = true;
+  }) [
+    (features_.arrayvec."${deps."blake2_rfc"."0.2.18"."arrayvec"}" deps)
+    (features_.constant_time_eq."${deps."blake2_rfc"."0.2.18"."constant_time_eq"}" deps)
+  ];
+
+
+  crates.carnix."0.8.11" = deps: { features?(features_.carnix."0.8.11" deps {}) }: buildRustCrate {
+    crateName = "carnix";
+    version = "0.8.11";
+    authors = [ "pe@pijul.org <pe@pijul.org>" ];
+    sha256 = "1i5iz51mradd3vishc19cd0nfh9r2clbmiq94f83npny65dnp6ch";
+    crateBin =
+      [{  name = "cargo-generate-nixfile";  path = "src/cargo-generate-nixfile.rs"; }] ++
+      [{  name = "carnix";  path = "src/main.rs"; }];
+    dependencies = mapFeatures features ([
+      (crates."clap"."${deps."carnix"."0.8.11"."clap"}" deps)
+      (crates."dirs"."${deps."carnix"."0.8.11"."dirs"}" deps)
+      (crates."env_logger"."${deps."carnix"."0.8.11"."env_logger"}" deps)
+      (crates."error_chain"."${deps."carnix"."0.8.11"."error_chain"}" deps)
+      (crates."itertools"."${deps."carnix"."0.8.11"."itertools"}" deps)
+      (crates."log"."${deps."carnix"."0.8.11"."log"}" deps)
+      (crates."nom"."${deps."carnix"."0.8.11"."nom"}" deps)
+      (crates."regex"."${deps."carnix"."0.8.11"."regex"}" deps)
+      (crates."rusqlite"."${deps."carnix"."0.8.11"."rusqlite"}" deps)
+      (crates."serde"."${deps."carnix"."0.8.11"."serde"}" deps)
+      (crates."serde_derive"."${deps."carnix"."0.8.11"."serde_derive"}" deps)
+      (crates."serde_json"."${deps."carnix"."0.8.11"."serde_json"}" deps)
+      (crates."tempdir"."${deps."carnix"."0.8.11"."tempdir"}" deps)
+      (crates."toml"."${deps."carnix"."0.8.11"."toml"}" deps)
+    ]);
+  };
+  features_.carnix."0.8.11" = deps: f: updateFeatures f (rec {
+    carnix."0.8.11".default = (f.carnix."0.8.11".default or true);
+    clap."${deps.carnix."0.8.11".clap}".default = true;
+    dirs."${deps.carnix."0.8.11".dirs}".default = true;
+    env_logger."${deps.carnix."0.8.11".env_logger}".default = true;
+    error_chain."${deps.carnix."0.8.11".error_chain}".default = true;
+    itertools."${deps.carnix."0.8.11".itertools}".default = true;
+    log."${deps.carnix."0.8.11".log}".default = true;
+    nom."${deps.carnix."0.8.11".nom}".default = true;
+    regex."${deps.carnix."0.8.11".regex}".default = true;
+    rusqlite."${deps.carnix."0.8.11".rusqlite}".default = true;
+    serde."${deps.carnix."0.8.11".serde}".default = true;
+    serde_derive."${deps.carnix."0.8.11".serde_derive}".default = true;
+    serde_json."${deps.carnix."0.8.11".serde_json}".default = true;
+    tempdir."${deps.carnix."0.8.11".tempdir}".default = true;
+    toml."${deps.carnix."0.8.11".toml}".default = true;
+  }) [
+    (features_.clap."${deps."carnix"."0.8.11"."clap"}" deps)
+    (features_.dirs."${deps."carnix"."0.8.11"."dirs"}" deps)
+    (features_.env_logger."${deps."carnix"."0.8.11"."env_logger"}" deps)
+    (features_.error_chain."${deps."carnix"."0.8.11"."error_chain"}" deps)
+    (features_.itertools."${deps."carnix"."0.8.11"."itertools"}" deps)
+    (features_.log."${deps."carnix"."0.8.11"."log"}" deps)
+    (features_.nom."${deps."carnix"."0.8.11"."nom"}" deps)
+    (features_.regex."${deps."carnix"."0.8.11"."regex"}" deps)
+    (features_.rusqlite."${deps."carnix"."0.8.11"."rusqlite"}" deps)
+    (features_.serde."${deps."carnix"."0.8.11"."serde"}" deps)
+    (features_.serde_derive."${deps."carnix"."0.8.11"."serde_derive"}" deps)
+    (features_.serde_json."${deps."carnix"."0.8.11"."serde_json"}" deps)
+    (features_.tempdir."${deps."carnix"."0.8.11"."tempdir"}" deps)
+    (features_.toml."${deps."carnix"."0.8.11"."toml"}" deps)
+  ];
+
+
+  crates.cc."1.0.25" = deps: { features?(features_.cc."1.0.25" deps {}) }: buildRustCrate {
+    crateName = "cc";
+    version = "1.0.25";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "0pd8fhjlpr5qan984frkf1c8nxrqp6827wmmfzhm2840229z2hq0";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."cc"."1.0.25" or {});
+  };
+  features_.cc."1.0.25" = deps: f: updateFeatures f (rec {
+    cc = fold recursiveUpdate {} [
+      { "1.0.25".default = (f.cc."1.0.25".default or true); }
+      { "1.0.25".rayon =
+        (f.cc."1.0.25".rayon or false) ||
+        (f.cc."1.0.25".parallel or false) ||
+        (cc."1.0.25"."parallel" or false); }
+    ];
+  }) [];
+
+
+  crates.cfg_if."0.1.6" = deps: { features?(features_.cfg_if."0.1.6" deps {}) }: buildRustCrate {
+    crateName = "cfg-if";
+    version = "0.1.6";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "11qrix06wagkplyk908i3423ps9m9np6c4vbcq81s9fyl244xv3n";
+  };
+  features_.cfg_if."0.1.6" = deps: f: updateFeatures f (rec {
+    cfg_if."0.1.6".default = (f.cfg_if."0.1.6".default or true);
+  }) [];
+
+
+  crates.clap."2.32.0" = deps: { features?(features_.clap."2.32.0" deps {}) }: buildRustCrate {
+    crateName = "clap";
+    version = "2.32.0";
+    authors = [ "Kevin K. <kbknapp@gmail.com>" ];
+    sha256 = "1hdjf0janvpjkwrjdjx1mm2aayzr54k72w6mriyr0n5anjkcj1lx";
+    dependencies = mapFeatures features ([
+      (crates."bitflags"."${deps."clap"."2.32.0"."bitflags"}" deps)
+      (crates."textwrap"."${deps."clap"."2.32.0"."textwrap"}" deps)
+      (crates."unicode_width"."${deps."clap"."2.32.0"."unicode_width"}" deps)
+    ]
+      ++ (if features.clap."2.32.0".atty or false then [ (crates.atty."0.2.11" deps) ] else [])
+      ++ (if features.clap."2.32.0".strsim or false then [ (crates.strsim."0.7.0" deps) ] else [])
+      ++ (if features.clap."2.32.0".vec_map or false then [ (crates.vec_map."0.8.1" deps) ] else []))
+      ++ (if !(kernel == "windows") then mapFeatures features ([
+    ]
+      ++ (if features.clap."2.32.0".ansi_term or false then [ (crates.ansi_term."0.11.0" deps) ] else [])) else []);
+    features = mkFeatures (features."clap"."2.32.0" or {});
+  };
+  features_.clap."2.32.0" = deps: f: updateFeatures f (rec {
+    ansi_term."${deps.clap."2.32.0".ansi_term}".default = true;
+    atty."${deps.clap."2.32.0".atty}".default = true;
+    bitflags."${deps.clap."2.32.0".bitflags}".default = true;
+    clap = fold recursiveUpdate {} [
+      { "2.32.0".ansi_term =
+        (f.clap."2.32.0".ansi_term or false) ||
+        (f.clap."2.32.0".color or false) ||
+        (clap."2.32.0"."color" or false); }
+      { "2.32.0".atty =
+        (f.clap."2.32.0".atty or false) ||
+        (f.clap."2.32.0".color or false) ||
+        (clap."2.32.0"."color" or false); }
+      { "2.32.0".clippy =
+        (f.clap."2.32.0".clippy or false) ||
+        (f.clap."2.32.0".lints or false) ||
+        (clap."2.32.0"."lints" or false); }
+      { "2.32.0".color =
+        (f.clap."2.32.0".color or false) ||
+        (f.clap."2.32.0".default or false) ||
+        (clap."2.32.0"."default" or false); }
+      { "2.32.0".default = (f.clap."2.32.0".default or true); }
+      { "2.32.0".strsim =
+        (f.clap."2.32.0".strsim or false) ||
+        (f.clap."2.32.0".suggestions or false) ||
+        (clap."2.32.0"."suggestions" or false); }
+      { "2.32.0".suggestions =
+        (f.clap."2.32.0".suggestions or false) ||
+        (f.clap."2.32.0".default or false) ||
+        (clap."2.32.0"."default" or false); }
+      { "2.32.0".term_size =
+        (f.clap."2.32.0".term_size or false) ||
+        (f.clap."2.32.0".wrap_help or false) ||
+        (clap."2.32.0"."wrap_help" or false); }
+      { "2.32.0".vec_map =
+        (f.clap."2.32.0".vec_map or false) ||
+        (f.clap."2.32.0".default or false) ||
+        (clap."2.32.0"."default" or false); }
+      { "2.32.0".yaml =
+        (f.clap."2.32.0".yaml or false) ||
+        (f.clap."2.32.0".doc or false) ||
+        (clap."2.32.0"."doc" or false); }
+      { "2.32.0".yaml-rust =
+        (f.clap."2.32.0".yaml-rust or false) ||
+        (f.clap."2.32.0".yaml or false) ||
+        (clap."2.32.0"."yaml" or false); }
+    ];
+    strsim."${deps.clap."2.32.0".strsim}".default = true;
+    textwrap = fold recursiveUpdate {} [
+      { "${deps.clap."2.32.0".textwrap}".default = true; }
+      { "0.10.0".term_size =
+        (f.textwrap."0.10.0".term_size or false) ||
+        (clap."2.32.0"."wrap_help" or false) ||
+        (f."clap"."2.32.0"."wrap_help" or false); }
+    ];
+    unicode_width."${deps.clap."2.32.0".unicode_width}".default = true;
+    vec_map."${deps.clap."2.32.0".vec_map}".default = true;
+  }) [
+    (features_.atty."${deps."clap"."2.32.0"."atty"}" deps)
+    (features_.bitflags."${deps."clap"."2.32.0"."bitflags"}" deps)
+    (features_.strsim."${deps."clap"."2.32.0"."strsim"}" deps)
+    (features_.textwrap."${deps."clap"."2.32.0"."textwrap"}" deps)
+    (features_.unicode_width."${deps."clap"."2.32.0"."unicode_width"}" deps)
+    (features_.vec_map."${deps."clap"."2.32.0"."vec_map"}" deps)
+    (features_.ansi_term."${deps."clap"."2.32.0"."ansi_term"}" deps)
+  ];
+
+
+  crates.constant_time_eq."0.1.3" = deps: { features?(features_.constant_time_eq."0.1.3" deps {}) }: buildRustCrate {
+    crateName = "constant_time_eq";
+    version = "0.1.3";
+    authors = [ "Cesar Eduardo Barros <cesarb@cesarb.eti.br>" ];
+    sha256 = "03qri9hjf049gwqg9q527lybpg918q6y5q4g9a5lma753nff49wd";
+  };
+  features_.constant_time_eq."0.1.3" = deps: f: updateFeatures f (rec {
+    constant_time_eq."0.1.3".default = (f.constant_time_eq."0.1.3".default or true);
+  }) [];
+
+
+  crates.dirs."1.0.4" = deps: { features?(features_.dirs."1.0.4" deps {}) }: buildRustCrate {
+    crateName = "dirs";
+    version = "1.0.4";
+    authors = [ "Simon Ochsenreither <simon@ochsenreither.de>" ];
+    sha256 = "1hp3nz0350b0gpavb3w5ajqc9l1k59cfrcsr3hcavwlkizdnpv1y";
+    dependencies = (if kernel == "redox" then mapFeatures features ([
+      (crates."redox_users"."${deps."dirs"."1.0.4"."redox_users"}" deps)
+    ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+      (crates."libc"."${deps."dirs"."1.0.4"."libc"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."dirs"."1.0.4"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.dirs."1.0.4" = deps: f: updateFeatures f (rec {
+    dirs."1.0.4".default = (f.dirs."1.0.4".default or true);
+    libc."${deps.dirs."1.0.4".libc}".default = true;
+    redox_users."${deps.dirs."1.0.4".redox_users}".default = true;
+    winapi = fold recursiveUpdate {} [
+      { "${deps.dirs."1.0.4".winapi}"."knownfolders" = true; }
+      { "${deps.dirs."1.0.4".winapi}"."objbase" = true; }
+      { "${deps.dirs."1.0.4".winapi}"."shlobj" = true; }
+      { "${deps.dirs."1.0.4".winapi}"."winbase" = true; }
+      { "${deps.dirs."1.0.4".winapi}"."winerror" = true; }
+      { "${deps.dirs."1.0.4".winapi}".default = true; }
+    ];
+  }) [
+    (features_.redox_users."${deps."dirs"."1.0.4"."redox_users"}" deps)
+    (features_.libc."${deps."dirs"."1.0.4"."libc"}" deps)
+    (features_.winapi."${deps."dirs"."1.0.4"."winapi"}" deps)
+  ];
+
+
+  crates.either."1.5.0" = deps: { features?(features_.either."1.5.0" deps {}) }: buildRustCrate {
+    crateName = "either";
+    version = "1.5.0";
+    authors = [ "bluss" ];
+    sha256 = "1f7kl2ln01y02m8fpd2zrdjiwqmgfvl9nxxrfry3k19d1gd2bsvz";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."either"."1.5.0" or {});
+  };
+  features_.either."1.5.0" = deps: f: updateFeatures f (rec {
+    either = fold recursiveUpdate {} [
+      { "1.5.0".default = (f.either."1.5.0".default or true); }
+      { "1.5.0".use_std =
+        (f.either."1.5.0".use_std or false) ||
+        (f.either."1.5.0".default or false) ||
+        (either."1.5.0"."default" or false); }
+    ];
+  }) [];
+
+
+  crates.env_logger."0.5.13" = deps: { features?(features_.env_logger."0.5.13" deps {}) }: buildRustCrate {
+    crateName = "env_logger";
+    version = "0.5.13";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1q6vylngcz4bn088b4hvsl879l8yz1k2bma75waljb5p4h4kbb72";
+    dependencies = mapFeatures features ([
+      (crates."atty"."${deps."env_logger"."0.5.13"."atty"}" deps)
+      (crates."humantime"."${deps."env_logger"."0.5.13"."humantime"}" deps)
+      (crates."log"."${deps."env_logger"."0.5.13"."log"}" deps)
+      (crates."termcolor"."${deps."env_logger"."0.5.13"."termcolor"}" deps)
+    ]
+      ++ (if features.env_logger."0.5.13".regex or false then [ (crates.regex."1.0.5" deps) ] else []));
+    features = mkFeatures (features."env_logger"."0.5.13" or {});
+  };
+  features_.env_logger."0.5.13" = deps: f: updateFeatures f (rec {
+    atty."${deps.env_logger."0.5.13".atty}".default = true;
+    env_logger = fold recursiveUpdate {} [
+      { "0.5.13".default = (f.env_logger."0.5.13".default or true); }
+      { "0.5.13".regex =
+        (f.env_logger."0.5.13".regex or false) ||
+        (f.env_logger."0.5.13".default or false) ||
+        (env_logger."0.5.13"."default" or false); }
+    ];
+    humantime."${deps.env_logger."0.5.13".humantime}".default = true;
+    log = fold recursiveUpdate {} [
+      { "${deps.env_logger."0.5.13".log}"."std" = true; }
+      { "${deps.env_logger."0.5.13".log}".default = true; }
+    ];
+    regex."${deps.env_logger."0.5.13".regex}".default = true;
+    termcolor."${deps.env_logger."0.5.13".termcolor}".default = true;
+  }) [
+    (features_.atty."${deps."env_logger"."0.5.13"."atty"}" deps)
+    (features_.humantime."${deps."env_logger"."0.5.13"."humantime"}" deps)
+    (features_.log."${deps."env_logger"."0.5.13"."log"}" deps)
+    (features_.regex."${deps."env_logger"."0.5.13"."regex"}" deps)
+    (features_.termcolor."${deps."env_logger"."0.5.13"."termcolor"}" deps)
+  ];
+
+
+  crates.error_chain."0.12.0" = deps: { features?(features_.error_chain."0.12.0" deps {}) }: buildRustCrate {
+    crateName = "error-chain";
+    version = "0.12.0";
+    authors = [ "Brian Anderson <banderson@mozilla.com>" "Paul Colomiets <paul@colomiets.name>" "Colin Kiegel <kiegel@gmx.de>" "Yamakaky <yamakaky@yamaworld.fr>" ];
+    sha256 = "1m6wk1r6wqg1mn69bxxvk5k081cb4xy6bfhsxb99rv408x9wjcnl";
+    dependencies = mapFeatures features ([
+    ]
+      ++ (if features.error_chain."0.12.0".backtrace or false then [ (crates.backtrace."0.3.9" deps) ] else []));
+    features = mkFeatures (features."error_chain"."0.12.0" or {});
+  };
+  features_.error_chain."0.12.0" = deps: f: updateFeatures f (rec {
+    backtrace."${deps.error_chain."0.12.0".backtrace}".default = true;
+    error_chain = fold recursiveUpdate {} [
+      { "0.12.0".backtrace =
+        (f.error_chain."0.12.0".backtrace or false) ||
+        (f.error_chain."0.12.0".default or false) ||
+        (error_chain."0.12.0"."default" or false); }
+      { "0.12.0".default = (f.error_chain."0.12.0".default or true); }
+      { "0.12.0".example_generated =
+        (f.error_chain."0.12.0".example_generated or false) ||
+        (f.error_chain."0.12.0".default or false) ||
+        (error_chain."0.12.0"."default" or false); }
+    ];
+  }) [
+    (features_.backtrace."${deps."error_chain"."0.12.0"."backtrace"}" deps)
+  ];
+
+
+  crates.failure."0.1.3" = deps: { features?(features_.failure."0.1.3" deps {}) }: buildRustCrate {
+    crateName = "failure";
+    version = "0.1.3";
+    authors = [ "Without Boats <boats@mozilla.com>" ];
+    sha256 = "0cibp01z0clyxrvkl7v7kq6jszsgcg9vwv6d9l6d1drk9jqdss4s";
+    dependencies = mapFeatures features ([
+    ]
+      ++ (if features.failure."0.1.3".backtrace or false then [ (crates.backtrace."0.3.9" deps) ] else [])
+      ++ (if features.failure."0.1.3".failure_derive or false then [ (crates.failure_derive."0.1.3" deps) ] else []));
+    features = mkFeatures (features."failure"."0.1.3" or {});
+  };
+  features_.failure."0.1.3" = deps: f: updateFeatures f (rec {
+    backtrace."${deps.failure."0.1.3".backtrace}".default = true;
+    failure = fold recursiveUpdate {} [
+      { "0.1.3".backtrace =
+        (f.failure."0.1.3".backtrace or false) ||
+        (f.failure."0.1.3".std or false) ||
+        (failure."0.1.3"."std" or false); }
+      { "0.1.3".default = (f.failure."0.1.3".default or true); }
+      { "0.1.3".derive =
+        (f.failure."0.1.3".derive or false) ||
+        (f.failure."0.1.3".default or false) ||
+        (failure."0.1.3"."default" or false); }
+      { "0.1.3".failure_derive =
+        (f.failure."0.1.3".failure_derive or false) ||
+        (f.failure."0.1.3".derive or false) ||
+        (failure."0.1.3"."derive" or false); }
+      { "0.1.3".std =
+        (f.failure."0.1.3".std or false) ||
+        (f.failure."0.1.3".default or false) ||
+        (failure."0.1.3"."default" or false); }
+    ];
+    failure_derive."${deps.failure."0.1.3".failure_derive}".default = true;
+  }) [
+    (features_.backtrace."${deps."failure"."0.1.3"."backtrace"}" deps)
+    (features_.failure_derive."${deps."failure"."0.1.3"."failure_derive"}" deps)
+  ];
+
+
+  crates.failure_derive."0.1.3" = deps: { features?(features_.failure_derive."0.1.3" deps {}) }: buildRustCrate {
+    crateName = "failure_derive";
+    version = "0.1.3";
+    authors = [ "Without Boats <woboats@gmail.com>" ];
+    sha256 = "1mh7ad2d17f13g0k29bskp0f9faws0w1q4a5yfzlzi75bw9kidgm";
+    procMacro = true;
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."proc_macro2"."${deps."failure_derive"."0.1.3"."proc_macro2"}" deps)
+      (crates."quote"."${deps."failure_derive"."0.1.3"."quote"}" deps)
+      (crates."syn"."${deps."failure_derive"."0.1.3"."syn"}" deps)
+      (crates."synstructure"."${deps."failure_derive"."0.1.3"."synstructure"}" deps)
+    ]);
+    features = mkFeatures (features."failure_derive"."0.1.3" or {});
+  };
+  features_.failure_derive."0.1.3" = deps: f: updateFeatures f (rec {
+    failure_derive."0.1.3".default = (f.failure_derive."0.1.3".default or true);
+    proc_macro2."${deps.failure_derive."0.1.3".proc_macro2}".default = true;
+    quote."${deps.failure_derive."0.1.3".quote}".default = true;
+    syn."${deps.failure_derive."0.1.3".syn}".default = true;
+    synstructure."${deps.failure_derive."0.1.3".synstructure}".default = true;
+  }) [
+    (features_.proc_macro2."${deps."failure_derive"."0.1.3"."proc_macro2"}" deps)
+    (features_.quote."${deps."failure_derive"."0.1.3"."quote"}" deps)
+    (features_.syn."${deps."failure_derive"."0.1.3"."syn"}" deps)
+    (features_.synstructure."${deps."failure_derive"."0.1.3"."synstructure"}" deps)
+  ];
+
+
+  crates.fuchsia_zircon."0.3.3" = deps: { features?(features_.fuchsia_zircon."0.3.3" deps {}) }: buildRustCrate {
+    crateName = "fuchsia-zircon";
+    version = "0.3.3";
+    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)
+  ];
+
+
+  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";
+    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);
+  }) [];
+
+
+  crates.humantime."1.1.1" = deps: { features?(features_.humantime."1.1.1" deps {}) }: buildRustCrate {
+    crateName = "humantime";
+    version = "1.1.1";
+    authors = [ "Paul Colomiets <paul@colomiets.name>" ];
+    sha256 = "1lzdfsfzdikcp1qb6wcdvnsdv16pmzr7p7cv171vnbnyz2lrwbgn";
+    libPath = "src/lib.rs";
+    dependencies = mapFeatures features ([
+      (crates."quick_error"."${deps."humantime"."1.1.1"."quick_error"}" deps)
+    ]);
+  };
+  features_.humantime."1.1.1" = deps: f: updateFeatures f (rec {
+    humantime."1.1.1".default = (f.humantime."1.1.1".default or true);
+    quick_error."${deps.humantime."1.1.1".quick_error}".default = true;
+  }) [
+    (features_.quick_error."${deps."humantime"."1.1.1"."quick_error"}" deps)
+  ];
+
+
+  crates.itertools."0.7.8" = deps: { features?(features_.itertools."0.7.8" deps {}) }: buildRustCrate {
+    crateName = "itertools";
+    version = "0.7.8";
+    authors = [ "bluss" ];
+    sha256 = "0ib30cd7d1icjxsa13mji1gry3grp72kx8p33yd84mphdbc3d357";
+    dependencies = mapFeatures features ([
+      (crates."either"."${deps."itertools"."0.7.8"."either"}" deps)
+    ]);
+    features = mkFeatures (features."itertools"."0.7.8" or {});
+  };
+  features_.itertools."0.7.8" = deps: f: updateFeatures f (rec {
+    either."${deps.itertools."0.7.8".either}".default = (f.either."${deps.itertools."0.7.8".either}".default or false);
+    itertools = fold recursiveUpdate {} [
+      { "0.7.8".default = (f.itertools."0.7.8".default or true); }
+      { "0.7.8".use_std =
+        (f.itertools."0.7.8".use_std or false) ||
+        (f.itertools."0.7.8".default or false) ||
+        (itertools."0.7.8"."default" or false); }
+    ];
+  }) [
+    (features_.either."${deps."itertools"."0.7.8"."either"}" deps)
+  ];
+
+
+  crates.itoa."0.4.3" = deps: { features?(features_.itoa."0.4.3" deps {}) }: buildRustCrate {
+    crateName = "itoa";
+    version = "0.4.3";
+    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".default = (f.itoa."0.4.3".default or true); }
+      { "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); }
+    ];
+  }) [];
+
+
+  crates.lazy_static."1.1.0" = deps: { features?(features_.lazy_static."1.1.0" deps {}) }: buildRustCrate {
+    crateName = "lazy_static";
+    version = "1.1.0";
+    authors = [ "Marvin Löbel <loebel.marvin@gmail.com>" ];
+    sha256 = "1da2b6nxfc2l547qgl9kd1pn9sh1af96a6qx6xw8xdnv6hh5fag0";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+]);
+
+    buildDependencies = mapFeatures features ([
+      (crates."version_check"."${deps."lazy_static"."1.1.0"."version_check"}" deps)
+    ]);
+    features = mkFeatures (features."lazy_static"."1.1.0" or {});
+  };
+  features_.lazy_static."1.1.0" = deps: f: updateFeatures f (rec {
+    lazy_static = fold recursiveUpdate {} [
+      { "1.1.0".default = (f.lazy_static."1.1.0".default or true); }
+      { "1.1.0".nightly =
+        (f.lazy_static."1.1.0".nightly or false) ||
+        (f.lazy_static."1.1.0".spin_no_std or false) ||
+        (lazy_static."1.1.0"."spin_no_std" or false); }
+      { "1.1.0".spin =
+        (f.lazy_static."1.1.0".spin or false) ||
+        (f.lazy_static."1.1.0".spin_no_std or false) ||
+        (lazy_static."1.1.0"."spin_no_std" or false); }
+    ];
+    version_check."${deps.lazy_static."1.1.0".version_check}".default = true;
+  }) [
+    (features_.version_check."${deps."lazy_static"."1.1.0"."version_check"}" deps)
+  ];
+
+
+  crates.libc."0.2.43" = deps: { features?(features_.libc."0.2.43" deps {}) }: buildRustCrate {
+    crateName = "libc";
+    version = "0.2.43";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0pshydmsq71kl9276zc2928ld50sp524ixcqkcqsgq410dx6c50b";
+    features = mkFeatures (features."libc"."0.2.43" or {});
+  };
+  features_.libc."0.2.43" = deps: f: updateFeatures f (rec {
+    libc = fold recursiveUpdate {} [
+      { "0.2.43".default = (f.libc."0.2.43".default or true); }
+      { "0.2.43".use_std =
+        (f.libc."0.2.43".use_std or false) ||
+        (f.libc."0.2.43".default or false) ||
+        (libc."0.2.43"."default" or false); }
+    ];
+  }) [];
+
+
+  crates.libsqlite3_sys."0.9.3" = deps: { features?(features_.libsqlite3_sys."0.9.3" deps {}) }: buildRustCrate {
+    crateName = "libsqlite3-sys";
+    version = "0.9.3";
+    authors = [ "John Gallagher <jgallagher@bignerdranch.com>" ];
+    sha256 = "128bv2y342iksv693bffvybr3zzi04vd8p0307zi9wixbdxyp021";
+    build = "build.rs";
+    dependencies = (if abi == "msvc" then mapFeatures features ([
+]) else []);
+
+    buildDependencies = mapFeatures features ([
+    ]
+      ++ (if features.libsqlite3_sys."0.9.3".pkg-config or false then [ (crates.pkg_config."0.3.14" deps) ] else []));
+    features = mkFeatures (features."libsqlite3_sys"."0.9.3" or {});
+  };
+  features_.libsqlite3_sys."0.9.3" = deps: f: updateFeatures f (rec {
+    libsqlite3_sys = fold recursiveUpdate {} [
+      { "0.9.3".bindgen =
+        (f.libsqlite3_sys."0.9.3".bindgen or false) ||
+        (f.libsqlite3_sys."0.9.3".buildtime_bindgen or false) ||
+        (libsqlite3_sys."0.9.3"."buildtime_bindgen" or false); }
+      { "0.9.3".cc =
+        (f.libsqlite3_sys."0.9.3".cc or false) ||
+        (f.libsqlite3_sys."0.9.3".bundled or false) ||
+        (libsqlite3_sys."0.9.3"."bundled" or false); }
+      { "0.9.3".default = (f.libsqlite3_sys."0.9.3".default or true); }
+      { "0.9.3".min_sqlite_version_3_6_8 =
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_8 or false) ||
+        (f.libsqlite3_sys."0.9.3".default or false) ||
+        (libsqlite3_sys."0.9.3"."default" or false); }
+      { "0.9.3".pkg-config =
+        (f.libsqlite3_sys."0.9.3".pkg-config or false) ||
+        (f.libsqlite3_sys."0.9.3".buildtime_bindgen or false) ||
+        (libsqlite3_sys."0.9.3"."buildtime_bindgen" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_11 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_6_11" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_23 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_6_23" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_8 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_6_8" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_16 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_16" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_3 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_3" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_4 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_4" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_7 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_7" or false); }
+      { "0.9.3".vcpkg =
+        (f.libsqlite3_sys."0.9.3".vcpkg or false) ||
+        (f.libsqlite3_sys."0.9.3".buildtime_bindgen or false) ||
+        (libsqlite3_sys."0.9.3"."buildtime_bindgen" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_11 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_6_11" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_23 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_6_23" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_8 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_6_8" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_16 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_16" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_3 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_3" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_4 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_4" or false) ||
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_7 or false) ||
+        (libsqlite3_sys."0.9.3"."min_sqlite_version_3_7_7" or false); }
+    ];
+    pkg_config."${deps.libsqlite3_sys."0.9.3".pkg_config}".default = true;
+  }) [
+    (features_.pkg_config."${deps."libsqlite3_sys"."0.9.3"."pkg_config"}" deps)
+  ];
+
+
+  crates.linked_hash_map."0.4.2" = deps: { features?(features_.linked_hash_map."0.4.2" deps {}) }: buildRustCrate {
+    crateName = "linked-hash-map";
+    version = "0.4.2";
+    authors = [ "Stepan Koltsov <stepan.koltsov@gmail.com>" "Andrew Paseltiner <apaseltiner@gmail.com>" ];
+    sha256 = "04da208h6jb69f46j37jnvsw2i1wqplglp4d61csqcrhh83avbgl";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."linked_hash_map"."0.4.2" or {});
+  };
+  features_.linked_hash_map."0.4.2" = deps: f: updateFeatures f (rec {
+    linked_hash_map = fold recursiveUpdate {} [
+      { "0.4.2".default = (f.linked_hash_map."0.4.2".default or true); }
+      { "0.4.2".heapsize =
+        (f.linked_hash_map."0.4.2".heapsize or false) ||
+        (f.linked_hash_map."0.4.2".heapsize_impl or false) ||
+        (linked_hash_map."0.4.2"."heapsize_impl" or false); }
+      { "0.4.2".serde =
+        (f.linked_hash_map."0.4.2".serde or false) ||
+        (f.linked_hash_map."0.4.2".serde_impl or false) ||
+        (linked_hash_map."0.4.2"."serde_impl" or false); }
+      { "0.4.2".serde_test =
+        (f.linked_hash_map."0.4.2".serde_test or false) ||
+        (f.linked_hash_map."0.4.2".serde_impl or false) ||
+        (linked_hash_map."0.4.2"."serde_impl" or false); }
+    ];
+  }) [];
+
+
+  crates.log."0.4.5" = deps: { features?(features_.log."0.4.5" deps {}) }: buildRustCrate {
+    crateName = "log";
+    version = "0.4.5";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1hdcj17al94ga90q7jx2y1rmxi68n3akra1awv3hr3s9b9zipgq6";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."log"."0.4.5"."cfg_if"}" deps)
+    ]);
+    features = mkFeatures (features."log"."0.4.5" or {});
+  };
+  features_.log."0.4.5" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.log."0.4.5".cfg_if}".default = true;
+    log."0.4.5".default = (f.log."0.4.5".default or true);
+  }) [
+    (features_.cfg_if."${deps."log"."0.4.5"."cfg_if"}" deps)
+  ];
+
+
+  crates.lru_cache."0.1.1" = deps: { features?(features_.lru_cache."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "lru-cache";
+    version = "0.1.1";
+    authors = [ "Stepan Koltsov <stepan.koltsov@gmail.com>" ];
+    sha256 = "1hl6kii1g54sq649gnscv858mmw7a02xj081l4vcgvrswdi2z8fw";
+    dependencies = mapFeatures features ([
+      (crates."linked_hash_map"."${deps."lru_cache"."0.1.1"."linked_hash_map"}" deps)
+    ]);
+    features = mkFeatures (features."lru_cache"."0.1.1" or {});
+  };
+  features_.lru_cache."0.1.1" = deps: f: updateFeatures f (rec {
+    linked_hash_map = fold recursiveUpdate {} [
+      { "${deps.lru_cache."0.1.1".linked_hash_map}".default = true; }
+      { "0.4.2".heapsize_impl =
+        (f.linked_hash_map."0.4.2".heapsize_impl or false) ||
+        (lru_cache."0.1.1"."heapsize_impl" or false) ||
+        (f."lru_cache"."0.1.1"."heapsize_impl" or false); }
+    ];
+    lru_cache = fold recursiveUpdate {} [
+      { "0.1.1".default = (f.lru_cache."0.1.1".default or true); }
+      { "0.1.1".heapsize =
+        (f.lru_cache."0.1.1".heapsize or false) ||
+        (f.lru_cache."0.1.1".heapsize_impl or false) ||
+        (lru_cache."0.1.1"."heapsize_impl" or false); }
+    ];
+  }) [
+    (features_.linked_hash_map."${deps."lru_cache"."0.1.1"."linked_hash_map"}" deps)
+  ];
+
+
+  crates.memchr."1.0.2" = deps: { features?(features_.memchr."1.0.2" deps {}) }: buildRustCrate {
+    crateName = "memchr";
+    version = "1.0.2";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" "bluss" ];
+    sha256 = "0dfb8ifl9nrc9kzgd5z91q6qg87sh285q1ih7xgrsglmqfav9lg7";
+    dependencies = mapFeatures features ([
+    ]
+      ++ (if features.memchr."1.0.2".libc or false then [ (crates.libc."0.2.43" deps) ] else []));
+    features = mkFeatures (features."memchr"."1.0.2" or {});
+  };
+  features_.memchr."1.0.2" = deps: f: updateFeatures f (rec {
+    libc = fold recursiveUpdate {} [
+      { "${deps.memchr."1.0.2".libc}".default = (f.libc."${deps.memchr."1.0.2".libc}".default or false); }
+      { "0.2.43".use_std =
+        (f.libc."0.2.43".use_std or false) ||
+        (memchr."1.0.2"."use_std" or false) ||
+        (f."memchr"."1.0.2"."use_std" or false); }
+    ];
+    memchr = fold recursiveUpdate {} [
+      { "1.0.2".default = (f.memchr."1.0.2".default or true); }
+      { "1.0.2".libc =
+        (f.memchr."1.0.2".libc or false) ||
+        (f.memchr."1.0.2".default or false) ||
+        (memchr."1.0.2"."default" or false) ||
+        (f.memchr."1.0.2".use_std or false) ||
+        (memchr."1.0.2"."use_std" or false); }
+      { "1.0.2".use_std =
+        (f.memchr."1.0.2".use_std or false) ||
+        (f.memchr."1.0.2".default or false) ||
+        (memchr."1.0.2"."default" or false); }
+    ];
+  }) [
+    (features_.libc."${deps."memchr"."1.0.2"."libc"}" deps)
+  ];
+
+
+  crates.memchr."2.1.0" = deps: { features?(features_.memchr."2.1.0" deps {}) }: buildRustCrate {
+    crateName = "memchr";
+    version = "2.1.0";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" "bluss" ];
+    sha256 = "02w1fc5z1ccx8fbzgcr0mpk0xf2i9g4vbx9q5c2g8pjddbaqvjjq";
+    dependencies = mapFeatures features ([
+      (crates."cfg_if"."${deps."memchr"."2.1.0"."cfg_if"}" deps)
+    ]
+      ++ (if features.memchr."2.1.0".libc or false then [ (crates.libc."0.2.43" deps) ] else []));
+
+    buildDependencies = mapFeatures features ([
+      (crates."version_check"."${deps."memchr"."2.1.0"."version_check"}" deps)
+    ]);
+    features = mkFeatures (features."memchr"."2.1.0" or {});
+  };
+  features_.memchr."2.1.0" = deps: f: updateFeatures f (rec {
+    cfg_if."${deps.memchr."2.1.0".cfg_if}".default = true;
+    libc = fold recursiveUpdate {} [
+      { "${deps.memchr."2.1.0".libc}".default = (f.libc."${deps.memchr."2.1.0".libc}".default or false); }
+      { "0.2.43".use_std =
+        (f.libc."0.2.43".use_std or false) ||
+        (memchr."2.1.0"."use_std" or false) ||
+        (f."memchr"."2.1.0"."use_std" or false); }
+    ];
+    memchr = fold recursiveUpdate {} [
+      { "2.1.0".default = (f.memchr."2.1.0".default or true); }
+      { "2.1.0".libc =
+        (f.memchr."2.1.0".libc or false) ||
+        (f.memchr."2.1.0".default or false) ||
+        (memchr."2.1.0"."default" or false) ||
+        (f.memchr."2.1.0".use_std or false) ||
+        (memchr."2.1.0"."use_std" or false); }
+      { "2.1.0".use_std =
+        (f.memchr."2.1.0".use_std or false) ||
+        (f.memchr."2.1.0".default or false) ||
+        (memchr."2.1.0"."default" or false); }
+    ];
+    version_check."${deps.memchr."2.1.0".version_check}".default = true;
+  }) [
+    (features_.cfg_if."${deps."memchr"."2.1.0"."cfg_if"}" deps)
+    (features_.libc."${deps."memchr"."2.1.0"."libc"}" deps)
+    (features_.version_check."${deps."memchr"."2.1.0"."version_check"}" deps)
+  ];
+
+
+  crates.nodrop."0.1.12" = deps: { features?(features_.nodrop."0.1.12" deps {}) }: buildRustCrate {
+    crateName = "nodrop";
+    version = "0.1.12";
+    authors = [ "bluss" ];
+    sha256 = "1b9rxvdg8061gxjc239l9slndf0ds3m6fy2sf3gs8f9kknqgl49d";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."nodrop"."0.1.12" or {});
+  };
+  features_.nodrop."0.1.12" = deps: f: updateFeatures f (rec {
+    nodrop = fold recursiveUpdate {} [
+      { "0.1.12".default = (f.nodrop."0.1.12".default or true); }
+      { "0.1.12".nodrop-union =
+        (f.nodrop."0.1.12".nodrop-union or false) ||
+        (f.nodrop."0.1.12".use_union or false) ||
+        (nodrop."0.1.12"."use_union" or false); }
+      { "0.1.12".std =
+        (f.nodrop."0.1.12".std or false) ||
+        (f.nodrop."0.1.12".default or false) ||
+        (nodrop."0.1.12"."default" or false); }
+    ];
+  }) [];
+
+
+  crates.nom."3.2.1" = deps: { features?(features_.nom."3.2.1" deps {}) }: buildRustCrate {
+    crateName = "nom";
+    version = "3.2.1";
+    authors = [ "contact@geoffroycouprie.com" ];
+    sha256 = "1vcllxrz9hdw6j25kn020ka3psz1vkaqh1hm3yfak2240zrxgi07";
+    dependencies = mapFeatures features ([
+      (crates."memchr"."${deps."nom"."3.2.1"."memchr"}" deps)
+    ]);
+    features = mkFeatures (features."nom"."3.2.1" or {});
+  };
+  features_.nom."3.2.1" = deps: f: updateFeatures f (rec {
+    memchr = fold recursiveUpdate {} [
+      { "${deps.nom."3.2.1".memchr}".default = (f.memchr."${deps.nom."3.2.1".memchr}".default or false); }
+      { "1.0.2".use_std =
+        (f.memchr."1.0.2".use_std or false) ||
+        (nom."3.2.1"."std" or false) ||
+        (f."nom"."3.2.1"."std" or false); }
+    ];
+    nom = fold recursiveUpdate {} [
+      { "3.2.1".compiler_error =
+        (f.nom."3.2.1".compiler_error or false) ||
+        (f.nom."3.2.1".nightly or false) ||
+        (nom."3.2.1"."nightly" or false); }
+      { "3.2.1".default = (f.nom."3.2.1".default or true); }
+      { "3.2.1".lazy_static =
+        (f.nom."3.2.1".lazy_static or false) ||
+        (f.nom."3.2.1".regexp_macros or false) ||
+        (nom."3.2.1"."regexp_macros" or false); }
+      { "3.2.1".regex =
+        (f.nom."3.2.1".regex or false) ||
+        (f.nom."3.2.1".regexp or false) ||
+        (nom."3.2.1"."regexp" or false); }
+      { "3.2.1".regexp =
+        (f.nom."3.2.1".regexp or false) ||
+        (f.nom."3.2.1".regexp_macros or false) ||
+        (nom."3.2.1"."regexp_macros" or false); }
+      { "3.2.1".std =
+        (f.nom."3.2.1".std or false) ||
+        (f.nom."3.2.1".default or false) ||
+        (nom."3.2.1"."default" or false); }
+      { "3.2.1".stream =
+        (f.nom."3.2.1".stream or false) ||
+        (f.nom."3.2.1".default or false) ||
+        (nom."3.2.1"."default" or false); }
+    ];
+  }) [
+    (features_.memchr."${deps."nom"."3.2.1"."memchr"}" deps)
+  ];
+
+
+  crates.pkg_config."0.3.14" = deps: { features?(features_.pkg_config."0.3.14" deps {}) }: buildRustCrate {
+    crateName = "pkg-config";
+    version = "0.3.14";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "0207fsarrm412j0dh87lfcas72n8mxar7q3mgflsbsrqnb140sv6";
+  };
+  features_.pkg_config."0.3.14" = deps: f: updateFeatures f (rec {
+    pkg_config."0.3.14".default = (f.pkg_config."0.3.14".default or true);
+  }) [];
+
+
+  crates.proc_macro2."0.4.20" = deps: { features?(features_.proc_macro2."0.4.20" deps {}) }: buildRustCrate {
+    crateName = "proc-macro2";
+    version = "0.4.20";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "0yr74b00d3wzg21kjvfln7vzzvf9aghbaff4c747i3grbd997ys2";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+      (crates."unicode_xid"."${deps."proc_macro2"."0.4.20"."unicode_xid"}" deps)
+    ]);
+    features = mkFeatures (features."proc_macro2"."0.4.20" or {});
+  };
+  features_.proc_macro2."0.4.20" = deps: f: updateFeatures f (rec {
+    proc_macro2 = fold recursiveUpdate {} [
+      { "0.4.20".default = (f.proc_macro2."0.4.20".default or true); }
+      { "0.4.20".proc-macro =
+        (f.proc_macro2."0.4.20".proc-macro or false) ||
+        (f.proc_macro2."0.4.20".default or false) ||
+        (proc_macro2."0.4.20"."default" or false) ||
+        (f.proc_macro2."0.4.20".nightly or false) ||
+        (proc_macro2."0.4.20"."nightly" or false); }
+    ];
+    unicode_xid."${deps.proc_macro2."0.4.20".unicode_xid}".default = true;
+  }) [
+    (features_.unicode_xid."${deps."proc_macro2"."0.4.20"."unicode_xid"}" deps)
+  ];
+
+
+  crates.quick_error."1.2.2" = deps: { features?(features_.quick_error."1.2.2" deps {}) }: buildRustCrate {
+    crateName = "quick-error";
+    version = "1.2.2";
+    authors = [ "Paul Colomiets <paul@colomiets.name>" "Colin Kiegel <kiegel@gmx.de>" ];
+    sha256 = "192a3adc5phgpibgqblsdx1b421l5yg9bjbmv552qqq9f37h60k5";
+  };
+  features_.quick_error."1.2.2" = deps: f: updateFeatures f (rec {
+    quick_error."1.2.2".default = (f.quick_error."1.2.2".default or true);
+  }) [];
+
+
+  crates.quote."0.6.8" = deps: { features?(features_.quote."0.6.8" deps {}) }: buildRustCrate {
+    crateName = "quote";
+    version = "0.6.8";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "0dq6j23w6pmc4l6v490arixdwypy0b82z76nrzaingqhqri4p3mh";
+    dependencies = mapFeatures features ([
+      (crates."proc_macro2"."${deps."quote"."0.6.8"."proc_macro2"}" deps)
+    ]);
+    features = mkFeatures (features."quote"."0.6.8" or {});
+  };
+  features_.quote."0.6.8" = deps: f: updateFeatures f (rec {
+    proc_macro2 = fold recursiveUpdate {} [
+      { "${deps.quote."0.6.8".proc_macro2}".default = (f.proc_macro2."${deps.quote."0.6.8".proc_macro2}".default or false); }
+      { "0.4.20".proc-macro =
+        (f.proc_macro2."0.4.20".proc-macro or false) ||
+        (quote."0.6.8"."proc-macro" or false) ||
+        (f."quote"."0.6.8"."proc-macro" or false); }
+    ];
+    quote = fold recursiveUpdate {} [
+      { "0.6.8".default = (f.quote."0.6.8".default or true); }
+      { "0.6.8".proc-macro =
+        (f.quote."0.6.8".proc-macro or false) ||
+        (f.quote."0.6.8".default or false) ||
+        (quote."0.6.8"."default" or false); }
+    ];
+  }) [
+    (features_.proc_macro2."${deps."quote"."0.6.8"."proc_macro2"}" deps)
+  ];
+
+
+  crates.rand."0.4.3" = deps: { features?(features_.rand."0.4.3" deps {}) }: buildRustCrate {
+    crateName = "rand";
+    version = "0.4.3";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1644wri45l147822xy7dgdm4k7myxzs66cb795ga0x7dan11ci4f";
+    dependencies = (if kernel == "fuchsia" then mapFeatures features ([
+      (crates."fuchsia_zircon"."${deps."rand"."0.4.3"."fuchsia_zircon"}" deps)
+    ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([
+    ]
+      ++ (if features.rand."0.4.3".libc or false then [ (crates.libc."0.2.43" deps) ] else [])) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."rand"."0.4.3"."winapi"}" deps)
+    ]) else []);
+    features = mkFeatures (features."rand"."0.4.3" or {});
+  };
+  features_.rand."0.4.3" = deps: f: updateFeatures f (rec {
+    fuchsia_zircon."${deps.rand."0.4.3".fuchsia_zircon}".default = true;
+    libc."${deps.rand."0.4.3".libc}".default = true;
+    rand = fold recursiveUpdate {} [
+      { "0.4.3".default = (f.rand."0.4.3".default or true); }
+      { "0.4.3".i128_support =
+        (f.rand."0.4.3".i128_support or false) ||
+        (f.rand."0.4.3".nightly or false) ||
+        (rand."0.4.3"."nightly" or false); }
+      { "0.4.3".libc =
+        (f.rand."0.4.3".libc or false) ||
+        (f.rand."0.4.3".std or false) ||
+        (rand."0.4.3"."std" or false); }
+      { "0.4.3".std =
+        (f.rand."0.4.3".std or false) ||
+        (f.rand."0.4.3".default or false) ||
+        (rand."0.4.3"."default" or false); }
+    ];
+    winapi = fold recursiveUpdate {} [
+      { "${deps.rand."0.4.3".winapi}"."minwindef" = true; }
+      { "${deps.rand."0.4.3".winapi}"."ntsecapi" = true; }
+      { "${deps.rand."0.4.3".winapi}"."profileapi" = true; }
+      { "${deps.rand."0.4.3".winapi}"."winnt" = true; }
+      { "${deps.rand."0.4.3".winapi}".default = true; }
+    ];
+  }) [
+    (features_.fuchsia_zircon."${deps."rand"."0.4.3"."fuchsia_zircon"}" deps)
+    (features_.libc."${deps."rand"."0.4.3"."libc"}" deps)
+    (features_.winapi."${deps."rand"."0.4.3"."winapi"}" deps)
+  ];
+
+
+  crates.redox_syscall."0.1.40" = deps: { features?(features_.redox_syscall."0.1.40" deps {}) }: buildRustCrate {
+    crateName = "redox_syscall";
+    version = "0.1.40";
+    authors = [ "Jeremy Soller <jackpot51@gmail.com>" ];
+    sha256 = "132rnhrq49l3z7gjrwj2zfadgw6q0355s6a7id7x7c0d7sk72611";
+    libName = "syscall";
+  };
+  features_.redox_syscall."0.1.40" = deps: f: updateFeatures f (rec {
+    redox_syscall."0.1.40".default = (f.redox_syscall."0.1.40".default or true);
+  }) [];
+
+
+  crates.redox_termios."0.1.1" = deps: { features?(features_.redox_termios."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "redox_termios";
+    version = "0.1.1";
+    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)
+  ];
+
+
+  crates.redox_users."0.2.0" = deps: { features?(features_.redox_users."0.2.0" deps {}) }: buildRustCrate {
+    crateName = "redox_users";
+    version = "0.2.0";
+    authors = [ "Jose Narvaez <goyox86@gmail.com>" "Wesley Hershberger <mggmugginsmc@gmail.com>" ];
+    sha256 = "0s9jrh378jk8rfi1xfwxvh2r1gv6rn3bq6n7sbajkrqqq0xzijvf";
+    dependencies = mapFeatures features ([
+      (crates."argon2rs"."${deps."redox_users"."0.2.0"."argon2rs"}" deps)
+      (crates."failure"."${deps."redox_users"."0.2.0"."failure"}" deps)
+      (crates."rand"."${deps."redox_users"."0.2.0"."rand"}" deps)
+      (crates."redox_syscall"."${deps."redox_users"."0.2.0"."redox_syscall"}" deps)
+    ]);
+  };
+  features_.redox_users."0.2.0" = deps: f: updateFeatures f (rec {
+    argon2rs."${deps.redox_users."0.2.0".argon2rs}".default = (f.argon2rs."${deps.redox_users."0.2.0".argon2rs}".default or false);
+    failure."${deps.redox_users."0.2.0".failure}".default = true;
+    rand."${deps.redox_users."0.2.0".rand}".default = true;
+    redox_syscall."${deps.redox_users."0.2.0".redox_syscall}".default = true;
+    redox_users."0.2.0".default = (f.redox_users."0.2.0".default or true);
+  }) [
+    (features_.argon2rs."${deps."redox_users"."0.2.0"."argon2rs"}" deps)
+    (features_.failure."${deps."redox_users"."0.2.0"."failure"}" deps)
+    (features_.rand."${deps."redox_users"."0.2.0"."rand"}" deps)
+    (features_.redox_syscall."${deps."redox_users"."0.2.0"."redox_syscall"}" deps)
+  ];
+
+
+  crates.regex."1.0.5" = deps: { features?(features_.regex."1.0.5" deps {}) }: buildRustCrate {
+    crateName = "regex";
+    version = "1.0.5";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "1nb4dva9lhb3v76bdds9qcxldb2xy998sdraqnqaqdr6axfsfp02";
+    dependencies = mapFeatures features ([
+      (crates."aho_corasick"."${deps."regex"."1.0.5"."aho_corasick"}" deps)
+      (crates."memchr"."${deps."regex"."1.0.5"."memchr"}" deps)
+      (crates."regex_syntax"."${deps."regex"."1.0.5"."regex_syntax"}" deps)
+      (crates."thread_local"."${deps."regex"."1.0.5"."thread_local"}" deps)
+      (crates."utf8_ranges"."${deps."regex"."1.0.5"."utf8_ranges"}" deps)
+    ]);
+    features = mkFeatures (features."regex"."1.0.5" or {});
+  };
+  features_.regex."1.0.5" = deps: f: updateFeatures f (rec {
+    aho_corasick."${deps.regex."1.0.5".aho_corasick}".default = true;
+    memchr."${deps.regex."1.0.5".memchr}".default = true;
+    regex = fold recursiveUpdate {} [
+      { "1.0.5".default = (f.regex."1.0.5".default or true); }
+      { "1.0.5".pattern =
+        (f.regex."1.0.5".pattern or false) ||
+        (f.regex."1.0.5".unstable or false) ||
+        (regex."1.0.5"."unstable" or false); }
+      { "1.0.5".use_std =
+        (f.regex."1.0.5".use_std or false) ||
+        (f.regex."1.0.5".default or false) ||
+        (regex."1.0.5"."default" or false); }
+    ];
+    regex_syntax."${deps.regex."1.0.5".regex_syntax}".default = true;
+    thread_local."${deps.regex."1.0.5".thread_local}".default = true;
+    utf8_ranges."${deps.regex."1.0.5".utf8_ranges}".default = true;
+  }) [
+    (features_.aho_corasick."${deps."regex"."1.0.5"."aho_corasick"}" deps)
+    (features_.memchr."${deps."regex"."1.0.5"."memchr"}" deps)
+    (features_.regex_syntax."${deps."regex"."1.0.5"."regex_syntax"}" deps)
+    (features_.thread_local."${deps."regex"."1.0.5"."thread_local"}" deps)
+    (features_.utf8_ranges."${deps."regex"."1.0.5"."utf8_ranges"}" deps)
+  ];
+
+
+  crates.regex_syntax."0.6.2" = deps: { features?(features_.regex_syntax."0.6.2" deps {}) }: buildRustCrate {
+    crateName = "regex-syntax";
+    version = "0.6.2";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "109426mj7nhwr6szdzbcvn1a8g5zy52f9maqxjd9agm8wg87ylyw";
+    dependencies = mapFeatures features ([
+      (crates."ucd_util"."${deps."regex_syntax"."0.6.2"."ucd_util"}" deps)
+    ]);
+  };
+  features_.regex_syntax."0.6.2" = deps: f: updateFeatures f (rec {
+    regex_syntax."0.6.2".default = (f.regex_syntax."0.6.2".default or true);
+    ucd_util."${deps.regex_syntax."0.6.2".ucd_util}".default = true;
+  }) [
+    (features_.ucd_util."${deps."regex_syntax"."0.6.2"."ucd_util"}" deps)
+  ];
+
+
+  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";
+    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)
+  ];
+
+
+  crates.rusqlite."0.14.0" = deps: { features?(features_.rusqlite."0.14.0" deps {}) }: buildRustCrate {
+    crateName = "rusqlite";
+    version = "0.14.0";
+    authors = [ "John Gallagher <jgallagher@bignerdranch.com>" ];
+    sha256 = "06j1z8yicn6jg8irxclsvgp0575gz5k24jgnbk0d807i5gvsg9jq";
+    dependencies = mapFeatures features ([
+      (crates."bitflags"."${deps."rusqlite"."0.14.0"."bitflags"}" deps)
+      (crates."libsqlite3_sys"."${deps."rusqlite"."0.14.0"."libsqlite3_sys"}" deps)
+      (crates."lru_cache"."${deps."rusqlite"."0.14.0"."lru_cache"}" deps)
+      (crates."time"."${deps."rusqlite"."0.14.0"."time"}" deps)
+    ]);
+    features = mkFeatures (features."rusqlite"."0.14.0" or {});
+  };
+  features_.rusqlite."0.14.0" = deps: f: updateFeatures f (rec {
+    bitflags."${deps.rusqlite."0.14.0".bitflags}".default = true;
+    libsqlite3_sys = fold recursiveUpdate {} [
+      { "${deps.rusqlite."0.14.0".libsqlite3_sys}".default = true; }
+      { "0.9.3".buildtime_bindgen =
+        (f.libsqlite3_sys."0.9.3".buildtime_bindgen or false) ||
+        (rusqlite."0.14.0"."buildtime_bindgen" or false) ||
+        (f."rusqlite"."0.14.0"."buildtime_bindgen" or false); }
+      { "0.9.3".bundled =
+        (f.libsqlite3_sys."0.9.3".bundled or false) ||
+        (rusqlite."0.14.0"."bundled" or false) ||
+        (f."rusqlite"."0.14.0"."bundled" or false); }
+      { "0.9.3".min_sqlite_version_3_6_11 =
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_11 or false) ||
+        (rusqlite."0.14.0"."backup" or false) ||
+        (f."rusqlite"."0.14.0"."backup" or false); }
+      { "0.9.3".min_sqlite_version_3_6_23 =
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_6_23 or false) ||
+        (rusqlite."0.14.0"."trace" or false) ||
+        (f."rusqlite"."0.14.0"."trace" or false); }
+      { "0.9.3".min_sqlite_version_3_7_3 =
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_3 or false) ||
+        (rusqlite."0.14.0"."functions" or false) ||
+        (f."rusqlite"."0.14.0"."functions" or false); }
+      { "0.9.3".min_sqlite_version_3_7_4 =
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_4 or false) ||
+        (rusqlite."0.14.0"."blob" or false) ||
+        (f."rusqlite"."0.14.0"."blob" or false); }
+      { "0.9.3".min_sqlite_version_3_7_7 =
+        (f.libsqlite3_sys."0.9.3".min_sqlite_version_3_7_7 or false) ||
+        (rusqlite."0.14.0"."vtab" or false) ||
+        (f."rusqlite"."0.14.0"."vtab" or false); }
+      { "0.9.3".sqlcipher =
+        (f.libsqlite3_sys."0.9.3".sqlcipher or false) ||
+        (rusqlite."0.14.0"."sqlcipher" or false) ||
+        (f."rusqlite"."0.14.0"."sqlcipher" or false); }
+      { "0.9.3".unlock_notify =
+        (f.libsqlite3_sys."0.9.3".unlock_notify or false) ||
+        (rusqlite."0.14.0"."unlock_notify" or false) ||
+        (f."rusqlite"."0.14.0"."unlock_notify" or false); }
+    ];
+    lru_cache."${deps.rusqlite."0.14.0".lru_cache}".default = true;
+    rusqlite = fold recursiveUpdate {} [
+      { "0.14.0".bundled =
+        (f.rusqlite."0.14.0".bundled or false) ||
+        (f.rusqlite."0.14.0".array or false) ||
+        (rusqlite."0.14.0"."array" or false); }
+      { "0.14.0".csv =
+        (f.rusqlite."0.14.0".csv or false) ||
+        (f.rusqlite."0.14.0".csvtab or false) ||
+        (rusqlite."0.14.0"."csvtab" or false); }
+      { "0.14.0".default = (f.rusqlite."0.14.0".default or true); }
+      { "0.14.0".lazy_static =
+        (f.rusqlite."0.14.0".lazy_static or false) ||
+        (f.rusqlite."0.14.0".vtab or false) ||
+        (rusqlite."0.14.0"."vtab" or false); }
+      { "0.14.0".vtab =
+        (f.rusqlite."0.14.0".vtab or false) ||
+        (f.rusqlite."0.14.0".array or false) ||
+        (rusqlite."0.14.0"."array" or false) ||
+        (f.rusqlite."0.14.0".csvtab or false) ||
+        (rusqlite."0.14.0"."csvtab" or false); }
+    ];
+    time."${deps.rusqlite."0.14.0".time}".default = true;
+  }) [
+    (features_.bitflags."${deps."rusqlite"."0.14.0"."bitflags"}" deps)
+    (features_.libsqlite3_sys."${deps."rusqlite"."0.14.0"."libsqlite3_sys"}" deps)
+    (features_.lru_cache."${deps."rusqlite"."0.14.0"."lru_cache"}" deps)
+    (features_.time."${deps."rusqlite"."0.14.0"."time"}" deps)
+  ];
+
+
+  crates.rustc_demangle."0.1.9" = deps: { features?(features_.rustc_demangle."0.1.9" deps {}) }: buildRustCrate {
+    crateName = "rustc-demangle";
+    version = "0.1.9";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "00ma4r9haq0zv5krps617mym6y74056pfcivyld0kpci156vfaax";
+  };
+  features_.rustc_demangle."0.1.9" = deps: f: updateFeatures f (rec {
+    rustc_demangle."0.1.9".default = (f.rustc_demangle."0.1.9".default or true);
+  }) [];
+
+
+  crates.ryu."0.2.6" = deps: { features?(features_.ryu."0.2.6" deps {}) }: buildRustCrate {
+    crateName = "ryu";
+    version = "0.2.6";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1vdh6z4aysc9kiiqhl7vxkqz3fykcnp24kgfizshlwfsz2j0p9dr";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."ryu"."0.2.6" or {});
+  };
+  features_.ryu."0.2.6" = deps: f: updateFeatures f (rec {
+    ryu."0.2.6".default = (f.ryu."0.2.6".default or true);
+  }) [];
+
+
+  crates.scoped_threadpool."0.1.9" = deps: { features?(features_.scoped_threadpool."0.1.9" deps {}) }: buildRustCrate {
+    crateName = "scoped_threadpool";
+    version = "0.1.9";
+    authors = [ "Marvin Löbel <loebel.marvin@gmail.com>" ];
+    sha256 = "1arqj2skcfr46s1lcyvnlmfr5456kg5nhn8k90xyfjnxkp5yga2v";
+    features = mkFeatures (features."scoped_threadpool"."0.1.9" or {});
+  };
+  features_.scoped_threadpool."0.1.9" = deps: f: updateFeatures f (rec {
+    scoped_threadpool."0.1.9".default = (f.scoped_threadpool."0.1.9".default or true);
+  }) [];
+
+
+  crates.serde."1.0.80" = deps: { features?(features_.serde."1.0.80" deps {}) }: buildRustCrate {
+    crateName = "serde";
+    version = "1.0.80";
+    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "0vyciw2qhrws4hz87pfnsjdfzzdw2sclxqxq394g3a219a2rdcxz";
+    build = "build.rs";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."serde"."1.0.80" or {});
+  };
+  features_.serde."1.0.80" = deps: f: updateFeatures f (rec {
+    serde = fold recursiveUpdate {} [
+      { "1.0.80".default = (f.serde."1.0.80".default or true); }
+      { "1.0.80".serde_derive =
+        (f.serde."1.0.80".serde_derive or false) ||
+        (f.serde."1.0.80".derive or false) ||
+        (serde."1.0.80"."derive" or false); }
+      { "1.0.80".std =
+        (f.serde."1.0.80".std or false) ||
+        (f.serde."1.0.80".default or false) ||
+        (serde."1.0.80"."default" or false); }
+      { "1.0.80".unstable =
+        (f.serde."1.0.80".unstable or false) ||
+        (f.serde."1.0.80".alloc or false) ||
+        (serde."1.0.80"."alloc" or false); }
+    ];
+  }) [];
+
+
+  crates.serde_derive."1.0.80" = deps: { features?(features_.serde_derive."1.0.80" deps {}) }: buildRustCrate {
+    crateName = "serde_derive";
+    version = "1.0.80";
+    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1akvzhbnnqhd92lfj7vp43scs1vdml7x27c82l5yh0kz7xf7jaky";
+    procMacro = true;
+    dependencies = mapFeatures features ([
+      (crates."proc_macro2"."${deps."serde_derive"."1.0.80"."proc_macro2"}" deps)
+      (crates."quote"."${deps."serde_derive"."1.0.80"."quote"}" deps)
+      (crates."syn"."${deps."serde_derive"."1.0.80"."syn"}" deps)
+    ]);
+    features = mkFeatures (features."serde_derive"."1.0.80" or {});
+  };
+  features_.serde_derive."1.0.80" = deps: f: updateFeatures f (rec {
+    proc_macro2."${deps.serde_derive."1.0.80".proc_macro2}".default = true;
+    quote."${deps.serde_derive."1.0.80".quote}".default = true;
+    serde_derive."1.0.80".default = (f.serde_derive."1.0.80".default or true);
+    syn = fold recursiveUpdate {} [
+      { "${deps.serde_derive."1.0.80".syn}"."visit" = true; }
+      { "${deps.serde_derive."1.0.80".syn}".default = true; }
+    ];
+  }) [
+    (features_.proc_macro2."${deps."serde_derive"."1.0.80"."proc_macro2"}" deps)
+    (features_.quote."${deps."serde_derive"."1.0.80"."quote"}" deps)
+    (features_.syn."${deps."serde_derive"."1.0.80"."syn"}" deps)
+  ];
+
+
+  crates.serde_json."1.0.32" = deps: { features?(features_.serde_json."1.0.32" deps {}) }: buildRustCrate {
+    crateName = "serde_json";
+    version = "1.0.32";
+    authors = [ "Erick Tryzelaar <erick.tryzelaar@gmail.com>" "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1dqkvizi02j1bs5c21kw20idf4aa5399g29ndwl6vkmmrqkr1gr0";
+    dependencies = mapFeatures features ([
+      (crates."itoa"."${deps."serde_json"."1.0.32"."itoa"}" deps)
+      (crates."ryu"."${deps."serde_json"."1.0.32"."ryu"}" deps)
+      (crates."serde"."${deps."serde_json"."1.0.32"."serde"}" deps)
+    ]);
+    features = mkFeatures (features."serde_json"."1.0.32" or {});
+  };
+  features_.serde_json."1.0.32" = deps: f: updateFeatures f (rec {
+    itoa."${deps.serde_json."1.0.32".itoa}".default = true;
+    ryu."${deps.serde_json."1.0.32".ryu}".default = true;
+    serde."${deps.serde_json."1.0.32".serde}".default = true;
+    serde_json = fold recursiveUpdate {} [
+      { "1.0.32".default = (f.serde_json."1.0.32".default or true); }
+      { "1.0.32".indexmap =
+        (f.serde_json."1.0.32".indexmap or false) ||
+        (f.serde_json."1.0.32".preserve_order or false) ||
+        (serde_json."1.0.32"."preserve_order" or false); }
+    ];
+  }) [
+    (features_.itoa."${deps."serde_json"."1.0.32"."itoa"}" deps)
+    (features_.ryu."${deps."serde_json"."1.0.32"."ryu"}" deps)
+    (features_.serde."${deps."serde_json"."1.0.32"."serde"}" deps)
+  ];
+
+
+  crates.strsim."0.7.0" = deps: { features?(features_.strsim."0.7.0" deps {}) }: buildRustCrate {
+    crateName = "strsim";
+    version = "0.7.0";
+    authors = [ "Danny Guo <dannyguo91@gmail.com>" ];
+    sha256 = "0fy0k5f2705z73mb3x9459bpcvrx4ky8jpr4zikcbiwan4bnm0iv";
+  };
+  features_.strsim."0.7.0" = deps: f: updateFeatures f (rec {
+    strsim."0.7.0".default = (f.strsim."0.7.0".default or true);
+  }) [];
+
+
+  crates.syn."0.15.13" = deps: { features?(features_.syn."0.15.13" deps {}) }: buildRustCrate {
+    crateName = "syn";
+    version = "0.15.13";
+    authors = [ "David Tolnay <dtolnay@gmail.com>" ];
+    sha256 = "1zvnppl08f2njpkl3m10h221sdl4vsm7v6vyq63dxk16nn37b1bh";
+    dependencies = mapFeatures features ([
+      (crates."proc_macro2"."${deps."syn"."0.15.13"."proc_macro2"}" deps)
+      (crates."unicode_xid"."${deps."syn"."0.15.13"."unicode_xid"}" deps)
+    ]
+      ++ (if features.syn."0.15.13".quote or false then [ (crates.quote."0.6.8" deps) ] else []));
+    features = mkFeatures (features."syn"."0.15.13" or {});
+  };
+  features_.syn."0.15.13" = deps: f: updateFeatures f (rec {
+    proc_macro2 = fold recursiveUpdate {} [
+      { "${deps.syn."0.15.13".proc_macro2}".default = (f.proc_macro2."${deps.syn."0.15.13".proc_macro2}".default or false); }
+      { "0.4.20".proc-macro =
+        (f.proc_macro2."0.4.20".proc-macro or false) ||
+        (syn."0.15.13"."proc-macro" or false) ||
+        (f."syn"."0.15.13"."proc-macro" or false); }
+    ];
+    quote = fold recursiveUpdate {} [
+      { "${deps.syn."0.15.13".quote}".default = (f.quote."${deps.syn."0.15.13".quote}".default or false); }
+      { "0.6.8".proc-macro =
+        (f.quote."0.6.8".proc-macro or false) ||
+        (syn."0.15.13"."proc-macro" or false) ||
+        (f."syn"."0.15.13"."proc-macro" or false); }
+    ];
+    syn = fold recursiveUpdate {} [
+      { "0.15.13".clone-impls =
+        (f.syn."0.15.13".clone-impls or false) ||
+        (f.syn."0.15.13".default or false) ||
+        (syn."0.15.13"."default" or false); }
+      { "0.15.13".default = (f.syn."0.15.13".default or true); }
+      { "0.15.13".derive =
+        (f.syn."0.15.13".derive or false) ||
+        (f.syn."0.15.13".default or false) ||
+        (syn."0.15.13"."default" or false); }
+      { "0.15.13".parsing =
+        (f.syn."0.15.13".parsing or false) ||
+        (f.syn."0.15.13".default or false) ||
+        (syn."0.15.13"."default" or false); }
+      { "0.15.13".printing =
+        (f.syn."0.15.13".printing or false) ||
+        (f.syn."0.15.13".default or false) ||
+        (syn."0.15.13"."default" or false); }
+      { "0.15.13".proc-macro =
+        (f.syn."0.15.13".proc-macro or false) ||
+        (f.syn."0.15.13".default or false) ||
+        (syn."0.15.13"."default" or false); }
+      { "0.15.13".quote =
+        (f.syn."0.15.13".quote or false) ||
+        (f.syn."0.15.13".printing or false) ||
+        (syn."0.15.13"."printing" or false); }
+    ];
+    unicode_xid."${deps.syn."0.15.13".unicode_xid}".default = true;
+  }) [
+    (features_.proc_macro2."${deps."syn"."0.15.13"."proc_macro2"}" deps)
+    (features_.quote."${deps."syn"."0.15.13"."quote"}" deps)
+    (features_.unicode_xid."${deps."syn"."0.15.13"."unicode_xid"}" deps)
+  ];
+
+
+  crates.synstructure."0.10.0" = deps: { features?(features_.synstructure."0.10.0" deps {}) }: buildRustCrate {
+    crateName = "synstructure";
+    version = "0.10.0";
+    authors = [ "Nika Layzell <nika@thelayzells.com>" ];
+    sha256 = "1alb4hsbm5qf4jy7nmdkqrh3jagqk1xj88w0pmz67f16dvgpf0qf";
+    dependencies = mapFeatures features ([
+      (crates."proc_macro2"."${deps."synstructure"."0.10.0"."proc_macro2"}" deps)
+      (crates."quote"."${deps."synstructure"."0.10.0"."quote"}" deps)
+      (crates."syn"."${deps."synstructure"."0.10.0"."syn"}" deps)
+      (crates."unicode_xid"."${deps."synstructure"."0.10.0"."unicode_xid"}" deps)
+    ]);
+    features = mkFeatures (features."synstructure"."0.10.0" or {});
+  };
+  features_.synstructure."0.10.0" = deps: f: updateFeatures f (rec {
+    proc_macro2."${deps.synstructure."0.10.0".proc_macro2}".default = true;
+    quote."${deps.synstructure."0.10.0".quote}".default = true;
+    syn = fold recursiveUpdate {} [
+      { "${deps.synstructure."0.10.0".syn}"."extra-traits" = true; }
+      { "${deps.synstructure."0.10.0".syn}"."visit" = true; }
+      { "${deps.synstructure."0.10.0".syn}".default = true; }
+    ];
+    synstructure."0.10.0".default = (f.synstructure."0.10.0".default or true);
+    unicode_xid."${deps.synstructure."0.10.0".unicode_xid}".default = true;
+  }) [
+    (features_.proc_macro2."${deps."synstructure"."0.10.0"."proc_macro2"}" deps)
+    (features_.quote."${deps."synstructure"."0.10.0"."quote"}" deps)
+    (features_.syn."${deps."synstructure"."0.10.0"."syn"}" deps)
+    (features_.unicode_xid."${deps."synstructure"."0.10.0"."unicode_xid"}" deps)
+  ];
+
+
+  crates.tempdir."0.3.7" = deps: { features?(features_.tempdir."0.3.7" deps {}) }: buildRustCrate {
+    crateName = "tempdir";
+    version = "0.3.7";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0y53sxybyljrr7lh0x0ysrsa7p7cljmwv9v80acy3rc6n97g67vy";
+    dependencies = mapFeatures features ([
+      (crates."rand"."${deps."tempdir"."0.3.7"."rand"}" deps)
+      (crates."remove_dir_all"."${deps."tempdir"."0.3.7"."remove_dir_all"}" deps)
+    ]);
+  };
+  features_.tempdir."0.3.7" = deps: f: updateFeatures f (rec {
+    rand."${deps.tempdir."0.3.7".rand}".default = true;
+    remove_dir_all."${deps.tempdir."0.3.7".remove_dir_all}".default = true;
+    tempdir."0.3.7".default = (f.tempdir."0.3.7".default or true);
+  }) [
+    (features_.rand."${deps."tempdir"."0.3.7"."rand"}" deps)
+    (features_.remove_dir_all."${deps."tempdir"."0.3.7"."remove_dir_all"}" deps)
+  ];
+
+
+  crates.termcolor."1.0.4" = deps: { features?(features_.termcolor."1.0.4" deps {}) }: buildRustCrate {
+    crateName = "termcolor";
+    version = "1.0.4";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "0xydrjc0bxg08llcbcmkka29szdrfklk4vh6l6mdd67ajifqw1mv";
+    dependencies = (if kernel == "windows" then mapFeatures features ([
+      (crates."wincolor"."${deps."termcolor"."1.0.4"."wincolor"}" deps)
+    ]) else []);
+  };
+  features_.termcolor."1.0.4" = deps: f: updateFeatures f (rec {
+    termcolor."1.0.4".default = (f.termcolor."1.0.4".default or true);
+    wincolor."${deps.termcolor."1.0.4".wincolor}".default = true;
+  }) [
+    (features_.wincolor."${deps."termcolor"."1.0.4"."wincolor"}" deps)
+  ];
+
+
+  crates.termion."1.5.1" = deps: { features?(features_.termion."1.5.1" deps {}) }: buildRustCrate {
+    crateName = "termion";
+    version = "1.5.1";
+    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)
+  ];
+
+
+  crates.textwrap."0.10.0" = deps: { features?(features_.textwrap."0.10.0" deps {}) }: buildRustCrate {
+    crateName = "textwrap";
+    version = "0.10.0";
+    authors = [ "Martin Geisler <martin@geisler.net>" ];
+    sha256 = "1s8d5cna12smhgj0x2y1xphklyk2an1yzbadnj89p1vy5vnjpsas";
+    dependencies = mapFeatures features ([
+      (crates."unicode_width"."${deps."textwrap"."0.10.0"."unicode_width"}" deps)
+    ]);
+  };
+  features_.textwrap."0.10.0" = deps: f: updateFeatures f (rec {
+    textwrap."0.10.0".default = (f.textwrap."0.10.0".default or true);
+    unicode_width."${deps.textwrap."0.10.0".unicode_width}".default = true;
+  }) [
+    (features_.unicode_width."${deps."textwrap"."0.10.0"."unicode_width"}" deps)
+  ];
+
+
+  crates.thread_local."0.3.6" = deps: { features?(features_.thread_local."0.3.6" deps {}) }: buildRustCrate {
+    crateName = "thread_local";
+    version = "0.3.6";
+    authors = [ "Amanieu d'Antras <amanieu@gmail.com>" ];
+    sha256 = "02rksdwjmz2pw9bmgbb4c0bgkbq5z6nvg510sq1s6y2j1gam0c7i";
+    dependencies = mapFeatures features ([
+      (crates."lazy_static"."${deps."thread_local"."0.3.6"."lazy_static"}" deps)
+    ]);
+  };
+  features_.thread_local."0.3.6" = deps: f: updateFeatures f (rec {
+    lazy_static."${deps.thread_local."0.3.6".lazy_static}".default = true;
+    thread_local."0.3.6".default = (f.thread_local."0.3.6".default or true);
+  }) [
+    (features_.lazy_static."${deps."thread_local"."0.3.6"."lazy_static"}" deps)
+  ];
+
+
+  crates.time."0.1.40" = deps: { features?(features_.time."0.1.40" deps {}) }: buildRustCrate {
+    crateName = "time";
+    version = "0.1.40";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0wgnbjamljz6bqxsd5axc4p2mmhkqfrryj4gf2yswjaxiw5dd01m";
+    dependencies = mapFeatures features ([
+      (crates."libc"."${deps."time"."0.1.40"."libc"}" deps)
+    ])
+      ++ (if kernel == "redox" then mapFeatures features ([
+      (crates."redox_syscall"."${deps."time"."0.1.40"."redox_syscall"}" deps)
+    ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."time"."0.1.40"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.time."0.1.40" = deps: f: updateFeatures f (rec {
+    libc."${deps.time."0.1.40".libc}".default = true;
+    redox_syscall."${deps.time."0.1.40".redox_syscall}".default = true;
+    time."0.1.40".default = (f.time."0.1.40".default or true);
+    winapi = fold recursiveUpdate {} [
+      { "${deps.time."0.1.40".winapi}"."minwinbase" = true; }
+      { "${deps.time."0.1.40".winapi}"."minwindef" = true; }
+      { "${deps.time."0.1.40".winapi}"."ntdef" = true; }
+      { "${deps.time."0.1.40".winapi}"."profileapi" = true; }
+      { "${deps.time."0.1.40".winapi}"."std" = true; }
+      { "${deps.time."0.1.40".winapi}"."sysinfoapi" = true; }
+      { "${deps.time."0.1.40".winapi}"."timezoneapi" = true; }
+      { "${deps.time."0.1.40".winapi}".default = true; }
+    ];
+  }) [
+    (features_.libc."${deps."time"."0.1.40"."libc"}" deps)
+    (features_.redox_syscall."${deps."time"."0.1.40"."redox_syscall"}" deps)
+    (features_.winapi."${deps."time"."0.1.40"."winapi"}" deps)
+  ];
+
+
+  crates.toml."0.4.8" = deps: { features?(features_.toml."0.4.8" deps {}) }: buildRustCrate {
+    crateName = "toml";
+    version = "0.4.8";
+    authors = [ "Alex Crichton <alex@alexcrichton.com>" ];
+    sha256 = "1xm3chgsvi3qqi7vj8sb5xvnbfpkqyl4fiwh7y2cl6r4brwlmif1";
+    dependencies = mapFeatures features ([
+      (crates."serde"."${deps."toml"."0.4.8"."serde"}" deps)
+    ]);
+  };
+  features_.toml."0.4.8" = deps: f: updateFeatures f (rec {
+    serde."${deps.toml."0.4.8".serde}".default = true;
+    toml."0.4.8".default = (f.toml."0.4.8".default or true);
+  }) [
+    (features_.serde."${deps."toml"."0.4.8"."serde"}" deps)
+  ];
+
+
+  crates.ucd_util."0.1.1" = deps: { features?(features_.ucd_util."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "ucd-util";
+    version = "0.1.1";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "02a8h3siipx52b832xc8m8rwasj6nx9jpiwfldw8hp6k205hgkn0";
+  };
+  features_.ucd_util."0.1.1" = deps: f: updateFeatures f (rec {
+    ucd_util."0.1.1".default = (f.ucd_util."0.1.1".default or true);
+  }) [];
+
+
+  crates.unicode_width."0.1.5" = deps: { features?(features_.unicode_width."0.1.5" deps {}) }: buildRustCrate {
+    crateName = "unicode-width";
+    version = "0.1.5";
+    authors = [ "kwantam <kwantam@gmail.com>" ];
+    sha256 = "0886lc2aymwgy0lhavwn6s48ik3c61ykzzd3za6prgnw51j7bi4w";
+    features = mkFeatures (features."unicode_width"."0.1.5" or {});
+  };
+  features_.unicode_width."0.1.5" = deps: f: updateFeatures f (rec {
+    unicode_width."0.1.5".default = (f.unicode_width."0.1.5".default or true);
+  }) [];
+
+
+  crates.unicode_xid."0.1.0" = deps: { features?(features_.unicode_xid."0.1.0" deps {}) }: buildRustCrate {
+    crateName = "unicode-xid";
+    version = "0.1.0";
+    authors = [ "erick.tryzelaar <erick.tryzelaar@gmail.com>" "kwantam <kwantam@gmail.com>" ];
+    sha256 = "05wdmwlfzxhq3nhsxn6wx4q8dhxzzfb9szsz6wiw092m1rjj01zj";
+    features = mkFeatures (features."unicode_xid"."0.1.0" or {});
+  };
+  features_.unicode_xid."0.1.0" = deps: f: updateFeatures f (rec {
+    unicode_xid."0.1.0".default = (f.unicode_xid."0.1.0".default or true);
+  }) [];
+
+
+  crates.utf8_ranges."1.0.1" = deps: { features?(features_.utf8_ranges."1.0.1" deps {}) }: buildRustCrate {
+    crateName = "utf8-ranges";
+    version = "1.0.1";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "1s56ihd2c8ba6191078wivvv59247szaiszrh8x2rxqfsxlfrnpp";
+  };
+  features_.utf8_ranges."1.0.1" = deps: f: updateFeatures f (rec {
+    utf8_ranges."1.0.1".default = (f.utf8_ranges."1.0.1".default or true);
+  }) [];
+
+
+  crates.vcpkg."0.2.6" = deps: { features?(features_.vcpkg."0.2.6" deps {}) }: buildRustCrate {
+    crateName = "vcpkg";
+    version = "0.2.6";
+    authors = [ "Jim McGrath <jimmc2@gmail.com>" ];
+    sha256 = "1ig6jqpzzl1z9vk4qywgpfr4hfbd8ny8frqsgm3r449wkc4n1i5x";
+  };
+  features_.vcpkg."0.2.6" = deps: f: updateFeatures f (rec {
+    vcpkg."0.2.6".default = (f.vcpkg."0.2.6".default or true);
+  }) [];
+
+
+  crates.vec_map."0.8.1" = deps: { features?(features_.vec_map."0.8.1" deps {}) }: buildRustCrate {
+    crateName = "vec_map";
+    version = "0.8.1";
+    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 = "1jj2nrg8h3l53d43rwkpkikq5a5x15ms4rf1rw92hp5lrqhi8mpi";
+    dependencies = mapFeatures features ([
+]);
+    features = mkFeatures (features."vec_map"."0.8.1" or {});
+  };
+  features_.vec_map."0.8.1" = deps: f: updateFeatures f (rec {
+    vec_map = fold recursiveUpdate {} [
+      { "0.8.1".default = (f.vec_map."0.8.1".default or true); }
+      { "0.8.1".serde =
+        (f.vec_map."0.8.1".serde or false) ||
+        (f.vec_map."0.8.1".eders or false) ||
+        (vec_map."0.8.1"."eders" or false); }
+    ];
+  }) [];
+
+
+  crates.version_check."0.1.5" = deps: { features?(features_.version_check."0.1.5" deps {}) }: buildRustCrate {
+    crateName = "version_check";
+    version = "0.1.5";
+    authors = [ "Sergio Benitez <sb@sergio.bz>" ];
+    sha256 = "1yrx9xblmwbafw2firxyqbj8f771kkzfd24n3q7xgwiqyhi0y8qd";
+  };
+  features_.version_check."0.1.5" = deps: f: updateFeatures f (rec {
+    version_check."0.1.5".default = (f.version_check."0.1.5".default or true);
+  }) [];
+
+
+  crates.winapi."0.3.6" = deps: { features?(features_.winapi."0.3.6" deps {}) }: buildRustCrate {
+    crateName = "winapi";
+    version = "0.3.6";
+    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)
+  ];
+
+
+  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";
+    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);
+  }) [];
+
+
+  crates.winapi_util."0.1.1" = deps: { features?(features_.winapi_util."0.1.1" deps {}) }: buildRustCrate {
+    crateName = "winapi-util";
+    version = "0.1.1";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "10madanla73aagbklx6y73r2g2vwq9w8a0qcghbbbpn9vfr6a95f";
+    dependencies = (if kernel == "windows" then mapFeatures features ([
+      (crates."winapi"."${deps."winapi_util"."0.1.1"."winapi"}" deps)
+    ]) else []);
+  };
+  features_.winapi_util."0.1.1" = deps: f: updateFeatures f (rec {
+    winapi = fold recursiveUpdate {} [
+      { "${deps.winapi_util."0.1.1".winapi}"."consoleapi" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."errhandlingapi" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."fileapi" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."minwindef" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."processenv" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."std" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."winbase" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."wincon" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}"."winerror" = true; }
+      { "${deps.winapi_util."0.1.1".winapi}".default = true; }
+    ];
+    winapi_util."0.1.1".default = (f.winapi_util."0.1.1".default or true);
+  }) [
+    (features_.winapi."${deps."winapi_util"."0.1.1"."winapi"}" deps)
+  ];
+
+
+  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";
+    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);
+  }) [];
+
+
+  crates.wincolor."1.0.1" = deps: { features?(features_.wincolor."1.0.1" deps {}) }: buildRustCrate {
+    crateName = "wincolor";
+    version = "1.0.1";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "0gr7v4krmjba7yq16071rfacz42qbapas7mxk5nphjwb042a8gvz";
+    dependencies = mapFeatures features ([
+      (crates."winapi"."${deps."wincolor"."1.0.1"."winapi"}" deps)
+      (crates."winapi_util"."${deps."wincolor"."1.0.1"."winapi_util"}" deps)
+    ]);
+  };
+  features_.wincolor."1.0.1" = deps: f: updateFeatures f (rec {
+    winapi = fold recursiveUpdate {} [
+      { "${deps.wincolor."1.0.1".winapi}"."minwindef" = true; }
+      { "${deps.wincolor."1.0.1".winapi}"."wincon" = true; }
+      { "${deps.wincolor."1.0.1".winapi}".default = true; }
+    ];
+    winapi_util."${deps.wincolor."1.0.1".winapi_util}".default = true;
+    wincolor."1.0.1".default = (f.wincolor."1.0.1".default or true);
+  }) [
+    (features_.winapi."${deps."wincolor"."1.0.1"."winapi"}" deps)
+    (features_.winapi_util."${deps."wincolor"."1.0.1"."winapi_util"}" deps)
+  ];
+
+
+}
diff --git a/pkgs/development/compilers/dotnet/sdk/default.nix b/pkgs/development/compilers/dotnet/sdk/default.nix
index eb7a1e737193..9970fd9b33d3 100644
--- a/pkgs/development/compilers/dotnet/sdk/default.nix
+++ b/pkgs/development/compilers/dotnet/sdk/default.nix
@@ -12,14 +12,14 @@ let
   rpath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc libunwind libuuid icu openssl zlib curl ];
 in
   stdenv.mkDerivation rec {
-    version = "2.1.402";
-    netCoreVersion = "2.1.4";
+    version = "2.1.403";
+    netCoreVersion = "2.1.5";
     name = "dotnet-sdk-${version}";
 
     src = fetchurl {
       url = "https://dotnetcli.azureedge.net/dotnet/Sdk/${version}/dotnet-sdk-${version}-linux-x64.tar.gz";
       # use sha512 from the download page
-      sha512 = "dd7f15a8202ffa2a435b7289865af4483bb0f642ffcf98a1eb10464cb9c51dd1d771efbb6120f129fe9666f62707ba0b7c476cf1fd3536d3a29329f07456de48";
+      sha512 = "903a8a633aea9211ba36232a2decb3b34a59bb62bc145a0e7a90ca46dd37bb6c2da02bcbe2c50c17e08cdff8e48605c0f990786faf1f06be1ea4a4d373beb8a9";
     };
 
     unpackPhase = ''
diff --git a/pkgs/development/compilers/ponyc/default.nix b/pkgs/development/compilers/ponyc/default.nix
index 09677a47ab2a..d90ddcaacfb0 100644
--- a/pkgs/development/compilers/ponyc/default.nix
+++ b/pkgs/development/compilers/ponyc/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation ( rec {
   name = "ponyc-${version}";
-  version = "0.24.4";
+  version = "0.25.0";
 
   src = fetchFromGitHub {
     owner = "ponylang";
     repo = "ponyc";
     rev = version;
-    sha256 = "1p75h1ldi9iskqkwic5h426cwi45042p3agh9sdl6gld9s7lc9a6";
+    sha256 = "0ghmjp03q7k58yzfkvnl05xc2i2gmgnzpj3hs6g7ls4ny8n3i6hv";
   };
 
   buildInputs = [ llvm makeWrapper which ];
diff --git a/pkgs/development/interpreters/bats/default.nix b/pkgs/development/interpreters/bats/default.nix
index 081f1a547d69..85794b09ae0b 100644
--- a/pkgs/development/interpreters/bats/default.nix
+++ b/pkgs/development/interpreters/bats/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip }:
+{ stdenv, fetchzip, gnugrep }:
 
 stdenv.mkDerivation rec {
   name = "bats-${version}";
@@ -9,7 +9,10 @@ stdenv.mkDerivation rec {
     sha256 = "1kkh0j2alql3xiyhw9wsvcc3xclv52g0ivgyk8h85q9fn3qdqakz";
   };
 
-  patchPhase = "patchShebangs ./install.sh";
+  patchPhase = ''
+    patchShebangs ./install.sh
+    substituteInPlace ./libexec/bats-core/bats-format-tap-stream --replace grep ${gnugrep}/bin/grep
+  '';
 
   installPhase = "./install.sh $out";
 
diff --git a/pkgs/development/interpreters/spidermonkey/52.nix b/pkgs/development/interpreters/spidermonkey/52.nix
index 7c6844fdec09..ea96e5ed334a 100644
--- a/pkgs/development/interpreters/spidermonkey/52.nix
+++ b/pkgs/development/interpreters/spidermonkey/52.nix
@@ -10,6 +10,9 @@ in stdenv.mkDerivation rec {
     sha256 = "1mlx34fgh1kaqamrkl5isf0npch3mm6s4lz3jsjb7hakiijhj7f0";
   };
 
+  outputs = [ "out" "dev" ];
+  setOutputFlags = false; # Configure script only understands --includedir
+
   buildInputs = [ readline icu zlib nspr ];
   nativeBuildInputs = [ autoconf213 pkgconfig perl which python2 zip ];
 
@@ -32,6 +35,7 @@ in stdenv.mkDerivation rec {
     export CXXFLAGS="-fpermissive"
     export LIBXUL_DIST=$out
     export PYTHON="${python2.interpreter}"
+    configureFlagsArray+=("--includedir=$dev/include")
 
     cd js/src
 
@@ -49,6 +53,12 @@ in stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  postInstall = ''
+    moveToOutput bin/js52-config "$dev"
+    # Nuke a static lib.
+    rm $out/lib/libjs_static.ajs
+  '';
+
   meta = with stdenv.lib; {
     description = "Mozilla's JavaScript engine written in C/C++";
     homepage = https://developer.mozilla.org/en/SpiderMonkey;
diff --git a/pkgs/development/libraries/arb/default.nix b/pkgs/development/libraries/arb/default.nix
index bca519c76283..f94e0a3ee780 100644
--- a/pkgs/development/libraries/arb/default.nix
+++ b/pkgs/development/libraries/arb/default.nix
@@ -2,12 +2,12 @@
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
   pname = "arb";
-  version = "2.14.0";
+  version = "2.15.1";
   src = fetchFromGitHub {
     owner = "fredrik-johansson";
     repo = "${pname}";
     rev = "${version}";
-    sha256 = "1ndxg7h4xvccjgp5l9z2f8b66dsff6fhf86bn5n7f75a1ksd7554";
+    sha256 = "148mn31xy4wgja2cainn2yaw1bjrppf1dxw2ngnvp7x5j7fms1am";
   };
   buildInputs = [mpir gmp mpfr flint];
   configureFlags = [
diff --git a/pkgs/development/libraries/gtest/default.nix b/pkgs/development/libraries/gtest/default.nix
index 769cc1c768c9..cf4069871d1d 100644
--- a/pkgs/development/libraries/gtest/default.nix
+++ b/pkgs/development/libraries/gtest/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, cmake, fetchFromGitHub }:
+{ stdenv, cmake, ninja, fetchFromGitHub }:
 stdenv.mkDerivation rec {
   name = "gtest-${version}";
   version = "1.8.1";
@@ -10,24 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "0270msj6n7mggh4xqqjp54kswbl7mkcc8px1p5dqdpmw5ngh9fzk";
   };
 
-  buildInputs = [ cmake ];
-
-  configurePhase = ''
-    mkdir build
-    cd build
-    cmake ../ -DCMAKE_INSTALL_PREFIX=$out
-  '';
-
-  installPhase = ''
-    mkdir -p $out/lib
-    cp -v googlemock/gtest/libgtest.a googlemock/gtest/libgtest_main.a googlemock/libgmock.a googlemock/libgmock_main.a $out/lib
-    ln -s $out/lib/libgmock.a $out/lib/libgoogletest.a
-    mkdir -p $out/include
-    cp -v -r ../googlemock/include/gmock $out/include
-    cp -v -r ../googletest/include/gtest $out/include
-    mkdir -p $out/src
-    cp -v -r ../googlemock/src/* ../googletest/src/* $out/src
-  '';
+  nativeBuildInputs = [ cmake ninja ];
 
   meta = with stdenv.lib; {
     description = "Google's framework for writing C++ tests";
diff --git a/pkgs/development/libraries/libcouchbase/default.nix b/pkgs/development/libraries/libcouchbase/default.nix
index e3d5c7d6424e..516702e2afef 100644
--- a/pkgs/development/libraries/libcouchbase/default.nix
+++ b/pkgs/development/libraries/libcouchbase/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "libcouchbase-${version}";
-  version = "2.9.5";
+  version = "2.10.0";
 
   src = fetchFromGitHub {
     owner = "couchbase";
     repo = "libcouchbase";
     rev = version;
-    sha256 = "18l3579b47l8d6nhv0xls8pybkqdmdkw8jg4inalnx3g7ydqfn00";
+    sha256 = "08bvnd0m18qs5akbblf80l54khm1523fdiiajp7fj88vrs86nbi2";
   };
 
   cmakeFlags = "-DLCB_NO_MOCK=ON";
diff --git a/pkgs/development/libraries/libqmatrixclient/default.nix b/pkgs/development/libraries/libqmatrixclient/default.nix
index 8cca5333d084..2f20150ad164 100644
--- a/pkgs/development/libraries/libqmatrixclient/default.nix
+++ b/pkgs/development/libraries/libqmatrixclient/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   name = "libqmatrixclient-${version}";
-  version = "0.3.0.2";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner  = "QMatrixClient";
     repo   = "libqmatrixclient";
     rev    = "v${version}";
-    sha256 = "03pxmr4wa818fgqddkr2fkwz6pda538x3ic9yq7c40x98zqf55w5";
+    sha256 = "1llzqjagvp91kcg26q5c4qw9aaz7wna3rh6k06rc3baivrjqf3cn";
   };
 
   buildInputs = [ qtbase ];
diff --git a/pkgs/development/libraries/libressl/default.nix b/pkgs/development/libraries/libressl/default.nix
index 1ac4a7185122..154e84cfd0a2 100644
--- a/pkgs/development/libraries/libressl/default.nix
+++ b/pkgs/development/libraries/libressl/default.nix
@@ -46,7 +46,7 @@ in {
   };
 
   libressl_2_8 = generic {
-    version = "2.8.1";
-    sha256 = "0hnga8j7svdbwcy01mh5pxssk7rxq4g5fc5vxrzhid0x1w2zfjrk";
+    version = "2.8.2";
+    sha256 = "1mag4lf3lmg2fh2yzkh663l69h4vjriadwl0zixmb50jkzjk3jxq";
   };
 }
diff --git a/pkgs/development/libraries/libsolv/default.nix b/pkgs/development/libraries/libsolv/default.nix
index ad8120d3591a..51b6cbd4ed52 100644
--- a/pkgs/development/libraries/libsolv/default.nix
+++ b/pkgs/development/libraries/libsolv/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, cmake, ninja, zlib, expat, rpm, db }:
 
 stdenv.mkDerivation rec {
-  rev  = "0.6.35";
+  rev  = "0.7.0";
   name = "libsolv-${rev}";
 
   src = fetchFromGitHub {
     inherit rev;
     owner  = "openSUSE";
     repo   = "libsolv";
-    sha256 = "0jx1bmwwhjwfidwa0hrarwpcrf4ic068kapd4vb9m5y7xd4l55nq";
+    sha256 = "02vz1yp516nh4vv0jdckll37mc373ddd363ip005xfbrbb2jr1xh";
   };
 
   cmakeFlags = [
diff --git a/pkgs/development/libraries/libversion/default.nix b/pkgs/development/libraries/libversion/default.nix
index 6e7005195bf0..6ca7b11321ba 100644
--- a/pkgs/development/libraries/libversion/default.nix
+++ b/pkgs/development/libraries/libversion/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, cmake }:
 
 let
-  version = "2.6.0";
+  version = "2.7.0";
 in
 stdenv.mkDerivation {
   name = "libversion-${version}";
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     owner = "repology";
     repo = "libversion";
     rev = version;
-    sha256 = "0krhfycva3l4rhac5kx6x1a6fad594i9i77vy52rwn37j62bm601";
+    sha256 = "0brk2mbazc7yz0h4zsvbybbaymf497dgxnc74qihnvbi4z4rlqpj";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/matio/default.nix b/pkgs/development/libraries/matio/default.nix
index 573215227369..f28ff1b0a21f 100644
--- a/pkgs/development/libraries/matio/default.nix
+++ b/pkgs/development/libraries/matio/default.nix
@@ -1,9 +1,9 @@
 { stdenv, fetchurl }:
 stdenv.mkDerivation rec {
-  name = "matio-1.5.12";
+  name = "matio-1.5.13";
   src = fetchurl {
     url = "mirror://sourceforge/matio/${name}.tar.gz";
-    sha256 = "1afqjhc1wbm7g1vry3w30c7dbrxg6n4i482ybgx6l1b5wj0f75c6";
+    sha256 = "1jz5760jn1cifr479znhmzksi8fp07j99jd8xdnxpjd79gsv5bgy";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/nanomsg/default.nix b/pkgs/development/libraries/nanomsg/default.nix
index f50b64fca3ed..8f72b333aa48 100644
--- a/pkgs/development/libraries/nanomsg/default.nix
+++ b/pkgs/development/libraries/nanomsg/default.nix
@@ -1,14 +1,14 @@
 { stdenv, cmake, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
-  version = "1.1.4";
+  version = "1.1.5";
   name = "nanomsg-${version}";
 
   src = fetchFromGitHub {
     owner = "nanomsg";
     repo = "nanomsg";
     rev = version;
-    sha256 = "11mxbhkxkzqwdmpl79mfiiqby7zawgkalips7zr0bbdfyhq7jyrl";
+    sha256 = "01ddfzjlkf2dgijrmm3j3j8irccsnbgfvjcnwslsfaxnrmrq5s64";
   };
 
   buildInputs = [ cmake ];
diff --git a/pkgs/development/libraries/nix-plugins/default.nix b/pkgs/development/libraries/nix-plugins/default.nix
index d3a4b21b4b61..cc5a115ed71e 100644
--- a/pkgs/development/libraries/nix-plugins/default.nix
+++ b/pkgs/development/libraries/nix-plugins/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, nix, cmake, pkgconfig, boost }:
-let version = "5.0.0"; in
+let version = "6.0.0"; in
 stdenv.mkDerivation {
   name = "nix-plugins-${version}";
 
@@ -7,7 +7,7 @@ stdenv.mkDerivation {
     owner = "shlevy";
     repo = "nix-plugins";
     rev = version;
-    sha256 = "0231j92504vx0f4wax9hwjdni1j4z0g8bx9wbakg6rbghl4svmdv";
+    sha256 = "08kxdci0sijj1hfkn3dbr7nbpb9xck0xr3xa3a0j116n4kvwb6qv";
   };
 
   nativeBuildInputs = [ cmake pkgconfig ];
diff --git a/pkgs/development/libraries/pupnp/default.nix b/pkgs/development/libraries/pupnp/default.nix
index 018a57ad0571..b5a01698e5e9 100644
--- a/pkgs/development/libraries/pupnp/default.nix
+++ b/pkgs/development/libraries/pupnp/default.nix
@@ -2,14 +2,15 @@
 
 stdenv.mkDerivation rec {
   name = "libupnp-${version}";
-  version = "1.8.3";
+  version = "1.8.4";
 
   src = fetchFromGitHub {
     owner = "mrjimenez";
     repo = "pupnp";
     rev = "release-${version}";
-    sha256 = "1w0kfq1pg3y2wl6gwkm1w872g0qz29w1z9wj08xxmwnk5mkpvsrl";
+    sha256 = "1daml02z4rs9cxls95p2v24jvwcsp43a0gqv06s84ay5yn6r47wx";
   };
+  outputs = [ "dev" "out" ];
 
   nativeBuildInputs = [ autoreconfHook ];
 
diff --git a/pkgs/development/libraries/sfml/default.nix b/pkgs/development/libraries/sfml/default.nix
index 03a801a32405..37ef0ce75271 100644
--- a/pkgs/development/libraries/sfml/default.nix
+++ b/pkgs/development/libraries/sfml/default.nix
@@ -1,26 +1,31 @@
-{ stdenv, fetchurl, cmake, libX11, freetype, libjpeg, openal, flac, libvorbis
+{ stdenv, fetchzip, cmake, libX11, freetype, libjpeg, openal, flac, libvorbis
 , glew, libXrandr, libXrender, udev, xcbutilimage
 , IOKit, Foundation, AppKit, OpenAL
 }:
 
 let
-  version = "2.5.0";
+  version = "2.5.1";
 in
 
 stdenv.mkDerivation rec {
   name = "sfml-${version}";
-  src = fetchurl {
+
+  src = fetchzip {
     url = "https://github.com/SFML/SFML/archive/${version}.tar.gz";
-    sha256 = "1x3yvhdrln5b6h4g5r4mds76gq8zsxw6icxqpwqkmxsqcq5yviab";
+    sha256 = "0abr8ri2ssfy9ylpgjrr43m6rhrjy03wbj9bn509zqymifvq5pay";
   };
-  buildInputs = [ cmake libX11 freetype libjpeg openal flac libvorbis glew
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libX11 freetype libjpeg openal flac libvorbis glew
                   libXrandr libXrender xcbutilimage
                 ] ++ stdenv.lib.optional stdenv.isLinux udev
                   ++ stdenv.lib.optionals stdenv.isDarwin [ IOKit Foundation AppKit OpenAL ];
+
   cmakeFlags = [ "-DSFML_INSTALL_PKGCONFIG_FILES=yes"
                  "-DSFML_MISC_INSTALL_PREFIX=share/SFML"
                  "-DSFML_BUILD_FRAMEWORKS=no"
                  "-DSFML_USE_SYSTEM_DEPS=yes" ];
+
   meta = with stdenv.lib; {
     homepage = http://www.sfml-dev.org/;
     description = "Simple and fast multimedia library";
diff --git a/pkgs/development/libraries/wxwidgets/3.0/mac.nix b/pkgs/development/libraries/wxwidgets/3.0/mac.nix
index 9c307b2d15ae..040273e28b99 100644
--- a/pkgs/development/libraries/wxwidgets/3.0/mac.nix
+++ b/pkgs/development/libraries/wxwidgets/3.0/mac.nix
@@ -1,60 +1,26 @@
-{ stdenv, fetchurl, fetchpatch, expat, libiconv, libjpeg, libpng, libtiff, zlib
+{ stdenv, fetchzip, fetchpatch, expat, libiconv, libjpeg, libpng, libtiff, zlib
 # darwin only attributes
-, derez, rez, setfile
+, cf-private, derez, rez, setfile
 , AGL, Cocoa, Kernel
 }:
 
-with stdenv.lib;
-
 stdenv.mkDerivation rec {
-  version = "3.0.2";
+  version = "3.0.4";
   name = "wxmac-${version}";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/wxwindows/wxWidgets-${version}.tar.bz2";
-    sha256 = "346879dc554f3ab8d6da2704f651ecb504a22e9d31c17ef5449b129ed711585d";
+  src = fetchzip {
+    url = "https://github.com/wxWidgets/wxWidgets/archive/v${version}.tar.gz";
+    sha256 = "19mqglghjjqjgz4rbybn3qdgn2cz9xc511nq1pvvli9wx2k8syl1";
   };
 
-  patches =
-    [ # Use std::abs() from <cmath> instead of abs() from <math.h> to avoid problems
-      # with abiguous overloads for clang-3.8 and gcc6.
-      (fetchpatch {
-        name = "patch-stc-abs.diff";
-        url = https://github.com/wxWidgets/wxWidgets/commit/73e9e18ea09ffffcaac50237def0d9728a213c02.patch;
-        sha256 = "0w5whmfzm8waw62jmippming0zffa9064m5b3aw5nixph21rlcvq";
-      })
-
-      # Various fixes related to Yosemite. Revisit in next stable release.
-      # Please keep an eye on http://trac.wxwidgets.org/ticket/16329 as well
-      # Theoretically the above linked patch should still be needed, but it isn't.
-      # Try to find out why.
-      (fetchpatch {
-        name = "patch-yosemite.diff";
-        url = https://raw.githubusercontent.com/Homebrew/formula-patches/bbf4995/wxmac/patch-yosemite.diff;
-        sha256 = "0ss66z2a79v976mvlrskyj1zmkyaz8hbwm98p29bscfvcx5845jb";
-      })
-
-      # Remove uncenessary <QuickTime/QuickTime.h> includes
-      # http://trac.wxwidgets.org/changeset/f6a2d1caef5c6d412c84aa900cb0d3990b350938/git-wxWidgets
-      (fetchpatch {
-        name = "patch-quicktime-removal.diff";
-        url = https://raw.githubusercontent.com/Homebrew/formula-patches/bbf4995/wxmac/patch-quicktime-removal.diff;
-        sha256 = "0mzvdk8r70p9s1wj7qzdsqmdrlxlf2dalh9gqs8xjkqq2666yp0y";
-      })
-
-      # Patch for wxOSXPrintData, custom paper not applied
-      # http://trac.wxwidgets.org/ticket/16959
-      (fetchpatch {
-        name = "wxPaperCustomPatch.patch";
-        url = http://trac.wxwidgets.org/raw-attachment/ticket/16959/wxPaperCustomPatch.patch;
-        sha256 = "0xgscv86f8dhggn9n8bhlq9wlj3ydsicgy9v35sraxyma18cbjvl";
-      })
-    ];
-
   buildInputs = [
     expat libiconv libjpeg libpng libtiff zlib
     derez rez setfile
     Cocoa Kernel
+
+    # Needed for CFURLGetFSRef, etc. which have deen deprecated
+    # since 10.9 and are not part of swift-corelibs CoreFoundation.
+    cf-private
   ];
 
   propagatedBuildInputs = [ AGL ];
@@ -98,7 +64,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with stdenv.lib; {
     platforms = platforms.darwin;
     license = licenses.wxWindows;
     maintainers = [ maintainers.lnl7 ];
diff --git a/pkgs/development/misc/loc/default.nix b/pkgs/development/misc/loc/default.nix
index b43deeceb867..4cb612523dc5 100644
--- a/pkgs/development/misc/loc/default.nix
+++ b/pkgs/development/misc/loc/default.nix
@@ -15,12 +15,12 @@ buildRustPackage rec {
 
   cargoSha256 = "0y2ww48vh667kkyg9pyjwcbh7fxi41bjnkhwp749crjqn2abimrk";
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = https://github.com/cgag/loc;
     description = "Count lines of code quickly";
     license = stdenv.lib.licenses.mit;
     maintainers = with stdenv.lib.maintainers; [ ];
-    platforms = with stdenv.lib.platforms; linux;
+    platforms = platforms.unix;
   };
 }
 
diff --git a/pkgs/development/python-modules/aiohttp/default.nix b/pkgs/development/python-modules/aiohttp/default.nix
index ec76d840a56b..14fca8dfe82f 100644
--- a/pkgs/development/python-modules/aiohttp/default.nix
+++ b/pkgs/development/python-modules/aiohttp/default.nix
@@ -18,11 +18,11 @@
 
 buildPythonPackage rec {
   pname = "aiohttp";
-  version = "3.3.2";
+  version = "3.4.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f20deec7a3fbaec7b5eb7ad99878427ad2ee4cc16a46732b705e8121cbb3cc12";
+    sha256 = "1ykm6kdjkrg556j0zd7dx2l1rsrbh0d9g27ivr6dmaahz9pyrbsi";
   };
 
   disabled = pythonOlder "3.5";
diff --git a/pkgs/development/python-modules/aniso8601/default.nix b/pkgs/development/python-modules/aniso8601/default.nix
index b8ee673e66bb..163e2c9b2099 100644
--- a/pkgs/development/python-modules/aniso8601/default.nix
+++ b/pkgs/development/python-modules/aniso8601/default.nix
@@ -3,7 +3,7 @@
 
 buildPythonPackage rec {
   pname = "aniso8601";
-  version = "3.0.2";
+  version = "4.0.1";
 
   meta = with stdenv.lib; {
     description = "Parses ISO 8601 strings.";
@@ -15,6 +15,6 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "7849749cf00ae0680ad2bdfe4419c7a662bef19c03691a19e008c8b9a5267802";
+    sha256 = "15cwnadw2xdczdi13k9grrgqq67hxgys4l155dqsl2zh3glhsmp7";
   };
 }
diff --git a/pkgs/development/python-modules/async_timeout/default.nix b/pkgs/development/python-modules/async_timeout/default.nix
index ee15be954186..aabf30183d56 100644
--- a/pkgs/development/python-modules/async_timeout/default.nix
+++ b/pkgs/development/python-modules/async_timeout/default.nix
@@ -6,11 +6,11 @@
 
 buildPythonPackage rec {
   pname = "async-timeout";
-  version = "3.0.0";
+  version = "3.0.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b3c0ddc416736619bd4a95ca31de8da6920c3b9a140c64dbef2b2fa7bf521287";
+    sha256 = "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f";
   };
 
   # Circular dependency on aiohttp
diff --git a/pkgs/development/python-modules/autobahn/default.nix b/pkgs/development/python-modules/autobahn/default.nix
index 01922f98c402..4105a5d965f4 100644
--- a/pkgs/development/python-modules/autobahn/default.nix
+++ b/pkgs/development/python-modules/autobahn/default.nix
@@ -4,11 +4,11 @@
 }:
 buildPythonPackage rec {
   pname = "autobahn";
-  version = "18.8.2";
+  version = "18.9.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "448df2e241011ea2948799918930042d81e63d26b01912c472f5a9a37f42f319";
+    sha256 = "1mhj64rsnbi6rc0hskmllw280rvd99z045p6dq8h0mw60r7r52yr";
   };
 
   propagatedBuildInputs = [ six txaio twisted zope_interface cffi ] ++
diff --git a/pkgs/development/python-modules/djangorestframework/default.nix b/pkgs/development/python-modules/djangorestframework/default.nix
index 18372fc113aa..d75fc90eda77 100644
--- a/pkgs/development/python-modules/djangorestframework/default.nix
+++ b/pkgs/development/python-modules/djangorestframework/default.nix
@@ -1,11 +1,11 @@
 { stdenv, buildPythonPackage, fetchPypi, django }:
 buildPythonPackage rec {
-  version = "3.8.2";
+  version = "3.9.0";
   pname = "djangorestframework";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b6714c3e4b0f8d524f193c91ecf5f5450092c2145439ac2769711f7eba89a9d9";
+    sha256 = "0dk1r2qiifws4bb2pq8xk5dbsrhli0fi14iqg59v360mpfq6ay30";
   };
 
   # Test settings are missing
diff --git a/pkgs/development/python-modules/grip/default.nix b/pkgs/development/python-modules/grip/default.nix
index c11bcaa5baa5..d812d58b74ca 100644
--- a/pkgs/development/python-modules/grip/default.nix
+++ b/pkgs/development/python-modules/grip/default.nix
@@ -16,13 +16,13 @@
 
 buildPythonPackage rec {
   pname = "grip";
-  version = "4.4.0";
+  version = "4.5.2";
 
   src = fetchFromGitHub {
     owner = "joeyespo";
     repo = "grip";
     rev = "v${version}";
-    sha256 = "1768n3w40qg1njkzqjyl5gkva0h31k8h250821v69imj1zimymag";
+    sha256 = "0hphplnyi903jx7ghfxplg1qlj2kpcav1frr2js7p45pbh5ib9rm";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/phonenumbers/default.nix b/pkgs/development/python-modules/phonenumbers/default.nix
index 01c387928f59..915c48f069a6 100644
--- a/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/pkgs/development/python-modules/phonenumbers/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.9.15";
+  version = "8.9.16";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "8e9664ce0a838c81f4fb3e4d271c76859d26bde57242d64fe1632ab636f5319f";
+    sha256 = "1camfcbvbl0xljxmd4h8smcfg3ris19jjznjv5zcbrxr28fafq74";
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/praw/default.nix b/pkgs/development/python-modules/praw/default.nix
index 8f43cbfb4a8c..f8f3d5458a08 100644
--- a/pkgs/development/python-modules/praw/default.nix
+++ b/pkgs/development/python-modules/praw/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonPackage rec {
   pname = "praw";
-  version = "5.4.0";
+  version = "6.0.0";
 
   src = fetchFromGitHub {
     owner = "praw-dev";
     repo = "praw";
     rev = "v${version}";
-    sha256 = "13vbh2r952ai2m6sc79psfwaj5fc8cssdg2pqpizg2mwd0l1s6lb";
+    sha256 = "0y6nyz8vf98gl1qfmnznv3dbvlbzdl6mz99vk673nyfn3hbs451i";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/pyslurm/default.nix b/pkgs/development/python-modules/pyslurm/default.nix
index f004ab1054dd..7d592c7b450b 100644
--- a/pkgs/development/python-modules/pyslurm/default.nix
+++ b/pkgs/development/python-modules/pyslurm/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonPackage rec {
   pname = "pyslurm";
-  version = "20180908";
+  version = "18-08-3";
 
   src = fetchFromGitHub {
     repo = "pyslurm";
     owner = "PySlurm";
-    rev = "50dc113e99d82e70e84fc2e812333733708be4ed";
-    sha256 = "1j2i4rvhmk2ihhcvsjdlqlxqb5a05jg8k9bqkv3zrvdj71yn4z9k";
+    rev = version;
+    sha256 = "1rymx106xa99wd4n44s7jw0w41spg39y1ji4fgn01yk7wjfrdrwg";
   };
 
   buildInputs = [ cython slurm ];
diff --git a/pkgs/development/python-modules/txaio/default.nix b/pkgs/development/python-modules/txaio/default.nix
index 2bfdbae918a1..01d7b04b3dd6 100644
--- a/pkgs/development/python-modules/txaio/default.nix
+++ b/pkgs/development/python-modules/txaio/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "txaio";
-  version = "18.7.1";
+  version = "18.8.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "701de939e90bb80f7e085357081552437526752199def5541dddfc34c0b0593f";
+    sha256 = "1zmpdph6zddgrnkkcykh6qk5s46l7s5mzfqrh82m4b5iffn61qv7";
   };
 
   checkInputs = [ pytest mock ];
diff --git a/pkgs/development/tools/go-junit-report/default.nix b/pkgs/development/tools/go-junit-report/default.nix
new file mode 100644
index 000000000000..5e1a69a16929
--- /dev/null
+++ b/pkgs/development/tools/go-junit-report/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "go-junit-report-unstable-${version}";
+  version = "2018-06-14";
+  rev = "385fac0ced9acaae6dc5b39144194008ded00697";
+
+  goPackagePath = "github.com/jstemmer/go-junit-report";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "jstemmer";
+    repo = "go-junit-report";
+    sha256 = "109zs8wpdmc2ijc2khyqija8imay88ka6v50xvrpnnwnd3ywckxi";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Converts go test output to an xml report, suitable for applications that expect junit xml reports (e.g. Jenkins)";
+    homepage    = "https://${goPackagePath}";
+    maintainers = with maintainers; [ cryptix ];
+    license     = licenses.mit;
+    platforms   = platforms.all;
+  };
+}
diff --git a/pkgs/development/tools/jbake/default.nix b/pkgs/development/tools/jbake/default.nix
index c11e6f15ce96..1a421cc47ed6 100644
--- a/pkgs/development/tools/jbake/default.nix
+++ b/pkgs/development/tools/jbake/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchzip, makeWrapper, jre }:
 
 stdenv.mkDerivation rec {
-  version = "2.6.2";
+  version = "2.6.3";
   name = "jbake-${version}";
 
   src = fetchzip {
     url = "https://dl.bintray.com/jbake/binary/${name}-bin.zip";
-    sha256 = "1q96z0pvkqgb4194m52z89q56cbc0g3faflyfpy55z099f655rx9";
+    sha256 = "000ax5vzirrhiykk86fmy4hibhl3pab0gkh5y35hiwhzhw5rwzk8";
   };
 
   buildInputs = [ makeWrapper jre ];
diff --git a/pkgs/development/tools/kind/default.nix b/pkgs/development/tools/kind/default.nix
new file mode 100644
index 000000000000..25bc79340001
--- /dev/null
+++ b/pkgs/development/tools/kind/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+with stdenv.lib;
+
+buildGoPackage rec {
+  name = "kind-${version}";
+  version = "2018-10-03-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "2ae73f8ef93609991b0e47a67825390ceec95b3f";
+
+  src = fetchFromGitHub {
+    rev = rev;
+    owner = "kubernetes-sigs";
+    repo = "kind";
+    sha256 = "0bg3y35sc1c73z4rfq11x1jz340786q91ywm165ri7vx280ffjgh";
+  };
+
+  goPackagePath = "sigs.k8s.io/kind";
+  excludedPackages = "images/base/entrypoint";
+
+  meta = {
+    description = "Kubernetes IN Docker - local clusters for testing Kubernetes";
+    homepage = https://github.com/kubernetes-sigs/kind;
+    maintainers = with maintainers; [ offline ];
+    license = stdenv.lib.licenses.asl20;
+  };
+}
diff --git a/pkgs/development/tools/minizinc/default.nix b/pkgs/development/tools/minizinc/default.nix
index 8c210cb93601..59f60d4046ad 100644
--- a/pkgs/development/tools/minizinc/default.nix
+++ b/pkgs/development/tools/minizinc/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, cmake, flex, bison }:
 let
-  version = "2.2.0";
+  version = "2.2.1";
 in
 stdenv.mkDerivation {
   name = "minizinc-${version}";
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
     rev = "${version}";
     owner = "MiniZinc";
     repo = "libminizinc";
-    sha256 = "05is1r5y06jfqwvka90dn2ffxnvbgyswaxl00aqz6455hnggnxvm";
+    sha256 = "1i11lan7fqs3lg0s6jfr8sflzwn5nk1ln5j6afjrkrdb08291dr7";
   };
 
   # meta is all the information about the package..
diff --git a/pkgs/development/tools/pipenv/default.nix b/pkgs/development/tools/pipenv/default.nix
index 1d23f5426a55..7d4a58d0e394 100644
--- a/pkgs/development/tools/pipenv/default.nix
+++ b/pkgs/development/tools/pipenv/default.nix
@@ -2,11 +2,11 @@
 with python3Packages; buildPythonApplication rec {
     name = "${pname}-${version}";
     pname = "pipenv";
-    version = "2018.10.9";
+    version = "2018.10.13";
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "0b0safavjxq6malmv44acmgds21m2sp1wqa7gs0qz621v6gcgq4j";
+      sha256 = "0qwflq00rwk3pnldndb30f3avnbi4hvv6c8mm6l5xxnxy9dj71d7";
     };
 
     LC_ALL = "en_US.UTF-8";
diff --git a/pkgs/development/tools/rust/cbindgen/default.nix b/pkgs/development/tools/rust/cbindgen/default.nix
index fe80d0d9dd19..970ace229e20 100644
--- a/pkgs/development/tools/rust/cbindgen/default.nix
+++ b/pkgs/development/tools/rust/cbindgen/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, rustPlatform }:
+{ stdenv, fetchFromGitHub, rustPlatform, Security }:
 
 rustPlatform.buildRustPackage rec {
   name = "rust-cbindgen-${version}";
@@ -13,6 +13,8 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "1m1chwmfgj74xrmn4gb9yz5kx8c408a1hlqmpcq780kqj0k927i9";
 
+  buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
+
   meta = with stdenv.lib; {
     description = "A project for generating C bindings from Rust code";
     homepage = https://github.com/eqrion/cbindgen;
diff --git a/pkgs/development/tools/scalafix/default.nix b/pkgs/development/tools/scalafix/default.nix
new file mode 100644
index 000000000000..bd8a013fe2d0
--- /dev/null
+++ b/pkgs/development/tools/scalafix/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, jdk, jre, coursier, makeWrapper }:
+
+let
+  baseName = "scalafix";
+  version = "0.9.0";
+  deps = stdenv.mkDerivation {
+    name = "${baseName}-deps-${version}";
+    buildCommand = ''
+      export COURSIER_CACHE=$(pwd)
+      ${coursier}/bin/coursier fetch ch.epfl.scala:scalafix-cli_2.12.7:${version} > deps
+      mkdir -p $out/share/java
+      cp $(< deps) $out/share/java/
+    '';
+    outputHashMode = "recursive";
+    outputHashAlgo = "sha256";
+    outputHash     = "19j260prx7k010nxyvc1m9jj1ncxr73m2cym7if39360v5dc05c0";
+  };
+in
+stdenv.mkDerivation rec {
+  name = "${baseName}-${version}";
+
+  buildInputs = [ jdk makeWrapper deps ];
+
+  doCheck = true;
+
+  phases = [ "installPhase" "checkPhase" ];
+
+  installPhase = ''
+    makeWrapper ${jre}/bin/java $out/bin/${baseName} \
+      --add-flags "-cp $CLASSPATH scalafix.cli.Cli"
+  '';
+
+  checkPhase = ''
+    $out/bin/${baseName} --version | grep -q "${version}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Refactoring and linting tool for Scala";
+    homepage = https://scalacenter.github.io/scalafix/;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.tomahna ];
+  };
+}
diff --git a/pkgs/misc/emulators/higan/default.nix b/pkgs/misc/emulators/higan/default.nix
index 18db78d82ad5..45b2f79146c1 100644
--- a/pkgs/misc/emulators/higan/default.nix
+++ b/pkgs/misc/emulators/higan/default.nix
@@ -67,7 +67,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "An open-source, cycle-accurate Nintendo multi-system emulator";
     longDescription = ''
-      Higan (formerly bsnes) is a multi-system game console emulator.
+      higan (formerly bsnes) is a multi-system game console emulator.
       It currently supports the following systems:
         - Nintendo's Famicom, Super Famicom (with subsystems: 
           Super Game Boy, BS-X Satellaview, Sufami Turbo); 
diff --git a/pkgs/os-specific/darwin/cf-private/default.nix b/pkgs/os-specific/darwin/cf-private/default.nix
index 3fac20d23c78..dc1b0112a219 100644
--- a/pkgs/os-specific/darwin/cf-private/default.nix
+++ b/pkgs/os-specific/darwin/cf-private/default.nix
@@ -1,4 +1,4 @@
-{ CF, apple_sdk }:
+{ CF, apple_sdk, osx_private_sdk }:
 
 # cf-private is a bit weird, but boils down to CF with a weird setup-hook that
 # makes a build link against the system CoreFoundation rather than our pure one.
@@ -13,10 +13,10 @@
 # because of their magic "toll-free bridging" support, the symbols for those types
 # live in CoreFoundation with an ObjC runtime. And because that isn't public, we have
 # this hack in place to let people link properly anyway. Phew!
-# 
+#
 # This can be revisited if Apple ever decide to release the ObjC backend in a publicly
 # buildable form.
-# 
+#
 # This doesn't really need to rebuild CF, but it's cheap, and adding a setup hook to
 # an existing package was annoying. We need a buildEnv that knows how to add those
 CF.overrideAttrs (orig: {
@@ -38,22 +38,24 @@ CF.overrideAttrs (orig: {
   # this is watchman, who can almost certainly switch to the pure CF once the header
   # and functionality is merged in.
   installPhase = orig.installPhase + ''
+    # Copy or overwrite private headers, some of these might already
+    # exist in CF but the private versions have more information.
     basepath="Library/Frameworks/CoreFoundation.framework/Headers"
-    path="$basepath/CFFileDescriptor.h"
+    cp -Lfv --no-preserve mode ${osx_private_sdk}/include/CoreFoundationPrivateHeaders/* "$out/$basepath"
 
     # Append the include at top level or nobody will notice the header we're about to add
     sed -i '/CFNotificationCenter.h/a #include <CoreFoundation/CFFileDescriptor.h>' \
       "$out/$basepath/CoreFoundation.h"
 
-    cp ${apple_sdk.frameworks.CoreFoundation}/$path $out/$path
+    cp ${apple_sdk.frameworks.CoreFoundation}/$basepath/CFFileDescriptor.h $out/$basepath/CFFileDescriptor.h
   '' +
   # This one is less likely to go away, but I'll mention it anyway. The issue is at
   # https://bugs.swift.org/browse/SR-8744, and the main user I know of is qtbase
   ''
-    path="$basepath/CFURLEnumerator.h"    
+    path="$basepath/CFURLEnumerator.h"
     sed -i '/CFNotificationCenter.h/a #include <CoreFoundation/CFURLEnumerator.h>' \
       "$out/$basepath/CoreFoundation.h"
 
     cp ${apple_sdk.frameworks.CoreFoundation}/$path $out/$path
   '';
-})
\ No newline at end of file
+})
diff --git a/pkgs/os-specific/darwin/goku/default.nix b/pkgs/os-specific/darwin/goku/default.nix
new file mode 100644
index 000000000000..190c0ae22131
--- /dev/null
+++ b/pkgs/os-specific/darwin/goku/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "goku-${version}";
+  version = "0.1.11";
+
+  src = fetchurl {
+    url = "https://github.com/yqrashawn/GokuRakuJoudo/releases/download/v${version}/goku.tar.gz";
+    sha256 = "49562342be114c2656726c5c697131acd286965ab3903a1a1e157cc689e20b15";
+  };
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp goku $out/bin
+    cp gokuw $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Karabiner configurator";
+    homepage = https://github.com/yqrashawn/GokuRakuJoudo;
+    license = licenses.gpl3;
+    maintainers = [ maintainers.nikitavoloboev ];
+    platforms = platforms.darwin;
+  };
+}
diff --git a/pkgs/os-specific/linux/alsa-tools/default.nix b/pkgs/os-specific/linux/alsa-tools/default.nix
index 8faba250fb3e..14b10e6752bb 100644
--- a/pkgs/os-specific/linux/alsa-tools/default.nix
+++ b/pkgs/os-specific/linux/alsa-tools/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "alsa-tools-${version}";
-  version = "1.1.6";
+  version = "1.1.7";
 
   src = fetchurl {
     url = "mirror://alsa/tools/${name}.tar.bz2";
-    sha256 = "09rjb6hw1mn9y1jfdfj5djncgc2cr5wfps83k56rf6k4zg14v76n";
+    sha256 = "1xjfghr9s0j6n91kgs95cc4r6qrjsgc4yj2w0nir3xpnm0l36950";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/os-specific/linux/alsa-utils/default.nix b/pkgs/os-specific/linux/alsa-utils/default.nix
index 60e3b9750d71..c9cf12912670 100644
--- a/pkgs/os-specific/linux/alsa-utils/default.nix
+++ b/pkgs/os-specific/linux/alsa-utils/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "alsa-utils-${version}";
-  version = "1.1.6";
+  version = "1.1.7";
 
   src = fetchurl {
     url = "mirror://alsa/utils/${name}.tar.bz2";
-    sha256 = "0vnkyymgwj9rfdb11nvab30dnfrylmakdfildxl0y8mj836awp0m";
+    sha256 = "02jlw6a22j2rr7inggfgk2hzx3w0fjhvhs0dn1afpzdp9aspzchx";
   };
 
   patchPhase = ''
diff --git a/pkgs/os-specific/linux/open-isns/default.nix b/pkgs/os-specific/linux/open-isns/default.nix
index c8b404c6be7f..21d32af3ba83 100644
--- a/pkgs/os-specific/linux/open-isns/default.nix
+++ b/pkgs/os-specific/linux/open-isns/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "open-isns-${version}";
-  version = "0.98";
+  version = "0.99";
 
   src = fetchFromGitHub {
     owner = "gonzoleeman";
     repo = "open-isns";
     rev = "v${version}";
-    sha256 = "055gjwz5hxaj5jk23bf7dy9wbxk9m8cfgl1msbzjc60gr2mmcbdg";
+    sha256 = "0m294aiv80rkihacw5094093pc0kd5bkbxqgs6i32jsglxy33hvf";
   };
 
   propagatedBuildInputs = [ openssl ];
diff --git a/pkgs/servers/atlassian/jira.nix b/pkgs/servers/atlassian/jira.nix
index 46a78e1c5bd5..b9c5951b0b29 100644
--- a/pkgs/servers/atlassian/jira.nix
+++ b/pkgs/servers/atlassian/jira.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "atlassian-jira-${version}";
-  version = "7.12.1";
+  version = "7.12.3";
 
   src = fetchurl {
     url = "https://downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-${version}.tar.gz";
-    sha256 = "0qk72dq53kk40m8rz7i3r45cgrka2s1682b8d3kzdmmhclnzbaym";
+    sha256 = "0gna0pr8g78pahm4ci14742w40f0nwfn4hpm3iwbsiw2w6vziahv";
   };
 
   phases = [ "unpackPhase" "buildPhase" "installPhase" "fixupPhase" ];
diff --git a/pkgs/servers/computing/slurm/default.nix b/pkgs/servers/computing/slurm/default.nix
index 44ae3b894d54..053fadc8af58 100644
--- a/pkgs/servers/computing/slurm/default.nix
+++ b/pkgs/servers/computing/slurm/default.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   name = "slurm-${version}";
-  version = "18.08.1.1";
+  version = "18.08.3.1";
 
   # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
   # because the latter does not keep older releases.
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     repo = "slurm";
     # The release tags use - instead of .
     rev = "${builtins.replaceStrings ["."] ["-"] name}";
-    sha256 = "1yndxi11vj0di3yf6ky78zcnffk6d3676gf5y7jn7vwxxmzm4h5k";
+    sha256 = "1dz5hgnlsld8b8vrbckk3mj7cqrv662wsp0s9z4x8wafygz3zx07";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index f1ee1eda95da..6ad3facc0711 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "0.80.3";
+  version = "0.81.0";
   components = {
     "abode" = ps: with ps; [  ];
     "ads" = ps: with ps; [  ];
@@ -16,6 +16,7 @@
     "alarm_control_panel.concord232" = ps: with ps; [  ];
     "alarm_control_panel.demo" = ps: with ps; [  ];
     "alarm_control_panel.egardia" = ps: with ps; [  ];
+    "alarm_control_panel.elkm1" = ps: with ps; [  ];
     "alarm_control_panel.envisalink" = ps: with ps; [  ];
     "alarm_control_panel.homematicip_cloud" = ps: with ps; [  ];
     "alarm_control_panel.ialarm" = ps: with ps; [  ];
@@ -54,6 +55,7 @@
     "auth.mfa_setup_flow" = ps: with ps; [  ];
     "automation" = ps: with ps; [  ];
     "automation.event" = ps: with ps; [  ];
+    "automation.geo_location" = ps: with ps; [  ];
     "automation.homeassistant" = ps: with ps; [  ];
     "automation.litejet" = ps: with ps; [  ];
     "automation.mqtt" = ps: with ps; [ paho-mqtt ];
@@ -118,6 +120,7 @@
     "binary_sensor.netatmo" = ps: with ps; [  ];
     "binary_sensor.nx584" = ps: with ps; [  ];
     "binary_sensor.octoprint" = ps: with ps; [  ];
+    "binary_sensor.opentherm_gw" = ps: with ps; [  ];
     "binary_sensor.openuv" = ps: with ps; [  ];
     "binary_sensor.pilight" = ps: with ps; [  ];
     "binary_sensor.ping" = ps: with ps; [  ];
@@ -128,6 +131,7 @@
     "binary_sensor.random" = ps: with ps; [  ];
     "binary_sensor.raspihats" = ps: with ps; [  ];
     "binary_sensor.rest" = ps: with ps; [  ];
+    "binary_sensor.rflink" = ps: with ps; [  ];
     "binary_sensor.rfxtrx" = ps: with ps; [  ];
     "binary_sensor.ring" = ps: with ps; [  ];
     "binary_sensor.rpi_gpio" = ps: with ps; [  ];
@@ -209,8 +213,9 @@
     "climate" = ps: with ps; [  ];
     "climate.daikin" = ps: with ps; [  ];
     "climate.demo" = ps: with ps; [  ];
+    "climate.dyson" = ps: with ps; [  ];
     "climate.ecobee" = ps: with ps; [  ];
-    "climate.econet" = ps: with ps; [  ];
+    "climate.elkm1" = ps: with ps; [  ];
     "climate.ephember" = ps: with ps; [  ];
     "climate.eq3btsmart" = ps: with ps; [ construct ];
     "climate.evohome" = ps: with ps; [  ];
@@ -226,6 +231,7 @@
     "climate.knx" = ps: with ps; [  ];
     "climate.maxcube" = ps: with ps; [  ];
     "climate.melissa" = ps: with ps; [  ];
+    "climate.mill" = ps: with ps; [  ];
     "climate.modbus" = ps: with ps; [  ];
     "climate.mqtt" = ps: with ps; [ paho-mqtt ];
     "climate.mysensors" = ps: with ps; [  ];
@@ -295,7 +301,6 @@
     "cover.rflink" = ps: with ps; [  ];
     "cover.rfxtrx" = ps: with ps; [  ];
     "cover.rpi_gpio" = ps: with ps; [  ];
-    "cover.ryobi_gdo" = ps: with ps; [  ];
     "cover.scsgate" = ps: with ps; [  ];
     "cover.tahoma" = ps: with ps; [  ];
     "cover.tellduslive" = ps: with ps; [  ];
@@ -351,6 +356,7 @@
     "device_tracker.owntracks" = ps: with ps; [ libnacl paho-mqtt ];
     "device_tracker.owntracks_http" = ps: with ps; [ aiohttp-cors libnacl ];
     "device_tracker.ping" = ps: with ps; [  ];
+    "device_tracker.quantum_gateway" = ps: with ps; [  ];
     "device_tracker.ritassist" = ps: with ps; [  ];
     "device_tracker.sky_hub" = ps: with ps; [  ];
     "device_tracker.snmp" = ps: with ps; [ pysnmp ];
@@ -383,6 +389,7 @@
     "edp_redy" = ps: with ps; [  ];
     "egardia" = ps: with ps; [  ];
     "eight_sleep" = ps: with ps; [  ];
+    "elkm1" = ps: with ps; [  ];
     "emoncms_history" = ps: with ps; [  ];
     "emulated_hue" = ps: with ps; [ aiohttp-cors ];
     "emulated_hue.hue_api" = ps: with ps; [  ];
@@ -410,11 +417,12 @@
     "foursquare" = ps: with ps; [ aiohttp-cors ];
     "freedns" = ps: with ps; [  ];
     "fritzbox" = ps: with ps; [  ];
-    "frontend" = ps: with ps; [ aiohttp-cors ];
+    "frontend" = ps: with ps; [ aiohttp-cors ruamel_yaml ];
     "gc100" = ps: with ps; [  ];
     "geo_location" = ps: with ps; [  ];
     "geo_location.demo" = ps: with ps; [  ];
     "geo_location.geo_json_events" = ps: with ps; [  ];
+    "geo_location.nsw_rural_fire_service_feed" = ps: with ps; [  ];
     "goalfeed" = ps: with ps; [  ];
     "google" = ps: with ps; [ google_api_python_client httplib2 oauth2client ];
     "google_assistant" = ps: with ps; [ aiohttp-cors ];
@@ -506,6 +514,7 @@
     "knx" = ps: with ps; [  ];
     "konnected" = ps: with ps; [ aiohttp-cors netdisco ];
     "lametric" = ps: with ps; [  ];
+    "lifx" = ps: with ps; [  ];
     "light" = ps: with ps; [  ];
     "light.abode" = ps: with ps; [  ];
     "light.ads" = ps: with ps; [  ];
@@ -516,6 +525,7 @@
     "light.decora" = ps: with ps; [  ];
     "light.decora_wifi" = ps: with ps; [  ];
     "light.demo" = ps: with ps; [  ];
+    "light.elkm1" = ps: with ps; [  ];
     "light.enocean" = ps: with ps; [  ];
     "light.eufy" = ps: with ps; [  ];
     "light.flux_led" = ps: with ps; [  ];
@@ -593,6 +603,7 @@
     "lock.nello" = ps: with ps; [  ];
     "lock.nuki" = ps: with ps; [  ];
     "lock.sesame" = ps: with ps; [  ];
+    "lock.template" = ps: with ps; [  ];
     "lock.tesla" = ps: with ps; [  ];
     "lock.vera" = ps: with ps; [  ];
     "lock.verisure" = ps: with ps; [  ];
@@ -600,11 +611,11 @@
     "lock.wink" = ps: with ps; [  ];
     "lock.xiaomi_aqara" = ps: with ps; [  ];
     "lock.zwave" = ps: with ps; [  ];
-    "logbook" = ps: with ps; [ aiohttp-cors sqlalchemy ];
+    "logbook" = ps: with ps; [ aiohttp-cors ruamel_yaml sqlalchemy ];
     "logentries" = ps: with ps; [  ];
     "logger" = ps: with ps; [  ];
     "logi_circle" = ps: with ps; [  ];
-    "lovelace" = ps: with ps; [  ];
+    "lovelace" = ps: with ps; [ ruamel_yaml ];
     "lutron" = ps: with ps; [  ];
     "lutron_caseta" = ps: with ps; [  ];
     "mailbox" = ps: with ps; [ aiohttp-cors ];
@@ -644,6 +655,7 @@
     "media_player.itunes" = ps: with ps; [  ];
     "media_player.kodi" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
     "media_player.lg_netcast" = ps: with ps; [  ];
+    "media_player.lg_soundbar" = ps: with ps; [  ];
     "media_player.liveboxplaytv" = ps: with ps; [  ];
     "media_player.mediaroom" = ps: with ps; [  ];
     "media_player.monoprice" = ps: with ps; [  ];
@@ -727,7 +739,8 @@
     "notify.group" = ps: with ps; [  ];
     "notify.hangouts" = ps: with ps; [  ];
     "notify.hipchat" = ps: with ps; [  ];
-    "notify.html5" = ps: with ps; [ aiohttp-cors ];
+    "notify.homematic" = ps: with ps; [ pyhomematic ];
+    "notify.html5" = ps: with ps; [ aiohttp-cors ruamel_yaml ];
     "notify.instapush" = ps: with ps; [  ];
     "notify.ios" = ps: with ps; [ aiohttp-cors zeroconf ];
     "notify.joaoapps_join" = ps: with ps; [  ];
@@ -764,7 +777,7 @@
     "notify.twilio_sms" = ps: with ps; [ aiohttp-cors twilio ];
     "notify.twitter" = ps: with ps; [  ];
     "notify.webostv" = ps: with ps; [  ];
-    "notify.xmpp" = ps: with ps; [ pyasn1-modules pyasn1 sleekxmpp ];
+    "notify.xmpp" = ps: with ps; [ slixmpp ];
     "notify.yessssms" = ps: with ps; [  ];
     "nuheat" = ps: with ps; [  ];
     "nuimo_controller" = ps: with ps; [  ];
@@ -772,11 +785,12 @@
     "onboarding" = ps: with ps; [ aiohttp-cors ];
     "onboarding.const" = ps: with ps; [  ];
     "onboarding.views" = ps: with ps; [  ];
+    "opentherm_gw" = ps: with ps; [  ];
     "openuv" = ps: with ps; [  ];
     "openuv.config_flow" = ps: with ps; [  ];
     "openuv.const" = ps: with ps; [  ];
-    "panel_custom" = ps: with ps; [ aiohttp-cors ];
-    "panel_iframe" = ps: with ps; [ aiohttp-cors ];
+    "panel_custom" = ps: with ps; [ aiohttp-cors ruamel_yaml ];
+    "panel_iframe" = ps: with ps; [ aiohttp-cors ruamel_yaml ];
     "persistent_notification" = ps: with ps; [  ];
     "pilight" = ps: with ps; [  ];
     "plant" = ps: with ps; [  ];
@@ -806,6 +820,7 @@
     "rflink" = ps: with ps; [  ];
     "rfxtrx" = ps: with ps; [  ];
     "ring" = ps: with ps; [  ];
+    "route53" = ps: with ps; [ boto3 ];
     "rpi_gpio" = ps: with ps; [  ];
     "rpi_pfio" = ps: with ps; [  ];
     "rss_feed_template" = ps: with ps; [ aiohttp-cors ];
@@ -813,6 +828,7 @@
     "satel_integra" = ps: with ps; [  ];
     "scene" = ps: with ps; [  ];
     "scene.deconz" = ps: with ps; [  ];
+    "scene.elkm1" = ps: with ps; [  ];
     "scene.homeassistant" = ps: with ps; [  ];
     "scene.hunterdouglas_powerview" = ps: with ps; [  ];
     "scene.knx" = ps: with ps; [  ];
@@ -889,6 +905,7 @@
     "sensor.efergy" = ps: with ps; [  ];
     "sensor.eight_sleep" = ps: with ps; [  ];
     "sensor.eliqonline" = ps: with ps; [  ];
+    "sensor.elkm1" = ps: with ps; [  ];
     "sensor.emoncms" = ps: with ps; [  ];
     "sensor.enocean" = ps: with ps; [  ];
     "sensor.enphase_envoy" = ps: with ps; [  ];
@@ -992,6 +1009,7 @@
     "sensor.openexchangerates" = ps: with ps; [  ];
     "sensor.openhardwaremonitor" = ps: with ps; [  ];
     "sensor.opensky" = ps: with ps; [  ];
+    "sensor.opentherm_gw" = ps: with ps; [  ];
     "sensor.openuv" = ps: with ps; [  ];
     "sensor.openweathermap" = ps: with ps; [ pyowm ];
     "sensor.otp" = ps: with ps; [ pyotp ];
@@ -1017,6 +1035,7 @@
     "sensor.ring" = ps: with ps; [  ];
     "sensor.ripple" = ps: with ps; [  ];
     "sensor.rmvtransport" = ps: with ps; [  ];
+    "sensor.rtorrent" = ps: with ps; [  ];
     "sensor.sabnzbd" = ps: with ps; [  ];
     "sensor.scrape" = ps: with ps; [ beautifulsoup4 ];
     "sensor.season" = ps: with ps; [ ephem ];
@@ -1062,6 +1081,7 @@
     "sensor.temper" = ps: with ps; [  ];
     "sensor.template" = ps: with ps; [  ];
     "sensor.tesla" = ps: with ps; [  ];
+    "sensor.thermoworks_smoke" = ps: with ps; [  ];
     "sensor.thethingsnetwork" = ps: with ps; [  ];
     "sensor.thinkingcleaner" = ps: with ps; [  ];
     "sensor.tibber" = ps: with ps; [  ];
@@ -1071,6 +1091,7 @@
     "sensor.tradfri" = ps: with ps; [  ];
     "sensor.trafikverket_weatherstation" = ps: with ps; [  ];
     "sensor.transmission" = ps: with ps; [ transmissionrpc ];
+    "sensor.transport_nsw" = ps: with ps; [  ];
     "sensor.travisci" = ps: with ps; [  ];
     "sensor.twitch" = ps: with ps; [  ];
     "sensor.uber" = ps: with ps; [  ];
@@ -1116,10 +1137,16 @@
     "shell_command" = ps: with ps; [  ];
     "shiftr" = ps: with ps; [ paho-mqtt ];
     "shopping_list" = ps: with ps; [ aiohttp-cors ];
+    "simplisafe" = ps: with ps; [  ];
+    "simplisafe.config_flow" = ps: with ps; [  ];
+    "simplisafe.const" = ps: with ps; [  ];
     "sisyphus" = ps: with ps; [  ];
     "skybell" = ps: with ps; [  ];
     "sleepiq" = ps: with ps; [  ];
     "smappee" = ps: with ps; [  ];
+    "smhi" = ps: with ps; [  ];
+    "smhi.config_flow" = ps: with ps; [  ];
+    "smhi.const" = ps: with ps; [  ];
     "snips" = ps: with ps; [ paho-mqtt ];
     "sonos" = ps: with ps; [  ];
     "spaceapi" = ps: with ps; [ aiohttp-cors ];
@@ -1150,6 +1177,7 @@
     "switch.doorbird" = ps: with ps; [  ];
     "switch.edimax" = ps: with ps; [  ];
     "switch.edp_redy" = ps: with ps; [  ];
+    "switch.elkm1" = ps: with ps; [  ];
     "switch.enocean" = ps: with ps; [  ];
     "switch.eufy" = ps: with ps; [  ];
     "switch.flux" = ps: with ps; [  ];
@@ -1190,6 +1218,7 @@
     "switch.raincloud" = ps: with ps; [  ];
     "switch.rainmachine" = ps: with ps; [  ];
     "switch.raspihats" = ps: with ps; [  ];
+    "switch.recswitch" = ps: with ps; [  ];
     "switch.rest" = ps: with ps; [  ];
     "switch.rflink" = ps: with ps; [  ];
     "switch.rfxtrx" = ps: with ps; [  ];
@@ -1215,6 +1244,7 @@
     "switch.tradfri" = ps: with ps; [  ];
     "switch.transmission" = ps: with ps; [ transmissionrpc ];
     "switch.tuya" = ps: with ps; [  ];
+    "switch.unifi" = ps: with ps; [  ];
     "switch.upcloud" = ps: with ps; [  ];
     "switch.velbus" = ps: with ps; [  ];
     "switch.vera" = ps: with ps; [  ];
@@ -1262,6 +1292,10 @@
     "tts.yandextts" = ps: with ps; [  ];
     "tuya" = ps: with ps; [  ];
     "twilio" = ps: with ps; [ aiohttp-cors twilio ];
+    "unifi" = ps: with ps; [  ];
+    "unifi.const" = ps: with ps; [  ];
+    "unifi.controller" = ps: with ps; [  ];
+    "unifi.errors" = ps: with ps; [  ];
     "upcloud" = ps: with ps; [  ];
     "updater" = ps: with ps; [ distro ];
     "upnp" = ps: with ps; [ aiohttp-cors ];
@@ -1284,6 +1318,10 @@
     "volvooncall" = ps: with ps; [  ];
     "vultr" = ps: with ps; [ vultr ];
     "wake_on_lan" = ps: with ps; [ wakeonlan ];
+    "water_heater" = ps: with ps; [  ];
+    "water_heater.demo" = ps: with ps; [  ];
+    "water_heater.econet" = ps: with ps; [  ];
+    "water_heater.wink" = ps: with ps; [  ];
     "waterfurnace" = ps: with ps; [  ];
     "watson_iot" = ps: with ps; [  ];
     "weather" = ps: with ps; [  ];
@@ -1296,6 +1334,7 @@
     "weather.met" = ps: with ps; [  ];
     "weather.metoffice" = ps: with ps; [  ];
     "weather.openweathermap" = ps: with ps; [ pyowm ];
+    "weather.smhi" = ps: with ps; [  ];
     "weather.yweather" = ps: with ps; [ yahooweather ];
     "weather.zamg" = ps: with ps; [  ];
     "webhook" = ps: with ps; [ aiohttp-cors ];
@@ -1324,6 +1363,7 @@
     "zone.zone" = ps: with ps; [  ];
     "zoneminder" = ps: with ps; [  ];
     "zwave" = ps: with ps; [ pydispatcher python_openzwave ];
+    "zwave.config_flow" = ps: with ps; [  ];
     "zwave.const" = ps: with ps; [  ];
     "zwave.discovery_schemas" = ps: with ps; [  ];
     "zwave.node_entity" = ps: with ps; [  ];
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 8503b53033cf..48ad27c96199 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -22,6 +22,8 @@ let
       "51afec6ffa50a9da4cdef188971a802beb1ca8e8edb40fa429e5e529db3475fa")
     (mkOverride "astral" "1.6.1"
       "ab0c08f2467d35fcaeb7bad15274743d3ac1ad18b5391f64a0058a9cd192d37d")
+    (mkOverride "async-timeout" "3.0.1"
+      "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f")
     (mkOverride "attrs" "18.2.0"
       "10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69")
     (mkOverride "bcrypt" "3.1.4"
@@ -77,7 +79,7 @@ let
   extraBuildInputs = extraPackages py.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "0.80.3";
+  hassVersion = "0.81.0";
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "homeassistant";
@@ -92,7 +94,7 @@ in with py.pkgs; buildPythonApplication rec {
     owner = "home-assistant";
     repo = "home-assistant";
     rev = version;
-    sha256 = "0fjkw8kg0vsyrkcrx9jhqrh5nzxx5wphj6zglqgai2d635m8j2dg";
+    sha256 = "05cdx2pax7vx0v7arnciqrq38k2xyiv7iagxd3qs5m6gra72qlqw";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index 25a63ef71a92..7bf1e6871411 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-frontend";
-  version = "20181018.0";
+  version = "20181026.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "83f52421056acda8297f174a7c4e3c540109673c2f2c25720638d171c6bc2653";
+    sha256 = "fa877803ec7201a9b2129e96d6c19822cbcb28fa8ad5d422974bd3c872da1531";
   };
 
   propagatedBuildInputs = [ user-agents ];
diff --git a/pkgs/servers/http/lighttpd/default.nix b/pkgs/servers/http/lighttpd/default.nix
index 65679e4ac86e..9503fd14907c 100644
--- a/pkgs/servers/http/lighttpd/default.nix
+++ b/pkgs/servers/http/lighttpd/default.nix
@@ -13,11 +13,11 @@ assert enableWebDAV -> sqlite != null;
 assert enableWebDAV -> libuuid != null;
 
 stdenv.mkDerivation rec {
-  name = "lighttpd-1.4.50";
+  name = "lighttpd-1.4.51";
 
   src = fetchurl {
     url = "https://download.lighttpd.net/lighttpd/releases-1.4.x/${name}.tar.xz";
-    sha256 = "1sr9avcnld22a5wl5s8vgrz8r86mybggm9z8zwabqz48v0986dr9";
+    sha256 = "10lw9vvivpvf4aw7ajayb2yyq4lp4dq3gq9llszjbw6icnrgvy9a";
   };
 
   postPatch = ''
diff --git a/pkgs/servers/mail/nullmailer/default.nix b/pkgs/servers/mail/nullmailer/default.nix
index ab632372b464..4b753bdf0cdb 100644
--- a/pkgs/servers/mail/nullmailer/default.nix
+++ b/pkgs/servers/mail/nullmailer/default.nix
@@ -4,12 +4,12 @@ assert tls -> gnutls != null;
 
 stdenv.mkDerivation rec {
 
-  version = "2.1";
+  version = "2.2";
   name = "nullmailer-${version}";
 
   src = fetchurl {
     url = "https://untroubled.org/nullmailer/nullmailer-${version}.tar.gz";
-    sha256 = "0gykh0qc86rk0knfvp8ndqkryal3pvqdfdya94wvb6n1cc8p3ild";
+    sha256 = "0md8cf90fl2yf3zh9njjy42a673v4j4ygyq95xg7fzkygdigm1lq";
   };
 
   buildInputs = stdenv.lib.optional tls gnutls;
diff --git a/pkgs/servers/mail/rspamd/default.nix b/pkgs/servers/mail/rspamd/default.nix
index 02e14f3b5aca..b9dd07adde98 100644
--- a/pkgs/servers/mail/rspamd/default.nix
+++ b/pkgs/servers/mail/rspamd/default.nix
@@ -6,13 +6,13 @@ in
 
 stdenv.mkDerivation rec {
   name = "rspamd-${version}";
-  version = "1.8.0";
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     owner = "vstakhov";
     repo = "rspamd";
     rev = version;
-    sha256 = "02q1id9kv5d6w1b1ifa2m6qrnbsja787dn0ywwi0yrsaqwk63wk7";
+    sha256 = "1cgnychv8yz7a6mjg3b12nzs4gl0xqg9agl7m6faihnh7gqx4xld";
   };
 
   nativeBuildInputs = [ cmake pkgconfig perl ];
diff --git a/pkgs/servers/nosql/neo4j/default.nix b/pkgs/servers/nosql/neo4j/default.nix
index 9365612c14ed..0f20128678ce 100644
--- a/pkgs/servers/nosql/neo4j/default.nix
+++ b/pkgs/servers/nosql/neo4j/default.nix
@@ -4,11 +4,11 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name = "neo4j-${version}";
-  version = "3.4.8";
+  version = "3.4.9";
 
   src = fetchurl {
     url = "https://neo4j.com/artifact.php?name=neo4j-community-${version}-unix.tar.gz";
-    sha256 = "1mdxqfy5xzc6944lg87975i9bfpqqx28xl8h70m4wn79x0qgby2v";
+    sha256 = "0kg0dr42qi8cwg3i1hcgczd4psh97s54q5zd8z2wn1fqf4m2h597";
   };
 
   buildInputs = [ makeWrapper jre8 which gawk ];
diff --git a/pkgs/servers/sql/mysql/5.7.x.nix b/pkgs/servers/sql/mysql/5.7.x.nix
index 723b4e4d8d3e..b5912dd9ab94 100644
--- a/pkgs/servers/sql/mysql/5.7.x.nix
+++ b/pkgs/servers/sql/mysql/5.7.x.nix
@@ -7,11 +7,11 @@
 let
 self = stdenv.mkDerivation rec {
   name = "mysql-${version}";
-  version = "5.7.23";
+  version = "5.7.24";
 
   src = fetchurl {
     url = "mirror://mysql/MySQL-5.7/${name}.tar.gz";
-    sha256 = "0rbc3xsc11lq2dm0ip6gxa16c06hi74scb97x5cw7yhbabaz4c07";
+    sha256 = "11qz8cc4zyi7sxs66c5zlap6fd3vra1srwgzcxdzhz59qs90rgq5";
   };
 
   preConfigure = stdenv.lib.optional stdenv.isDarwin ''
diff --git a/pkgs/servers/sql/postgresql/pgroonga/default.nix b/pkgs/servers/sql/postgresql/pgroonga/default.nix
index 615a199ddb53..aca5eb1f4ee7 100644
--- a/pkgs/servers/sql/postgresql/pgroonga/default.nix
+++ b/pkgs/servers/sql/postgresql/pgroonga/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "pgroonga-${version}";
-  version = "2.1.3";
+  version = "2.1.6";
 
   src = fetchurl {
     url = "https://packages.groonga.org/source/pgroonga/${name}.tar.gz";
-    sha256 = "0qv82libl4rv6cq9klvzwx4g767mjl4jaap34sxbd3x0wvm364yd";
+    sha256 = "1scybfmmlz5p4xgkhfx7pzdiqj5cd60kvbk8m4xa6k3avz0p1sw9";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/servers/web-apps/matomo/default.nix b/pkgs/servers/web-apps/matomo/default.nix
index 1fb8f4b1221b..474a5b65b306 100644
--- a/pkgs/servers/web-apps/matomo/default.nix
+++ b/pkgs/servers/web-apps/matomo/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "matomo-${version}";
-  version = "3.6.0";
+  version = "3.6.1";
 
   src = fetchurl {
     # TODO: As soon as the tarballs are renamed as well on future releases, this should be enabled again
     # url = "https://builds.matomo.org/${name}.tar.gz";
     url = "https://builds.matomo.org/piwik-${version}.tar.gz";
-    sha256 = "1bkxa163s420w579ma7sbab1nm8c6ca6r6irn200j7p1r5zjklp8";
+    sha256 = "0hddj1gyyriwgsh1mghihck2i7rj6gvb1i0b2ripcdfjnxcs47hz";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/misc/snapper/default.nix b/pkgs/tools/misc/snapper/default.nix
index 563232dbe53d..80b66026848e 100644
--- a/pkgs/tools/misc/snapper/default.nix
+++ b/pkgs/tools/misc/snapper/default.nix
@@ -5,23 +5,15 @@
 
 stdenv.mkDerivation rec {
   name = "snapper-${version}";
-  version = "0.5.0";
+  version = "0.7.2";
 
   src = fetchFromGitHub {
     owner = "openSUSE";
     repo = "snapper";
     rev = "v${version}";
-    sha256 = "14hrv23film4iihyclcvc2r2dgxl8w3as50r81xjjc85iyp6yxkm";
+    sha256 = "1dm1kf4wrbcaaagxgbc8q0f5j9dq3bmp6ycl7zx8p70s4nv3xnbc";
   };
 
-  patches = [
-    # Fix build with new Boost
-    (fetchpatch {
-      url = "https://github.com/openSUSE/snapper/commit/2e3812d2c1d1f54861fb79f5c2b0197de96a00a3.patch";
-      sha256 = "0yrzss1v7lmcvkajmchz917yqsvlsdfz871szzw790v6pql1322s";
-    })
-  ];
-
   nativeBuildInputs = [
     autoreconfHook pkgconfig
     docbook_xsl libxslt docbook_xml_dtd_45
diff --git a/pkgs/tools/networking/urlwatch/default.nix b/pkgs/tools/networking/urlwatch/default.nix
index 850a33db58cf..c9de3f8ea574 100644
--- a/pkgs/tools/networking/urlwatch/default.nix
+++ b/pkgs/tools/networking/urlwatch/default.nix
@@ -2,13 +2,13 @@
 
 python3Packages.buildPythonApplication rec {
   name = "urlwatch-${version}";
-  version = "2.14";
+  version = "2.15";
 
   src = fetchFromGitHub {
     owner  = "thp";
     repo   = "urlwatch";
     rev    = version;
-    sha256 = "1m7qdh2lk5napncmfnk86dj4wqcahq8y24xnylxa4qlx2ivwkr6b";
+    sha256 = "1bkd0r5arzdvinpn1n23cw1gf7byxml95hl6qvvf6mnggb1ifcwg";
   };
 
   propagatedBuildInputs = with python3Packages; [
diff --git a/pkgs/tools/networking/wireguard-tools/default.nix b/pkgs/tools/networking/wireguard-tools/default.nix
index 33b62d1bb380..12e2deb74226 100644
--- a/pkgs/tools/networking/wireguard-tools/default.nix
+++ b/pkgs/tools/networking/wireguard-tools/default.nix
@@ -4,11 +4,11 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name = "wireguard-tools-${version}";
-  version = "0.0.20181007";
+  version = "0.0.20181018";
 
   src = fetchzip {
     url = "https://git.zx2c4.com/WireGuard/snapshot/WireGuard-${version}.tar.xz";
-    sha256 = "1nrhwnccs6sqq1qs7yhxqb989inrc9n2saibpqs6ga6gb0pvpac6";
+    sha256 = "0vrr0f89nrpwnyia6kqvrjkxwivrnvjnbavmx2nxlrb3sz23481y";
   };
 
   sourceRoot = "source/src/tools";
diff --git a/pkgs/tools/package-management/nix-review/default.nix b/pkgs/tools/package-management/nix-review/default.nix
index 126673ad9cc8..f761c69e0264 100644
--- a/pkgs/tools/package-management/nix-review/default.nix
+++ b/pkgs/tools/package-management/nix-review/default.nix
@@ -8,13 +8,13 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "nix-review";
-  version = "0.5.3";
+  version = "0.6.0";
 
   src = fetchFromGitHub {
     owner = "Mic92";
     repo = "nix-review";
     rev = version;
-    sha256 = "14ak0qfc5faamnp4fmrqmb1ikpv656nr830rja89yzc96s73337z";
+    sha256 = "1391fs33jlg1pnfxpfhvry4sb4p4hy8gjpipnnxm8483f12b49km";
   };
 
   makeWrapperArgs = [
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 975d36ddf190..030571d6a911 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -159,13 +159,13 @@ in rec {
   }; };
 
   nixUnstable = (lib.lowPrio (common rec {
-    name = "nix-2.1${suffix}";
-    suffix = "pre6377_954d1f4d";
+    name = "nix-2.2${suffix}";
+    suffix = "pre6520_18b4c53f";
     src = fetchFromGitHub {
       owner = "NixOS";
       repo = "nix";
-      rev = "954d1f4d0a35063ff431b258beebadf753cb9efe";
-      sha256 = "0wnljxljvcwmniydgxlsjqmbgghmljs75m6083y2nkjql7dnrm7g";
+      rev = "18b4c53f71dfc626f5f5ffa0282afd1b9faad6a4";
+      sha256 = "1hn7bjrf6x7024nald7nk1c9m8fyddkzhazl7pwf6ssmiv12apxh";
     };
     fromGit = true;
   })) // { perl-bindings = perl-bindings {
diff --git a/pkgs/tools/security/trufflehog/default.nix b/pkgs/tools/security/trufflehog/default.nix
index f805670a5d5e..9492f2bb6eac 100644
--- a/pkgs/tools/security/trufflehog/default.nix
+++ b/pkgs/tools/security/trufflehog/default.nix
@@ -12,11 +12,11 @@ let
 in
   pythonPackages.buildPythonApplication rec {
     pname = "truffleHog";
-    version = "2.0.91";
+    version = "2.0.97";
 
     src = pythonPackages.fetchPypi {
       inherit pname version;
-      sha256 = "0r4c9ihy6wjh5cwli7lb6cr2yfvxrh7r6cgznql1src5gzlnkymx";
+      sha256 = "034kpv1p4m90286slvc6d4mlrzaf0b5jbd4qaj87hj65wbpcpg8r";
     };
 
     # Relax overly restricted version constraint
diff --git a/pkgs/tools/system/hwinfo/default.nix b/pkgs/tools/system/hwinfo/default.nix
index 59ece285676c..4b2ad1f7ef96 100644
--- a/pkgs/tools/system/hwinfo/default.nix
+++ b/pkgs/tools/system/hwinfo/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "hwinfo-${version}";
-  version = "21.58";
+  version = "21.60";
 
   src = fetchFromGitHub {
     owner = "opensuse";
     repo = "hwinfo";
     rev = "${version}";
-    sha256 = "15gfgb711cs42nynmql2dyi8hs7f5wj3pcm75snnbz5arp8lx3j2";
+    sha256 = "1agjc14m1814x897wkx484qb8llr395xlzn428f86sxgshicwfy3";
   };
 
   patchPhase = ''
diff --git a/pkgs/tools/system/syslog-ng/default.nix b/pkgs/tools/system/syslog-ng/default.nix
index 5b8a9cd0aee5..1ce7e766a18e 100644
--- a/pkgs/tools/system/syslog-ng/default.nix
+++ b/pkgs/tools/system/syslog-ng/default.nix
@@ -11,11 +11,11 @@ in
 
 stdenv.mkDerivation rec {
   name = "${pname}-${version}";
-  version = "3.17.2";
+  version = "3.18.1";
 
   src = fetchurl {
     url = "https://github.com/balabit/${pname}/releases/download/${name}/${name}.tar.gz";
-    sha256 = "02y593ar1c4503ww7mhn0p5ajfl3q6769c6m311m6srwl5y1yq3k";
+    sha256 = "1y1v16vvyirh0qv4wzczqp8d3llh6dl63lz3irwib1qhh7x56dyn";
   };
 
   nativeBuildInputs = [ pkgconfig which ];
diff --git a/pkgs/tools/text/icdiff/default.nix b/pkgs/tools/text/icdiff/default.nix
index 949a9c89e9af..aec238cb4ccc 100644
--- a/pkgs/tools/text/icdiff/default.nix
+++ b/pkgs/tools/text/icdiff/default.nix
@@ -2,13 +2,13 @@
 
 pythonPackages.buildPythonApplication rec {
   name = "icdiff-${version}";
-  version = "1.9.3";
+  version = "1.9.4";
 
   src = fetchFromGitHub {
     owner = "jeffkaufman";
     repo = "icdiff";
     rev = "release-${version}";
-    sha256 = "10hv09sg7m8gzjf1v785kvim9ps81akzyx7ws6ypylyxc0l2fdcl";
+    sha256 = "1micpm7kq9swfscmp4mg37fnzgzpsg7704yi33c5sd6cmgbdabxm";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/text/miller/default.nix b/pkgs/tools/text/miller/default.nix
index a17c348c4cc1..3e0bee3b9b98 100644
--- a/pkgs/tools/text/miller/default.nix
+++ b/pkgs/tools/text/miller/default.nix
@@ -3,13 +3,13 @@
 stdenv.mkDerivation rec {
   name = "miller-${version}";
 
-  version = "5.3.0";
+  version = "5.4.0";
 
   src = fetchFromGitHub {
     owner = "johnkerl";
     repo = "miller";
     rev = "${version}";
-    sha256 = "0abw2n6mi4wbgwihcv3y2xccqx4sj0gdgwvdrg2jkcgraa78sw8v";
+    sha256 = "0158by642frh9x6rrgqxwmk4766wb36kp0rrjg5swdbs9w3is3xg";
   };
 
   nativeBuildInputs = [ autoreconfHook flex libtool ];
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 4a8c4f1334d9..444028d2db0d 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -250,6 +250,7 @@ mapAliases ({
   s6Networking = s6-networking; # added 2018-07-23
   s6LinuxUtils = s6-linux-utils; # added 2018-07-23
   s6PortableUtils = s6-portable-utils; # added 2018-07-23
+  sagemath = sage; # added 2018-10-27
   sam = deadpixi-sam; # added 2018-04-25
   samsungUnifiedLinuxDriver = samsung-unified-linux-driver; # added 2016-01-25
   saneBackends = sane-backends; # added 2016-01-02
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1fdeed352907..69e3c196ca57 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -732,6 +732,8 @@ with pkgs;
 
   oracle-instantclient = callPackage ../development/libraries/oracle-instantclient { };
 
+  goku = callPackage ../os-specific/darwin/goku { };
+
   kwakd = callPackage ../servers/kwakd { };
 
   kwm = callPackage ../os-specific/darwin/kwm { };
@@ -6935,6 +6937,8 @@ with pkgs;
 
   go-repo-root = callPackage ../development/tools/go-repo-root { };
 
+  go-junit-report = callPackage ../development/tools/go-junit-report { };
+
   gox = callPackage ../development/tools/gox { };
 
   gprolog = callPackage ../development/compilers/gprolog { };
@@ -7339,8 +7343,9 @@ with pkgs;
   inherit (rust) cargo rustc;
 
   buildRustCrate = callPackage ../build-support/rust/build-rust-crate { };
+  buildRustCrateHelpers = callPackage ../build-support/rust/build-rust-crate/helpers.nix { };
   buildRustCrateTests = recurseIntoAttrs (callPackage ../build-support/rust/build-rust-crate/test { }).tests;
-
+  cratesIO = callPackage ../build-support/rust/crates-io.nix { };
   cargo-vendor = callPackage ../build-support/rust/cargo-vendor { };
 
   cargo-web = callPackage ../development/tools/cargo-web {
@@ -7382,7 +7387,9 @@ with pkgs;
   rustracer = callPackage ../development/tools/rust/racer { };
   rustracerd = callPackage ../development/tools/rust/racerd { };
   rust-bindgen = callPackage ../development/tools/rust/bindgen { };
-  rust-cbindgen = callPackage ../development/tools/rust/cbindgen { };
+  rust-cbindgen = callPackage ../development/tools/rust/cbindgen {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
   rustup = callPackage ../development/tools/rust/rustup {
     inherit (darwin.apple_sdk.frameworks) Security;
   };
@@ -7395,6 +7402,7 @@ with pkgs;
   scala_2_12 = callPackage ../development/compilers/scala { jre = jre8; };
   scala = scala_2_12;
 
+  scalafix = callPackage ../development/tools/scalafix { };
   scalafmt = callPackage ../development/tools/scalafmt { };
 
   sdcc = callPackage ../development/compilers/sdcc {
@@ -8598,6 +8606,8 @@ with pkgs;
 
   kcov = callPackage ../development/tools/analysis/kcov { };
 
+  kind = callPackage ../development/tools/kind {  };
+
   kube-aws = callPackage ../development/tools/kube-aws { };
 
   kubectx = callPackage ../development/tools/kubectx { };
@@ -11493,7 +11503,9 @@ with pkgs;
   };
   libnghttp2 = nghttp2.lib;
 
-  nix-plugins = callPackage ../development/libraries/nix-plugins {};
+  nix-plugins = callPackage ../development/libraries/nix-plugins {
+    nix = nixUnstable;
+  };
 
   nlohmann_json = callPackage ../development/libraries/nlohmann_json { };
 
@@ -12712,6 +12724,7 @@ with pkgs;
   wxmac = callPackage ../development/libraries/wxwidgets/3.0/mac.nix {
     inherit (darwin.apple_sdk.frameworks) AGL Cocoa Kernel;
     inherit (darwin.stubs) setfile rez derez;
+    inherit (darwin) cf-private;
   };
 
   wxSVG = callPackage ../development/libraries/wxSVG {
diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix
index 3bf7c31b7008..78ca0d20908d 100644
--- a/pkgs/top-level/darwin-packages.nix
+++ b/pkgs/top-level/darwin-packages.nix
@@ -31,7 +31,9 @@ in
     libcxxabi = pkgs.libcxxabi;
   };
 
-  cf-private = callPackage ../os-specific/darwin/cf-private { inherit (darwin) CF apple_sdk; };
+  cf-private = callPackage ../os-specific/darwin/cf-private {
+    inherit (darwin) CF apple_sdk osx_private_sdk;
+  };
 
   DarwinTools = callPackage ../os-specific/darwin/DarwinTools { };
 
@@ -74,7 +76,7 @@ in
   CoreSymbolication = callPackage ../os-specific/darwin/CoreSymbolication { };
 
   CF = callPackage ../os-specific/darwin/swift-corelibs/corefoundation.nix { inherit (darwin) objc4 ICU; };
-  
+
   # As the name says, this is broken, but I don't want to lose it since it's a direction we want to go in
   # libdispatch-broken = callPackage ../os-specific/darwin/swift-corelibs/libdispatch.nix { inherit (darwin) apple_sdk_sierra xnu; };