summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/languages-frameworks/rust.md100
-rw-r--r--pkgs/build-support/rust/carnix.nix1651
-rw-r--r--pkgs/top-level/all-packages.nix6
3 files changed, 1012 insertions, 745 deletions
diff --git a/doc/languages-frameworks/rust.md b/doc/languages-frameworks/rust.md
index aa6a7d654108..d3a25e9d1358 100644
--- a/doc/languages-frameworks/rust.md
+++ b/doc/languages-frameworks/rust.md
@@ -79,19 +79,24 @@ an example for a minimal `hello` crate:
 Now, the file produced by the call to `carnix`, called `hello.nix`, looks like:
 
 ```
-with import <nixpkgs> {};
+# Generated by carnix 0.6.5: carnix -o hello.nix --src ./. Cargo.lock --standalone
+{ lib, buildPlatform, buildRustCrate, fetchgit }:
 let kernel = buildPlatform.parsed.kernel.name;
     # ... (content skipped)
-    hello_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-      crateName = "hello";
-      version = "0.1.0";
-      authors = [ "Authorname <user@example.com>" ];
-      src = ./.;
-      inherit dependencies buildDependencies features;
-    };
 in
 rec {
-  hello_0_1_0 = hello_0_1_0_ rec {};
+  hello = f: hello_0_1_0 { features = hello_0_1_0_features { hello_0_1_0 = f; }; };
+  hello_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "hello";
+    version = "0.1.0";
+    authors = [ "pe@pijul.org <pe@pijul.org>" ];
+    src = ./.;
+    inherit dependencies buildDependencies features;
+  };
+  hello_0_1_0 = { features?(hello_0_1_0_features {}) }: hello_0_1_0_ {};
+  hello_0_1_0_features = f: updateFeatures f (rec {
+        hello_0_1_0.default = (f.hello_0_1_0.default or true);
+    }) [ ];
 }
 ```
 
@@ -103,33 +108,44 @@ dependencies, for instance by adding a single line `libc="*"` to our
 following nix file:
 
 ```
-with import <nixpkgs> {};
+# Generated by carnix 0.6.5: carnix -o hello.nix --src ./. Cargo.lock --standalone
+{ lib, buildPlatform, buildRustCrate, fetchgit }:
 let kernel = buildPlatform.parsed.kernel.name;
     # ... (content skipped)
-    hello_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-      crateName = "hello";
-      version = "0.1.0";
-      authors = [ "Jörg Thalheim <joerg@thalheim.io>" ];
-      src = ./.;
-      inherit dependencies buildDependencies features;
-    };
-    libc_0_2_34_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
-      crateName = "libc";
-      version = "0.2.34";
-      authors = [ "The Rust Project Developers" ];
-      sha256 = "11jmqdxmv0ka10ay0l8nzx0nl7s2lc3dbrnh1mgbr2grzwdyxi2s";
-      inherit dependencies buildDependencies features;
-    };
 in
 rec {
-  hello_0_1_0 = hello_0_1_0_ rec {
-    dependencies = [ libc_0_2_34 ];
+  hello = f: hello_0_1_0 { features = hello_0_1_0_features { hello_0_1_0 = f; }; };
+  hello_0_1_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "hello";
+    version = "0.1.0";
+    authors = [ "pe@pijul.org <pe@pijul.org>" ];
+    src = ./.;
+    inherit dependencies buildDependencies features;
+  };
+  libc_0_2_36_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "libc";
+    version = "0.2.36";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "01633h4yfqm0s302fm0dlba469bx8y6cs4nqc8bqrmjqxfxn515l";
+    inherit dependencies buildDependencies features;
   };
-  libc_0_2_34_features."default".from_hello_0_1_0__default = true;
-  libc_0_2_34 = libc_0_2_34_ rec {
-    features = mkFeatures libc_0_2_34_features;
+  hello_0_1_0 = { features?(hello_0_1_0_features {}) }: hello_0_1_0_ {
+    dependencies = mapFeatures features ([ libc_0_2_36 ]);
   };
-  libc_0_2_34_features."use_std".self_default = hasDefault libc_0_2_34_features;
+  hello_0_1_0_features = f: updateFeatures f (rec {
+    hello_0_1_0.default = (f.hello_0_1_0.default or true);
+    libc_0_2_36.default = true;
+  }) [ libc_0_2_36_features ];
+  libc_0_2_36 = { features?(libc_0_2_36_features {}) }: libc_0_2_36_ {
+    features = mkFeatures (features.libc_0_2_36 or {});
+  };
+  libc_0_2_36_features = f: updateFeatures f (rec {
+    libc_0_2_36.default = (f.libc_0_2_36.default or true);
+    libc_0_2_36.use_std =
+      (f.libc_0_2_36.use_std or false) ||
+      (f.libc_0_2_36.default or false) ||
+      (libc_0_2_36.default or false);
+  }) [];
 }
 ```
 
@@ -146,7 +162,7 @@ or build inputs by overriding the hello crate in a seperate file.
 
 ```
 with import <nixpkgs> {};
-(import ./hello.nix).hello_0_1_0.override {
+((import ./hello.nix).hello {}).override {
   crateOverrides = defaultCrateOverrides // {
     hello = attrs: { buildInputs = [ openssl ]; };
   };
@@ -166,7 +182,7 @@ patches the derivation:
 
 ```
 with import <nixpkgs> {};
