From 831d7f162c63b7a9969379c632d8010b1b1cddb6 Mon Sep 17 00:00:00 2001 From: Ruben Moor Date: Fri, 17 Jul 2020 20:28:50 -0500 Subject: [PATCH] local nix package --- Cargo.nix | 4976 +++++++++++++++++++++++++++++++++++++++++++++++++++ default.nix | 8 +- 2 files changed, 4978 insertions(+), 6 deletions(-) create mode 100644 Cargo.nix diff --git a/Cargo.nix b/Cargo.nix new file mode 100644 index 00000000..016f2a61 --- /dev/null +++ b/Cargo.nix @@ -0,0 +1,4976 @@ + +# This file was @generated by crate2nix 0.8.0 with the command: +# "generate" +# See https://github.com/kolloch/crate2nix for more info. + +{ nixpkgs ? +, pkgs ? import nixpkgs { config = {}; } +, lib ? pkgs.lib +, stdenv ? pkgs.stdenv +, buildRustCrate ? pkgs.buildRustCrate + # This is used as the `crateOverrides` argument for `buildRustCrate`. +, defaultCrateOverrides ? pkgs.defaultCrateOverrides + # The features to enable for the root_crate or the workspace_members. +, rootFeatures ? [ "default" ] + # If true, throw errors instead of issueing deprecation warnings. +, strictDeprecation ? false + # Whether to perform release builds: longer compile times, faster binaries. +, release ? true +}: + +rec { + # + # "public" attributes that we attempt to keep stable with new versions of crate2nix. + # + + rootCrate = rec { + packageId = "mdbook"; + + # Use this attribute to refer to the derivation building your root crate package. + # You can override the features with rootCrate.build.override { features = [ "default" "feature1" ... ]; }. + build = internal.buildRustCrateWithFeatures { + inherit packageId; + }; + + # Debug support which might change between releases. + # File a bug if you depend on any for non-debug work! + debug = internal.debugCrate { inherit packageId; }; + }; + root_crate = + internal.deprecationWarning + "root_crate is deprecated since crate2nix 0.4. Please use rootCrate instead." + rootCrate.build; + # Refer your crate build derivation by name here. + # You can override the features with + # workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }. + workspaceMembers = { + "mdbook" = rec { + packageId = "mdbook"; + build = internal.buildRustCrateWithFeatures { + packageId = "mdbook"; + }; + + # Debug support which might change between releases. + # File a bug if you depend on any for non-debug work! + debug = internal.debugCrate { inherit packageId; }; + }; + }; + workspace_members = + internal.deprecationWarning + "workspace_members is deprecated in crate2nix 0.4. Please use workspaceMembers instead." + lib.mapAttrs (n: v: v.build) workspaceMembers; + + # + # "internal" ("private") attributes that may change in every new version of crate2nix. + # + + internal = rec { + # Build and dependency information for crates. + # Many of the fields are passed one-to-one to buildRustCrate. + # + # Noteworthy: + # * `dependencies`/`buildDependencies`: similar to the corresponding fields for buildRustCrate. + # but with additional information which is used during dependency/feature resolution. + # * `resolvedDependencies`: the selected default features reported by cargo - only included for debugging. + # * `devDependencies` as of now not used by `buildRustCrate` but used to + # inject test dependencies into the build + + crates = { + "aho-corasick" = rec { + crateName = "aho-corasick"; + version = "0.7.10"; + edition = "2015"; + sha256 = "1nka9509afjgal6lpymn8w2lq11dmjwxs8yjcmzys966if5l05l7"; + libName = "aho_corasick"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "memchr"; + packageId = "memchr"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + "std" = [ "memchr/use_std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "ammonia" = rec { + crateName = "ammonia"; + version = "3.1.0"; + edition = "2018"; + sha256 = "0fzaj1fx3yhz2qd47gfvz7n8xjrnn37w2hp4qlyzpczlf18wisl9"; + authors = [ + "Michael Howell " + ]; + dependencies = [ + { + name = "html5ever"; + packageId = "html5ever"; + } + { + name = "lazy_static"; + packageId = "lazy_static"; + } + { + name = "maplit"; + packageId = "maplit"; + } + { + name = "markup5ever_rcdom"; + packageId = "markup5ever_rcdom"; + } + { + name = "matches"; + packageId = "matches"; + } + { + name = "tendril"; + packageId = "tendril"; + } + { + name = "url"; + packageId = "url"; + } + ]; + + }; + "ansi_term" = rec { + crateName = "ansi_term"; + version = "0.11.0"; + edition = "2015"; + sha256 = "16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf"; + authors = [ + "ogham@bsago.me" + "Ryan Scheel (Havvy) " + "Josh Triplett " + ]; + dependencies = [ + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: (target."os" == "windows"); + features = [ "errhandlingapi" "consoleapi" "processenv" ]; + } + ]; + + }; + "anyhow" = rec { + crateName = "anyhow"; + version = "1.0.28"; + edition = "2018"; + sha256 = "1zzvf2sj0n5z697ngqx1q4aficxw48djrzkxcp5hzhw099s0v9nr"; + authors = [ + "David Tolnay " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "atty" = rec { + crateName = "atty"; + version = "0.2.14"; + edition = "2015"; + sha256 = "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr"; + authors = [ + "softprops " + ]; + dependencies = [ + { + name = "hermit-abi"; + packageId = "hermit-abi"; + target = { target, features }: (target."os" == "hermit"); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: target."unix"; + } + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "consoleapi" "processenv" "minwinbase" "minwindef" "winbase" ]; + } + ]; + + }; + "autocfg" = rec { + crateName = "autocfg"; + version = "1.0.0"; + edition = "2015"; + sha256 = "17cv6pwb4q08s0ynpr4n8hv5299hcmhdgvdchzixfpw8y5qcgapq"; + authors = [ + "Josh Stone " + ]; + + }; + "base64 0.11.0" = rec { + crateName = "base64"; + version = "0.11.0"; + edition = "2018"; + sha256 = "1iqmims6yvr6vwzyy54qd672zw29ipjj17p8klcr578c9ajpw6xl"; + authors = [ + "Alice Maz " + "Marshall Pierce " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "base64 0.12.0" = rec { + crateName = "base64"; + version = "0.12.0"; + edition = "2018"; + sha256 = "1czzrk3i89259m47x144x2nvzh6cz6ynnnpax7wlhgyw1b6s4p3x"; + authors = [ + "Alice Maz " + "Marshall Pierce " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "bit-set" = rec { + crateName = "bit-set"; + version = "0.5.1"; + edition = "2015"; + sha256 = "100ac8867bvbx9kv634w4xjk98b71i8nq4wdcvpf3cf4ha4j6k78"; + authors = [ + "Alexis Beingessner " + ]; + dependencies = [ + { + name = "bit-vec"; + packageId = "bit-vec"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + "nightly" = [ "bit-vec/nightly" ]; + "std" = [ "bit-vec/std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "bit-vec" = rec { + crateName = "bit-vec"; + version = "0.5.1"; + edition = "2015"; + sha256 = "1fyh8221s6cxlmng01v8v2ljhavzawqqs8r1xjc66ap5sjavx6zm"; + authors = [ + "Alexis Beingessner " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "bitflags" = rec { + crateName = "bitflags"; + version = "1.2.1"; + edition = "2015"; + sha256 = "14qnd5nq8p2almk79m4m8ydqhd413yaxsyjp5xd19g3mikzf47fg"; + authors = [ + "The Rust Project Developers" + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "block-buffer" = rec { + crateName = "block-buffer"; + version = "0.7.3"; + edition = "2015"; + sha256 = "12v8wizynqin0hqf140kmp9s38q223mp1b0hkqk8j5pk8720v560"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "block-padding"; + packageId = "block-padding"; + } + { + name = "byte-tools"; + packageId = "byte-tools"; + } + { + name = "byteorder"; + packageId = "byteorder"; + usesDefaultFeatures = false; + } + { + name = "generic-array"; + packageId = "generic-array"; + } + ]; + + }; + "block-padding" = rec { + crateName = "block-padding"; + version = "0.1.5"; + edition = "2015"; + sha256 = "1xbkmysiz23vimd17rnsjpw9bgjxipwfslwyygqlkx4in3dxwygs"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "byte-tools"; + packageId = "byte-tools"; + } + ]; + + }; + "byte-tools" = rec { + crateName = "byte-tools"; + version = "0.3.1"; + edition = "2015"; + sha256 = "1mqi29wsm8njpl51pfwr31wmpzs5ahlcb40wsjyd92l90ixcmdg3"; + authors = [ + "RustCrypto Developers" + ]; + + }; + "byteorder" = rec { + crateName = "byteorder"; + version = "1.3.4"; + edition = "2015"; + sha256 = "1pkjfhgjnq898g1d38ygcfi0msg3m6756cwv0sgysj1d26p8mi08"; + authors = [ + "Andrew Gallant " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "bytes" = rec { + crateName = "bytes"; + version = "0.5.4"; + edition = "2018"; + sha256 = "1q9r7si1l8vndg4n2ny2nv833ghp5vyqzk5indb9rmhd5ibaq2hk"; + authors = [ + "Carl Lerche " + "Sean McArthur " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "cfg-if" = rec { + crateName = "cfg-if"; + version = "0.1.10"; + edition = "2018"; + sha256 = "08h80ihs74jcyp24cd75wwabygbbdgl05k6p5dmq8akbr78vv1a7"; + authors = [ + "Alex Crichton " + ]; + features = { + "rustc-dep-of-std" = [ "core" "compiler_builtins" ]; + }; + }; + "chrono" = rec { + crateName = "chrono"; + version = "0.4.11"; + edition = "2015"; + sha256 = "1cmmxamkzzs36zncqjjr7qm7xkb6zyrkjslnlj3axdgqki84y2c0"; + authors = [ + "Kang Seonghoon " + "Brandon W Maister " + ]; + dependencies = [ + { + name = "num-integer"; + packageId = "num-integer"; + usesDefaultFeatures = false; + } + { + name = "num-traits"; + packageId = "num-traits"; + usesDefaultFeatures = false; + } + { + name = "time"; + packageId = "time"; + optional = true; + } + ]; + features = { + "clock" = [ "time" "std" ]; + "default" = [ "clock" "std" ]; + "wasmbind" = [ "wasm-bindgen" "js-sys" ]; + }; + resolvedDefaultFeatures = [ "clock" "default" "std" "time" ]; + }; + "clap" = rec { + crateName = "clap"; + version = "2.33.0"; + edition = "2015"; + sha256 = "1nf6ld3bims1n5vfzhkvcb55pdzh04bbhzf8nil5vvw05nxzarsh"; + authors = [ + "Kevin K. " + ]; + dependencies = [ + { + name = "ansi_term"; + packageId = "ansi_term"; + optional = true; + target = { target, features }: (!target."windows"); + } + { + name = "atty"; + packageId = "atty"; + optional = true; + } + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "strsim"; + packageId = "strsim"; + optional = true; + } + { + name = "textwrap"; + packageId = "textwrap"; + } + { + name = "unicode-width"; + packageId = "unicode-width"; + } + { + name = "vec_map"; + packageId = "vec_map"; + optional = true; + } + ]; + features = { + "color" = [ "ansi_term" "atty" ]; + "default" = [ "suggestions" "color" "vec_map" ]; + "doc" = [ "yaml" ]; + "lints" = [ "clippy" ]; + "suggestions" = [ "strsim" ]; + "wrap_help" = [ "term_size" "textwrap/term_size" ]; + "yaml" = [ "yaml-rust" ]; + }; + resolvedDefaultFeatures = [ "ansi_term" "atty" "color" "default" "strsim" "suggestions" "vec_map" ]; + }; + "ctor" = rec { + crateName = "ctor"; + version = "0.1.13"; + edition = "2018"; + sha256 = "1qgwkwyxishpp3wkbwq5i27zdxz539ii0sz129xj061ffnnfbia7"; + procMacro = true; + authors = [ + "Matt Mastracci " + ]; + dependencies = [ + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + usesDefaultFeatures = false; + features = [ "full" "parsing" "printing" "proc-macro" ]; + } + ]; + + }; + "difference" = rec { + crateName = "difference"; + version = "2.0.0"; + edition = "2015"; + crateBin = []; + sha256 = "1621wx4k8h452p6xzmzzvm7mz87kxh4yqz0kzxfjj9xmjxlbyk2j"; + authors = [ + "Johann Hofmann " + ]; + features = { + "bin" = [ "getopts" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "digest" = rec { + crateName = "digest"; + version = "0.8.1"; + edition = "2015"; + sha256 = "1madjl27f3kj5ql7kwgvb9c8b7yb7bv7yfgx7rqzj4i3fp4cil7k"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "generic-array"; + packageId = "generic-array"; + } + ]; + features = { + "dev" = [ "blobby" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "dtoa" = rec { + crateName = "dtoa"; + version = "0.4.5"; + edition = "2015"; + sha256 = "18qycvcp0vaqzw0j784ansbxgs39l54ini9v719cy2cs3ghsjn23"; + authors = [ + "David Tolnay " + ]; + + }; + "elasticlunr-rs" = rec { + crateName = "elasticlunr-rs"; + version = "2.3.8"; + edition = "2015"; + sha256 = "0g16h4l42dn5hfyaj1qw4q27jd8qn3w8xfahni23b4h8jagly9rm"; + libName = "elasticlunr"; + authors = [ + "Matt Ickstadt " + ]; + dependencies = [ + { + name = "lazy_static"; + packageId = "lazy_static"; + } + { + name = "regex"; + packageId = "regex"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "serde_derive"; + packageId = "serde_derive"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "strum"; + packageId = "strum"; + } + { + name = "strum_macros"; + packageId = "strum_macros"; + } + ]; + features = { + "da" = [ "rust-stemmers" ]; + "de" = [ "rust-stemmers" ]; + "default" = [ "languages" ]; + "du" = [ "rust-stemmers" ]; + "es" = [ "rust-stemmers" ]; + "fi" = [ "rust-stemmers" ]; + "fr" = [ "rust-stemmers" ]; + "it" = [ "rust-stemmers" ]; + "ja" = [ "lindera" ]; + "languages" = [ "da" "de" "du" "es" "fi" "fr" "it" "pt" "ro" "ru" "sv" "tr" "zh" "ja" ]; + "nightly" = [ "bench" ]; + "pt" = [ "rust-stemmers" ]; + "ro" = [ "rust-stemmers" ]; + "ru" = [ "rust-stemmers" ]; + "sv" = [ "rust-stemmers" ]; + "tr" = [ "rust-stemmers" ]; + "zh" = [ "jieba-rs" ]; + }; + }; + "env_logger" = rec { + crateName = "env_logger"; + version = "0.7.1"; + edition = "2018"; + sha256 = "0djx8h8xfib43g5w94r1m1mkky5spcw4wblzgnhiyg5vnfxknls4"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "atty"; + packageId = "atty"; + optional = true; + } + { + name = "humantime"; + packageId = "humantime"; + optional = true; + } + { + name = "log"; + packageId = "log"; + features = [ "std" ]; + } + { + name = "regex"; + packageId = "regex"; + optional = true; + } + { + name = "termcolor"; + packageId = "termcolor"; + optional = true; + } + ]; + features = { + "default" = [ "termcolor" "atty" "humantime" "regex" ]; + }; + resolvedDefaultFeatures = [ "atty" "default" "humantime" "regex" "termcolor" ]; + }; + "fake-simd" = rec { + crateName = "fake-simd"; + version = "0.1.2"; + edition = "2015"; + sha256 = "1vfylvk4va2ivqx85603lyqqp0zk52cgbs4n5nfbbbqx577qm2p8"; + authors = [ + "The Rust-Crypto Project Developers" + ]; + + }; + "filetime" = rec { + crateName = "filetime"; + version = "0.2.9"; + edition = "2018"; + sha256 = "0pjaa1qz4crlfxqvpgf0gqp9mx3ih4xjc7fi0518x62c00wgr7pm"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + target = { target, features }: target."unix"; + } + { + name = "redox_syscall"; + packageId = "redox_syscall"; + target = { target, features }: (target."os" == "redox"); + } + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "fileapi" "minwindef" "winbase" ]; + } + ]; + + }; + "fnv" = rec { + crateName = "fnv"; + version = "1.0.6"; + edition = "2015"; + sha256 = "1ww56bi1r5b8id3ns9j3qxbi7w5h005rzhiryy0zi9h97raqbb9g"; + libPath = "lib.rs"; + authors = [ + "Alex Crichton " + ]; + + }; + "fsevent" = rec { + crateName = "fsevent"; + version = "0.4.0"; + edition = "2015"; + sha256 = "1djxnc2fmv265xqf1iyfz56smh13v9r1p0w9125wjg6k3fyx3dss"; + authors = [ + "Pierre Baillet " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "fsevent-sys"; + packageId = "fsevent-sys"; + } + ]; + + }; + "fsevent-sys" = rec { + crateName = "fsevent-sys"; + version = "2.0.1"; + edition = "2015"; + sha256 = "18246vxk7rqn52m0sfrhivxq802i34p2wqqx5zsa0pamjj5086zl"; + authors = [ + "Pierre Baillet " + ]; + dependencies = [ + { + name = "libc"; + packageId = "libc"; + } + ]; + + }; + "fuchsia-zircon" = rec { + crateName = "fuchsia-zircon"; + version = "0.3.3"; + edition = "2015"; + sha256 = "10jxc5ks1x06gpd0xg51kcjrxr35nj6qhx2zlc5n7bmskv3675rf"; + authors = [ + "Raph Levien " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "fuchsia-zircon-sys"; + packageId = "fuchsia-zircon-sys"; + } + ]; + + }; + "fuchsia-zircon-sys" = rec { + crateName = "fuchsia-zircon-sys"; + version = "0.3.3"; + edition = "2015"; + sha256 = "19zp2085qsyq2bh1gvcxq1lb8w6v6jj9kbdkhpdjrl95fypakjix"; + authors = [ + "Raph Levien " + ]; + + }; + "futf" = rec { + crateName = "futf"; + version = "0.1.4"; + edition = "2015"; + sha256 = "0fxc18bnabird5jl941nsd6d25vq8cn8barmz4d30dlkzbiir73w"; + authors = [ + "Keegan McAllister " + ]; + dependencies = [ + { + name = "mac"; + packageId = "mac"; + } + { + name = "new_debug_unreachable"; + packageId = "new_debug_unreachable"; + } + ]; + + }; + "futures" = rec { + crateName = "futures"; + version = "0.3.4"; + edition = "2018"; + sha256 = "105p5bwjf2dsclvi95g784n6b51az8ibdhjgmr2gn0imfpl9lcjw"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "futures-channel"; + packageId = "futures-channel"; + usesDefaultFeatures = false; + features = [ "sink" ]; + } + { + name = "futures-core"; + packageId = "futures-core"; + usesDefaultFeatures = false; + } + { + name = "futures-executor"; + packageId = "futures-executor"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "futures-io"; + packageId = "futures-io"; + usesDefaultFeatures = false; + } + { + name = "futures-sink"; + packageId = "futures-sink"; + usesDefaultFeatures = false; + } + { + name = "futures-task"; + packageId = "futures-task"; + usesDefaultFeatures = false; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "sink" ]; + } + ]; + features = { + "alloc" = [ "futures-core/alloc" "futures-task/alloc" "futures-sink/alloc" "futures-channel/alloc" "futures-util/alloc" ]; + "async-await" = [ "futures-util/async-await" "futures-util/async-await-macro" ]; + "bilock" = [ "futures-util/bilock" ]; + "cfg-target-has-atomic" = [ "futures-core/cfg-target-has-atomic" "futures-task/cfg-target-has-atomic" "futures-channel/cfg-target-has-atomic" "futures-util/cfg-target-has-atomic" ]; + "compat" = [ "std" "futures-util/compat" ]; + "default" = [ "std" "async-await" "executor" ]; + "executor" = [ "std" "futures-executor/std" ]; + "io-compat" = [ "compat" "futures-util/io-compat" ]; + "read-initializer" = [ "futures-io/read-initializer" "futures-util/read-initializer" ]; + "std" = [ "alloc" "futures-core/std" "futures-task/std" "futures-io/std" "futures-sink/std" "futures-util/std" "futures-util/io" "futures-util/channel" ]; + "thread-pool" = [ "executor" "futures-executor/thread-pool" ]; + "unstable" = [ "futures-core/unstable" "futures-task/unstable" "futures-channel/unstable" "futures-io/unstable" "futures-util/unstable" ]; + }; + resolvedDefaultFeatures = [ "alloc" "async-await" "default" "executor" "futures-executor" "std" ]; + }; + "futures-channel" = rec { + crateName = "futures-channel"; + version = "0.3.4"; + edition = "2018"; + sha256 = "1a7iq7m4ggq2njrm7h1x2v2gxzxkd2160awk0fwrrpcfrq27vizh"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "futures-core"; + packageId = "futures-core"; + usesDefaultFeatures = false; + } + { + name = "futures-sink"; + packageId = "futures-sink"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "futures-core/alloc" ]; + "cfg-target-has-atomic" = [ "futures-core/cfg-target-has-atomic" ]; + "default" = [ "std" ]; + "sink" = [ "futures-sink" ]; + "std" = [ "alloc" "futures-core/std" ]; + "unstable" = [ "futures-core/unstable" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "futures-sink" "sink" "std" ]; + }; + "futures-core" = rec { + crateName = "futures-core"; + version = "0.3.4"; + edition = "2018"; + sha256 = "0jj6mjvjbvv36r6w86lmjkh62mwndz901nsq4fwqjpl2d7vr4mgj"; + authors = [ + "Alex Crichton " + ]; + features = { + "default" = [ "std" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + }; + "futures-executor" = rec { + crateName = "futures-executor"; + version = "0.3.4"; + edition = "2018"; + sha256 = "1fj1jw8g7l5v1sf7lh0w0smq596vmxaxzklh98l3fnxipkhz6x7n"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "futures-core"; + packageId = "futures-core"; + usesDefaultFeatures = false; + } + { + name = "futures-task"; + packageId = "futures-task"; + usesDefaultFeatures = false; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "std" ]; + "std" = [ "futures-core/std" "futures-task/std" "futures-util/std" ]; + "thread-pool" = [ "std" "num_cpus" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "futures-io" = rec { + crateName = "futures-io"; + version = "0.3.4"; + edition = "2018"; + sha256 = "1ihd1429kyfncxpc4mvina1hbppywfqzql6zrnjcflk1m6d9af56"; + authors = [ + "Alex Crichton " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "futures-macro" = rec { + crateName = "futures-macro"; + version = "0.3.4"; + edition = "2018"; + sha256 = "19r3akc8y0br6jbx0lh1cfq07n8f23g7qfaag4m59xz17nm82l4s"; + procMacro = true; + authors = [ + "Taylor Cramer " + "Taiki Endo " + ]; + dependencies = [ + { + name = "proc-macro-hack"; + packageId = "proc-macro-hack"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + features = [ "full" ]; + } + ]; + + }; + "futures-sink" = rec { + crateName = "futures-sink"; + version = "0.3.4"; + edition = "2018"; + sha256 = "19n88jlh8cwam4gqzj4vj9g130vg9ir0m1bv11dxj5619cdq4ril"; + authors = [ + "Alex Crichton " + ]; + features = { + "default" = [ "std" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + }; + "futures-task" = rec { + crateName = "futures-task"; + version = "0.3.4"; + edition = "2018"; + sha256 = "09ss6zg7w36s3y2715bnvfrnwr3b8vnklmxag00wvkgn7kjk82kv"; + authors = [ + "Alex Crichton " + ]; + features = { + "default" = [ "std" ]; + "std" = [ "alloc" ]; + }; + resolvedDefaultFeatures = [ "alloc" "std" ]; + }; + "futures-util" = rec { + crateName = "futures-util"; + version = "0.3.4"; + edition = "2018"; + sha256 = "1i84h30q2q93y4l4bk2g22mp96aws02a0k9qy3nnnc34bpr6qxi2"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "futures-channel"; + packageId = "futures-channel"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "futures-core"; + packageId = "futures-core"; + usesDefaultFeatures = false; + } + { + name = "futures-io"; + packageId = "futures-io"; + optional = true; + usesDefaultFeatures = false; + features = [ "std" ]; + } + { + name = "futures-macro"; + packageId = "futures-macro"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "futures-sink"; + packageId = "futures-sink"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "futures-task"; + packageId = "futures-task"; + usesDefaultFeatures = false; + } + { + name = "memchr"; + packageId = "memchr"; + optional = true; + } + { + name = "pin-utils"; + packageId = "pin-utils"; + } + { + name = "proc-macro-hack"; + packageId = "proc-macro-hack"; + optional = true; + } + { + name = "proc-macro-nested"; + packageId = "proc-macro-nested"; + optional = true; + } + { + name = "slab"; + packageId = "slab"; + optional = true; + } + ]; + features = { + "alloc" = [ "futures-core/alloc" "futures-task/alloc" ]; + "async-await-macro" = [ "async-await" "futures-macro" "proc-macro-hack" "proc-macro-nested" ]; + "cfg-target-has-atomic" = [ "futures-core/cfg-target-has-atomic" "futures-task/cfg-target-has-atomic" ]; + "channel" = [ "std" "futures-channel" ]; + "compat" = [ "std" "futures_01" ]; + "default" = [ "std" "async-await" "async-await-macro" ]; + "io" = [ "std" "futures-io" "memchr" ]; + "io-compat" = [ "io" "compat" "tokio-io" ]; + "read-initializer" = [ "io" "futures-io/read-initializer" "futures-io/unstable" ]; + "sink" = [ "futures-sink" ]; + "std" = [ "alloc" "futures-core/std" "futures-task/std" "slab" ]; + "unstable" = [ "futures-core/unstable" "futures-task/unstable" ]; + }; + resolvedDefaultFeatures = [ "alloc" "async-await" "async-await-macro" "channel" "default" "futures-channel" "futures-io" "futures-macro" "futures-sink" "io" "memchr" "proc-macro-hack" "proc-macro-nested" "sink" "slab" "std" ]; + }; + "generic-array" = rec { + crateName = "generic-array"; + version = "0.12.3"; + edition = "2015"; + sha256 = "1v5jg7djicq34nbiv1dwaki71gkny002wyy9qfn3y0hfmrs053y6"; + libName = "generic_array"; + authors = [ + "Bartłomiej Kamiński " + "Aaron Trent " + ]; + dependencies = [ + { + name = "typenum"; + packageId = "typenum"; + } + ]; + + }; + "getopts" = rec { + crateName = "getopts"; + version = "0.2.21"; + edition = "2015"; + sha256 = "1mgb3qvivi26gs6ihqqhh8iyhp3vgxri6vwyrwg28w0xqzavznql"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "unicode-width"; + packageId = "unicode-width"; + } + ]; + features = { + "rustc-dep-of-std" = [ "unicode-width/rustc-dep-of-std" "std" "core" ]; + }; + }; + "getrandom" = rec { + crateName = "getrandom"; + version = "0.1.14"; + edition = "2018"; + sha256 = "1sq30li71h19rhnhs1h6576ja68insajx8wvh1nn088r8pc8vg3s"; + authors = [ + "The Rand Project Developers" + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: target."unix"; + } + { + name = "wasi"; + packageId = "wasi"; + target = { target, features }: (target."os" == "wasi"); + } + ]; + features = { + "rustc-dep-of-std" = [ "compiler_builtins" "core" ]; + "test-in-browser" = [ "wasm-bindgen" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "gitignore" = rec { + crateName = "gitignore"; + version = "1.0.6"; + edition = "2015"; + crateBin = []; + sha256 = "1zcdxsxz7nmgnky7ifd733whkrqafymbfr6i3nybwy34a8xyvgpm"; + authors = [ + "Nathan Kleyn " + ]; + dependencies = [ + { + name = "glob"; + packageId = "glob"; + } + ]; + features = { + }; + }; + "glob" = rec { + crateName = "glob"; + version = "0.2.11"; + edition = "2015"; + sha256 = "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"; + authors = [ + "The Rust Project Developers" + ]; + + }; + "h2" = rec { + crateName = "h2"; + version = "0.2.4"; + edition = "2018"; + sha256 = "0hjg2j75xpky92wr41d19irbskqr4x87l7j3l5n8vlc97jzkhw1p"; + authors = [ + "Carl Lerche " + "Sean McArthur " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "fnv"; + packageId = "fnv"; + } + { + name = "futures-core"; + packageId = "futures-core"; + usesDefaultFeatures = false; + } + { + name = "futures-sink"; + packageId = "futures-sink"; + usesDefaultFeatures = false; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + } + { + name = "http"; + packageId = "http"; + } + { + name = "indexmap"; + packageId = "indexmap"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "slab"; + packageId = "slab"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "io-util" "sync" ]; + } + { + name = "tokio-util"; + packageId = "tokio-util"; + features = [ "codec" ]; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + features = [ "dns" "macros" "rt-core" "tcp" ]; + } + ]; + features = { + }; + }; + "handlebars" = rec { + crateName = "handlebars"; + version = "3.0.1"; + edition = "2018"; + sha256 = "00492hhm6gagd2zmjqws4f2k3gwndcr6znhmkns4w9ri9l4qsxds"; + authors = [ + "Ning Sun " + ]; + dependencies = [ + { + name = "log"; + packageId = "log"; + } + { + name = "pest"; + packageId = "pest"; + } + { + name = "pest_derive"; + packageId = "pest_derive"; + } + { + name = "quick-error"; + packageId = "quick-error"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + ]; + features = { + "dir_source" = [ "walkdir" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "headers" = rec { + crateName = "headers"; + version = "0.3.2"; + edition = "2015"; + sha256 = "13w450r8xpmi41m9m6x05y464piy1j24f5bb5nnhj6mzb4jfn67d"; + authors = [ + "Sean McArthur " + ]; + dependencies = [ + { + name = "base64"; + packageId = "base64 0.12.0"; + } + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "headers-core"; + packageId = "headers-core"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "mime"; + packageId = "mime"; + } + { + name = "sha-1"; + packageId = "sha-1"; + } + { + name = "time"; + packageId = "time"; + } + ]; + features = { + }; + }; + "headers-core" = rec { + crateName = "headers-core"; + version = "0.2.0"; + edition = "2015"; + sha256 = "0ab469xfpd411mc3dhmjhmzrhqikzyj8a17jn5bkj9zfpy0n9xp7"; + authors = [ + "Sean McArthur " + ]; + dependencies = [ + { + name = "http"; + packageId = "http"; + } + ]; + + }; + "heck" = rec { + crateName = "heck"; + version = "0.3.1"; + edition = "2015"; + sha256 = "01a2v7yvkiqxakdqz4hw3w3g4sm52ivz9cs3qcsv2arxsmw4wmi0"; + authors = [ + "Without Boats " + ]; + dependencies = [ + { + name = "unicode-segmentation"; + packageId = "unicode-segmentation"; + } + ]; + + }; + "hermit-abi" = rec { + crateName = "hermit-abi"; + version = "0.1.11"; + edition = "2015"; + sha256 = "05dzdbm3jcdpvp4c13gds405li7q9bpzscrxx5j1hyll1xz763ca"; + authors = [ + "Stefan Lankes" + ]; + dependencies = [ + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + } + ]; + features = { + "rustc-dep-of-std" = [ "core" "compiler_builtins/rustc-dep-of-std" "libc/rustc-dep-of-std" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "html5ever" = rec { + crateName = "html5ever"; + version = "0.25.1"; + edition = "2018"; + sha256 = "0szdpwr6l3p21flf01pdlpj6fkpqisqf34lvs918449n3a5g7z5a"; + authors = [ + "The html5ever Project Developers" + ]; + dependencies = [ + { + name = "log"; + packageId = "log"; + } + { + name = "mac"; + packageId = "mac"; + } + { + name = "markup5ever"; + packageId = "markup5ever"; + } + ]; + buildDependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + features = [ "extra-traits" "full" "fold" ]; + } + ]; + + }; + "http" = rec { + crateName = "http"; + version = "0.2.1"; + edition = "2018"; + sha256 = "1y827q7j0gvs8z2x12biaik9db6nb902lpqv889cbcj84sbnkm98"; + authors = [ + "Alex Crichton " + "Carl Lerche " + "Sean McArthur " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "fnv"; + packageId = "fnv"; + } + { + name = "itoa"; + packageId = "itoa"; + } + ]; + + }; + "http-body" = rec { + crateName = "http-body"; + version = "0.3.1"; + edition = "2018"; + sha256 = "06qi0ni45lb92w3ml260c0bxbq5zd4snjmz0a9k69xq6021zzm8k"; + authors = [ + "Carl Lerche " + "Lucio Franco " + "Sean McArthur " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "http"; + packageId = "http"; + } + ]; + + }; + "httparse" = rec { + crateName = "httparse"; + version = "1.3.4"; + edition = "2015"; + sha256 = "1yf23ldnjwfkkhkca7f4w15mky9961gjz28dlwyybhphc7l9l5yd"; + authors = [ + "Sean McArthur " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "humantime" = rec { + crateName = "humantime"; + version = "1.3.0"; + edition = "2015"; + sha256 = "0krwgbf35pd46xvkqg14j070vircsndabahahlv3rwhflpy4q06z"; + authors = [ + "Paul Colomiets " + ]; + dependencies = [ + { + name = "quick-error"; + packageId = "quick-error"; + } + ]; + + }; + "hyper" = rec { + crateName = "hyper"; + version = "0.13.5"; + edition = "2018"; + sha256 = "054bnzhxwnwkijlfb7i26j75licqfx7snnm813969jhyj8fnx0cn"; + authors = [ + "Sean McArthur " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "futures-channel"; + packageId = "futures-channel"; + } + { + name = "futures-core"; + packageId = "futures-core"; + usesDefaultFeatures = false; + } + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + } + { + name = "h2"; + packageId = "h2"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "http-body"; + packageId = "http-body"; + } + { + name = "httparse"; + packageId = "httparse"; + } + { + name = "itoa"; + packageId = "itoa"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "net2"; + packageId = "net2"; + optional = true; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "time"; + packageId = "time"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "sync" ]; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "want"; + packageId = "want"; + } + ]; + devDependencies = [ + { + name = "futures-util"; + packageId = "futures-util"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "fs" "macros" "io-std" "rt-util" "sync" "time" "test-util" ]; + } + ]; + features = { + "default" = [ "runtime" "stream" ]; + "runtime" = [ "tcp" "tokio/rt-core" ]; + "tcp" = [ "net2" "tokio/blocking" "tokio/tcp" "tokio/time" ]; + }; + resolvedDefaultFeatures = [ "default" "net2" "runtime" "stream" "tcp" ]; + }; + "idna" = rec { + crateName = "idna"; + version = "0.2.0"; + edition = "2015"; + sha256 = "1a9066imqpdrm1aavfasdyb1zahqaz8jmdcwdawvb1pf60y6gqh2"; + authors = [ + "The rust-url developers" + ]; + dependencies = [ + { + name = "matches"; + packageId = "matches"; + } + { + name = "unicode-bidi"; + packageId = "unicode-bidi"; + } + { + name = "unicode-normalization"; + packageId = "unicode-normalization"; + } + ]; + + }; + "indexmap" = rec { + crateName = "indexmap"; + version = "1.3.2"; + edition = "2015"; + sha256 = "14i2gmq9pwaafvlxmsc12j6539hjgqk4j4jz40fz763vbcn08vq7"; + authors = [ + "bluss" + "Josh Stone " + ]; + buildDependencies = [ + { + name = "autocfg"; + packageId = "autocfg"; + } + ]; + features = { + "serde-1" = [ "serde" ]; + }; + }; + "inotify" = rec { + crateName = "inotify"; + version = "0.7.0"; + edition = "2015"; + sha256 = "1f5zpi3rvzgc1fm5lgnhjrx6dbgmirf4k5n7w2120knnsmphvr14"; + authors = [ + "Hanno Braun " + "Félix Saparelli " + "Cristian Kubis " + "Frank Denis " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "inotify-sys"; + packageId = "inotify-sys"; + } + { + name = "libc"; + packageId = "libc"; + } + ]; + features = { + "default" = [ "stream" ]; + "stream" = [ "futures" "mio" "tokio" "tokio-io" "tokio-reactor" ]; + }; + }; + "inotify-sys" = rec { + crateName = "inotify-sys"; + version = "0.1.3"; + edition = "2015"; + sha256 = "1h2nwgajz80qddjm4mpma94zahxw84nscbycy9pgzbjrgjl1ljp7"; + authors = [ + "Hanno Braun " + ]; + dependencies = [ + { + name = "libc"; + packageId = "libc"; + } + ]; + + }; + "input_buffer" = rec { + crateName = "input_buffer"; + version = "0.3.1"; + edition = "2015"; + sha256 = "0m4pamqvr00z90cmrgjj25iwpqy6fyac53k1ms63k86m8d9aka0r"; + authors = [ + "Alexey Galakhov " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + ]; + + }; + "iovec" = rec { + crateName = "iovec"; + version = "0.1.4"; + edition = "2015"; + sha256 = "0ph73qygwx8i0mblrf110cj59l00gkmsgrpzz1rm85syz5pymcxj"; + authors = [ + "Carl Lerche " + ]; + dependencies = [ + { + name = "libc"; + packageId = "libc"; + target = { target, features }: target."unix"; + } + ]; + + }; + "itoa" = rec { + crateName = "itoa"; + version = "0.4.5"; + edition = "2015"; + sha256 = "13nxqrfnh83a7x5rw4wq2ilp8nxvwy74dxzysdg59dbxqk0agdxq"; + authors = [ + "David Tolnay " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "kernel32-sys" = rec { + crateName = "kernel32-sys"; + version = "0.2.2"; + edition = "2015"; + sha256 = "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"; + libName = "kernel32"; + authors = [ + "Peter Atashian " + ]; + dependencies = [ + { + name = "winapi"; + packageId = "winapi 0.2.8"; + } + ]; + buildDependencies = [ + { + name = "winapi-build"; + packageId = "winapi-build"; + } + ]; + + }; + "lazy_static" = rec { + crateName = "lazy_static"; + version = "1.4.0"; + edition = "2015"; + sha256 = "0in6ikhw8mgl33wjv6q6xfrb5b9jr16q8ygjy803fay4zcisvaz2"; + authors = [ + "Marvin Löbel " + ]; + features = { + "spin_no_std" = [ "spin" ]; + }; + }; + "lazycell" = rec { + crateName = "lazycell"; + version = "1.2.1"; + edition = "2015"; + sha256 = "0gvqycmpv7parc98i6y64ai7rvxrn1947z2a6maa02g4kvxdd55j"; + authors = [ + "Alex Crichton " + "Nikita Pekin " + ]; + features = { + "nightly-testing" = [ "clippy" "nightly" ]; + }; + }; + "libc" = rec { + crateName = "libc"; + version = "0.2.69"; + edition = "2015"; + sha256 = "0180d47sglxzjh5rkdl077zxmsiafd53gqbz9q2sj8ab9445rs4r"; + authors = [ + "The Rust Project Developers" + ]; + features = { + "default" = [ "std" ]; + "rustc-dep-of-std" = [ "align" "rustc-std-workspace-core" ]; + "use_std" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "log" = rec { + crateName = "log"; + version = "0.4.8"; + edition = "2015"; + sha256 = "1xz18ixccl5c6np4linv3ypc7hpmmgpc5zzd2ymp2ssfx0mhbdhl"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + ]; + features = { + "kv_unstable_sval" = [ "kv_unstable" "sval/fmt" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "mac" = rec { + crateName = "mac"; + version = "0.1.1"; + edition = "2015"; + sha256 = "194vc7vrshqff72rl56f9xgb0cazyl4jda7qsv31m5l6xx7hq7n4"; + authors = [ + "Jonathan Reem " + ]; + + }; + "maplit" = rec { + crateName = "maplit"; + version = "1.0.2"; + edition = "2015"; + sha256 = "07b5kjnhrrmfhgqm9wprjw8adx6i225lqp49gasgqg74lahnabiy"; + authors = [ + "bluss" + ]; + + }; + "markup5ever" = rec { + crateName = "markup5ever"; + version = "0.10.0"; + edition = "2018"; + sha256 = "1aqxl1lsc8s6ycsw5ibwynadnb9qpiab4ggwgdq9pjlnjdk8vqxa"; + libPath = "lib.rs"; + authors = [ + "The html5ever Project Developers" + ]; + dependencies = [ + { + name = "log"; + packageId = "log"; + } + { + name = "phf"; + packageId = "phf"; + } + { + name = "string_cache"; + packageId = "string_cache"; + } + { + name = "tendril"; + packageId = "tendril"; + } + ]; + buildDependencies = [ + { + name = "phf_codegen"; + packageId = "phf_codegen"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "serde_derive"; + packageId = "serde_derive"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "string_cache_codegen"; + packageId = "string_cache_codegen"; + } + ]; + + }; + "markup5ever_rcdom" = rec { + crateName = "markup5ever_rcdom"; + version = "0.1.0"; + edition = "2018"; + sha256 = "0axf6vrms8579lvhbjaj0v7bhs8xb7s26d4sam2g3m6qpi1xl5gh"; + libPath = "lib.rs"; + authors = [ + "The html5ever Project Developers" + ]; + dependencies = [ + { + name = "html5ever"; + packageId = "html5ever"; + } + { + name = "markup5ever"; + packageId = "markup5ever"; + } + { + name = "tendril"; + packageId = "tendril"; + } + { + name = "xml5ever"; + packageId = "xml5ever"; + } + ]; + + }; + "matches" = rec { + crateName = "matches"; + version = "0.1.8"; + edition = "2015"; + sha256 = "020axl4q7rk9vz90phs7f8jas4imxal9y9kxl4z4v7a6719mrz3z"; + libPath = "lib.rs"; + authors = [ + "Simon Sapin " + ]; + + }; + "mdbook" = rec { + crateName = "mdbook"; + version = "0.4.1"; + edition = "2018"; + crateBin = [ + { name = "mdbook"; path = "src/main.rs"; } + ]; + src = (builtins.filterSource sourceFilter ./.); + authors = [ + "Mathieu David " + "Michael-F-Bryan " + "Matt Ickstadt " + ]; + dependencies = [ + { + name = "ammonia"; + packageId = "ammonia"; + optional = true; + } + { + name = "anyhow"; + packageId = "anyhow"; + } + { + name = "chrono"; + packageId = "chrono"; + } + { + name = "clap"; + packageId = "clap"; + } + { + name = "elasticlunr-rs"; + packageId = "elasticlunr-rs"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "env_logger"; + packageId = "env_logger"; + } + { + name = "futures-util"; + packageId = "futures-util"; + optional = true; + } + { + name = "gitignore"; + packageId = "gitignore"; + optional = true; + } + { + name = "handlebars"; + packageId = "handlebars"; + } + { + name = "lazy_static"; + packageId = "lazy_static"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "memchr"; + packageId = "memchr"; + } + { + name = "notify"; + packageId = "notify"; + optional = true; + } + { + name = "open"; + packageId = "open"; + } + { + name = "pulldown-cmark"; + packageId = "pulldown-cmark"; + } + { + name = "regex"; + packageId = "regex"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "serde_derive"; + packageId = "serde_derive"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "shlex"; + packageId = "shlex"; + } + { + name = "tempfile"; + packageId = "tempfile"; + } + { + name = "tokio"; + packageId = "tokio"; + optional = true; + features = [ "macros" ]; + } + { + name = "toml"; + packageId = "toml"; + } + { + name = "warp"; + packageId = "warp"; + optional = true; + usesDefaultFeatures = false; + features = [ "websocket" ]; + } + ]; + devDependencies = [ + { + name = "pretty_assertions"; + packageId = "pretty_assertions"; + } + { + name = "select"; + packageId = "select"; + } + { + name = "walkdir"; + packageId = "walkdir"; + } + ]; + features = { + "default" = [ "watch" "serve" "search" ]; + "search" = [ "elasticlunr-rs" "ammonia" ]; + "serve" = [ "futures-util" "tokio" "warp" ]; + "watch" = [ "notify" "gitignore" ]; + }; + resolvedDefaultFeatures = [ "ammonia" "default" "elasticlunr-rs" "futures-util" "gitignore" "notify" "search" "serve" "tokio" "warp" "watch" ]; + }; + "memchr" = rec { + crateName = "memchr"; + version = "2.3.3"; + edition = "2015"; + sha256 = "0074pvsfl938ndl5js14ibc7i9q0k3zp390z843w8nlyv4bxha1p"; + authors = [ + "Andrew Gallant " + "bluss" + ]; + features = { + "default" = [ "std" ]; + "use_std" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" "use_std" ]; + }; + "mime" = rec { + crateName = "mime"; + version = "0.3.16"; + edition = "2015"; + sha256 = "13dcm9lh01hdwfjcg74ppljyjfj1c6w3a3cwkhxf0w8wa37cfq1a"; + authors = [ + "Sean McArthur " + ]; + + }; + "mime_guess" = rec { + crateName = "mime_guess"; + version = "2.0.3"; + edition = "2015"; + sha256 = "04pjpbl90z4yn0cmifvwgf4mqznciw6b095k626q96bxx71d9116"; + authors = [ + "Austin Bonander " + ]; + dependencies = [ + { + name = "mime"; + packageId = "mime"; + } + { + name = "unicase"; + packageId = "unicase"; + } + ]; + buildDependencies = [ + { + name = "unicase"; + packageId = "unicase"; + } + ]; + features = { + "default" = [ "rev-mappings" ]; + }; + resolvedDefaultFeatures = [ "default" "rev-mappings" ]; + }; + "mio" = rec { + crateName = "mio"; + version = "0.6.21"; + edition = "2015"; + sha256 = "13q02a7cwc140aygf8amadpzpl5lyj3p2r4wnvgydfpnphifqb9h"; + authors = [ + "Carl Lerche " + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "fuchsia-zircon"; + packageId = "fuchsia-zircon"; + target = { target, features }: (target."os" == "fuchsia"); + } + { + name = "fuchsia-zircon-sys"; + packageId = "fuchsia-zircon-sys"; + target = { target, features }: (target."os" == "fuchsia"); + } + { + name = "iovec"; + packageId = "iovec"; + } + { + name = "kernel32-sys"; + packageId = "kernel32-sys"; + target = { target, features }: target."windows"; + } + { + name = "libc"; + packageId = "libc"; + target = { target, features }: target."unix"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "miow"; + packageId = "miow"; + target = { target, features }: target."windows"; + } + { + name = "net2"; + packageId = "net2"; + } + { + name = "slab"; + packageId = "slab"; + } + { + name = "winapi"; + packageId = "winapi 0.2.8"; + target = { target, features }: target."windows"; + } + ]; + features = { + "default" = [ "with-deprecated" ]; + }; + resolvedDefaultFeatures = [ "default" "with-deprecated" ]; + }; + "mio-extras" = rec { + crateName = "mio-extras"; + version = "2.0.6"; + edition = "2018"; + sha256 = "069gfhlv0wlwfx1k2sriwfws490kjp490rv2qivyfb01j3i3yh2j"; + authors = [ + "Carl Lerche " + "David Hotham" + ]; + dependencies = [ + { + name = "lazycell"; + packageId = "lazycell"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "mio"; + packageId = "mio"; + } + { + name = "slab"; + packageId = "slab"; + } + ]; + + }; + "miow" = rec { + crateName = "miow"; + version = "0.2.1"; + edition = "2015"; + sha256 = "06g9b8sqlh5gxakwqq4rrib07afwanfnxgxajrldwcgk3hxjy7wc"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "kernel32-sys"; + packageId = "kernel32-sys"; + } + { + name = "net2"; + packageId = "net2"; + usesDefaultFeatures = false; + } + { + name = "winapi"; + packageId = "winapi 0.2.8"; + } + { + name = "ws2_32-sys"; + packageId = "ws2_32-sys"; + } + ]; + + }; + "net2" = rec { + crateName = "net2"; + version = "0.2.33"; + edition = "2015"; + sha256 = "126g3fgfxp06zimc1l9iyxnn9cif1hjsg7sd81nlls5nnyghsma2"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + target = { target, features }: ((target."os" == "redox") || target."unix"); + } + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "handleapi" "winsock2" "ws2def" "ws2ipdef" "ws2tcpip" ]; + } + ]; + features = { + "default" = [ "duration" ]; + }; + resolvedDefaultFeatures = [ "default" "duration" ]; + }; + "new_debug_unreachable" = rec { + crateName = "new_debug_unreachable"; + version = "1.0.4"; + edition = "2018"; + sha256 = "0m1bg3wz3nvxdryg78x4i8hh9fys4wp2bi0zg821dhvf44v4g8p4"; + libName = "debug_unreachable"; + authors = [ + "Matt Brubeck " + "Jonathan Reem " + ]; + + }; + "notify" = rec { + crateName = "notify"; + version = "4.0.15"; + edition = "2015"; + sha256 = "1gadf8jf1vz7sip37rlwa66vw85ripy6977ibcfbiynii1v4mbl0"; + authors = [ + "Félix Saparelli " + "Jorge Israel Peña " + "Michael Maurizi " + "Pierre Baillet " + "Joe Wilm " + "Daniel Faust " + "Aron Heinecke " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "filetime"; + packageId = "filetime"; + } + { + name = "fsevent"; + packageId = "fsevent"; + target = { target, features }: (target."os" == "macos"); + } + { + name = "fsevent-sys"; + packageId = "fsevent-sys"; + target = { target, features }: (target."os" == "macos"); + } + { + name = "inotify"; + packageId = "inotify"; + usesDefaultFeatures = false; + target = { target, features }: (target."os" == "linux"); + } + { + name = "libc"; + packageId = "libc"; + } + { + name = "mio"; + packageId = "mio"; + target = { target, features }: (target."os" == "linux"); + } + { + name = "mio-extras"; + packageId = "mio-extras"; + target = { target, features }: (target."os" == "linux"); + } + { + name = "walkdir"; + packageId = "walkdir"; + } + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "fileapi" "handleapi" "ioapiset" "minwinbase" "synchapi" "winbase" "winnt" ]; + } + ]; + features = { + }; + }; + "num-integer" = rec { + crateName = "num-integer"; + version = "0.1.42"; + edition = "2015"; + sha256 = "1fpw8yr9xwsf3qrh91rm7mzqaiwlc2dmnalsxv9pr9w1klpacviz"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "num-traits"; + packageId = "num-traits"; + usesDefaultFeatures = false; + } + ]; + buildDependencies = [ + { + name = "autocfg"; + packageId = "autocfg"; + } + ]; + features = { + "default" = [ "std" ]; + "i128" = [ "num-traits/i128" ]; + "std" = [ "num-traits/std" ]; + }; + }; + "num-traits" = rec { + crateName = "num-traits"; + version = "0.2.11"; + edition = "2015"; + sha256 = "15khrlm1bra50nd48ijl1vln13m9xg4fxzghf28jp16ic5zf8ay6"; + authors = [ + "The Rust Project Developers" + ]; + buildDependencies = [ + { + name = "autocfg"; + packageId = "autocfg"; + } + ]; + features = { + "default" = [ "std" ]; + }; + }; + "opaque-debug" = rec { + crateName = "opaque-debug"; + version = "0.2.3"; + edition = "2015"; + sha256 = "172j6bs8ndclqxa2m64qc0y1772rr73g4l9fg2svscgicnbfff98"; + authors = [ + "RustCrypto Developers" + ]; + + }; + "open" = rec { + crateName = "open"; + version = "1.4.0"; + edition = "2018"; + crateBin = []; + sha256 = "0j6ci7jc2aabvw0rvq7a51sw9s2rk3mfsq0s5zjakzjf27q3na3w"; + authors = [ + "Sebastian Thiel " + ]; + dependencies = [ + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "shellapi" ]; + } + ]; + + }; + "output_vt100" = rec { + crateName = "output_vt100"; + version = "0.1.2"; + edition = "2018"; + sha256 = "1ygqplpxz4gg3i8f3rkan2q69pqll7gv65l2mmd8r9dphnvwbkak"; + authors = [ + "Phuntsok Drak-pa " + ]; + dependencies = [ + { + name = "winapi"; + packageId = "winapi 0.3.8"; + features = [ "winuser" "winbase" "consoleapi" "processenv" ]; + } + ]; + + }; + "percent-encoding" = rec { + crateName = "percent-encoding"; + version = "2.1.0"; + edition = "2015"; + sha256 = "0bp3zrsk3kr47fbpipyczidbbx4g54lzxdm77ni1i3qws10mdzfl"; + libPath = "lib.rs"; + authors = [ + "The rust-url developers" + ]; + + }; + "pest" = rec { + crateName = "pest"; + version = "2.1.3"; + edition = "2015"; + sha256 = "0lry80bm90x47nq71wxq83kjrm9ashpz4kbm92p90ysdx4m8gx0h"; + authors = [ + "Dragoș Tiselice " + ]; + dependencies = [ + { + name = "ucd-trie"; + packageId = "ucd-trie"; + } + ]; + features = { + "pretty-print" = [ "serde" "serde_json" ]; + }; + }; + "pest_derive" = rec { + crateName = "pest_derive"; + version = "2.1.0"; + edition = "2015"; + sha256 = "1l5jfa6ril71cw5nsiw0r45br54dd8cj2r1nc2d1wq6wb3jilgc3"; + procMacro = true; + authors = [ + "Dragoș Tiselice " + ]; + dependencies = [ + { + name = "pest"; + packageId = "pest"; + } + { + name = "pest_generator"; + packageId = "pest_generator"; + } + ]; + + }; + "pest_generator" = rec { + crateName = "pest_generator"; + version = "2.1.3"; + edition = "2015"; + sha256 = "0mfgl0p6v91ywdqr9i8w053v70cnfqjk8y5rhwbvir9idridpf4r"; + authors = [ + "Dragoș Tiselice " + ]; + dependencies = [ + { + name = "pest"; + packageId = "pest"; + } + { + name = "pest_meta"; + packageId = "pest_meta"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + } + ]; + + }; + "pest_meta" = rec { + crateName = "pest_meta"; + version = "2.1.3"; + edition = "2015"; + sha256 = "07d1jbbbpxpchk0j37ljas46sdyyg599z3zw2ac0f5sk9x06xgjl"; + authors = [ + "Dragoș Tiselice " + ]; + dependencies = [ + { + name = "maplit"; + packageId = "maplit"; + } + { + name = "pest"; + packageId = "pest"; + } + ]; + buildDependencies = [ + { + name = "sha-1"; + packageId = "sha-1"; + usesDefaultFeatures = false; + } + ]; + + }; + "phf" = rec { + crateName = "phf"; + version = "0.8.0"; + edition = "2018"; + sha256 = "04pyv8bzqvw69rd5dynd5nb85py1hf7wa4ixyhrvdz1l5qin3yrx"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "phf_shared"; + packageId = "phf_shared"; + } + ]; + features = { + "default" = [ "std" ]; + "macros" = [ "phf_macros" "proc-macro-hack" ]; + "std" = [ "phf_shared/std" ]; + "unicase" = [ "phf_shared/unicase" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "phf_codegen" = rec { + crateName = "phf_codegen"; + version = "0.8.0"; + edition = "2018"; + sha256 = "05d8w7aqqjb6039pfm6404gk5dlwrrf97kiy1n21212vb1hyxzyb"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "phf_generator"; + packageId = "phf_generator"; + } + { + name = "phf_shared"; + packageId = "phf_shared"; + } + ]; + + }; + "phf_generator" = rec { + crateName = "phf_generator"; + version = "0.8.0"; + edition = "2018"; + crateBin = []; + sha256 = "09i5338d1kixq6a60fcayz6awgxjlxcfw9ic5f02abbgr067ydhp"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "phf_shared"; + packageId = "phf_shared"; + } + { + name = "rand"; + packageId = "rand"; + features = [ "small_rng" ]; + } + ]; + + }; + "phf_shared" = rec { + crateName = "phf_shared"; + version = "0.8.0"; + edition = "2018"; + sha256 = "1xssnqrrcn0nr9ayqrnm8xm37ac4xvwcx8pax7jxss7yxawzh360"; + authors = [ + "Steven Fackler " + ]; + dependencies = [ + { + name = "siphasher"; + packageId = "siphasher"; + } + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "pin-project" = rec { + crateName = "pin-project"; + version = "0.4.9"; + edition = "2018"; + sha256 = "18i66hjxg93ch1ayh18r7lxrvshaq1ahqhwkqxcwb4k2xrg7yskg"; + authors = [ + "Taiki Endo " + ]; + dependencies = [ + { + name = "pin-project-internal"; + packageId = "pin-project-internal"; + usesDefaultFeatures = false; + } + ]; + + }; + "pin-project-internal" = rec { + crateName = "pin-project-internal"; + version = "0.4.9"; + edition = "2018"; + sha256 = "16nrp90357zi6j177g9s5pihnk1nv9nw0yqif8k6in4hww647249"; + procMacro = true; + authors = [ + "Taiki Endo " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + features = [ "full" "visit-mut" ]; + } + ]; + + }; + "pin-project-lite" = rec { + crateName = "pin-project-lite"; + version = "0.1.4"; + edition = "2018"; + sha256 = "1bljczwz9yyb6jskjhbkilcbdg7v1mhfwzp2mxknzf7v1isl8y13"; + authors = [ + "Taiki Endo " + ]; + + }; + "pin-utils" = rec { + crateName = "pin-utils"; + version = "0.1.0-alpha.4"; + edition = "2018"; + sha256 = "11xmyx00n4m37d546by2rxb8ryxs12v55cc172i3yak1rqccd52q"; + authors = [ + "Josef Brandl " + ]; + + }; + "ppv-lite86" = rec { + crateName = "ppv-lite86"; + version = "0.2.6"; + edition = "2018"; + sha256 = "06zs492wbms7j5qhy58cs3976c7kyc47rx0d6fn63rgvp580njbl"; + authors = [ + "The CryptoCorrosion Contributors" + ]; + features = { + "default" = [ "std" "simd" ]; + }; + resolvedDefaultFeatures = [ "simd" "std" ]; + }; + "precomputed-hash" = rec { + crateName = "precomputed-hash"; + version = "0.1.1"; + edition = "2015"; + sha256 = "075k9bfy39jhs53cb2fpb9klfakx2glxnf28zdw08ws6lgpq6lwj"; + authors = [ + "Emilio Cobos Álvarez " + ]; + + }; + "pretty_assertions" = rec { + crateName = "pretty_assertions"; + version = "0.6.1"; + edition = "2018"; + sha256 = "09yl14gnmpygiqrdlsa64lcl4w6ydjl9m8jri6kgam0v9rjf309z"; + authors = [ + "Colin Kiegel " + "Florent Fayolle " + ]; + dependencies = [ + { + name = "ansi_term"; + packageId = "ansi_term"; + } + { + name = "ctor"; + packageId = "ctor"; + target = { target, features }: target."windows"; + } + { + name = "difference"; + packageId = "difference"; + } + { + name = "output_vt100"; + packageId = "output_vt100"; + target = { target, features }: target."windows"; + } + ]; + + }; + "proc-macro-hack" = rec { + crateName = "proc-macro-hack"; + version = "0.5.15"; + edition = "2018"; + sha256 = "0qqbfm1byabjkph56r2rlvv4cliz4960j6hav3ljazyjqvkryr8d"; + procMacro = true; + authors = [ + "David Tolnay " + ]; + + }; + "proc-macro-nested" = rec { + crateName = "proc-macro-nested"; + version = "0.1.4"; + edition = "2015"; + sha256 = "15664z2pjnn7ajpbrir4wh4c16jxz4i8r46y73n2kvfkz6an154f"; + authors = [ + "David Tolnay " + ]; + + }; + "proc-macro2" = rec { + crateName = "proc-macro2"; + version = "1.0.10"; + edition = "2018"; + sha256 = "1qxbnl8i3a5b2nxb8kdxbq6kj3pd1ckhm35wm7z3jd7n5wlns96z"; + authors = [ + "Alex Crichton " + "David Tolnay " + ]; + dependencies = [ + { + name = "unicode-xid"; + packageId = "unicode-xid"; + } + ]; + features = { + "default" = [ "proc-macro" ]; + }; + resolvedDefaultFeatures = [ "default" "proc-macro" ]; + }; + "pulldown-cmark" = rec { + crateName = "pulldown-cmark"; + version = "0.7.0"; + edition = "2018"; + crateBin = []; + sha256 = "191m9zkfhgrly331wjhs8c5vgamc05ig9bsjvxihs3l0678pyb9c"; + authors = [ + "Raph Levien " + "Marcus Klaas de Vries " + ]; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags"; + } + { + name = "getopts"; + packageId = "getopts"; + optional = true; + } + { + name = "memchr"; + packageId = "memchr"; + } + { + name = "unicase"; + packageId = "unicase"; + } + ]; + features = { + "default" = [ "getopts" ]; + }; + resolvedDefaultFeatures = [ "default" "getopts" ]; + }; + "quick-error" = rec { + crateName = "quick-error"; + version = "1.2.3"; + edition = "2015"; + sha256 = "1q6za3v78hsspisc197bg3g7rpc989qycy8ypr8ap8igv10ikl51"; + authors = [ + "Paul Colomiets " + "Colin Kiegel " + ]; + + }; + "quote" = rec { + crateName = "quote"; + version = "1.0.3"; + edition = "2018"; + sha256 = "0zwd6fp74xfg4jnnnwj4v84lkzif2giwj4ch1hka9g35ghc6rp1b"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; + } + ]; + features = { + "default" = [ "proc-macro" ]; + "proc-macro" = [ "proc-macro2/proc-macro" ]; + }; + resolvedDefaultFeatures = [ "default" "proc-macro" ]; + }; + "rand" = rec { + crateName = "rand"; + version = "0.7.3"; + edition = "2018"; + sha256 = "00sdaimkbz491qgi6qxkv582yivl32m2jd401kzbn94vsiwicsva"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "getrandom"; + packageId = "getrandom"; + rename = "getrandom_package"; + optional = true; + } + { + name = "libc"; + packageId = "libc"; + optional = true; + usesDefaultFeatures = false; + target = { target, features }: target."unix"; + } + { + name = "rand_chacha"; + packageId = "rand_chacha"; + usesDefaultFeatures = false; + target = { target, features }: (!(target."os" == "emscripten")); + } + { + name = "rand_core"; + packageId = "rand_core"; + } + { + name = "rand_hc"; + packageId = "rand_hc"; + target = { target, features }: (target."os" == "emscripten"); + } + { + name = "rand_pcg"; + packageId = "rand_pcg"; + optional = true; + } + ]; + devDependencies = [ + { + name = "rand_hc"; + packageId = "rand_hc"; + } + { + name = "rand_pcg"; + packageId = "rand_pcg"; + } + ]; + features = { + "alloc" = [ "rand_core/alloc" ]; + "default" = [ "std" ]; + "getrandom" = [ "getrandom_package" "rand_core/getrandom" ]; + "nightly" = [ "simd_support" ]; + "simd_support" = [ "packed_simd" ]; + "small_rng" = [ "rand_pcg" ]; + "std" = [ "rand_core/std" "rand_chacha/std" "alloc" "getrandom" "libc" ]; + "stdweb" = [ "getrandom_package/stdweb" ]; + "wasm-bindgen" = [ "getrandom_package/wasm-bindgen" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "getrandom" "getrandom_package" "libc" "rand_pcg" "small_rng" "std" ]; + }; + "rand_chacha" = rec { + crateName = "rand_chacha"; + version = "0.2.2"; + edition = "2018"; + sha256 = "00il36fkdbsmpr99p9ksmmp6dn1md7rmnwmz0rr77jbrca2yvj7l"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + "The CryptoCorrosion Contributors" + ]; + dependencies = [ + { + name = "ppv-lite86"; + packageId = "ppv-lite86"; + usesDefaultFeatures = false; + features = [ "simd" ]; + } + { + name = "rand_core"; + packageId = "rand_core"; + } + ]; + features = { + "default" = [ "std" "simd" ]; + "std" = [ "ppv-lite86/std" ]; + }; + resolvedDefaultFeatures = [ "std" ]; + }; + "rand_core" = rec { + crateName = "rand_core"; + version = "0.5.1"; + edition = "2018"; + sha256 = "06bdvx08v3rkz451cm7z59xwwqn1rkfh6v9ay77b14f8dwlybgch"; + authors = [ + "The Rand Project Developers" + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "getrandom"; + packageId = "getrandom"; + optional = true; + } + ]; + features = { + "serde1" = [ "serde" ]; + "std" = [ "alloc" "getrandom" "getrandom/std" ]; + }; + resolvedDefaultFeatures = [ "alloc" "getrandom" "std" ]; + }; + "rand_hc" = rec { + crateName = "rand_hc"; + version = "0.2.0"; + edition = "2018"; + sha256 = "0g31sqwpmsirdlwr0svnacr4dbqyz339im4ssl9738cjgfpjjcfa"; + authors = [ + "The Rand Project Developers" + ]; + dependencies = [ + { + name = "rand_core"; + packageId = "rand_core"; + } + ]; + + }; + "rand_pcg" = rec { + crateName = "rand_pcg"; + version = "0.2.1"; + edition = "2018"; + sha256 = "0ab4h6s6x3py833jk61lwadq83qd1c8bih2hgi6yps9rnv0x1aqn"; + authors = [ + "The Rand Project Developers" + ]; + dependencies = [ + { + name = "rand_core"; + packageId = "rand_core"; + } + ]; + features = { + "serde1" = [ "serde" ]; + }; + }; + "redox_syscall" = rec { + crateName = "redox_syscall"; + version = "0.1.56"; + edition = "2015"; + sha256 = "110y7dyfm2vci4x5vk7gr0q551dvp31npl99fnsx2fb17wzwcf94"; + libName = "syscall"; + authors = [ + "Jeremy Soller " + ]; + + }; + "regex" = rec { + crateName = "regex"; + version = "1.3.7"; + edition = "2015"; + sha256 = "14knp8k0r89lf6qanv0nh93br09q8lksd0hvf561kqr2941hy0m6"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "aho-corasick"; + packageId = "aho-corasick"; + optional = true; + } + { + name = "memchr"; + packageId = "memchr"; + optional = true; + } + { + name = "regex-syntax"; + packageId = "regex-syntax"; + usesDefaultFeatures = false; + } + { + name = "thread_local"; + packageId = "thread_local"; + optional = true; + } + ]; + features = { + "default" = [ "std" "perf" "unicode" "regex-syntax/default" ]; + "perf" = [ "perf-cache" "perf-dfa" "perf-inline" "perf-literal" ]; + "perf-cache" = [ "thread_local" ]; + "perf-literal" = [ "aho-corasick" "memchr" ]; + "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "regex-syntax/unicode" ]; + "unicode-age" = [ "regex-syntax/unicode-age" ]; + "unicode-bool" = [ "regex-syntax/unicode-bool" ]; + "unicode-case" = [ "regex-syntax/unicode-case" ]; + "unicode-gencat" = [ "regex-syntax/unicode-gencat" ]; + "unicode-perl" = [ "regex-syntax/unicode-perl" ]; + "unicode-script" = [ "regex-syntax/unicode-script" ]; + "unicode-segment" = [ "regex-syntax/unicode-segment" ]; + "unstable" = [ "pattern" ]; + "use_std" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "aho-corasick" "default" "memchr" "perf" "perf-cache" "perf-dfa" "perf-inline" "perf-literal" "std" "thread_local" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; + }; + "regex-syntax" = rec { + crateName = "regex-syntax"; + version = "0.6.17"; + edition = "2015"; + sha256 = "1blmlgzcg7in3kcxqabpfzzrbnamr2i671flbrmlqhfps5bvvrbz"; + authors = [ + "The Rust Project Developers" + ]; + features = { + "default" = [ "unicode" ]; + "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; + }; + resolvedDefaultFeatures = [ "default" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ]; + }; + "remove_dir_all" = rec { + crateName = "remove_dir_all"; + version = "0.5.2"; + edition = "2015"; + sha256 = "0bkrlyg26mgizpiy1yb2hhpgscxcag8r5fnckqsvk25608vzm0sa"; + authors = [ + "Aaronepower " + ]; + dependencies = [ + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "std" "errhandlingapi" "winerror" "fileapi" "winbase" ]; + } + ]; + + }; + "ryu" = rec { + crateName = "ryu"; + version = "1.0.3"; + edition = "2015"; + sha256 = "0xlx9ybzncrb7d6r9533g8ydlg6mr252pfzl4g9cqaqkpvk24mjk"; + authors = [ + "David Tolnay " + ]; + features = { + }; + }; + "same-file" = rec { + crateName = "same-file"; + version = "1.0.6"; + edition = "2018"; + sha256 = "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "winapi-util"; + packageId = "winapi-util"; + target = { target, features }: target."windows"; + } + ]; + + }; + "scoped-tls" = rec { + crateName = "scoped-tls"; + version = "1.0.0"; + edition = "2015"; + sha256 = "1hj8lifzvivdb1z02lfnzkshpvk85nkgzxsy2hc0zky9wf894spa"; + authors = [ + "Alex Crichton " + ]; + + }; + "select" = rec { + crateName = "select"; + version = "0.5.0"; + edition = "2015"; + sha256 = "1dvnb12fqczq0mqgyh7pafkhngv8478x0y3sxy5ngj7w1bwn3q4f"; + authors = [ + "Utkarsh Kukreti " + ]; + dependencies = [ + { + name = "bit-set"; + packageId = "bit-set"; + } + { + name = "html5ever"; + packageId = "html5ever"; + } + { + name = "markup5ever_rcdom"; + packageId = "markup5ever_rcdom"; + } + ]; + + }; + "serde" = rec { + crateName = "serde"; + version = "1.0.106"; + edition = "2015"; + sha256 = "169kg1px2k0hlxziiikdwy42wnrs2gjbvsv7yxygcwi08736mprn"; + authors = [ + "Erick Tryzelaar " + "David Tolnay " + ]; + features = { + "default" = [ "std" ]; + "derive" = [ "serde_derive" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "serde_derive" = rec { + crateName = "serde_derive"; + version = "1.0.106"; + edition = "2015"; + sha256 = "0v7a2rkpx9hi70pv2wr2h0h07rgmr7gi37v0s4dn5f2gpwx9wm4y"; + procMacro = true; + authors = [ + "Erick Tryzelaar " + "David Tolnay " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + features = [ "visit" ]; + } + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "serde_json" = rec { + crateName = "serde_json"; + version = "1.0.52"; + edition = "2018"; + sha256 = "1pcyg6xhca5giyh9hnxph201bly1vrgh4ygbk8kklyjvs274r2d7"; + authors = [ + "Erick Tryzelaar " + "David Tolnay " + ]; + dependencies = [ + { + name = "itoa"; + packageId = "itoa"; + usesDefaultFeatures = false; + } + { + name = "ryu"; + packageId = "ryu"; + } + { + name = "serde"; + packageId = "serde"; + usesDefaultFeatures = false; + } + ]; + features = { + "alloc" = [ "serde/alloc" ]; + "default" = [ "std" ]; + "preserve_order" = [ "indexmap" ]; + "std" = [ "serde/std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "serde_urlencoded" = rec { + crateName = "serde_urlencoded"; + version = "0.6.1"; + edition = "2015"; + sha256 = "15rcwfkff0md5i231m2ym5756ksw1mkh5b5g2rw72wsc5mzdgicy"; + authors = [ + "Anthony Ramine " + ]; + dependencies = [ + { + name = "dtoa"; + packageId = "dtoa"; + } + { + name = "itoa"; + packageId = "itoa"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "url"; + packageId = "url"; + } + ]; + + }; + "sha-1" = rec { + crateName = "sha-1"; + version = "0.8.2"; + edition = "2015"; + sha256 = "1pv387q0r7llk2cqzyq0nivzvkgqgzsiygqzlv7b68z9xl5lvngp"; + libName = "sha1"; + authors = [ + "RustCrypto Developers" + ]; + dependencies = [ + { + name = "block-buffer"; + packageId = "block-buffer"; + } + { + name = "digest"; + packageId = "digest"; + } + { + name = "fake-simd"; + packageId = "fake-simd"; + } + { + name = "opaque-debug"; + packageId = "opaque-debug"; + } + ]; + devDependencies = [ + { + name = "digest"; + packageId = "digest"; + features = [ "dev" ]; + } + ]; + features = { + "asm" = [ "sha1-asm" ]; + "asm-aarch64" = [ "asm" "libc" ]; + "default" = [ "std" ]; + "std" = [ "digest/std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "shlex" = rec { + crateName = "shlex"; + version = "0.1.1"; + edition = "2015"; + sha256 = "1lmv6san7g8dv6jdfp14m7bdczq9ss7j7bgsfqyqjc3jnjfippvz"; + authors = [ + "comex " + ]; + + }; + "siphasher" = rec { + crateName = "siphasher"; + version = "0.3.2"; + edition = "2015"; + sha256 = "08xvk3yi4vawppm1f81s4zrkksf95psz8gczh36y808candgi24f"; + authors = [ + "Frank Denis " + ]; + features = { + "default" = [ "std" ]; + "serde_no_std" = [ "serde/alloc" ]; + "serde_std" = [ "std" "serde/std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "slab" = rec { + crateName = "slab"; + version = "0.4.2"; + edition = "2015"; + sha256 = "1y59xsa27jk84sxzswjk60xcjf8b4fm5960jwpznrrcmasyva4f1"; + authors = [ + "Carl Lerche " + ]; + + }; + "smallvec" = rec { + crateName = "smallvec"; + version = "1.3.0"; + edition = "2018"; + sha256 = "02jf46c35hzb0bhhd95cqp1jc0nha2pcx6ba9xry86arc4i0wwh5"; + libPath = "lib.rs"; + authors = [ + "Simon Sapin " + ]; + features = { + }; + }; + "string_cache" = rec { + crateName = "string_cache"; + version = "0.8.0"; + edition = "2018"; + sha256 = "12i0synp8l0qpnzi5qki4pjq3jx28ykikyffjjjg6fsfxddwfh19"; + authors = [ + "The Servo Project Developers" + ]; + dependencies = [ + { + name = "lazy_static"; + packageId = "lazy_static"; + } + { + name = "new_debug_unreachable"; + packageId = "new_debug_unreachable"; + } + { + name = "phf_shared"; + packageId = "phf_shared"; + } + { + name = "precomputed-hash"; + packageId = "precomputed-hash"; + } + { + name = "serde"; + packageId = "serde"; + } + ]; + + }; + "string_cache_codegen" = rec { + crateName = "string_cache_codegen"; + version = "0.5.1"; + edition = "2018"; + sha256 = "15vbk5i7kkj5bbx7f0fi477js4svw5py39gi4rk74anj35g8wk7j"; + libPath = "lib.rs"; + authors = [ + "The Servo Project Developers" + ]; + dependencies = [ + { + name = "phf_generator"; + packageId = "phf_generator"; + } + { + name = "phf_shared"; + packageId = "phf_shared"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + ]; + + }; + "strsim" = rec { + crateName = "strsim"; + version = "0.8.0"; + edition = "2015"; + sha256 = "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf"; + authors = [ + "Danny Guo " + ]; + + }; + "strum" = rec { + crateName = "strum"; + version = "0.16.0"; + edition = "2015"; + sha256 = "08ld32irbvx3z6ndc9a7vfkxcgpsfvyf651kfqs03n8nibwghf31"; + authors = [ + "Peter Glotfelty " + ]; + features = { + "derive" = [ "strum_macros" ]; + }; + }; + "strum_macros" = rec { + crateName = "strum_macros"; + version = "0.16.0"; + edition = "2015"; + sha256 = "10awwslby71psnkh7ll1y27kdv2bps2dxfcjhp6scfa0fvgsfm00"; + procMacro = true; + authors = [ + "Peter Glotfelty " + ]; + dependencies = [ + { + name = "heck"; + packageId = "heck"; + } + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + features = [ "parsing" "extra-traits" ]; + } + ]; + features = { + }; + }; + "syn" = rec { + crateName = "syn"; + version = "1.0.17"; + edition = "2018"; + sha256 = "00xvf772ys4fj9fr8kplmsqb9if215dsipi3nv54aw9q7xkfpw0d"; + authors = [ + "David Tolnay " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + usesDefaultFeatures = false; + } + { + name = "quote"; + packageId = "quote"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "unicode-xid"; + packageId = "unicode-xid"; + } + ]; + features = { + "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ]; + "printing" = [ "quote" ]; + "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ]; + }; + resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "fold" "full" "parsing" "printing" "proc-macro" "quote" "visit" "visit-mut" ]; + }; + "tempfile" = rec { + crateName = "tempfile"; + version = "3.1.0"; + edition = "2018"; + sha256 = "1a9cfdqw70n7bcnkx05aih9xdba8lqazmqlkjpkmn2la6gcj8vks"; + authors = [ + "Steven Allen " + "The Rust Project Developers" + "Ashley Mannix " + "Jason White " + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + target = { target, features }: target."unix"; + } + { + name = "rand"; + packageId = "rand"; + } + { + name = "redox_syscall"; + packageId = "redox_syscall"; + target = { target, features }: (target."os" == "redox"); + } + { + name = "remove_dir_all"; + packageId = "remove_dir_all"; + } + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "fileapi" "handleapi" "winbase" ]; + } + ]; + + }; + "tendril" = rec { + crateName = "tendril"; + version = "0.4.1"; + edition = "2015"; + sha256 = "0fsx7blrrzgca8aa2yqy8zxyi8s7amskhgkk1ml5sbaqyalyszvh"; + authors = [ + "Keegan McAllister " + "Simon Sapin " + "Chris Morgan " + ]; + dependencies = [ + { + name = "futf"; + packageId = "futf"; + } + { + name = "mac"; + packageId = "mac"; + } + { + name = "utf-8"; + packageId = "utf-8"; + } + ]; + features = { + }; + }; + "termcolor" = rec { + crateName = "termcolor"; + version = "1.1.0"; + edition = "2018"; + sha256 = "0pyp8vc0gx7124y80ixdl6plbfn1yjhw04i875k5fz2dk8lglsxv"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "winapi-util"; + packageId = "winapi-util"; + target = { target, features }: target."windows"; + } + ]; + + }; + "textwrap" = rec { + crateName = "textwrap"; + version = "0.11.0"; + edition = "2015"; + sha256 = "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk"; + authors = [ + "Martin Geisler " + ]; + dependencies = [ + { + name = "unicode-width"; + packageId = "unicode-width"; + } + ]; + + }; + "thread_local" = rec { + crateName = "thread_local"; + version = "1.0.1"; + edition = "2015"; + sha256 = "054vlrr1vsdy1h4b7n99mr24pnj8928ig9qwzg36wnkld4dns36l"; + authors = [ + "Amanieu d'Antras " + ]; + dependencies = [ + { + name = "lazy_static"; + packageId = "lazy_static"; + } + ]; + + }; + "time" = rec { + crateName = "time"; + version = "0.1.43"; + edition = "2015"; + sha256 = "0f14wrgxj7ya2v4msg5mni7046bsm2angm7cn3pd3yv04gpm12na"; + authors = [ + "The Rust Project Developers" + ]; + dependencies = [ + { + name = "libc"; + packageId = "libc"; + } + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "std" "minwinbase" "minwindef" "ntdef" "profileapi" "sysinfoapi" "timezoneapi" ]; + } + ]; + devDependencies = [ + { + name = "winapi"; + packageId = "winapi 0.3.8"; + features = [ "std" "processthreadsapi" "winbase" ]; + } + ]; + + }; + "tokio" = rec { + crateName = "tokio"; + version = "0.2.18"; + edition = "2018"; + sha256 = "04v7rfkrlr8cx30ygy0n45skf6pdbif0zisn9a5xrdnjfb81dvrl"; + authors = [ + "Tokio Contributors " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "fnv"; + packageId = "fnv"; + optional = true; + } + { + name = "futures-core"; + packageId = "futures-core"; + optional = true; + } + { + name = "iovec"; + packageId = "iovec"; + optional = true; + } + { + name = "lazy_static"; + packageId = "lazy_static"; + optional = true; + } + { + name = "memchr"; + packageId = "memchr"; + optional = true; + } + { + name = "mio"; + packageId = "mio"; + optional = true; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "slab"; + packageId = "slab"; + optional = true; + } + { + name = "tokio-macros"; + packageId = "tokio-macros"; + optional = true; + } + ]; + features = { + "blocking" = [ "rt-core" ]; + "dns" = [ "rt-core" ]; + "fs" = [ "rt-core" "io-util" ]; + "full" = [ "blocking" "dns" "fs" "io-driver" "io-util" "io-std" "macros" "net" "process" "rt-core" "rt-util" "rt-threaded" "signal" "stream" "sync" "time" ]; + "io-driver" = [ "mio" "lazy_static" ]; + "io-std" = [ "rt-core" ]; + "io-util" = [ "memchr" ]; + "macros" = [ "tokio-macros" ]; + "net" = [ "dns" "tcp" "udp" "uds" ]; + "process" = [ "io-driver" "libc" "mio-named-pipes" "signal" "winapi/consoleapi" "winapi/minwindef" "winapi/threadpoollegacyapiset" "winapi/winerror" ]; + "rt-threaded" = [ "num_cpus" "rt-core" ]; + "signal" = [ "io-driver" "lazy_static" "libc" "mio-uds" "signal-hook-registry" "winapi/consoleapi" "winapi/minwindef" ]; + "stream" = [ "futures-core" ]; + "sync" = [ "fnv" ]; + "tcp" = [ "io-driver" "iovec" ]; + "time" = [ "slab" ]; + "udp" = [ "io-driver" ]; + "uds" = [ "io-driver" "mio-uds" "libc" ]; + }; + resolvedDefaultFeatures = [ "blocking" "default" "fnv" "fs" "futures-core" "io-driver" "io-util" "iovec" "lazy_static" "macros" "memchr" "mio" "rt-core" "slab" "stream" "sync" "tcp" "time" "tokio-macros" ]; + }; + "tokio-macros" = rec { + crateName = "tokio-macros"; + version = "0.2.5"; + edition = "2018"; + sha256 = "1283aq0l7rnh79zzqk4r34dgimvwcymrzmg1yah9ai2nmb3arhzh"; + procMacro = true; + authors = [ + "Tokio Contributors " + ]; + dependencies = [ + { + name = "proc-macro2"; + packageId = "proc-macro2"; + } + { + name = "quote"; + packageId = "quote"; + } + { + name = "syn"; + packageId = "syn"; + features = [ "full" ]; + } + ]; + + }; + "tokio-tungstenite" = rec { + crateName = "tokio-tungstenite"; + version = "0.10.1"; + edition = "2018"; + sha256 = "0al8h802iiqjy9kgd8vj010ck2a3vbbni62428skdg3y024gxf5q"; + authors = [ + "Daniel Abramov " + "Alexey Galakhov " + ]; + dependencies = [ + { + name = "futures"; + packageId = "futures"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "tokio"; + packageId = "tokio"; + usesDefaultFeatures = false; + features = [ "io-util" ]; + } + { + name = "tungstenite"; + packageId = "tungstenite"; + usesDefaultFeatures = false; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + usesDefaultFeatures = false; + features = [ "io-std" "macros" ]; + } + ]; + features = { + "connect" = [ "stream" "tokio/net" ]; + "default" = [ "connect" ]; + "tls" = [ "native-tls" "tokio-tls" "stream" "tungstenite/tls" ]; + }; + }; + "tokio-util" = rec { + crateName = "tokio-util"; + version = "0.3.1"; + edition = "2018"; + sha256 = "16b48dl6sbc9x944jgjvsd65ab1w2c2qcziddbrbwv1b3y4l50my"; + authors = [ + "Tokio Contributors " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "futures-core"; + packageId = "futures-core"; + } + { + name = "futures-sink"; + packageId = "futures-sink"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "pin-project-lite"; + packageId = "pin-project-lite"; + } + { + name = "tokio"; + packageId = "tokio"; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + features = [ "full" ]; + } + ]; + features = { + "codec" = [ "tokio/stream" ]; + "compat" = [ "futures-io" ]; + "full" = [ "codec" "udp" "compat" ]; + "udp" = [ "tokio/udp" ]; + }; + resolvedDefaultFeatures = [ "codec" "default" ]; + }; + "toml" = rec { + crateName = "toml"; + version = "0.5.6"; + edition = "2018"; + sha256 = "06n7j8z63hj6g0kj2x6sqwxnm4q3s0q5d873bdk41vqy1cb2vjgz"; + authors = [ + "Alex Crichton " + ]; + dependencies = [ + { + name = "serde"; + packageId = "serde"; + } + ]; + features = { + "preserve_order" = [ "indexmap" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "tower-service" = rec { + crateName = "tower-service"; + version = "0.3.0"; + edition = "2018"; + sha256 = "0q4q53w82w1wd71x7vbspg2l3jicb6al2w1qdwxmnjrz8jzvd1z9"; + authors = [ + "Tower Maintainers " + ]; + + }; + "try-lock" = rec { + crateName = "try-lock"; + version = "0.2.2"; + edition = "2015"; + sha256 = "10p36rx6pqi9d0zr876xa8vksx2m66ha45myakl50rn08dxyn176"; + authors = [ + "Sean McArthur " + ]; + + }; + "tungstenite" = rec { + crateName = "tungstenite"; + version = "0.10.1"; + edition = "2018"; + sha256 = "0ki6qhd6wh9ysa717i6p3cba6wbhy3jyhql9j68gjx7nidsk3sng"; + authors = [ + "Alexey Galakhov" + ]; + dependencies = [ + { + name = "base64"; + packageId = "base64 0.11.0"; + } + { + name = "byteorder"; + packageId = "byteorder"; + } + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "httparse"; + packageId = "httparse"; + } + { + name = "input_buffer"; + packageId = "input_buffer"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "rand"; + packageId = "rand"; + } + { + name = "sha-1"; + packageId = "sha-1"; + } + { + name = "url"; + packageId = "url"; + } + { + name = "utf-8"; + packageId = "utf-8"; + } + ]; + features = { + "default" = [ "tls" ]; + "tls" = [ "native-tls" ]; + }; + }; + "typenum" = rec { + crateName = "typenum"; + version = "1.12.0"; + edition = "2015"; + sha256 = "0cvbksljz61ian21fnn0h51kphl0pwpzb932bv4s0rwy1wh8lg1p"; + build = "build/main.rs"; + authors = [ + "Paho Lurie-Gregg " + "Andre Bogus " + ]; + features = { + }; + }; + "ucd-trie" = rec { + crateName = "ucd-trie"; + version = "0.1.3"; + edition = "2018"; + sha256 = "072cblf8v3wzyaz3lhbpzgil4s03dpzg1ppy3gqx2l4v622y3pjn"; + authors = [ + "Andrew Gallant " + ]; + features = { + "default" = [ "std" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "unicase" = rec { + crateName = "unicase"; + version = "2.6.0"; + edition = "2015"; + sha256 = "1xmlbink4ycgxrkjspp0mf7pghcx4m7vxq7fpfm04ikr2zk7pwsh"; + authors = [ + "Sean McArthur " + ]; + buildDependencies = [ + { + name = "version_check"; + packageId = "version_check"; + } + ]; + features = { + }; + }; + "unicode-bidi" = rec { + crateName = "unicode-bidi"; + version = "0.3.4"; + edition = "2015"; + sha256 = "1malx8ljgm7v1gbaazkn7iicy5wj0bwcyadj3l727a38ch6bvwj9"; + libName = "unicode_bidi"; + authors = [ + "The Servo Project Developers" + ]; + dependencies = [ + { + name = "matches"; + packageId = "matches"; + } + ]; + features = { + "flame_it" = [ "flame" "flamer" ]; + "with_serde" = [ "serde" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "unicode-normalization" = rec { + crateName = "unicode-normalization"; + version = "0.1.12"; + edition = "2015"; + sha256 = "195gb4fzlgg4g9cv6w057ncpmvvnx30r00w9hj114knhmlmm6yal"; + authors = [ + "kwantam " + ]; + dependencies = [ + { + name = "smallvec"; + packageId = "smallvec"; + } + ]; + + }; + "unicode-segmentation" = rec { + crateName = "unicode-segmentation"; + version = "1.6.0"; + edition = "2015"; + sha256 = "1h7d48mzpi8hwf5cvnq07warkv86pvapzzzf32hvbjsk20yiagp8"; + authors = [ + "kwantam " + "Manish Goregaokar " + ]; + features = { + }; + }; + "unicode-width" = rec { + crateName = "unicode-width"; + version = "0.1.7"; + edition = "2015"; + sha256 = "0yflmxkxmm89ckrb3sz58whn491aycrj8cxra0hzzlb72x9rvana"; + authors = [ + "kwantam " + "Manish Goregaokar " + ]; + features = { + "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "unicode-xid" = rec { + crateName = "unicode-xid"; + version = "0.2.0"; + edition = "2015"; + sha256 = "0z09fn515xm7zyr0mmdyxa9mx2f7azcpv74pqmg611iralwpcvl2"; + authors = [ + "erick.tryzelaar " + "kwantam " + ]; + features = { + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "url" = rec { + crateName = "url"; + version = "2.1.1"; + edition = "2015"; + sha256 = "1jw7cw8br4xvjb92ddrrh1r7jvqhyhiknnnfpgq9np63fs24m7c2"; + authors = [ + "The rust-url developers" + ]; + dependencies = [ + { + name = "idna"; + packageId = "idna"; + } + { + name = "matches"; + packageId = "matches"; + } + { + name = "percent-encoding"; + packageId = "percent-encoding"; + } + ]; + + }; + "urlencoding" = rec { + crateName = "urlencoding"; + version = "1.0.0"; + edition = "2015"; + sha256 = "1v9piz5dwrkiyk0w9cfr55y9rqnr90rw9r52wmblrfx854b5dwrx"; + authors = [ + "Bertram Truong " + ]; + + }; + "utf-8" = rec { + crateName = "utf-8"; + version = "0.7.5"; + edition = "2015"; + sha256 = "1iw5rp4i3mfi9k51picbr5bgjqhjcmnxx7001clh5ydq31y2zr05"; + libName = "utf8"; + authors = [ + "Simon Sapin " + ]; + + }; + "vec_map" = rec { + crateName = "vec_map"; + version = "0.8.1"; + edition = "2015"; + sha256 = "06n8hw4hlbcz328a3gbpvmy0ma46vg1lc0r5wf55900szf3qdiq5"; + authors = [ + "Alex Crichton " + "Jorge Aparicio " + "Alexis Beingessner " + "Brian Anderson <>" + "tbu- <>" + "Manish Goregaokar <>" + "Aaron Turon " + "Adolfo Ochagavía <>" + "Niko Matsakis <>" + "Steven Fackler <>" + "Chase Southwood " + "Eduard Burtescu <>" + "Florian Wilkens <>" + "Félix Raimundo <>" + "Tibor Benke <>" + "Markus Siemens " + "Josh Branchaud " + "Huon Wilson " + "Corey Farwell " + "Aaron Liblong <>" + "Nick Cameron " + "Patrick Walton " + "Felix S Klock II <>" + "Andrew Paseltiner " + "Sean McArthur " + "Vadim Petrochenkov <>" + ]; + features = { + "eders" = [ "serde" ]; + }; + }; + "version_check" = rec { + crateName = "version_check"; + version = "0.9.1"; + edition = "2015"; + sha256 = "1kikqlnggii1rvnxrbls55sc46lxvinz5k3giscgncjj4p87b1q7"; + authors = [ + "Sergio Benitez " + ]; + + }; + "walkdir" = rec { + crateName = "walkdir"; + version = "2.3.1"; + edition = "2018"; + sha256 = "0z9g39f49cycdm9vzjf8hnfh3f1csxgd65kmlphj8r2vffy84wbp"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "same-file"; + packageId = "same-file"; + } + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "std" "winnt" ]; + } + { + name = "winapi-util"; + packageId = "winapi-util"; + target = { target, features }: target."windows"; + } + ]; + + }; + "want" = rec { + crateName = "want"; + version = "0.3.0"; + edition = "2018"; + sha256 = "181b2zmwfq389x9n2g1n37cvcvvdand832zz6v8i1l8wrdlaks0w"; + authors = [ + "Sean McArthur " + ]; + dependencies = [ + { + name = "log"; + packageId = "log"; + } + { + name = "try-lock"; + packageId = "try-lock"; + } + ]; + + }; + "warp" = rec { + crateName = "warp"; + version = "0.2.2"; + edition = "2018"; + sha256 = "10jyjiyhvhx145dxnx5b5zpz482yrypsjxlbv2294lxk7qmixkal"; + authors = [ + "Sean McArthur " + ]; + dependencies = [ + { + name = "bytes"; + packageId = "bytes"; + } + { + name = "futures"; + packageId = "futures"; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } + { + name = "headers"; + packageId = "headers"; + } + { + name = "http"; + packageId = "http"; + } + { + name = "hyper"; + packageId = "hyper"; + } + { + name = "log"; + packageId = "log"; + } + { + name = "mime"; + packageId = "mime"; + } + { + name = "mime_guess"; + packageId = "mime_guess"; + } + { + name = "pin-project"; + packageId = "pin-project"; + } + { + name = "scoped-tls"; + packageId = "scoped-tls"; + } + { + name = "serde"; + packageId = "serde"; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "serde_urlencoded"; + packageId = "serde_urlencoded"; + } + { + name = "tokio"; + packageId = "tokio"; + features = [ "blocking" "fs" "stream" "sync" "time" ]; + } + { + name = "tokio-tungstenite"; + packageId = "tokio-tungstenite"; + optional = true; + usesDefaultFeatures = false; + } + { + name = "tower-service"; + packageId = "tower-service"; + } + { + name = "urlencoding"; + packageId = "urlencoding"; + } + ]; + devDependencies = [ + { + name = "tokio"; + packageId = "tokio"; + features = [ "macros" ]; + } + ]; + features = { + "default" = [ "multipart" "websocket" ]; + "tls" = [ "tokio-rustls" ]; + "websocket" = [ "tokio-tungstenite" ]; + }; + resolvedDefaultFeatures = [ "tokio-tungstenite" "websocket" ]; + }; + "wasi" = rec { + crateName = "wasi"; + version = "0.9.0+wasi-snapshot-preview1"; + edition = "2018"; + sha256 = "06g5v3vrdapfzvfq662cij7v8a1flwr2my45nnncdv2galrdzkfc"; + authors = [ + "The Cranelift Project Developers" + ]; + features = { + "default" = [ "std" ]; + "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ]; + }; + resolvedDefaultFeatures = [ "default" "std" ]; + }; + "winapi 0.2.8" = rec { + crateName = "winapi"; + version = "0.2.8"; + edition = "2015"; + sha256 = "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"; + authors = [ + "Peter Atashian " + ]; + + }; + "winapi 0.3.8" = rec { + crateName = "winapi"; + version = "0.3.8"; + edition = "2015"; + sha256 = "1ii9j9lzrhwri0902652awifzx9fpayimbp6hfhhc296xcg0k4w0"; + authors = [ + "Peter Atashian " + ]; + dependencies = [ + { + name = "winapi-i686-pc-windows-gnu"; + packageId = "winapi-i686-pc-windows-gnu"; + target = { target, features }: (stdenv.hostPlatform.config == "i686-pc-windows-gnu"); + } + { + name = "winapi-x86_64-pc-windows-gnu"; + packageId = "winapi-x86_64-pc-windows-gnu"; + target = { target, features }: (stdenv.hostPlatform.config == "x86_64-pc-windows-gnu"); + } + ]; + features = { + "debug" = [ "impl-debug" ]; + }; + resolvedDefaultFeatures = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "ioapiset" "minwinbase" "minwindef" "ntdef" "processenv" "profileapi" "shellapi" "std" "synchapi" "sysinfoapi" "timezoneapi" "winbase" "wincon" "winerror" "winnt" "winsock2" "winuser" "ws2def" "ws2ipdef" "ws2tcpip" ]; + }; + "winapi-build" = rec { + crateName = "winapi-build"; + version = "0.1.1"; + edition = "2015"; + sha256 = "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"; + libName = "build"; + authors = [ + "Peter Atashian " + ]; + + }; + "winapi-i686-pc-windows-gnu" = rec { + crateName = "winapi-i686-pc-windows-gnu"; + version = "0.4.0"; + edition = "2015"; + sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc"; + authors = [ + "Peter Atashian " + ]; + + }; + "winapi-util" = rec { + crateName = "winapi-util"; + version = "0.1.5"; + edition = "2018"; + sha256 = "0y71bp7f6d536czj40dhqk0d55wfbbwqfp2ymqf1an5ibgl6rv3h"; + authors = [ + "Andrew Gallant " + ]; + dependencies = [ + { + name = "winapi"; + packageId = "winapi 0.3.8"; + target = { target, features }: target."windows"; + features = [ "std" "consoleapi" "errhandlingapi" "fileapi" "minwindef" "processenv" "winbase" "wincon" "winerror" "winnt" ]; + } + ]; + + }; + "winapi-x86_64-pc-windows-gnu" = rec { + crateName = "winapi-x86_64-pc-windows-gnu"; + version = "0.4.0"; + edition = "2015"; + sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki"; + authors = [ + "Peter Atashian " + ]; + + }; + "ws2_32-sys" = rec { + crateName = "ws2_32-sys"; + version = "0.2.1"; + edition = "2015"; + sha256 = "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"; + libName = "ws2_32"; + authors = [ + "Peter Atashian " + ]; + dependencies = [ + { + name = "winapi"; + packageId = "winapi 0.2.8"; + } + ]; + buildDependencies = [ + { + name = "winapi-build"; + packageId = "winapi-build"; + } + ]; + + }; + "xml5ever" = rec { + crateName = "xml5ever"; + version = "0.16.1"; + edition = "2018"; + sha256 = "0nbapmdrn4zqry5p01l2mmbb48fcq0gga377p1c4lkb1x3k546qb"; + authors = [ + "The xml5ever project developers" + ]; + dependencies = [ + { + name = "log"; + packageId = "log"; + } + { + name = "mac"; + packageId = "mac"; + } + { + name = "markup5ever"; + packageId = "markup5ever"; + } + { + name = "time"; + packageId = "time"; + } + ]; + + }; + }; + + # +# crate2nix/default.nix (excerpt start) +# + + /* Target (platform) data for conditional dependencies. + This corresponds roughly to what buildRustCrate is setting. + */ + defaultTarget = { + unix = true; + windows = false; + fuchsia = true; + test = false; + + # This doesn't appear to be officially documented anywhere yet. + # See https://github.com/rust-lang-nursery/rust-forge/issues/101. + os = if stdenv.hostPlatform.isDarwin + then "macos" + else stdenv.hostPlatform.parsed.kernel.name; + arch = stdenv.hostPlatform.parsed.cpu.name; + family = "unix"; + env = "gnu"; + endian = + if stdenv.hostPlatform.parsed.cpu.significantByte.name == "littleEndian" + then "little" else "big"; + pointer_width = toString stdenv.hostPlatform.parsed.cpu.bits; + vendor = stdenv.hostPlatform.parsed.vendor.name; + debug_assertions = false; + }; + + /* Filters common temp files and build files. */ + # TODO(pkolloch): Substitute with gitignore filter + sourceFilter = name: type: + let + baseName = builtins.baseNameOf (builtins.toString name); + in + ! ( + # Filter out git + baseName == ".gitignore" + || (type == "directory" && baseName == ".git") + + # Filter out build results + || ( + type == "directory" && ( + baseName == "target" + || baseName == "_site" + || baseName == ".sass-cache" + || baseName == ".jekyll-metadata" + || baseName == "build-artifacts" + ) + ) + + # Filter out nix-build result symlinks + || ( + type == "symlink" && lib.hasPrefix "result" baseName + ) + + # Filter out IDE config + || ( + type == "directory" && ( + baseName == ".idea" || baseName == ".vscode" + ) + ) || lib.hasSuffix ".iml" baseName + + # Filter out nix build files + || baseName == "Cargo.nix" + + # Filter out editor backup / swap files. + || lib.hasSuffix "~" baseName + || builtins.match "^\\.sw[a-z]$$" baseName != null + || builtins.match "^\\..*\\.sw[a-z]$$" baseName != null + || lib.hasSuffix ".tmp" baseName + || lib.hasSuffix ".bak" baseName + || baseName == "tests.nix" + ); + + /* Returns a crate which depends on successful test execution + of crate given as the second argument. + + testCrateFlags: list of flags to pass to the test exectuable + testInputs: list of packages that should be available during test execution + */ + crateWithTest = { crate, testCrate, testCrateFlags, testInputs }: + assert builtins.typeOf testCrateFlags == "list"; + assert builtins.typeOf testInputs == "list"; + let + # override the `crate` so that it will build and execute tests instead of + # building the actual lib and bin targets We just have to pass `--test` + # to rustc and it will do the right thing. We execute the tests and copy + # their log and the test executables to $out for later inspection. + test = let + drv = testCrate.override ( + _: { + buildTests = true; + } + ); + in + pkgs.runCommand "run-tests-${testCrate.name}" { + inherit testCrateFlags; + buildInputs = testInputs; + } '' + set -ex + cd ${crate.src} + for file in ${drv}/tests/*; do + $file $testCrateFlags 2>&1 | tee -a $out + done + ''; + in + crate.overrideAttrs ( + old: { + checkPhase = '' + test -e ${test} + ''; + passthru = (old.passthru or {}) // { + inherit test; + }; + } + ); + + /* A restricted overridable version of builtRustCratesWithFeatures. */ + buildRustCrateWithFeatures = + { packageId + , features ? rootFeatures + , crateOverrides ? defaultCrateOverrides + , buildRustCrateFunc ? ( + if crateOverrides == pkgs.defaultCrateOverrides + then buildRustCrate + else buildRustCrate.override { + defaultCrateOverrides = crateOverrides; + } + ) + , runTests ? false + , testCrateFlags ? [] + , testInputs ? [] + }: + lib.makeOverridable + ( + { features, crateOverrides, runTests, testCrateFlags, testInputs }: + let + builtRustCrates = builtRustCratesWithFeatures { + inherit packageId features buildRustCrateFunc; + runTests = false; + }; + builtTestRustCrates = builtRustCratesWithFeatures { + inherit packageId features buildRustCrateFunc; + runTests = true; + }; + drv = builtRustCrates.${packageId}; + testDrv = builtTestRustCrates.${packageId}; + in + if runTests then + crateWithTest { + crate = drv; + testCrate = testDrv; + inherit testCrateFlags testInputs; + } + else drv + ) + { inherit features crateOverrides runTests testCrateFlags testInputs; }; + + /* Returns an attr set with packageId mapped to the result of buildRustCrateFunc + for the corresponding crate. + */ + builtRustCratesWithFeatures = + { packageId + , features + , crateConfigs ? crates + , buildRustCrateFunc + , runTests + , target ? defaultTarget + } @ args: + assert (builtins.isAttrs crateConfigs); + assert (builtins.isString packageId); + assert (builtins.isList features); + assert (builtins.isAttrs target); + assert (builtins.isBool runTests); + let + rootPackageId = packageId; + mergedFeatures = mergePackageFeatures ( + args // { + inherit rootPackageId; + target = target // { test = runTests; }; + } + ); + + buildByPackageId = packageId: buildByPackageIdImpl packageId; + + # Memoize built packages so that reappearing packages are only built once. + builtByPackageId = + lib.mapAttrs (packageId: value: buildByPackageId packageId) crateConfigs; + + buildByPackageIdImpl = packageId: + let + features = mergedFeatures."${packageId}" or []; + crateConfig' = crateConfigs."${packageId}"; + crateConfig = + builtins.removeAttrs crateConfig' [ "resolvedDefaultFeatures" "devDependencies" ]; + devDependencies = + lib.optionals + (runTests && packageId == rootPackageId) + (crateConfig'.devDependencies or []); + dependencies = + dependencyDerivations { + inherit builtByPackageId features target; + dependencies = + (crateConfig.dependencies or []) + ++ devDependencies; + }; + buildDependencies = + dependencyDerivations { + inherit builtByPackageId features target; + dependencies = crateConfig.buildDependencies or []; + }; + + filterEnabledDependenciesForThis = dependencies: filterEnabledDependencies { + inherit dependencies features target; + }; + + dependenciesWithRenames = + lib.filter (d: d ? "rename") ( + filterEnabledDependenciesForThis + ( + (crateConfig.buildDependencies or []) + ++ (crateConfig.dependencies or []) + ++ devDependencies + ) + ); + + crateRenames = + builtins.listToAttrs + (map (d: { name = d.name; value = d.rename; }) dependenciesWithRenames); + in + buildRustCrateFunc ( + crateConfig // { + src = crateConfig.src or ( + pkgs.fetchurl { + name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz"; + url = "https://crates.io/api/v1/crates/${crateConfig.crateName}/${crateConfig.version}/download"; + sha256 = crateConfig.sha256; + } + ); + inherit features dependencies buildDependencies crateRenames release; + } + ); + in + builtByPackageId; + + /* Returns the actual derivations for the given dependencies. */ + dependencyDerivations = + { builtByPackageId + , features + , dependencies + , target + }: + assert (builtins.isAttrs builtByPackageId); + assert (builtins.isList features); + assert (builtins.isList dependencies); + assert (builtins.isAttrs target); + let + enabledDependencies = filterEnabledDependencies { + inherit dependencies features target; + }; + depDerivation = dependency: builtByPackageId.${dependency.packageId}; + in + map depDerivation enabledDependencies; + + /* Returns a sanitized version of val with all values substituted that cannot + be serialized as JSON. + */ + sanitizeForJson = val: + if builtins.isAttrs val + then lib.mapAttrs (n: v: sanitizeForJson v) val + else if builtins.isList val + then builtins.map sanitizeForJson val + else if builtins.isFunction val + then "function" + else val; + + /* Returns various tools to debug a crate. */ + debugCrate = { packageId, target ? defaultTarget }: + assert (builtins.isString packageId); + let + debug = rec { + # The built tree as passed to buildRustCrate. + buildTree = buildRustCrateWithFeatures { + buildRustCrateFunc = lib.id; + inherit packageId; + }; + sanitizedBuildTree = sanitizeForJson buildTree; + dependencyTree = sanitizeForJson ( + buildRustCrateWithFeatures { + buildRustCrateFunc = crate: { + "01_crateName" = crate.crateName or false; + "02_features" = crate.features or []; + "03_dependencies" = crate.dependencies or []; + }; + inherit packageId; + } + ); + mergedPackageFeatures = mergePackageFeatures { + features = rootFeatures; + inherit packageId target; + }; + diffedDefaultPackageFeatures = diffDefaultPackageFeatures { + inherit packageId target; + }; + }; + in + { internal = debug; }; + + /* Returns differences between cargo default features and crate2nix default + features. + + This is useful for verifying the feature resolution in crate2nix. + */ + diffDefaultPackageFeatures = + { crateConfigs ? crates + , packageId + , target + }: + assert (builtins.isAttrs crateConfigs); + let + prefixValues = prefix: lib.mapAttrs (n: v: { "${prefix}" = v; }); + mergedFeatures = + prefixValues + "crate2nix" + (mergePackageFeatures { inherit crateConfigs packageId target; features = [ "default" ]; }); + configs = prefixValues "cargo" crateConfigs; + combined = lib.foldAttrs (a: b: a // b) {} [ mergedFeatures configs ]; + onlyInCargo = + builtins.attrNames + (lib.filterAttrs (n: v: !(v ? "crate2nix") && (v ? "cargo")) combined); + onlyInCrate2Nix = + builtins.attrNames + (lib.filterAttrs (n: v: (v ? "crate2nix") && !(v ? "cargo")) combined); + differentFeatures = lib.filterAttrs + ( + n: v: + (v ? "crate2nix") + && (v ? "cargo") + && (v.crate2nix.features or []) != (v."cargo".resolved_default_features or []) + ) + combined; + in + builtins.toJSON { + inherit onlyInCargo onlyInCrate2Nix differentFeatures; + }; + + /* Returns an attrset mapping packageId to the list of enabled features. + + If multiple paths to a dependency enable different features, the + corresponding feature sets are merged. Features in rust are additive. + */ + mergePackageFeatures = + { crateConfigs ? crates + , packageId + , rootPackageId ? packageId + , features ? rootFeatures + , dependencyPath ? [ crates.${packageId}.crateName ] + , featuresByPackageId ? {} + , target + # Adds devDependencies to the crate with rootPackageId. + , runTests ? false + , ... + } @ args: + assert (builtins.isAttrs crateConfigs); + assert (builtins.isString packageId); + assert (builtins.isString rootPackageId); + assert (builtins.isList features); + assert (builtins.isList dependencyPath); + assert (builtins.isAttrs featuresByPackageId); + assert (builtins.isAttrs target); + assert (builtins.isBool runTests); + let + crateConfig = crateConfigs."${packageId}" or (builtins.throw "Package not found: ${packageId}"); + expandedFeatures = expandFeatures (crateConfig.features or {}) features; + + depWithResolvedFeatures = dependency: + let + packageId = dependency.packageId; + features = dependencyFeatures expandedFeatures dependency; + in + { inherit packageId features; }; + + resolveDependencies = cache: path: dependencies: + assert (builtins.isAttrs cache); + assert (builtins.isList dependencies); + let + enabledDependencies = filterEnabledDependencies { + inherit dependencies target; + features = expandedFeatures; + }; + directDependencies = map depWithResolvedFeatures enabledDependencies; + foldOverCache = op: lib.foldl op cache directDependencies; + in + foldOverCache + ( + cache: { packageId, features }: + let + cacheFeatures = cache.${packageId} or []; + combinedFeatures = sortedUnique (cacheFeatures ++ features); + in + if cache ? ${packageId} && cache.${packageId} == combinedFeatures + then cache + else mergePackageFeatures { + features = combinedFeatures; + featuresByPackageId = cache; + inherit crateConfigs packageId target runTests rootPackageId; + } + ); + + cacheWithSelf = + let + cacheFeatures = featuresByPackageId.${packageId} or []; + combinedFeatures = sortedUnique (cacheFeatures ++ expandedFeatures); + in + featuresByPackageId // { + "${packageId}" = combinedFeatures; + }; + + cacheWithDependencies = + resolveDependencies cacheWithSelf "dep" ( + crateConfig.dependencies or [] + ++ lib.optionals + (runTests && packageId == rootPackageId) + (crateConfig.devDependencies or []) + ); + + cacheWithAll = + resolveDependencies + cacheWithDependencies "build" + (crateConfig.buildDependencies or []); + in + cacheWithAll; + + /* Returns the enabled dependencies given the enabled features. */ + filterEnabledDependencies = { dependencies, features, target }: + assert (builtins.isList dependencies); + assert (builtins.isList features); + assert (builtins.isAttrs target); + + lib.filter + ( + dep: + let + targetFunc = dep.target or (features: true); + in + targetFunc { inherit features target; } + && ( + !(dep.optional or false) + || builtins.any (doesFeatureEnableDependency dep) features + ) + ) + dependencies; + + /* Returns whether the given feature should enable the given dependency. */ + doesFeatureEnableDependency = { name, rename ? null, ... }: feature: + let + prefix = "${name}/"; + len = builtins.stringLength prefix; + startsWithPrefix = builtins.substring 0 len feature == prefix; + in + (rename == null && feature == name) + || (rename != null && rename == feature) + || startsWithPrefix; + + /* Returns the expanded features for the given inputFeatures by applying the + rules in featureMap. + + featureMap is an attribute set which maps feature names to lists of further + feature names to enable in case this feature is selected. + */ + expandFeatures = featureMap: inputFeatures: + assert (builtins.isAttrs featureMap); + assert (builtins.isList inputFeatures); + let + expandFeature = feature: + assert (builtins.isString feature); + [ feature ] ++ (expandFeatures featureMap (featureMap."${feature}" or [])); + outFeatures = builtins.concatMap expandFeature inputFeatures; + in + sortedUnique outFeatures; + + /* + Returns the actual features for the given dependency. + + features: The features of the crate that refers this dependency. + */ + dependencyFeatures = features: dependency: + assert (builtins.isList features); + assert (builtins.isAttrs dependency); + let + defaultOrNil = if dependency.usesDefaultFeatures or true + then [ "default" ] + else []; + explicitFeatures = dependency.features or []; + additionalDependencyFeatures = + let + dependencyPrefix = (dependency.rename or dependency.name) + "/"; + dependencyFeatures = + builtins.filter (f: lib.hasPrefix dependencyPrefix f) features; + in + builtins.map (lib.removePrefix dependencyPrefix) dependencyFeatures; + in + defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures; + + /* Sorts and removes duplicates from a list of strings. */ + sortedUnique = features: + assert (builtins.isList features); + assert (builtins.all builtins.isString features); + let + outFeaturesSet = lib.foldl (set: feature: set // { "${feature}" = 1; }) {} features; + outFeaturesUnique = builtins.attrNames outFeaturesSet; + in + builtins.sort (a: b: a < b) outFeaturesUnique; + + deprecationWarning = message: value: + if strictDeprecation + then builtins.throw "strictDeprecation enabled, aborting: ${message}" + else builtins.trace message value; + + # + # crate2nix/default.nix (excerpt end) + # + + }; +} diff --git a/default.nix b/default.nix index b623fb81..8b090780 100644 --- a/default.nix +++ b/default.nix @@ -1,7 +1,3 @@ { pkgs }: -pkgs.rustPlatform.buildRustPackage rec { - pname = "mdbook-${version}"; - version = "0.4.2"; - src = ./.; - cargoSha256 = "0ch25ivww62j2kwsd20159hwjfyhfarwmqy9hqn1lv2vhfskry2b"; -} +let cargo_nix = pkgs.callPackage ./Cargo.nix {}; +in cargo_nix.rootCrate.build