-(import ./hello.nix).hello_0_1_0.override {
+((import ./hello.nix).hello {}).override {
   crateOverrides = defaultCrateOverrides // {
     hello = attrs: lib.optionalAttrs (lib.versionAtLeast attrs.version "1.0")  {
       postPatch = ''
@@ -187,7 +203,7 @@ crate, we could do:
 
 ```
 with import <nixpkgs> {};
-(import hello.nix).hello_0_1_0.override {
+((import hello.nix).hello {}).override {
   crateOverrides = defaultCrateOverrides // {
     libc = attrs: { buildInputs = []; };
   };
@@ -199,23 +215,35 @@ Three more parameters can be overridden:
 - The version of rustc used to compile the crate:
 
   ```
-  hello_0_1_0.override { rust = pkgs.rust; };
+  (hello {}).override { rust = pkgs.rust; };
   ```
 
 - Whether to build in release mode or debug mode (release mode by
   default):
 
   ```
-  hello_0_1_0.override { release = false; };
+  (hello {}).override { release = false; };
   ```
 
 - Whether to print the commands sent to rustc when building
   (equivalent to `--verbose` in cargo:
 
   ```
-  hello_0_1_0.override { verbose = false; };
+  (hello {}).override { verbose = false; };
   ```
 
+One can also supply features switches. For example, if we want to
+compile `diesel_cli` only with the `postgres` feature, and no default
+features, we would write:
+
+```
+(callPackage ./diesel.nix {}).diesel {
+  default = false;
+  postgres = true;
+}
+```
+
+
 
 ## Using the Rust nightlies overlay
 
diff --git a/pkgs/build-support/rust/carnix.nix b/pkgs/build-support/rust/carnix.nix
index 1457832c9285..8b0af499c8f1 100644
--- a/pkgs/build-support/rust/carnix.nix
+++ b/pkgs/build-support/rust/carnix.nix
@@ -1,27 +1,24 @@
-# Generated by carnix 0.6.0: carnix -o carnix.nix --src ./. Cargo.lock
+# Generated by carnix 0.6.5: carnix -o carnix.nix Cargo.lock --src ./.
 { lib, buildPlatform, buildRustCrate, fetchgit }:
 let kernel = buildPlatform.parsed.kernel.name;
     abi = buildPlatform.parsed.abi.name;
-    hasFeature = feature:
-      lib.lists.any
-        (originName: feature.${originName})
-        (builtins.attrNames feature);
-
     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;
-
+    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 featureName != "" && hasFeature feat.${featureName} then
+      if feat.${featureName} or false then
         [ featureName ] ++ features
       else
         features
-    ) (if hasFeature (feat.default or {}) then [ "default" ] else []) (builtins.attrNames feat);
+    ) [] (builtins.attrNames feat);
 in
 rec {
+  carnix = f: carnix_0_6_5 { features = carnix_0_6_5_features { carnix_0_6_5 = f; }; };
   aho_corasick_0_6_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
     crateName = "aho-corasick";
     version = "0.6.3";
@@ -74,11 +71,11 @@ rec {
     sha256 = "0p4b3nr0s5nda2qmm7xdhnvh4lkqk3xd8l9ffmwbvqw137vx7mj1";
     inherit dependencies buildDependencies features;
   };
-  carnix_0_6_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+  carnix_0_6_5_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
     crateName = "carnix";
-    version = "0.6.0";
+    version = "0.6.5";
     authors = [ "pe@pijul.org <pe@pijul.org>" ];
-    src = include [ "Cargo.toml" "src/main.rs" "src/cache.rs" "src/cfg.rs" "src/krate/mod.rs" "src/krate/prefetch.rs" ] ./.;
+    sha256 = "0r952s5az5mhw7z2r421i5lr0w5h436hah61md2bdb3204c2pl9c";
     inherit dependencies buildDependencies features;
   };
   cc_1_0_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
@@ -95,6 +92,13 @@ rec {
     sha256 = "0x06hvrrqy96m97593823vvxcgvjaxckghwyy2jcyc8qc7c6cyhi";
     inherit dependencies buildDependencies features;
   };
+  chrono_0_4_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "chrono";
+    version = "0.4.0";
+    authors = [ "Kang Seonghoon <public+rust@mearie.org>" ];
+    sha256 = "0hm53hi6v7b6b1va6vn96lx26wvj8gzi2g51s1j02nlz0jcprw6a";
+    inherit dependencies buildDependencies features;
+  };
   clap_2_28_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
     crateName = "clap";
     version = "2.28.0";
@@ -125,11 +129,11 @@ rec {
     sha256 = "04kpfd84lvyrkb2z4sljlz2d3d5qczd0sb1yy37fgijq2yx3vb37";
     inherit dependencies buildDependencies features;
   };
-  env_logger_0_4_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+  env_logger_0_5_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
     crateName = "env_logger";
-    version = "0.4.3";
+    version = "0.5.3";
     authors = [ "The Rust Project Developers" ];
-    sha256 = "0nrx04p4xa86d5kc7aq4fwvipbqji9cmgy449h47nc9f1chafhgg";
+    sha256 = "1i7jyxrwwv3w2h200ynq3fjg1iyyvi76ny215hi6d334vkkw2s2y";
     inherit dependencies buildDependencies features;
   };
   error_chain_0_11_0_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
@@ -205,11 +209,11 @@ rec {
     sha256 = "04da208h6jb69f46j37jnvsw2i1wqplglp4d61csqcrhh83avbgl";
     inherit dependencies buildDependencies features;
   };
-  log_0_3_8_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+  log_0_4_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
     crateName = "log";
-    version = "0.3.8";
+    version = "0.4.1";
     authors = [ "The Rust Project Developers" ];
-    sha256 = "1c43z4z85sxrsgir4s1hi84558ab5ic7jrn5qgmsiqcv90vvn006";
+    sha256 = "01vm8yy3wngvyj6qp1x3xpcb4xq7v67yn9l7fsma8kz28mliz90d";
     inherit dependencies buildDependencies features;
   };
   lru_cache_0_1_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
@@ -233,6 +237,27 @@ rec {
     sha256 = "1vcllxrz9hdw6j25kn020ka3psz1vkaqh1hm3yfak2240zrxgi07";
     inherit dependencies buildDependencies features;
   };
+  num_0_1_40_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "num";
+    version = "0.1.40";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0b29c25n9mpf6a921khj7a6y3hz5va4vgwppcd2if975qq1shakg";
+    inherit dependencies buildDependencies features;
+  };
+  num_integer_0_1_35_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "num-integer";
+    version = "0.1.35";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "0xybj8isi9b6wc646d5rc043i8l8j6wy0vrl4pn995qms9fxbbcc";
+    inherit dependencies buildDependencies features;
+  };
+  num_iter_0_1_34_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "num-iter";
+    version = "0.1.34";
+    authors = [ "The Rust Project Developers" ];
+    sha256 = "02cld7x9dzbqbs6sxxzq1i22z3awlcd6ljkgvhkfr9rsnaxphzl9";
+    inherit dependencies buildDependencies features;
+  };
   num_traits_0_1_40_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
     crateName = "num-traits";
     version = "0.1.40";
@@ -362,6 +387,13 @@ rec {
     sha256 = "0rirc5prqppzgd15fm8ayan349lgk2k5iqdkrbwrwrv5pm4znsnz";
     inherit dependencies buildDependencies features;
   };
+  termcolor_0_3_3_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "termcolor";
+    version = "0.3.3";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "1rb853jzvkbwm62373dhls4x4r3r5cvfcsxvqh0i75rhx5j8kwsz";
+    inherit dependencies buildDependencies features;
+  };
   termion_1_5_1_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
     crateName = "termion";
     version = "1.5.1";
@@ -461,690 +493,901 @@ rec {
     libName = "build";
     inherit dependencies buildDependencies features;
   };
-  aho_corasick_0_6_3 = f: aho_corasick_0_6_3_ rec {
-    dependencies = [ (memchr_1_0_2 f) ];
-  };
-  aho_corasick_0_6_3_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        memchr_1_0_2.default.from_aho_corasick_0_6_3__default_ = true;
-      }))
-    [ memchr_1_0_2_features ];
-  ansi_term_0_10_2 = f: ansi_term_0_10_2_ rec {};
-  ansi_term_0_10_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  atty_0_2_3 = f: atty_0_2_3_ rec {
-    dependencies = (if kernel == "redox" then [ (termion_1_5_1 f) ] else [])
-      ++ (if (kernel == "linux" || kernel == "darwin") then [ (libc_0_2_33 f) ] else [])
-      ++ (if kernel == "windows" then [ (kernel32_sys_0_2_2 f) (winapi_0_2_8 f) ] else []);
-  };
-  atty_0_2_3_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        kernel32_sys_0_2_2.default.from_atty_0_2_3__default_ = true;
-        libc_0_2_33.default.from_atty_0_2_3__default_ = false;
-        termion_1_5_1.default.from_atty_0_2_3__default_ = true;
-        winapi_0_2_8.default.from_atty_0_2_3__default_ = true;
-      }))
-    [ termion_1_5_1_features libc_0_2_33_features kernel32_sys_0_2_2_features winapi_0_2_8_features ];
-  backtrace_0_3_4 = f: backtrace_0_3_4_ rec {
-    dependencies = [ (cfg_if_0_1_2 f) (rustc_demangle_0_1_5 f) ]
-      ++ (if (kernel == "linux" || kernel == "darwin") && !(kernel == "fuchsia") && !(kernel == "emscripten") && !(kernel == "darwin") && !(kernel == "ios") then [ ]
-      ++ (if hasFeature (f.backtrace_0_3_4."backtrace-sys" or {}) then [(backtrace_sys_0_1_16 f)] else []) else [])
-      ++ (if (kernel == "linux" || kernel == "darwin") then [ (libc_0_2_33 f) ] else [])
-      ++ (if kernel == "windows" then [ ]
-      ++ (if hasFeature (f.backtrace_0_3_4."dbghelp-sys" or {}) then [(dbghelp_sys_0_2_0 f)] else [])
-      ++ (if hasFeature (f.backtrace_0_3_4."kernel32-sys" or {}) then [(kernel32_sys_0_2_2 f)] else [])
-      ++ (if hasFeature (f.backtrace_0_3_4."winapi" or {}) then [(winapi_0_2_8 f)] else []) else []);
-    features = mkFeatures (f.backtrace_0_3_4 or {});
-  };
-  backtrace_0_3_4_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        backtrace_0_3_4."kernel32-sys".self_dbghelp = hasFeature (backtrace_0_3_4."dbghelp" or {}) || hasFeature (features.backtrace_0_3_4."dbghelp" or {});
-        backtrace_0_3_4."winapi".self_dbghelp = hasFeature (backtrace_0_3_4."dbghelp" or {}) || hasFeature (features.backtrace_0_3_4."dbghelp" or {});
-        backtrace_0_3_4."dbghelp-sys".self_dbghelp = hasFeature (backtrace_0_3_4."dbghelp" or {}) || hasFeature (features.backtrace_0_3_4."dbghelp" or {});
-        backtrace_0_3_4."libunwind".self_default = hasFeature (backtrace_0_3_4.default or {}) || hasFeature (features.backtrace_0_3_4.default or {});
-        backtrace_0_3_4."libbacktrace".self_default = hasFeature (backtrace_0_3_4.default or {}) || hasFeature (features.backtrace_0_3_4.default or {});
-        backtrace_0_3_4."coresymbolication".self_default = hasFeature (backtrace_0_3_4.default or {}) || hasFeature (features.backtrace_0_3_4.default or {});
-        backtrace_0_3_4."dladdr".self_default = hasFeature (backtrace_0_3_4.default or {}) || hasFeature (features.backtrace_0_3_4.default or {});
-        backtrace_0_3_4."dbghelp".self_default = hasFeature (backtrace_0_3_4.default or {}) || hasFeature (features.backtrace_0_3_4.default or {});
-        backtrace_0_3_4."addr2line".self_gimli-symbolize = hasFeature (backtrace_0_3_4."gimli-symbolize" or {}) || hasFeature (features.backtrace_0_3_4."gimli-symbolize" or {});
-        backtrace_0_3_4."findshlibs".self_gimli-symbolize = hasFeature (backtrace_0_3_4."gimli-symbolize" or {}) || hasFeature (features.backtrace_0_3_4."gimli-symbolize" or {});
-        backtrace_0_3_4."backtrace-sys".self_libbacktrace = hasFeature (backtrace_0_3_4."libbacktrace" or {}) || hasFeature (features.backtrace_0_3_4."libbacktrace" or {});
-        backtrace_0_3_4."rustc-serialize".self_serialize-rustc = hasFeature (backtrace_0_3_4."serialize-rustc" or {}) || hasFeature (features.backtrace_0_3_4."serialize-rustc" or {});
-        backtrace_0_3_4."serde".self_serialize-serde = hasFeature (backtrace_0_3_4."serialize-serde" or {}) || hasFeature (features.backtrace_0_3_4."serialize-serde" or {});
-        backtrace_0_3_4."serde_derive".self_serialize-serde = hasFeature (backtrace_0_3_4."serialize-serde" or {}) || hasFeature (features.backtrace_0_3_4."serialize-serde" or {});
-        backtrace_sys_0_1_16.default.from_backtrace_0_3_4__default_ = true;
-        cfg_if_0_1_2.default.from_backtrace_0_3_4__default_ = true;
-        dbghelp_sys_0_2_0.default.from_backtrace_0_3_4__default_ = true;
-        kernel32_sys_0_2_2.default.from_backtrace_0_3_4__default_ = true;
-        libc_0_2_33.default.from_backtrace_0_3_4__default_ = true;
-        rustc_demangle_0_1_5.default.from_backtrace_0_3_4__default_ = true;
-        winapi_0_2_8.default.from_backtrace_0_3_4__default_ = true;
-      }))
-    [ cfg_if_0_1_2_features rustc_demangle_0_1_5_features backtrace_sys_0_1_16_features libc_0_2_33_features dbghelp_sys_0_2_0_features kernel32_sys_0_2_2_features winapi_0_2_8_features ];
-  backtrace_sys_0_1_16 = f: backtrace_sys_0_1_16_ rec {
-    dependencies = [ (libc_0_2_33 f) ];
-    buildDependencies = [ (cc_1_0_3 f) ];
-  };
-  backtrace_sys_0_1_16_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        cc_1_0_3.default.from_backtrace_sys_0_1_16__default_ = true;
-        libc_0_2_33.default.from_backtrace_sys_0_1_16__default_ = true;
-      }))
-    [ libc_0_2_33_features cc_1_0_3_features ];
-  bitflags_0_7_0 = f: bitflags_0_7_0_ rec {};
-  bitflags_0_7_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  bitflags_1_0_1 = f: bitflags_1_0_1_ rec {
-    features = mkFeatures (f.bitflags_1_0_1 or {});
-  };
-  bitflags_1_0_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        bitflags_1_0_1."example_generated".self_default = hasFeature (bitflags_1_0_1.default or {}) || hasFeature (features.bitflags_1_0_1.default or {});
-      }))
-    [ ];
-  carnix_0_6_0 = f: carnix_0_6_0_ rec {
-    dependencies = [ (clap_2_28_0 f) (env_logger_0_4_3 f) (error_chain_0_11_0 f) (itertools_0_7_3 f) (log_0_3_8 f) (nom_3_2_1 f) (regex_0_2_2 f) (rusqlite_0_13_0 f) (serde_1_0_21 f) (serde_derive_1_0_21 f) (serde_json_1_0_6 f) (tempdir_0_3_5 f) (toml_0_4_5 f) ];
-  };
-  carnix_0_6_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        clap_2_28_0.default.from_carnix_0_6_0__default_ = true;
-        env_logger_0_4_3.default.from_carnix_0_6_0__default_ = true;
-        error_chain_0_11_0.default.from_carnix_0_6_0__default_ = true;
-        itertools_0_7_3.default.from_carnix_0_6_0__default_ = true;
-        log_0_3_8.default.from_carnix_0_6_0__default_ = true;
-        nom_3_2_1.default.from_carnix_0_6_0__default_ = true;
-        regex_0_2_2.default.from_carnix_0_6_0__default_ = true;
-        rusqlite_0_13_0.default.from_carnix_0_6_0__default_ = true;
-        serde_1_0_21.default.from_carnix_0_6_0__default_ = true;
-        serde_derive_1_0_21.default.from_carnix_0_6_0__default_ = true;
-        serde_json_1_0_6.default.from_carnix_0_6_0__default_ = true;
-        tempdir_0_3_5.default.from_carnix_0_6_0__default_ = true;
-        toml_0_4_5.default.from_carnix_0_6_0__default_ = true;
-      }))
-    [ clap_2_28_0_features env_logger_0_4_3_features error_chain_0_11_0_features itertools_0_7_3_features log_0_3_8_features nom_3_2_1_features regex_0_2_2_features rusqlite_0_13_0_features serde_1_0_21_features serde_derive_1_0_21_features serde_json_1_0_6_features tempdir_0_3_5_features toml_0_4_5_features ];
-  cc_1_0_3 = f: cc_1_0_3_ rec {
-    dependencies = [];
-    features = mkFeatures (f.cc_1_0_3 or {});
-  };
-  cc_1_0_3_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        cc_1_0_3."rayon".self_parallel = hasFeature (cc_1_0_3."parallel" or {}) || hasFeature (features.cc_1_0_3."parallel" or {});
-      }))
-    [ ];
-  cfg_if_0_1_2 = f: cfg_if_0_1_2_ rec {};
-  cfg_if_0_1_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  clap_2_28_0 = f: clap_2_28_0_ rec {
-    dependencies = [ (bitflags_1_0_1 f) (textwrap_0_9_0 f) (unicode_width_0_1_4 f) ]
-      ++ (if hasFeature (f.clap_2_28_0."ansi_term" or {}) then [(ansi_term_0_10_2 f)] else [])
-      ++ (if hasFeature (f.clap_2_28_0."atty" or {}) then [(atty_0_2_3 f)] else [])
-      ++ (if hasFeature (f.clap_2_28_0."strsim" or {}) then [(strsim_0_6_0 f)] else [])
-      ++ (if hasFeature (f.clap_2_28_0."vec_map" or {}) then [(vec_map_0_8_0 f)] else []);
-    features = mkFeatures (f.clap_2_28_0 or {});
-  };
-  clap_2_28_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        clap_2_28_0."ansi_term".self_color = hasFeature (clap_2_28_0."color" or {}) || hasFeature (features.clap_2_28_0."color" or {});
-        clap_2_28_0."atty".self_color = hasFeature (clap_2_28_0."color" or {}) || hasFeature (features.clap_2_28_0."color" or {});
-        clap_2_28_0."suggestions".self_default = hasFeature (clap_2_28_0.default or {}) || hasFeature (features.clap_2_28_0.default or {});
-        clap_2_28_0."color".self_default = hasFeature (clap_2_28_0.default or {}) || hasFeature (features.clap_2_28_0.default or {});
-        clap_2_28_0."vec_map".self_default = hasFeature (clap_2_28_0.default or {}) || hasFeature (features.clap_2_28_0.default or {});
-        clap_2_28_0."yaml".self_doc = hasFeature (clap_2_28_0."doc" or {}) || hasFeature (features.clap_2_28_0."doc" or {});
-        clap_2_28_0."clippy".self_lints = hasFeature (clap_2_28_0."lints" or {}) || hasFeature (features.clap_2_28_0."lints" or {});
-        clap_2_28_0."strsim".self_suggestions = hasFeature (clap_2_28_0."suggestions" or {}) || hasFeature (features.clap_2_28_0."suggestions" or {});
-        clap_2_28_0."term_size".self_wrap_help = hasFeature (clap_2_28_0."wrap_help" or {}) || hasFeature (features.clap_2_28_0."wrap_help" or {});
-        clap_2_28_0."yaml-rust".self_yaml = hasFeature (clap_2_28_0."yaml" or {}) || hasFeature (features.clap_2_28_0."yaml" or {});
-        textwrap_0_9_0."term_size".from_clap_2_28_0__term_size = hasFeature (clap_2_28_0."wrap_help" or {}) || hasFeature (features.clap_2_28_0."wrap_help" or {});
-        ansi_term_0_10_2.default.from_clap_2_28_0__default_ = true;
-        atty_0_2_3.default.from_clap_2_28_0__default_ = true;
-        bitflags_1_0_1.default.from_clap_2_28_0__default_ = true;
-        strsim_0_6_0.default.from_clap_2_28_0__default_ = true;
-        textwrap_0_9_0.default.from_clap_2_28_0__default_ = true;
-        unicode_width_0_1_4.default.from_clap_2_28_0__default_ = true;
-        vec_map_0_8_0.default.from_clap_2_28_0__default_ = true;
-      }))
-    [ ansi_term_0_10_2_features atty_0_2_3_features bitflags_1_0_1_features strsim_0_6_0_features textwrap_0_9_0_features unicode_width_0_1_4_features vec_map_0_8_0_features ];
-  dbghelp_sys_0_2_0 = f: dbghelp_sys_0_2_0_ rec {
-    dependencies = [ (winapi_0_2_8 f) ];
-    buildDependencies = [ (winapi_build_0_1_1 f) ];
-  };
-  dbghelp_sys_0_2_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        winapi_0_2_8.default.from_dbghelp_sys_0_2_0__default_ = true;
-        winapi_build_0_1_1.default.from_dbghelp_sys_0_2_0__default_ = true;
-      }))
-    [ winapi_0_2_8_features winapi_build_0_1_1_features ];
-  dtoa_0_4_2 = f: dtoa_0_4_2_ rec {};
-  dtoa_0_4_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  either_1_4_0 = f: either_1_4_0_ rec {
-    dependencies = [];
-    features = mkFeatures (f.either_1_4_0 or {});
-  };
-  either_1_4_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        either_1_4_0."use_std".self_default = hasFeature (either_1_4_0.default or {}) || hasFeature (features.either_1_4_0.default or {});
-      }))
-    [ ];
-  env_logger_0_4_3 = f: env_logger_0_4_3_ rec {
-    dependencies = [ (log_0_3_8 f) ]
-      ++ (if hasFeature (f.env_logger_0_4_3."regex" or {}) then [(regex_0_2_2 f)] else []);
-    features = mkFeatures (f.env_logger_0_4_3 or {});
-  };
-  env_logger_0_4_3_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        env_logger_0_4_3."regex".self_default = hasFeature (env_logger_0_4_3.default or {}) || hasFeature (features.env_logger_0_4_3.default or {});
-        log_0_3_8.default.from_env_logger_0_4_3__default_ = true;
-        regex_0_2_2.default.from_env_logger_0_4_3__default_ = true;
-      }))
-    [ log_0_3_8_features regex_0_2_2_features ];
-  error_chain_0_11_0 = f: error_chain_0_11_0_ rec {
-    dependencies = [ ]
-      ++ (if hasFeature (f.error_chain_0_11_0."backtrace" or {}) then [(backtrace_0_3_4 f)] else []);
-    features = mkFeatures (f.error_chain_0_11_0 or {});
-  };
-  error_chain_0_11_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        error_chain_0_11_0."backtrace".self_default = hasFeature (error_chain_0_11_0.default or {}) || hasFeature (features.error_chain_0_11_0.default or {});
-        error_chain_0_11_0."example_generated".self_default = hasFeature (error_chain_0_11_0.default or {}) || hasFeature (features.error_chain_0_11_0.default or {});
-        backtrace_0_3_4.default.from_error_chain_0_11_0__default_ = true;
-      }))
-    [ backtrace_0_3_4_features ];
-  fuchsia_zircon_0_2_1 = f: fuchsia_zircon_0_2_1_ rec {
-    dependencies = [ (fuchsia_zircon_sys_0_2_0 f) ];
-  };
-  fuchsia_zircon_0_2_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        fuchsia_zircon_sys_0_2_0.default.from_fuchsia_zircon_0_2_1__default_ = true;
-      }))
-    [ fuchsia_zircon_sys_0_2_0_features ];
-  fuchsia_zircon_sys_0_2_0 = f: fuchsia_zircon_sys_0_2_0_ rec {
-    dependencies = [ (bitflags_0_7_0 f) ];
-  };
-  fuchsia_zircon_sys_0_2_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        bitflags_0_7_0.default.from_fuchsia_zircon_sys_0_2_0__default_ = true;
-      }))
-    [ bitflags_0_7_0_features ];
-  itertools_0_7_3 = f: itertools_0_7_3_ rec {
-    dependencies = [ (either_1_4_0 f) ];
-    features = mkFeatures (f.itertools_0_7_3 or {});
-  };
-  itertools_0_7_3_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        itertools_0_7_3."use_std".self_default = hasFeature (itertools_0_7_3.default or {}) || hasFeature (features.itertools_0_7_3.default or {});
-        either_1_4_0.default.from_itertools_0_7_3__default_ = false;
-      }))
-    [ either_1_4_0_features ];
-  itoa_0_3_4 = f: itoa_0_3_4_ rec {
-    features = mkFeatures (f.itoa_0_3_4 or {});
-  };
-  itoa_0_3_4_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  kernel32_sys_0_2_2 = f: kernel32_sys_0_2_2_ rec {
-    dependencies = [ (winapi_0_2_8 f) ];
-    buildDependencies = [ (winapi_build_0_1_1 f) ];
-  };
-  kernel32_sys_0_2_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        winapi_0_2_8.default.from_kernel32_sys_0_2_2__default_ = true;
-        winapi_build_0_1_1.default.from_kernel32_sys_0_2_2__default_ = true;
-      }))
-    [ winapi_0_2_8_features winapi_build_0_1_1_features ];
-  lazy_static_0_2_11 = f: lazy_static_0_2_11_ rec {
-    dependencies = [];
-    features = mkFeatures (f.lazy_static_0_2_11 or {});
-  };
-  lazy_static_0_2_11_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        lazy_static_0_2_11."compiletest_rs".self_compiletest = hasFeature (lazy_static_0_2_11."compiletest" or {}) || hasFeature (features.lazy_static_0_2_11."compiletest" or {});
-        lazy_static_0_2_11."nightly".self_spin_no_std = hasFeature (lazy_static_0_2_11."spin_no_std" or {}) || hasFeature (features.lazy_static_0_2_11."spin_no_std" or {});
-        lazy_static_0_2_11."spin".self_spin_no_std = hasFeature (lazy_static_0_2_11."spin_no_std" or {}) || hasFeature (features.lazy_static_0_2_11."spin_no_std" or {});
-      }))
-    [ ];
-  libc_0_2_33 = f: libc_0_2_33_ rec {
-    features = mkFeatures (f.libc_0_2_33 or {});
-  };
-  libc_0_2_33_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        libc_0_2_33."use_std".self_default = hasFeature (libc_0_2_33.default or {}) || hasFeature (features.libc_0_2_33.default or {});
-      }))
-    [ ];
-  libsqlite3_sys_0_9_0 = f: libsqlite3_sys_0_9_0_ rec {
-    dependencies = (if abi == "msvc" then [] else []);
-    buildDependencies = [ ]
-      ++ (if hasFeature (f.libsqlite3_sys_0_9_0."pkg-config" or {}) then [(pkg_config_0_3_9 f)] else []);
-    features = mkFeatures (f.libsqlite3_sys_0_9_0 or {});
-  };
-  libsqlite3_sys_0_9_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        libsqlite3_sys_0_9_0."bindgen".self_buildtime_bindgen = hasFeature (libsqlite3_sys_0_9_0."buildtime_bindgen" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."buildtime_bindgen" or {});
-        libsqlite3_sys_0_9_0."pkg-config".self_buildtime_bindgen = hasFeature (libsqlite3_sys_0_9_0."buildtime_bindgen" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."buildtime_bindgen" or {});
-        libsqlite3_sys_0_9_0."vcpkg".self_buildtime_bindgen = hasFeature (libsqlite3_sys_0_9_0."buildtime_bindgen" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."buildtime_bindgen" or {});
-        libsqlite3_sys_0_9_0."cc".self_bundled = hasFeature (libsqlite3_sys_0_9_0."bundled" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."bundled" or {});
-        libsqlite3_sys_0_9_0."min_sqlite_version_3_6_8".self_default = hasFeature (libsqlite3_sys_0_9_0.default or {}) || hasFeature (features.libsqlite3_sys_0_9_0.default or {});
-        libsqlite3_sys_0_9_0."pkg-config".self_min_sqlite_version_3_6_11 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_6_11" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_6_11" or {});
-        libsqlite3_sys_0_9_0."vcpkg".self_min_sqlite_version_3_6_11 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_6_11" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_6_11" or {});
-        libsqlite3_sys_0_9_0."pkg-config".self_min_sqlite_version_3_6_23 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_6_23" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_6_23" or {});
-        libsqlite3_sys_0_9_0."vcpkg".self_min_sqlite_version_3_6_23 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_6_23" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_6_23" or {});
-        libsqlite3_sys_0_9_0."pkg-config".self_min_sqlite_version_3_6_8 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_6_8" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_6_8" or {});
-        libsqlite3_sys_0_9_0."vcpkg".self_min_sqlite_version_3_6_8 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_6_8" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_6_8" or {});
-        libsqlite3_sys_0_9_0."pkg-config".self_min_sqlite_version_3_7_16 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_7_16" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_7_16" or {});
-        libsqlite3_sys_0_9_0."vcpkg".self_min_sqlite_version_3_7_16 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_7_16" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_7_16" or {});
-        libsqlite3_sys_0_9_0."pkg-config".self_min_sqlite_version_3_7_3 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_7_3" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_7_3" or {});
-        libsqlite3_sys_0_9_0."vcpkg".self_min_sqlite_version_3_7_3 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_7_3" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_7_3" or {});
-        libsqlite3_sys_0_9_0."pkg-config".self_min_sqlite_version_3_7_4 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_7_4" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_7_4" or {});
-        libsqlite3_sys_0_9_0."vcpkg".self_min_sqlite_version_3_7_4 = hasFeature (libsqlite3_sys_0_9_0."min_sqlite_version_3_7_4" or {}) || hasFeature (features.libsqlite3_sys_0_9_0."min_sqlite_version_3_7_4" or {});
-        pkg_config_0_3_9.default.from_libsqlite3_sys_0_9_0__default_ = true;
-      }))
-    [ pkg_config_0_3_9_features ];
-  linked_hash_map_0_4_2 = f: linked_hash_map_0_4_2_ rec {
-    dependencies = [];
-    features = mkFeatures (f.linked_hash_map_0_4_2 or {});
-  };
-  linked_hash_map_0_4_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        linked_hash_map_0_4_2."heapsize".self_heapsize_impl = hasFeature (linked_hash_map_0_4_2."heapsize_impl" or {}) || hasFeature (features.linked_hash_map_0_4_2."heapsize_impl" or {});
-        linked_hash_map_0_4_2."serde".self_serde_impl = hasFeature (linked_hash_map_0_4_2."serde_impl" or {}) || hasFeature (features.linked_hash_map_0_4_2."serde_impl" or {});
-        linked_hash_map_0_4_2."serde_test".self_serde_impl = hasFeature (linked_hash_map_0_4_2."serde_impl" or {}) || hasFeature (features.linked_hash_map_0_4_2."serde_impl" or {});
-      }))
-    [ ];
-  log_0_3_8 = f: log_0_3_8_ rec {
-    features = mkFeatures (f.log_0_3_8 or {});
-  };
-  log_0_3_8_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        log_0_3_8."use_std".self_default = hasFeature (log_0_3_8.default or {}) || hasFeature (features.log_0_3_8.default or {});
-      }))
-    [ ];
-  lru_cache_0_1_1 = f: lru_cache_0_1_1_ rec {
-    dependencies = [ (linked_hash_map_0_4_2 f) ];
-    features = mkFeatures (f.lru_cache_0_1_1 or {});
-  };
-  lru_cache_0_1_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        lru_cache_0_1_1."heapsize".self_heapsize_impl = hasFeature (lru_cache_0_1_1."heapsize_impl" or {}) || hasFeature (features.lru_cache_0_1_1."heapsize_impl" or {});
-        linked_hash_map_0_4_2."heapsize_impl".from_lru_cache_0_1_1__heapsize_impl = hasFeature (lru_cache_0_1_1."heapsize_impl" or {}) || hasFeature (features.lru_cache_0_1_1."heapsize_impl" or {});
-        linked_hash_map_0_4_2.default.from_lru_cache_0_1_1__default_ = true;
-      }))
-    [ linked_hash_map_0_4_2_features ];
-  memchr_1_0_2 = f: memchr_1_0_2_ rec {
-    dependencies = [ ]
-      ++ (if hasFeature (f.memchr_1_0_2."libc" or {}) then [(libc_0_2_33 f)] else []);
-    features = mkFeatures (f.memchr_1_0_2 or {});
-  };
-  memchr_1_0_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        memchr_1_0_2."use_std".self_default = hasFeature (memchr_1_0_2.default or {}) || hasFeature (features.memchr_1_0_2.default or {});
-        memchr_1_0_2."libc".self_default = hasFeature (memchr_1_0_2.default or {}) || hasFeature (features.memchr_1_0_2.default or {});
-        memchr_1_0_2."libc".self_use_std = hasFeature (memchr_1_0_2."use_std" or {}) || hasFeature (features.memchr_1_0_2."use_std" or {});
-        libc_0_2_33."use_std".from_memchr_1_0_2__use_std = hasFeature (memchr_1_0_2."use_std" or {}) || hasFeature (features.memchr_1_0_2."use_std" or {});
-        libc_0_2_33.default.from_memchr_1_0_2__default_ = false;
-      }))
-    [ libc_0_2_33_features ];
-  nom_3_2_1 = f: nom_3_2_1_ rec {
-    dependencies = [ (memchr_1_0_2 f) ];
-    features = mkFeatures (f.nom_3_2_1 or {});
-  };
-  nom_3_2_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        nom_3_2_1."std".self_default = hasFeature (nom_3_2_1.default or {}) || hasFeature (features.nom_3_2_1.default or {});
-        nom_3_2_1."stream".self_default = hasFeature (nom_3_2_1.default or {}) || hasFeature (features.nom_3_2_1.default or {});
-        nom_3_2_1."compiler_error".self_nightly = hasFeature (nom_3_2_1."nightly" or {}) || hasFeature (features.nom_3_2_1."nightly" or {});
-        nom_3_2_1."regex".self_regexp = hasFeature (nom_3_2_1."regexp" or {}) || hasFeature (features.nom_3_2_1."regexp" or {});
-        nom_3_2_1."regexp".self_regexp_macros = hasFeature (nom_3_2_1."regexp_macros" or {}) || hasFeature (features.nom_3_2_1."regexp_macros" or {});
-        nom_3_2_1."lazy_static".self_regexp_macros = hasFeature (nom_3_2_1."regexp_macros" or {}) || hasFeature (features.nom_3_2_1."regexp_macros" or {});
-        memchr_1_0_2."use_std".from_nom_3_2_1__use_std = hasFeature (nom_3_2_1."std" or {}) || hasFeature (features.nom_3_2_1."std" or {});
-        memchr_1_0_2.default.from_nom_3_2_1__default_ = false;
-      }))
-    [ memchr_1_0_2_features ];
-  num_traits_0_1_40 = f: num_traits_0_1_40_ rec {};
-  num_traits_0_1_40_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  pkg_config_0_3_9 = f: pkg_config_0_3_9_ rec {};
-  pkg_config_0_3_9_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  quote_0_3_15 = f: quote_0_3_15_ rec {};
-  quote_0_3_15_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  rand_0_3_18 = f: rand_0_3_18_ rec {
-    dependencies = [ (libc_0_2_33 f) ]
-      ++ (if kernel == "fuchsia" then [ (fuchsia_zircon_0_2_1 f) ] else []);
-    features = mkFeatures (f.rand_0_3_18 or {});
-  };
-  rand_0_3_18_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        rand_0_3_18."i128_support".self_nightly = hasFeature (rand_0_3_18."nightly" or {}) || hasFeature (features.rand_0_3_18."nightly" or {});
-        fuchsia_zircon_0_2_1.default.from_rand_0_3_18__default_ = true;
-        libc_0_2_33.default.from_rand_0_3_18__default_ = true;
-      }))
-    [ libc_0_2_33_features fuchsia_zircon_0_2_1_features ];
-  redox_syscall_0_1_32 = f: redox_syscall_0_1_32_ rec {};
-  redox_syscall_0_1_32_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  redox_termios_0_1_1 = f: redox_termios_0_1_1_ rec {
-    dependencies = [ (redox_syscall_0_1_32 f) ];
-  };
-  redox_termios_0_1_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        redox_syscall_0_1_32.default.from_redox_termios_0_1_1__default_ = true;
-      }))
-    [ redox_syscall_0_1_32_features ];
-  regex_0_2_2 = f: regex_0_2_2_ rec {
-    dependencies = [ (aho_corasick_0_6_3 f) (memchr_1_0_2 f) (regex_syntax_0_4_1 f) (thread_local_0_3_4 f) (utf8_ranges_1_0_0 f) ];
-    features = mkFeatures (f.regex_0_2_2 or {});
-  };
-  regex_0_2_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        regex_0_2_2."simd".self_simd-accel = hasFeature (regex_0_2_2."simd-accel" or {}) || hasFeature (features.regex_0_2_2."simd-accel" or {});
-        aho_corasick_0_6_3.default.from_regex_0_2_2__default_ = true;
-        memchr_1_0_2.default.from_regex_0_2_2__default_ = true;
-        regex_syntax_0_4_1.default.from_regex_0_2_2__default_ = true;
-        thread_local_0_3_4.default.from_regex_0_2_2__default_ = true;
-        utf8_ranges_1_0_0.default.from_regex_0_2_2__default_ = true;
-      }))
-    [ aho_corasick_0_6_3_features memchr_1_0_2_features regex_syntax_0_4_1_features thread_local_0_3_4_features utf8_ranges_1_0_0_features ];
-  regex_syntax_0_4_1 = f: regex_syntax_0_4_1_ rec {};
-  regex_syntax_0_4_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  rusqlite_0_13_0 = f: rusqlite_0_13_0_ rec {
-    dependencies = [ (bitflags_1_0_1 f) (libsqlite3_sys_0_9_0 f) (lru_cache_0_1_1 f) (time_0_1_38 f) ];
-    features = mkFeatures (f.rusqlite_0_13_0 or {});
-  };
-  rusqlite_0_13_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        libsqlite3_sys_0_9_0."min_sqlite_version_3_6_11".from_rusqlite_0_13_0__min_sqlite_version_3_6_11 = hasFeature (rusqlite_0_13_0."backup" or {}) || hasFeature (features.rusqlite_0_13_0."backup" or {});
-        libsqlite3_sys_0_9_0."min_sqlite_version_3_7_4".from_rusqlite_0_13_0__min_sqlite_version_3_7_4 = hasFeature (rusqlite_0_13_0."blob" or {}) || hasFeature (features.rusqlite_0_13_0."blob" or {});
-        libsqlite3_sys_0_9_0."buildtime_bindgen".from_rusqlite_0_13_0__buildtime_bindgen = hasFeature (rusqlite_0_13_0."buildtime_bindgen" or {}) || hasFeature (features.rusqlite_0_13_0."buildtime_bindgen" or {});
-        libsqlite3_sys_0_9_0."bundled".from_rusqlite_0_13_0__bundled = hasFeature (rusqlite_0_13_0."bundled" or {}) || hasFeature (features.rusqlite_0_13_0."bundled" or {});
-        libsqlite3_sys_0_9_0."min_sqlite_version_3_7_3".from_rusqlite_0_13_0__min_sqlite_version_3_7_3 = hasFeature (rusqlite_0_13_0."functions" or {}) || hasFeature (features.rusqlite_0_13_0."functions" or {});
-        libsqlite3_sys_0_9_0."sqlcipher".from_rusqlite_0_13_0__sqlcipher = hasFeature (rusqlite_0_13_0."sqlcipher" or {}) || hasFeature (features.rusqlite_0_13_0."sqlcipher" or {});
-        libsqlite3_sys_0_9_0."min_sqlite_version_3_6_23".from_rusqlite_0_13_0__min_sqlite_version_3_6_23 = hasFeature (rusqlite_0_13_0."trace" or {}) || hasFeature (features.rusqlite_0_13_0."trace" or {});
-        bitflags_1_0_1.default.from_rusqlite_0_13_0__default_ = true;
-        libsqlite3_sys_0_9_0.default.from_rusqlite_0_13_0__default_ = true;
-        lru_cache_0_1_1.default.from_rusqlite_0_13_0__default_ = true;
-        time_0_1_38.default.from_rusqlite_0_13_0__default_ = true;
-      }))
-    [ bitflags_1_0_1_features libsqlite3_sys_0_9_0_features lru_cache_0_1_1_features time_0_1_38_features ];
-  rustc_demangle_0_1_5 = f: rustc_demangle_0_1_5_ rec {};
-  rustc_demangle_0_1_5_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  serde_1_0_21 = f: serde_1_0_21_ rec {
-    dependencies = [];
-    features = mkFeatures (f.serde_1_0_21 or {});
-  };
-  serde_1_0_21_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        serde_1_0_21."unstable".self_alloc = hasFeature (serde_1_0_21."alloc" or {}) || hasFeature (features.serde_1_0_21."alloc" or {});
-        serde_1_0_21."std".self_default = hasFeature (serde_1_0_21.default or {}) || hasFeature (features.serde_1_0_21.default or {});
-        serde_1_0_21."serde_derive".self_derive = hasFeature (serde_1_0_21."derive" or {}) || hasFeature (features.serde_1_0_21."derive" or {});
-        serde_1_0_21."serde_derive".self_playground = hasFeature (serde_1_0_21."playground" or {}) || hasFeature (features.serde_1_0_21."playground" or {});
-      }))
-    [ ];
-  serde_derive_1_0_21 = f: serde_derive_1_0_21_ rec {
-    dependencies = [ (quote_0_3_15 f) (serde_derive_internals_0_17_0 f) (syn_0_11_11 f) ];
-  };
-  serde_derive_1_0_21_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        syn_0_11_11."visit".from_serde_derive_1_0_21 = true;
-        quote_0_3_15.default.from_serde_derive_1_0_21__default_ = true;
-        serde_derive_internals_0_17_0.default.from_serde_derive_1_0_21__default_ = false;
-        syn_0_11_11.default.from_serde_derive_1_0_21__default_ = true;
-      }))
-    [ quote_0_3_15_features serde_derive_internals_0_17_0_features syn_0_11_11_features ];
-  serde_derive_internals_0_17_0 = f: serde_derive_internals_0_17_0_ rec {
-    dependencies = [ (syn_0_11_11 f) (synom_0_11_3 f) ];
-  };
-  serde_derive_internals_0_17_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        syn_0_11_11."parsing".from_serde_derive_internals_0_17_0 = true;
-        syn_0_11_11.default.from_serde_derive_internals_0_17_0__default_ = false;
-        synom_0_11_3.default.from_serde_derive_internals_0_17_0__default_ = true;
-      }))
-    [ syn_0_11_11_features synom_0_11_3_features ];
-  serde_json_1_0_6 = f: serde_json_1_0_6_ rec {
-    dependencies = [ (dtoa_0_4_2 f) (itoa_0_3_4 f) (num_traits_0_1_40 f) (serde_1_0_21 f) ];
-    features = mkFeatures (f.serde_json_1_0_6 or {});
-  };
-  serde_json_1_0_6_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        serde_json_1_0_6."linked-hash-map".self_preserve_order = hasFeature (serde_json_1_0_6."preserve_order" or {}) || hasFeature (features.serde_json_1_0_6."preserve_order" or {});
-        dtoa_0_4_2.default.from_serde_json_1_0_6__default_ = true;
-        itoa_0_3_4.default.from_serde_json_1_0_6__default_ = true;
-        num_traits_0_1_40.default.from_serde_json_1_0_6__default_ = true;
-        serde_1_0_21.default.from_serde_json_1_0_6__default_ = true;
-      }))
-    [ dtoa_0_4_2_features itoa_0_3_4_features num_traits_0_1_40_features serde_1_0_21_features ];
-  strsim_0_6_0 = f: strsim_0_6_0_ rec {};
-  strsim_0_6_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  syn_0_11_11 = f: syn_0_11_11_ rec {
-    dependencies = [ ]
-      ++ (if hasFeature (f.syn_0_11_11."quote" or {}) then [(quote_0_3_15 f)] else [])
-      ++ (if hasFeature (f.syn_0_11_11."synom" or {}) then [(synom_0_11_3 f)] else [])
-      ++ (if hasFeature (f.syn_0_11_11."unicode-xid" or {}) then [(unicode_xid_0_0_4 f)] else []);
-    features = mkFeatures (f.syn_0_11_11 or {});
-  };
-  syn_0_11_11_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        syn_0_11_11."parsing".self_default = hasFeature (syn_0_11_11.default or {}) || hasFeature (features.syn_0_11_11.default or {});
-        syn_0_11_11."printing".self_default = hasFeature (syn_0_11_11.default or {}) || hasFeature (features.syn_0_11_11.default or {});
-        syn_0_11_11."unicode-xid".self_parsing = hasFeature (syn_0_11_11."parsing" or {}) || hasFeature (features.syn_0_11_11."parsing" or {});
-        syn_0_11_11."synom".self_parsing = hasFeature (syn_0_11_11."parsing" or {}) || hasFeature (features.syn_0_11_11."parsing" or {});
-        syn_0_11_11."quote".self_printing = hasFeature (syn_0_11_11."printing" or {}) || hasFeature (features.syn_0_11_11."printing" or {});
-        quote_0_3_15.default.from_syn_0_11_11__default_ = true;
-        synom_0_11_3.default.from_syn_0_11_11__default_ = true;
-        unicode_xid_0_0_4.default.from_syn_0_11_11__default_ = true;
-      }))
-    [ quote_0_3_15_features synom_0_11_3_features unicode_xid_0_0_4_features ];
-  synom_0_11_3 = f: synom_0_11_3_ rec {
-    dependencies = [ (unicode_xid_0_0_4 f) ];
-  };
-  synom_0_11_3_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        unicode_xid_0_0_4.default.from_synom_0_11_3__default_ = true;
-      }))
-    [ unicode_xid_0_0_4_features ];
-  tempdir_0_3_5 = f: tempdir_0_3_5_ rec {
-    dependencies = [ (rand_0_3_18 f) ];
-  };
-  tempdir_0_3_5_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        rand_0_3_18.default.from_tempdir_0_3_5__default_ = true;
-      }))
-    [ rand_0_3_18_features ];
-  termion_1_5_1 = f: termion_1_5_1_ rec {
-    dependencies = (if !(kernel == "redox") then [ (libc_0_2_33 f) ] else [])
-      ++ (if kernel == "redox" then [ (redox_syscall_0_1_32 f) (redox_termios_0_1_1 f) ] else []);
-  };
-  termion_1_5_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        libc_0_2_33.default.from_termion_1_5_1__default_ = true;
-        redox_syscall_0_1_32.default.from_termion_1_5_1__default_ = true;
-        redox_termios_0_1_1.default.from_termion_1_5_1__default_ = true;
-      }))
-    [ libc_0_2_33_features redox_syscall_0_1_32_features redox_termios_0_1_1_features ];
-  textwrap_0_9_0 = f: textwrap_0_9_0_ rec {
-    dependencies = [ (unicode_width_0_1_4 f) ];
-  };
-  textwrap_0_9_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        unicode_width_0_1_4.default.from_textwrap_0_9_0__default_ = true;
-      }))
-    [ unicode_width_0_1_4_features ];
-  thread_local_0_3_4 = f: thread_local_0_3_4_ rec {
-    dependencies = [ (lazy_static_0_2_11 f) (unreachable_1_0_0 f) ];
-  };
-  thread_local_0_3_4_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        lazy_static_0_2_11.default.from_thread_local_0_3_4__default_ = true;
-        unreachable_1_0_0.default.from_thread_local_0_3_4__default_ = true;
-      }))
-    [ lazy_static_0_2_11_features unreachable_1_0_0_features ];
-  time_0_1_38 = f: time_0_1_38_ rec {
-    dependencies = [ (libc_0_2_33 f) ]
-      ++ (if kernel == "redox" then [ (redox_syscall_0_1_32 f) ] else [])
-      ++ (if kernel == "windows" then [ (kernel32_sys_0_2_2 f) (winapi_0_2_8 f) ] else []);
-  };
-  time_0_1_38_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        kernel32_sys_0_2_2.default.from_time_0_1_38__default_ = true;
-        libc_0_2_33.default.from_time_0_1_38__default_ = true;
-        redox_syscall_0_1_32.default.from_time_0_1_38__default_ = true;
-        winapi_0_2_8.default.from_time_0_1_38__default_ = true;
-      }))
-    [ libc_0_2_33_features redox_syscall_0_1_32_features kernel32_sys_0_2_2_features winapi_0_2_8_features ];
-  toml_0_4_5 = f: toml_0_4_5_ rec {
-    dependencies = [ (serde_1_0_21 f) ];
-  };
-  toml_0_4_5_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        serde_1_0_21.default.from_toml_0_4_5__default_ = true;
-      }))
-    [ serde_1_0_21_features ];
-  unicode_width_0_1_4 = f: unicode_width_0_1_4_ rec {
-    features = mkFeatures (f.unicode_width_0_1_4 or {});
-  };
-  unicode_width_0_1_4_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  unicode_xid_0_0_4 = f: unicode_xid_0_0_4_ rec {
-    features = mkFeatures (f.unicode_xid_0_0_4 or {});
-  };
-  unicode_xid_0_0_4_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  unreachable_1_0_0 = f: unreachable_1_0_0_ rec {
-    dependencies = [ (void_1_0_2 f) ];
-  };
-  unreachable_1_0_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        void_1_0_2.default.from_unreachable_1_0_0__default_ = false;
-      }))
-    [ void_1_0_2_features ];
-  utf8_ranges_1_0_0 = f: utf8_ranges_1_0_0_ rec {};
-  utf8_ranges_1_0_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  vcpkg_0_2_2 = f: vcpkg_0_2_2_ rec {};
-  vcpkg_0_2_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  vec_map_0_8_0 = f: vec_map_0_8_0_ rec {
-    dependencies = [];
-    features = mkFeatures (f.vec_map_0_8_0 or {});
-  };
-  vec_map_0_8_0_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        vec_map_0_8_0."serde".self_eders = hasFeature (vec_map_0_8_0."eders" or {}) || hasFeature (features.vec_map_0_8_0."eders" or {});
-        vec_map_0_8_0."serde_derive".self_eders = hasFeature (vec_map_0_8_0."eders" or {}) || hasFeature (features.vec_map_0_8_0."eders" or {});
-      }))
-    [ ];
-  void_1_0_2 = f: void_1_0_2_ rec {
-    features = mkFeatures (f.void_1_0_2 or {});
-  };
-  void_1_0_2_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-        void_1_0_2."std".self_default = hasFeature (void_1_0_2.default or {}) || hasFeature (features.void_1_0_2.default or {});
-      }))
-    [ ];
-  winapi_0_2_8 = f: winapi_0_2_8_ rec {};
-  winapi_0_2_8_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
-  winapi_build_0_1_1 = f: winapi_build_0_1_1_ rec {};
-  winapi_build_0_1_1_features = features:
-    lib.lists.foldl' (features: f: f features)
-      (lib.attrsets.recursiveUpdate features (rec {
-      }))
-    [ ];
+  wincolor_0_1_4_ = { dependencies?[], buildDependencies?[], features?[] }: buildRustCrate {
+    crateName = "wincolor";
+    version = "0.1.4";
+    authors = [ "Andrew Gallant <jamslam@gmail.com>" ];
+    sha256 = "0cxv6hadnj5vffb8a73y7055p59n20bpqd524df85cm29dcjl38a";
+    inherit dependencies buildDependencies features;
+  };
+  aho_corasick_0_6_3 = { features?(aho_corasick_0_6_3_features {}) }: aho_corasick_0_6_3_ {
+    dependencies = mapFeatures features ([ memchr_1_0_2 ]);
+  };
+  aho_corasick_0_6_3_features = f: updateFeatures f (rec {
+    aho_corasick_0_6_3.default = (f.aho_corasick_0_6_3.default or true);
+    memchr_1_0_2.default = true;
+  }) [ memchr_1_0_2_features ];
+  ansi_term_0_10_2 = { features?(ansi_term_0_10_2_features {}) }: ansi_term_0_10_2_ {};
+  ansi_term_0_10_2_features = f: updateFeatures f (rec {
+    ansi_term_0_10_2.default = (f.ansi_term_0_10_2.default or true);
+  }) [];
+  atty_0_2_3 = { features?(atty_0_2_3_features {}) }: atty_0_2_3_ {
+    dependencies = (if kernel == "redox" then mapFeatures features ([ termion_1_5_1 ]) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_33 ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([ kernel32_sys_0_2_2 winapi_0_2_8 ]) else []);
+  };
+  atty_0_2_3_features = f: updateFeatures f (rec {
+    atty_0_2_3.default = (f.atty_0_2_3.default or true);
+    kernel32_sys_0_2_2.default = true;
+    libc_0_2_33.default = (f.libc_0_2_33.default or false);
+    termion_1_5_1.default = true;
+    winapi_0_2_8.default = true;
+  }) [ termion_1_5_1_features libc_0_2_33_features kernel32_sys_0_2_2_features winapi_0_2_8_features ];
+  backtrace_0_3_4 = { features?(backtrace_0_3_4_features {}) }: backtrace_0_3_4_ {
+    dependencies = mapFeatures features ([ cfg_if_0_1_2 rustc_demangle_0_1_5 ])
+      ++ (if (kernel == "linux" || kernel == "darwin") && !(kernel == "fuchsia") && !(kernel == "emscripten") && !(kernel == "darwin") && !(kernel == "ios") then mapFeatures features ([ ]
+      ++ (if features.backtrace_0_3_4.backtrace-sys or false then [ backtrace_sys_0_1_16 ] else [])) else [])
+      ++ (if (kernel == "linux" || kernel == "darwin") then mapFeatures features ([ libc_0_2_33 ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([ ]
+      ++ (if features.backtrace_0_3_4.dbghelp-sys or false then [ dbghelp_sys_0_2_0 ] else [])
+      ++ (if features.backtrace_0_3_4.kernel32-sys or false then [ kernel32_sys_0_2_2 ] else [])
+      ++ (if features.backtrace_0_3_4.winapi or false then [ winapi_0_2_8 ] else [])) else []);
+    features = mkFeatures (features.backtrace_0_3_4 or {});
+  };
+  backtrace_0_3_4_features = f: updateFeatures f (rec {
+    backtrace_0_3_4.addr2line =
+      (f.backtrace_0_3_4.addr2line or false) ||
+      (f.backtrace_0_3_4.gimli-symbolize or false) ||
+      (backtrace_0_3_4.gimli-symbolize or false);
+    backtrace_0_3_4.backtrace-sys =
+      (f.backtrace_0_3_4.backtrace-sys or false) ||
+      (f.backtrace_0_3_4.libbacktrace or false) ||
+      (backtrace_0_3_4.libbacktrace or false);
+    backtrace_0_3_4.coresymbolication =
+      (f.backtrace_0_3_4.coresymbolication or false) ||
+      (f.backtrace_0_3_4.default or false) ||
+      (backtrace_0_3_4.default or false);
+    backtrace_0_3_4.dbghelp =
+      (f.backtrace_0_3_4.dbghelp or false) ||
+      (f.backtrace_0_3_4.default or false) ||
+      (backtrace_0_3_4.default or false);
+    backtrace_0_3_4.dbghelp-sys =
+      (f.backtrace_0_3_4.dbghelp-sys or false) ||
+      (f.backtrace_0_3_4.dbghelp or false) ||
+      (backtrace_0_3_4.dbghelp or false);
+    backtrace_0_3_4.default = (f.backtrace_0_3_4.default or true);
+    backtrace_0_3_4.dladdr =
+      (f.backtrace_0_3_4.dladdr or false) ||
+      (f.backtrace_0_3_4.default or false) ||
+      (backtrace_0_3_4.default or false);
+    backtrace_0_3_4.findshlibs =
+      (f.backtrace_0_3_4.findshlibs or false) ||
+      (f.backtrace_0_3_4.gimli-symbolize or false) ||
+      (backtrace_0_3_4.gimli-symbolize or false);
+    backtrace_0_3_4.kernel32-sys =
+      (f.backtrace_0_3_4.kernel32-sys or false) ||
+      (f.backtrace_0_3_4.dbghelp or false) ||
+      (backtrace_0_3_4.dbghelp or false);
+    backtrace_0_3_4.libbacktrace =
+      (f.backtrace_0_3_4.libbacktrace or false) ||
+      (f.backtrace_0_3_4.default or false) ||
+      (backtrace_0_3_4.default or false);
+    backtrace_0_3_4.libunwind =
+      (f.backtrace_0_3_4.libunwind or false) ||
+      (f.backtrace_0_3_4.default or false) ||
+      (backtrace_0_3_4.default or false);
+    backtrace_0_3_4.rustc-serialize =
+      (f.backtrace_0_3_4.rustc-serialize or false) ||
+      (f.backtrace_0_3_4.serialize-rustc or false) ||
+      (backtrace_0_3_4.serialize-rustc or false);
+    backtrace_0_3_4.serde =
+      (f.backtrace_0_3_4.serde or false) ||
+      (f.backtrace_0_3_4.serialize-serde or false) ||
+      (backtrace_0_3_4.serialize-serde or false);
+    backtrace_0_3_4.serde_derive =
+      (f.backtrace_0_3_4.serde_derive or false) ||
+      (f.backtrace_0_3_4.serialize-serde or false) ||
+      (backtrace_0_3_4.serialize-serde or false);
+    backtrace_0_3_4.winapi =
+      (f.backtrace_0_3_4.winapi or false) ||
+      (f.backtrace_0_3_4.dbghelp or false) ||
+      (backtrace_0_3_4.dbghelp or false);
+    backtrace_sys_0_1_16.default = true;
+    cfg_if_0_1_2.default = true;
+    dbghelp_sys_0_2_0.default = true;
+    kernel32_sys_0_2_2.default = true;
+    libc_0_2_33.default = true;
+    rustc_demangle_0_1_5.default = true;
+    winapi_0_2_8.default = true;
+  }) [ cfg_if_0_1_2_features rustc_demangle_0_1_5_features backtrace_sys_0_1_16_features libc_0_2_33_features dbghelp_sys_0_2_0_features kernel32_sys_0_2_2_features winapi_0_2_8_features ];
+  backtrace_sys_0_1_16 = { features?(backtrace_sys_0_1_16_features {}) }: backtrace_sys_0_1_16_ {
+    dependencies = mapFeatures features ([ libc_0_2_33 ]);
+    buildDependencies = mapFeatures features ([ cc_1_0_3 ]);
+  };
+  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_3.default = true;
+    libc_0_2_33.default = true;
+  }) [ libc_0_2_33_features cc_1_0_3_features ];
+  bitflags_0_7_0 = { features?(bitflags_0_7_0_features {}) }: bitflags_0_7_0_ {};
+  bitflags_0_7_0_features = f: updateFeatures f (rec {
+    bitflags_0_7_0.default = (f.bitflags_0_7_0.default or true);
+  }) [];
+  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_6_5 = { features?(carnix_0_6_5_features {}) }: carnix_0_6_5_ {
+    dependencies = mapFeatures features ([ clap_2_28_0 env_logger_0_5_3 error_chain_0_11_0 itertools_0_7_3 log_0_4_1 nom_3_2_1 regex_0_2_2 rusqlite_0_13_0 serde_1_0_21 serde_derive_1_0_21 serde_json_1_0_6 tempdir_0_3_5 toml_0_4_5 ]);
+  };
+  carnix_0_6_5_features = f: updateFeatures f (rec {
+    carnix_0_6_5.default = (f.carnix_0_6_5.default or true);
+    clap_2_28_0.default = true;
+    env_logger_0_5_3.default = true;
+    error_chain_0_11_0.default = true;
+    itertools_0_7_3.default = true;
+    log_0_4_1.default = true;
+    nom_3_2_1.default = true;
+    regex_0_2_2.default = true;
+    rusqlite_0_13_0.default = true;
+    serde_1_0_21.default = true;
+    serde_derive_1_0_21.default = true;
+    serde_json_1_0_6.default = true;
+    tempdir_0_3_5.default = true;
+    toml_0_4_5.default = true;
+  }) [ clap_2_28_0_features env_logger_0_5_3_features error_chain_0_11_0_features itertools_0_7_3_features log_0_4_1_features nom_3_2_1_features regex_0_2_2_features rusqlite_0_13_0_features serde_1_0_21_features serde_derive_1_0_21_features serde_json_1_0_6_features tempdir_0_3_5_features toml_0_4_5_features ];
+  cc_1_0_3 = { features?(cc_1_0_3_features {}) }: cc_1_0_3_ {
+    dependencies = mapFeatures features ([]);
+    features = mkFeatures (features.cc_1_0_3 or {});
+  };
+  cc_1_0_3_features = f: updateFeatures f (rec {
+    cc_1_0_3.default = (f.cc_1_0_3.default or true);
+    cc_1_0_3.rayon =
+      (f.cc_1_0_3.rayon or false) ||
+      (f.cc_1_0_3.parallel or false) ||
+      (cc_1_0_3.parallel or false);
+  }) [];
+  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);
+  }) [];
+  chrono_0_4_0 = { features?(chrono_0_4_0_features {}) }: chrono_0_4_0_ {
+    dependencies = mapFeatures features ([ num_0_1_40 time_0_1_38 ]);
+  };
+  chrono_0_4_0_features = f: updateFeatures f (rec {
+    chrono_0_4_0.default = (f.chrono_0_4_0.default or true);
+    num_0_1_40.default = (f.num_0_1_40.default or false);
+    time_0_1_38.default = true;
+  }) [ num_0_1_40_features time_0_1_38_features ];
+  clap_2_28_0 = { features?(clap_2_28_0_features {}) }: clap_2_28_0_ {
+    dependencies = mapFeatures features ([ bitflags_1_0_1 textwrap_0_9_0 unicode_width_0_1_4 ]
+      ++ (if features.clap_2_28_0.ansi_term or false then [ ansi_term_0_10_2 ] else [])
+      ++ (if features.clap_2_28_0.atty or false then [ atty_0_2_3 ] else [])
+      ++ (if features.clap_2_28_0.strsim or false then [ strsim_0_6_0 ] else [])
+      ++ (if features.clap_2_28_0.vec_map or false then [ vec_map_0_8_0 ] else []));
+    features = mkFeatures (features.clap_2_28_0 or {});
+  };
+  clap_2_28_0_features = f: updateFeatures f (rec {
+    ansi_term_0_10_2.default = true;
+    atty_0_2_3.default = true;
+    bitflags_1_0_1.default = true;
+    clap_2_28_0.ansi_term =
+      (f.clap_2_28_0.ansi_term or false) ||
+      (f.clap_2_28_0.color or false) ||
+      (clap_2_28_0.color or false);
+    clap_2_28_0.atty =
+      (f.clap_2_28_0.atty or false) ||
+      (f.clap_2_28_0.color or false) ||
+      (clap_2_28_0.color or false);
+    clap_2_28_0.clippy =
+      (f.clap_2_28_0.clippy or false) ||
+      (f.clap_2_28_0.lints or false) ||
+      (clap_2_28_0.lints or false);
+    clap_2_28_0.color =
+      (f.clap_2_28_0.color or false) ||
+      (f.clap_2_28_0.default or false) ||
+      (clap_2_28_0.default or false);
+    clap_2_28_0.default = (f.clap_2_28_0.default or true);
+    clap_2_28_0.strsim =
+      (f.clap_2_28_0.strsim or false) ||
+      (f.clap_2_28_0.suggestions or false) ||
+      (clap_2_28_0.suggestions or false);
+    clap_2_28_0.suggestions =
+      (f.clap_2_28_0.suggestions or false) ||
+      (f.clap_2_28_0.default or false) ||
+      (clap_2_28_0.default or false);
+    clap_2_28_0.term_size =
+      (f.clap_2_28_0.term_size or false) ||
+      (f.clap_2_28_0.wrap_help or false) ||
+      (clap_2_28_0.wrap_help or false);
+    clap_2_28_0.vec_map =
+      (f.clap_2_28_0.vec_map or false) ||
+      (f.clap_2_28_0.default or false) ||
+      (clap_2_28_0.default or false);
+    clap_2_28_0.yaml =
+      (f.clap_2_28_0.yaml or false) ||
+      (f.clap_2_28_0.doc or false) ||
+      (clap_2_28_0.doc or false);
+    clap_2_28_0.yaml-rust =
+      (f.clap_2_28_0.yaml-rust or false) ||
+      (f.clap_2_28_0.yaml or false) ||
+      (clap_2_28_0.yaml or false);
+    strsim_0_6_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_28_0.wrap_help or false) ||
+      (f.clap_2_28_0.wrap_help or false);
+    unicode_width_0_1_4.default = true;
+    vec_map_0_8_0.default = true;
+  }) [ ansi_term_0_10_2_features atty_0_2_3_features bitflags_1_0_1_features strsim_0_6_0_features textwrap_0_9_0_features unicode_width_0_1_4_features vec_map_0_8_0_features ];
+  dbghelp_sys_0_2_0 = { features?(dbghelp_sys_0_2_0_features {}) }: dbghelp_sys_0_2_0_ {
+    dependencies = mapFeatures features ([ winapi_0_2_8 ]);
+    buildDependencies = mapFeatures features ([ winapi_build_0_1_1 ]);
+  };
+  dbghelp_sys_0_2_0_features = f: updateFeatures f (rec {
+    dbghelp_sys_0_2_0.default = (f.dbghelp_sys_0_2_0.default or true);
+    winapi_0_2_8.default = true;
+    winapi_build_0_1_1.default = true;
+  }) [ winapi_0_2_8_features winapi_build_0_1_1_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_4_0 = { features?(either_1_4_0_features {}) }: either_1_4_0_ {
+    dependencies = mapFeatures features ([]);
+    features = mkFeatures (features.either_1_4_0 or {});
+  };
+  either_1_4_0_features = f: updateFeatures f (rec {
+    either_1_4_0.default = (f.either_1_4_0.default or true);
+    either_1_4_0.use_std =
+      (f.either_1_4_0.use_std or false) ||
+      (f.either_1_4_0.default or false) ||
+      (either_1_4_0.default or false);
+  }) [];
+  env_logger_0_5_3 = { features?(env_logger_0_5_3_features {}) }: env_logger_0_5_3_ {
+    dependencies = mapFeatures features ([ atty_0_2_3 chrono_0_4_0 log_0_4_1 termcolor_0_3_3 ]
+      ++ (if features.env_logger_0_5_3.regex or false then [ regex_0_2_2 ] else []));
+    features = mkFeatures (features.env_logger_0_5_3 or {});
+  };
+  env_logger_0_5_3_features = f: updateFeatures f (rec {
+    atty_0_2_3.default = true;
+    chrono_0_4_0.default = true;
+    env_logger_0_5_3.default = (f.env_logger_0_5_3.default or true);
+    env_logger_0_5_3.regex =
+      (f.env_logger_0_5_3.regex or false) ||
+      (f.env_logger_0_5_3.default or false) ||
+      (env_logger_0_5_3.default or false);
+    log_0_4_1.default = true;
+    log_0_4_1.std = true;
+    regex_0_2_2.default = true;
+    termcolor_0_3_3.default = true;
+  }) [ atty_0_2_3_features chrono_0_4_0_features log_0_4_1_features regex_0_2_2_features termcolor_0_3_3_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_4 ] else []));
+    features = mkFeatures (features.error_chain_0_11_0 or {});
+  };
+  error_chain_0_11_0_features = f: updateFeatures f (rec {
+    backtrace_0_3_4.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_4_features ];
+  fuchsia_zircon_0_2_1 = { features?(fuchsia_zircon_0_2_1_features {}) }: fuchsia_zircon_0_2_1_ {
+    dependencies = mapFeatures features ([ fuchsia_zircon_sys_0_2_0 ]);
+  };
+  fuchsia_zircon_0_2_1_features = f: updateFeatures f (rec {
+    fuchsia_zircon_0_2_1.default = (f.fuchsia_zircon_0_2_1.default or true);
+    fuchsia_zircon_sys_0_2_0.default = true;
+  }) [ fuchsia_zircon_sys_0_2_0_features ];
+  fuchsia_zircon_sys_0_2_0 = { features?(fuchsia_zircon_sys_0_2_0_features {}) }: fuchsia_zircon_sys_0_2_0_ {
+    dependencies = mapFeatures features ([ bitflags_0_7_0 ]);
+  };
+  fuchsia_zircon_sys_0_2_0_features = f: updateFeatures f (rec {
+    bitflags_0_7_0.default = true;
+    fuchsia_zircon_sys_0_2_0.default = (f.fuchsia_zircon_sys_0_2_0.default or true);
+  }) [ bitflags_0_7_0_features ];
+  itertools_0_7_3 = { features?(itertools_0_7_3_features {}) }: itertools_0_7_3_ {
+    dependencies = mapFeatures features ([ either_1_4_0 ]);
+    features = mkFeatures (features.itertools_0_7_3 or {});
+  };
+  itertools_0_7_3_features = f: updateFeatures f (rec {
+    either_1_4_0.default = (f.either_1_4_0.default or false);
+    itertools_0_7_3.default = (f.itertools_0_7_3.default or true);
+    itertools_0_7_3.use_std =
+      (f.itertools_0_7_3.use_std or false) ||
+      (f.itertools_0_7_3.default or false) ||
+      (itertools_0_7_3.default or false);
+  }) [ either_1_4_0_features ];
+  itoa_0_3_4 = { features?(itoa_0_3_4_features {}) }: itoa_0_3_4_ {
+    features = mkFeatures (features.itoa_0_3_4 or {});
+  };
+  itoa_0_3_4_features = f: updateFeatures f (rec {
+    itoa_0_3_4.default = (f.itoa_0_3_4.default or true);
+  }) [];
+  kernel32_sys_0_2_2 = { features?(kernel32_sys_0_2_2_features {}) }: kernel32_sys_0_2_2_ {
+    dependencies = mapFeatures features ([ winapi_0_2_8 ]);
+    buildDependencies = mapFeatures features ([ winapi_build_0_1_1 ]);
+  };
+  kernel32_sys_0_2_2_features = f: updateFeatures f (rec {
+    kernel32_sys_0_2_2.default = (f.kernel32_sys_0_2_2.default or true);
+    winapi_0_2_8.default = true;
+    winapi_build_0_1_1.default = true;
+  }) [ winapi_0_2_8_features winapi_build_0_1_1_features ];
+  lazy_static_0_2_11 = { features?(lazy_static_0_2_11_features {}) }: lazy_static_0_2_11_ {
+    dependencies = mapFeatures features ([]);
+    features = mkFeatures (features.lazy_static_0_2_11 or {});
+  };
+  lazy_static_0_2_11_features = f: updateFeatures f (rec {
+    lazy_static_0_2_11.compiletest_rs =
+      (f.lazy_static_0_2_11.compiletest_rs or false) ||
+      (f.lazy_static_0_2_11.compiletest or false) ||
+      (lazy_static_0_2_11.compiletest or false);
+    lazy_static_0_2_11.default = (f.lazy_static_0_2_11.default or true);
+    lazy_static_0_2_11.nightly =
+      (f.lazy_static_0_2_11.nightly or false) ||
+      (f.lazy_static_0_2_11.spin_no_std or false) ||
+      (lazy_static_0_2_11.spin_no_std or false);
+    lazy_static_0_2_11.spin =
+      (f.lazy_static_0_2_11.spin or false) ||
+      (f.lazy_static_0_2_11.spin_no_std or false) ||
+      (lazy_static_0_2_11.spin_no_std or false);
+  }) [];
+  libc_0_2_33 = { features?(libc_0_2_33_features {}) }: libc_0_2_33_ {
+    features = mkFeatures (features.libc_0_2_33 or {});
+  };
+  libc_0_2_33_features = f: updateFeatures f (rec {
+    libc_0_2_33.default = (f.libc_0_2_33.default or true);
+    libc_0_2_33.use_std =
+      (f.libc_0_2_33.use_std or false) ||
+      (f.libc_0_2_33.default or false) ||
+      (libc_0_2_33.default or false);
+  }) [];
+  libsqlite3_sys_0_9_0 = { features?(libsqlite3_sys_0_9_0_features {}) }: libsqlite3_sys_0_9_0_ {
+    dependencies = (if abi == "msvc" then mapFeatures features ([]) else []);
+    buildDependencies = mapFeatures features ([ ]
+      ++ (if features.libsqlite3_sys_0_9_0.pkg-config or false then [ pkg_config_0_3_9 ] else []));
+    features = mkFeatures (features.libsqlite3_sys_0_9_0 or {});
+  };
+  libsqlite3_sys_0_9_0_features = f: updateFeatures f (rec {
+    libsqlite3_sys_0_9_0.bindgen =
+      (f.libsqlite3_sys_0_9_0.bindgen or false) ||
+      (f.libsqlite3_sys_0_9_0.buildtime_bindgen or false) ||
+      (libsqlite3_sys_0_9_0.buildtime_bindgen or false);
+    libsqlite3_sys_0_9_0.cc =
+      (f.libsqlite3_sys_0_9_0.cc or false) ||
+      (f.libsqlite3_sys_0_9_0.bundled or false) ||
+      (libsqlite3_sys_0_9_0.bundled or false);
+    libsqlite3_sys_0_9_0.default = (f.libsqlite3_sys_0_9_0.default or true);
+    libsqlite3_sys_0_9_0.min_sqlite_version_3_6_8 =
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_6_8 or false) ||
+      (f.libsqlite3_sys_0_9_0.default or false) ||
+      (libsqlite3_sys_0_9_0.default or false);
+    libsqlite3_sys_0_9_0.pkg-config =
+      (f.libsqlite3_sys_0_9_0.pkg-config or false) ||
+      (f.libsqlite3_sys_0_9_0.buildtime_bindgen or false) ||
+      (libsqlite3_sys_0_9_0.buildtime_bindgen or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_6_11 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_6_11 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_6_23 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_6_23 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_6_8 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_6_8 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_7_16 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_7_16 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_7_3 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_7_3 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_7_4 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_7_4 or false);
+    libsqlite3_sys_0_9_0.vcpkg =
+      (f.libsqlite3_sys_0_9_0.vcpkg or false) ||
+      (f.libsqlite3_sys_0_9_0.buildtime_bindgen or false) ||
+      (libsqlite3_sys_0_9_0.buildtime_bindgen or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_6_11 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_6_11 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_6_23 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_6_23 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_6_8 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_6_8 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_7_16 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_7_16 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_7_3 or false) ||
+      (libsqlite3_sys_0_9_0.min_sqlite_version_3_7_3 or false) ||
+      (f.libsqlite3_sys_0_9_0.min_sqlite_version_3_7_4 or false) ||
+      (libsqlite3_sys_0_9_0.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_33 ] else []));
+    features = mkFeatures (features.memchr_1_0_2 or {});
+  };
+  memchr_1_0_2_features = f: updateFeatures f (rec {
+    libc_0_2_33.default = (f.libc_0_2_33.default or false);
+    libc_0_2_33.use_std =
+      (f.libc_0_2_33.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_33_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_0_1_40 = { features?(num_0_1_40_features {}) }: num_0_1_40_ {
+    dependencies = mapFeatures features ([ num_integer_0_1_35 num_iter_0_1_34 num_traits_0_1_40 ]);
+    features = mkFeatures (features.num_0_1_40 or {});
+  };
+  num_0_1_40_features = f: updateFeatures f (rec {
+    num_0_1_40.bigint =
+      (f.num_0_1_40.bigint or false) ||
+      (f.num_0_1_40.default or false) ||
+      (num_0_1_40.default or false);
+    num_0_1_40.complex =
+      (f.num_0_1_40.complex or false) ||
+      (f.num_0_1_40.default or false) ||
+      (num_0_1_40.default or false);
+    num_0_1_40.default = (f.num_0_1_40.default or true);
+    num_0_1_40.num-bigint =
+      (f.num_0_1_40.num-bigint or false) ||
+      (f.num_0_1_40.bigint or false) ||
+      (num_0_1_40.bigint or false);
+    num_0_1_40.num-complex =
+      (f.num_0_1_40.num-complex or false) ||
+      (f.num_0_1_40.complex or false) ||
+      (num_0_1_40.complex or false);
+    num_0_1_40.num-rational =
+      (f.num_0_1_40.num-rational or false) ||
+      (f.num_0_1_40.rational or false) ||
+      (num_0_1_40.rational or false);
+    num_0_1_40.rational =
+      (f.num_0_1_40.rational or false) ||
+      (f.num_0_1_40.default or false) ||
+      (num_0_1_40.default or false);
+    num_0_1_40.rustc-serialize =
+      (f.num_0_1_40.rustc-serialize or false) ||
+      (f.num_0_1_40.default or false) ||
+      (num_0_1_40.default or false);
+    num_integer_0_1_35.default = true;
+    num_iter_0_1_34.default = true;
+    num_traits_0_1_40.default = true;
+  }) [ num_integer_0_1_35_features num_iter_0_1_34_features num_traits_0_1_40_features ];
+  num_integer_0_1_35 = { features?(num_integer_0_1_35_features {}) }: num_integer_0_1_35_ {
+    dependencies = mapFeatures features ([ num_traits_0_1_40 ]);
+  };
+  num_integer_0_1_35_features = f: updateFeatures f (rec {
+    num_integer_0_1_35.default = (f.num_integer_0_1_35.default or true);
+    num_traits_0_1_40.default = true;
+  }) [ num_traits_0_1_40_features ];
+  num_iter_0_1_34 = { features?(num_iter_0_1_34_features {}) }: num_iter_0_1_34_ {
+    dependencies = mapFeatures features ([ num_integer_0_1_35 num_traits_0_1_40 ]);
+  };
+  num_iter_0_1_34_features = f: updateFeatures f (rec {
+    num_integer_0_1_35.default = true;
+    num_iter_0_1_34.default = (f.num_iter_0_1_34.default or true);
+    num_traits_0_1_40.default = true;
+  }) [ num_integer_0_1_35_features num_traits_0_1_40_features ];
+  num_traits_0_1_40 = { features?(num_traits_0_1_40_features {}) }: num_traits_0_1_40_ {};
+  num_traits_0_1_40_features = f: updateFeatures f (rec {
+    num_traits_0_1_40.default = (f.num_traits_0_1_40.default or true);
+  }) [];
+  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);
+  }) [];
+  quote_0_3_15 = { features?(quote_0_3_15_features {}) }: quote_0_3_15_ {};
+  quote_0_3_15_features = f: updateFeatures f (rec {
+    quote_0_3_15.default = (f.quote_0_3_15.default or true);
+  }) [];
+  rand_0_3_18 = { features?(rand_0_3_18_features {}) }: rand_0_3_18_ {
+    dependencies = mapFeatures features ([ libc_0_2_33 ])
+      ++ (if kernel == "fuchsia" then mapFeatures features ([ fuchsia_zircon_0_2_1 ]) else []);
+    features = mkFeatures (features.rand_0_3_18 or {});
+  };
+  rand_0_3_18_features = f: updateFeatures f (rec {
+    fuchsia_zircon_0_2_1.default = true;
+    libc_0_2_33.default = true;
+    rand_0_3_18.default = (f.rand_0_3_18.default or true);
+    rand_0_3_18.i128_support =
+      (f.rand_0_3_18.i128_support or false) ||
+      (f.rand_0_3_18.nightly or false) ||
+      (rand_0_3_18.nightly or false);
+  }) [ libc_0_2_33_features fuchsia_zircon_0_2_1_features ];
+  redox_syscall_0_1_32 = { features?(redox_syscall_0_1_32_features {}) }: redox_syscall_0_1_32_ {};
+  redox_syscall_0_1_32_features = f: updateFeatures f (rec {
+    redox_syscall_0_1_32.default = (f.redox_syscall_0_1_32.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_32 ]);
+  };
+  redox_termios_0_1_1_features = f: updateFeatures f (rec {
+    redox_syscall_0_1_32.default = true;
+    redox_termios_0_1_1.default = (f.redox_termios_0_1_1.default or true);
+  }) [ redox_syscall_0_1_32_features ];
+  regex_0_2_2 = { features?(regex_0_2_2_features {}) }: regex_0_2_2_ {
+    dependencies = mapFeatures features ([ aho_corasick_0_6_3 memchr_1_0_2 regex_syntax_0_4_1 thread_local_0_3_4 utf8_ranges_1_0_0 ]);
+    features = mkFeatures (features.regex_0_2_2 or {});
+  };
+  regex_0_2_2_features = f: updateFeatures f (rec {
+    aho_corasick_0_6_3.default = true;
+    memchr_1_0_2.default = true;
+    regex_0_2_2.default = (f.regex_0_2_2.default or true);
+    regex_0_2_2.simd =
+      (f.regex_0_2_2.simd or false) ||
+      (f.regex_0_2_2.simd-accel or false) ||
+      (regex_0_2_2.simd-accel or false);
+    regex_syntax_0_4_1.default = true;
+    thread_local_0_3_4.default = true;
+    utf8_ranges_1_0_0.default = true;
+  }) [ aho_corasick_0_6_3_features memchr_1_0_2_features regex_syntax_0_4_1_features thread_local_0_3_4_features utf8_ranges_1_0_0_features ];
+  regex_syntax_0_4_1 = { features?(regex_syntax_0_4_1_features {}) }: regex_syntax_0_4_1_ {};
+  regex_syntax_0_4_1_features = f: updateFeatures f (rec {
+    regex_syntax_0_4_1.default = (f.regex_syntax_0_4_1.default or true);
+  }) [];
+  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_0 lru_cache_0_1_1 time_0_1_38 ]);
+    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_0.buildtime_bindgen =
+      (f.libsqlite3_sys_0_9_0.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_0.bundled =
+      (f.libsqlite3_sys_0_9_0.bundled or false) ||
+      (rusqlite_0_13_0.bundled or false) ||
+      (f.rusqlite_0_13_0.bundled or false);
+    libsqlite3_sys_0_9_0.default = true;
+    libsqlite3_sys_0_9_0.min_sqlite_version_3_6_11 =
+      (f.libsqlite3_sys_0_9_0.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_0.min_sqlite_version_3_6_23 =
+      (f.libsqlite3_sys_0_9_0.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_0.min_sqlite_version_3_7_3 =
+      (f.libsqlite3_sys_0_9_0.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_0.min_sqlite_version_3_7_4 =
+      (f.libsqlite3_sys_0_9_0.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_0.sqlcipher =
+      (f.libsqlite3_sys_0_9_0.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_38.default = true;
+  }) [ bitflags_1_0_1_features libsqlite3_sys_0_9_0_features lru_cache_0_1_1_features time_0_1_38_features ];
+  rustc_demangle_0_1_5 = { features?(rustc_demangle_0_1_5_features {}) }: rustc_demangle_0_1_5_ {};
+  rustc_demangle_0_1_5_features = f: updateFeatures f (rec {
+    rustc_demangle_0_1_5.default = (f.rustc_demangle_0_1_5.default or true);
+  }) [];
+  serde_1_0_21 = { features?(serde_1_0_21_features {}) }: serde_1_0_21_ {
+    dependencies = mapFeatures features ([]);
+    features = mkFeatures (features.serde_1_0_21 or {});
+  };
+  serde_1_0_21_features = f: updateFeatures f (rec {
+    serde_1_0_21.default = (f.serde_1_0_21.default or true);
+    serde_1_0_21.serde_derive =
+      (f.serde_1_0_21.serde_derive or false) ||
+      (f.serde_1_0_21.derive or false) ||
+      (serde_1_0_21.derive or false) ||
+      (f.serde_1_0_21.playground or false) ||
+      (serde_1_0_21.playground or false);
+    serde_1_0_21.std =
+      (f.serde_1_0_21.std or false) ||
+      (f.serde_1_0_21.default or false) ||
+      (serde_1_0_21.default or false);
+    serde_1_0_21.unstable =
+      (f.serde_1_0_21.unstable or false) ||
+      (f.serde_1_0_21.alloc or false) ||
+      (serde_1_0_21.alloc or false);
+  }) [];
+  serde_derive_1_0_21 = { features?(serde_derive_1_0_21_features {}) }: serde_derive_1_0_21_ {
+    dependencies = mapFeatures features ([ quote_0_3_15 serde_derive_internals_0_17_0 syn_0_11_11 ]);
+  };
+  serde_derive_1_0_21_features = f: updateFeatures f (rec {
+    quote_0_3_15.default = true;
+    serde_derive_1_0_21.default = (f.serde_derive_1_0_21.default or true);
+    serde_derive_internals_0_17_0.default = (f.serde_derive_internals_0_17_0.default or false);
+    syn_0_11_11.default = true;
+    syn_0_11_11.visit = true;
+  }) [ quote_0_3_15_features serde_derive_internals_0_17_0_features syn_0_11_11_features ];
+  serde_derive_internals_0_17_0 = { features?(serde_derive_internals_0_17_0_features {}) }: serde_derive_internals_0_17_0_ {
+    dependencies = mapFeatures features ([ syn_0_11_11 synom_0_11_3 ]);
+  };
+  serde_derive_internals_0_17_0_features = f: updateFeatures f (rec {
+    serde_derive_internals_0_17_0.default = (f.serde_derive_internals_0_17_0.default or true);
+    syn_0_11_11.default = (f.syn_0_11_11.default or false);
+    syn_0_11_11.parsing = true;
+    synom_0_11_3.default = true;
+  }) [ syn_0_11_11_features synom_0_11_3_features ];
+  serde_json_1_0_6 = { features?(serde_json_1_0_6_features {}) }: serde_json_1_0_6_ {
+    dependencies = mapFeatures features ([ dtoa_0_4_2 itoa_0_3_4 num_traits_0_1_40 serde_1_0_21 ]);
+    features = mkFeatures (features.serde_json_1_0_6 or {});
+  };
+  serde_json_1_0_6_features = f: updateFeatures f (rec {
+    dtoa_0_4_2.default = true;
+    itoa_0_3_4.default = true;
+    num_traits_0_1_40.default = true;
+    serde_1_0_21.default = true;
+    serde_json_1_0_6.default = (f.serde_json_1_0_6.default or true);
+    serde_json_1_0_6.linked-hash-map =
+      (f.serde_json_1_0_6.linked-hash-map or false) ||
+      (f.serde_json_1_0_6.preserve_order or false) ||
+      (serde_json_1_0_6.preserve_order or false);
+  }) [ dtoa_0_4_2_features itoa_0_3_4_features num_traits_0_1_40_features serde_1_0_21_features ];
+  strsim_0_6_0 = { features?(strsim_0_6_0_features {}) }: strsim_0_6_0_ {};
+  strsim_0_6_0_features = f: updateFeatures f (rec {
+    strsim_0_6_0.default = (f.strsim_0_6_0.default or true);
+  }) [];
+  syn_0_11_11 = { features?(syn_0_11_11_features {}) }: syn_0_11_11_ {
+    dependencies = mapFeatures features ([ ]
+      ++ (if features.syn_0_11_11.quote or false then [ quote_0_3_15 ] else [])
+      ++ (if features.syn_0_11_11.synom or false then [ synom_0_11_3 ] else [])
+      ++ (if features.syn_0_11_11.unicode-xid or false then [ unicode_xid_0_0_4 ] else []));
+    features = mkFeatures (features.syn_0_11_11 or {});
+  };
+  syn_0_11_11_features = f: updateFeatures f (rec {
+    quote_0_3_15.default = true;
+    syn_0_11_11.default = (f.syn_0_11_11.default or true);
+    syn_0_11_11.parsing =
+      (f.syn_0_11_11.parsing or false) ||
+      (f.syn_0_11_11.default or false) ||
+      (syn_0_11_11.default or false);
+    syn_0_11_11.printing =
+      (f.syn_0_11_11.printing or false) ||
+      (f.syn_0_11_11.default or false) ||
+      (syn_0_11_11.default or false);
+    syn_0_11_11.quote =
+      (f.syn_0_11_11.quote or false) ||
+      (f.syn_0_11_11.printing or false) ||
+      (syn_0_11_11.printing or false);
+    syn_0_11_11.synom =
+      (f.syn_0_11_11.synom or false) ||
+      (f.syn_0_11_11.parsing or false) ||
+      (syn_0_11_11.parsing or false);
+    syn_0_11_11.unicode-xid =
+      (f.syn_0_11_11.unicode-xid or false) ||
+      (f.syn_0_11_11.parsing or false) ||
+      (syn_0_11_11.parsing or false);
+    synom_0_11_3.default = true;
+    unicode_xid_0_0_4.default = true;
+  }) [ quote_0_3_15_features synom_0_11_3_features unicode_xid_0_0_4_features ];
+  synom_0_11_3 = { features?(synom_0_11_3_features {}) }: synom_0_11_3_ {
+    dependencies = mapFeatures features ([ unicode_xid_0_0_4 ]);
+  };
+  synom_0_11_3_features = f: updateFeatures f (rec {
+    synom_0_11_3.default = (f.synom_0_11_3.default or true);
+    unicode_xid_0_0_4.default = true;
+  }) [ unicode_xid_0_0_4_features ];
+  tempdir_0_3_5 = { features?(tempdir_0_3_5_features {}) }: tempdir_0_3_5_ {
+    dependencies = mapFeatures features ([ rand_0_3_18 ]);
+  };
+  tempdir_0_3_5_features = f: updateFeatures f (rec {
+    rand_0_3_18.default = true;
+    tempdir_0_3_5.default = (f.tempdir_0_3_5.default or true);
+  }) [ rand_0_3_18_features ];
+  termcolor_0_3_3 = { features?(termcolor_0_3_3_features {}) }: termcolor_0_3_3_ {
+    dependencies = (if kernel == "windows" then mapFeatures features ([ wincolor_0_1_4 ]) else []);
+  };
+  termcolor_0_3_3_features = f: updateFeatures f (rec {
+    termcolor_0_3_3.default = (f.termcolor_0_3_3.default or true);
+    wincolor_0_1_4.default = true;
+  }) [ wincolor_0_1_4_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_33 ]) else [])
+      ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_32 redox_termios_0_1_1 ]) else []);
+  };
+  termion_1_5_1_features = f: updateFeatures f (rec {
+    libc_0_2_33.default = true;
+    redox_syscall_0_1_32.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_33_features redox_syscall_0_1_32_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_4 = { features?(thread_local_0_3_4_features {}) }: thread_local_0_3_4_ {
+    dependencies = mapFeatures features ([ lazy_static_0_2_11 unreachable_1_0_0 ]);
+  };
+  thread_local_0_3_4_features = f: updateFeatures f (rec {
+    lazy_static_0_2_11.default = true;
+    thread_local_0_3_4.default = (f.thread_local_0_3_4.default or true);
+    unreachable_1_0_0.default = true;
+  }) [ lazy_static_0_2_11_features unreachable_1_0_0_features ];
+  time_0_1_38 = { features?(time_0_1_38_features {}) }: time_0_1_38_ {
+    dependencies = mapFeatures features ([ libc_0_2_33 ])
+      ++ (if kernel == "redox" then mapFeatures features ([ redox_syscall_0_1_32 ]) else [])
+      ++ (if kernel == "windows" then mapFeatures features ([ kernel32_sys_0_2_2 winapi_0_2_8 ]) else []);
+  };
+  time_0_1_38_features = f: updateFeatures f (rec {
+    kernel32_sys_0_2_2.default = true;
+    libc_0_2_33.default = true;
+    redox_syscall_0_1_32.default = true;
+    time_0_1_38.default = (f.time_0_1_38.default or true);
+    winapi_0_2_8.default = true;
+  }) [ libc_0_2_33_features redox_syscall_0_1_32_features kernel32_sys_0_2_2_features winapi_0_2_8_features ];
+  toml_0_4_5 = { features?(toml_0_4_5_features {}) }: toml_0_4_5_ {
+    dependencies = mapFeatures features ([ serde_1_0_21 ]);
+  };
+  toml_0_4_5_features = f: updateFeatures f (rec {
+    serde_1_0_21.default = true;
+    toml_0_4_5.default = (f.toml_0_4_5.default or true);
+  }) [ serde_1_0_21_features ];
+  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_0_4 = { features?(unicode_xid_0_0_4_features {}) }: unicode_xid_0_0_4_ {
+    features = mkFeatures (features.unicode_xid_0_0_4 or {});
+  };
+  unicode_xid_0_0_4_features = f: updateFeatures f (rec {
+    unicode_xid_0_0_4.default = (f.unicode_xid_0_0_4.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_2 = { features?(vcpkg_0_2_2_features {}) }: vcpkg_0_2_2_ {};
+  vcpkg_0_2_2_features = f: updateFeatures f (rec {
+    vcpkg_0_2_2.default = (f.vcpkg_0_2_2.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_2_8 = { features?(winapi_0_2_8_features {}) }: winapi_0_2_8_ {};
+  winapi_0_2_8_features = f: updateFeatures f (rec {
+    winapi_0_2_8.default = (f.winapi_0_2_8.default or true);
+  }) [];
+  winapi_build_0_1_1 = { features?(winapi_build_0_1_1_features {}) }: winapi_build_0_1_1_ {};
+  winapi_build_0_1_1_features = f: updateFeatures f (rec {
+    winapi_build_0_1_1.default = (f.winapi_build_0_1_1.default or true);
+  }) [];
+  wincolor_0_1_4 = { features?(wincolor_0_1_4_features {}) }: wincolor_0_1_4_ {
+    dependencies = mapFeatures features ([ kernel32_sys_0_2_2 winapi_0_2_8 ]);
+  };
+  wincolor_0_1_4_features = f: updateFeatures f (rec {
+    kernel32_sys_0_2_2.default = true;
+    winapi_0_2_8.default = true;
+    wincolor_0_1_4.default = (f.wincolor_0_1_4.default or true);
+  }) [ kernel32_sys_0_2_2_features winapi_0_2_8_features ];
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3462be10bfec..d1bc39902e80 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6488,11 +6488,7 @@ with pkgs;
 
   buildRustCrate = callPackage ../build-support/rust/build-rust-crate.nix { };
 
-  carnix =
-    let carnix = callPackage ../build-support/rust/carnix.nix { };
-        carnixFeatures = carnix.carnix_0_6_0_features {};
-    in
-    carnix.carnix_0_6_0 carnixFeatures;
+  carnix = (callPackage ../build-support/rust/carnix.nix { }).carnix { };
 
   defaultCrateOverrides = callPackage ../build-support/rust/default-crate-overrides.nix { };