aboutsummaryrefslogtreecommitdiff
path: root/nix/Cargo.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix/Cargo.nix')
-rw-r--r--nix/Cargo.nix2106
1 files changed, 2106 insertions, 0 deletions
diff --git a/nix/Cargo.nix b/nix/Cargo.nix
new file mode 100644
index 0000000..21c14f4
--- /dev/null
+++ b/nix/Cargo.nix
@@ -0,0 +1,2106 @@
+
+# This file was @generated by crate2nix 0.10.0 with the command:
+# "generate"
+# See https://github.com/kolloch/crate2nix for more info.
+
+{ nixpkgs ? <nixpkgs>
+, pkgs ? import nixpkgs { config = {}; }
+, lib ? pkgs.lib
+, stdenv ? pkgs.stdenv
+, buildRustCrateForPkgs ? if buildRustCrate != null
+ then lib.warn "crate2nix: Passing `buildRustCrate` as argument to Cargo.nix is deprecated. If you don't customize `buildRustCrate`, replace `callPackage ./Cargo.nix {}` by `import ./Cargo.nix { inherit pkgs; }`, and if you need to customize `buildRustCrate`, use `buildRustCrateForPkgs` instead." (_: buildRustCrate)
+ else pkgs: pkgs.buildRustCrate
+ # Deprecated
+, buildRustCrate ? null
+ # 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
+ # Used for conditional compilation based on CPU feature detection.
+, targetFeatures ? []
+ # Whether to perform release builds: longer compile times, faster binaries.
+, release ? true
+ # Additional crate2nix configuration if it exists.
+, crateConfig
+ ? if builtins.pathExists ./crate-config.nix
+ then pkgs.callPackage ./crate-config.nix {}
+ else {}
+}:
+
+rec {
+ #
+ # "public" attributes that we attempt to keep stable with new versions of crate2nix.
+ #
+
+ rootCrate = rec {
+ packageId = "rustables";
+
+ # 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; };
+ };
+ # Refer your crate build derivation by name here.
+ # You can override the features with
+ # workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }.
+ workspaceMembers = {
+ "rustables" = rec {
+ packageId = "rustables";
+ build = internal.buildRustCrateWithFeatures {
+ packageId = "rustables";
+ };
+
+ # Debug support which might change between releases.
+ # File a bug if you depend on any for non-debug work!
+ debug = internal.debugCrate { inherit packageId; };
+ };
+ };
+
+ # A derivation that joins the outputs of all workspace members together.
+ allWorkspaceMembers = pkgs.symlinkJoin {
+ name = "all-workspace-members";
+ paths =
+ let members = builtins.attrValues workspaceMembers;
+ in builtins.map (m: m.build) members;
+ };
+
+ #
+ # "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.20";
+ edition = "2018";
+ sha256 = "1b3if3nav4qzgjz9bf75b2cv2h2yisrqfs0np70i38kgz4cn94yc";
+ libName = "aho_corasick";
+ authors = [
+ "Andrew Gallant <jamslam@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "memchr";
+ packageId = "memchr";
+ usesDefaultFeatures = false;
+ }
+ ];
+ features = {
+ "default" = [ "std" ];
+ "std" = [ "memchr/std" ];
+ };
+ resolvedDefaultFeatures = [ "default" "std" ];
+ };
+ "ansi_term" = rec {
+ crateName = "ansi_term";
+ version = "0.12.1";
+ edition = "2015";
+ sha256 = "1ljmkbilxgmhavxvxqa7qvm6f3fjggi7q2l3a72q9x0cxjvrnanm";
+ authors = [
+ "ogham@bsago.me"
+ "Ryan Scheel (Havvy) <ryan.havvy@gmail.com>"
+ "Josh Triplett <josh@joshtriplett.org>"
+ ];
+ dependencies = [
+ {
+ name = "winapi";
+ packageId = "winapi";
+ target = { target, features }: (target."os" == "windows");
+ features = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "processenv" ];
+ }
+ ];
+ features = {
+ "derive_serde_style" = [ "serde" ];
+ "serde" = [ "dep:serde" ];
+ };
+ };
+ "atty" = rec {
+ crateName = "atty";
+ version = "0.2.14";
+ edition = "2015";
+ sha256 = "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr";
+ authors = [
+ "softprops <d.tangren@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "hermit-abi";
+ packageId = "hermit-abi";
+ target = { target, features }: (target."os" == "hermit");
+ }
+ {
+ name = "libc";
+ packageId = "libc";
+ usesDefaultFeatures = false;
+ target = { target, features }: (target."unix" or false);
+ }
+ {
+ name = "winapi";
+ packageId = "winapi";
+ target = { target, features }: (target."windows" or false);
+ features = [ "consoleapi" "processenv" "minwinbase" "minwindef" "winbase" ];
+ }
+ ];
+
+ };
+ "autocfg" = rec {
+ crateName = "autocfg";
+ version = "1.1.0";
+ edition = "2015";
+ sha256 = "1ylp3cb47ylzabimazvbz9ms6ap784zhb6syaz6c1jqpmcmq0s6l";
+ authors = [
+ "Josh Stone <cuviper@gmail.com>"
+ ];
+
+ };
+ "bindgen" = rec {
+ crateName = "bindgen";
+ version = "0.53.3";
+ edition = "2015";
+ crateBin = [];
+ sha256 = "1rc9grfd25bk5b2acmqljhx55ndbzmh7w8b3x6q707cb4s6rfan7";
+ authors = [
+ "Jyun-Yan You <jyyou.tw@gmail.com>"
+ "Emilio Cobos Álvarez <emilio@crisal.io>"
+ "Nick Fitzgerald <fitzgen@gmail.com>"
+ "The Servo project developers"
+ ];
+ dependencies = [
+ {
+ name = "bitflags";
+ packageId = "bitflags";
+ }
+ {
+ name = "cexpr";
+ packageId = "cexpr";
+ }
+ {
+ name = "cfg-if";
+ packageId = "cfg-if 0.1.10";
+ }
+ {
+ name = "clang-sys";
+ packageId = "clang-sys";
+ features = [ "clang_6_0" ];
+ }
+ {
+ name = "clap";
+ packageId = "clap";
+ optional = true;
+ }
+ {
+ name = "env_logger";
+ packageId = "env_logger 0.7.1";
+ optional = true;
+ }
+ {
+ name = "lazy_static";
+ packageId = "lazy_static";
+ }
+ {
+ name = "lazycell";
+ packageId = "lazycell";
+ }
+ {
+ name = "log";
+ packageId = "log";
+ optional = true;
+ }
+ {
+ name = "peeking_take_while";
+ packageId = "peeking_take_while";
+ }
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "regex";
+ packageId = "regex";
+ usesDefaultFeatures = false;
+ features = [ "std" "unicode" ];
+ }
+ {
+ name = "rustc-hash";
+ packageId = "rustc-hash";
+ }
+ {
+ name = "shlex";
+ packageId = "shlex";
+ }
+ {
+ name = "which";
+ packageId = "which";
+ optional = true;
+ usesDefaultFeatures = false;
+ }
+ ];
+ devDependencies = [
+ {
+ name = "clap";
+ packageId = "clap";
+ }
+ {
+ name = "shlex";
+ packageId = "shlex";
+ }
+ ];
+ features = {
+ "clap" = [ "dep:clap" ];
+ "default" = [ "logging" "clap" "runtime" "which-rustfmt" ];
+ "env_logger" = [ "dep:env_logger" ];
+ "log" = [ "dep:log" ];
+ "logging" = [ "env_logger" "log" ];
+ "runtime" = [ "clang-sys/runtime" ];
+ "static" = [ "clang-sys/static" ];
+ "which" = [ "dep:which" ];
+ "which-rustfmt" = [ "which" ];
+ };
+ resolvedDefaultFeatures = [ "clap" "default" "env_logger" "log" "logging" "runtime" "which" "which-rustfmt" ];
+ };
+ "bitflags" = rec {
+ crateName = "bitflags";
+ version = "1.3.2";
+ edition = "2018";
+ sha256 = "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy";
+ authors = [
+ "The Rust Project Developers"
+ ];
+ features = {
+ "compiler_builtins" = [ "dep:compiler_builtins" ];
+ "core" = [ "dep:core" ];
+ "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
+ };
+ resolvedDefaultFeatures = [ "default" ];
+ };
+ "cc" = rec {
+ crateName = "cc";
+ version = "1.0.79";
+ edition = "2018";
+ crateBin = [];
+ sha256 = "07x93b8zbf3xc2dggdd460xlk1wg8lxm6yflwddxj8b15030klsh";
+ authors = [
+ "Alex Crichton <alex@alexcrichton.com>"
+ ];
+ features = {
+ "jobserver" = [ "dep:jobserver" ];
+ "parallel" = [ "jobserver" ];
+ };
+ };
+ "cexpr" = rec {
+ crateName = "cexpr";
+ version = "0.4.0";
+ edition = "2018";
+ sha256 = "09qd1k1mrhcqfhqmsz4y1bya9gcs29si7y3w96pqkgid4y2dpbpl";
+ authors = [
+ "Jethro Beekman <jethro@jbeekman.nl>"
+ ];
+ dependencies = [
+ {
+ name = "nom";
+ packageId = "nom";
+ usesDefaultFeatures = false;
+ features = [ "std" ];
+ }
+ ];
+
+ };
+ "cfg-if 0.1.10" = rec {
+ crateName = "cfg-if";
+ version = "0.1.10";
+ edition = "2018";
+ sha256 = "08h80ihs74jcyp24cd75wwabygbbdgl05k6p5dmq8akbr78vv1a7";
+ authors = [
+ "Alex Crichton <alex@alexcrichton.com>"
+ ];
+ features = {
+ "compiler_builtins" = [ "dep:compiler_builtins" ];
+ "core" = [ "dep:core" ];
+ "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
+ };
+ };
+ "cfg-if 1.0.0" = rec {
+ crateName = "cfg-if";
+ version = "1.0.0";
+ edition = "2018";
+ sha256 = "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds";
+ authors = [
+ "Alex Crichton <alex@alexcrichton.com>"
+ ];
+ features = {
+ "compiler_builtins" = [ "dep:compiler_builtins" ];
+ "core" = [ "dep:core" ];
+ "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
+ };
+ };
+ "clang-sys" = rec {
+ crateName = "clang-sys";
+ version = "0.29.3";
+ edition = "2015";
+ sha256 = "02nibl74zbz5x693iy5vdbhnfckja47m7j1mp2bj7fjw3pgkfs7y";
+ authors = [
+ "Kyle Mayes <kyle@mayeses.com>"
+ ];
+ dependencies = [
+ {
+ name = "glob";
+ packageId = "glob";
+ }
+ {
+ name = "libc";
+ packageId = "libc";
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "libloading";
+ packageId = "libloading";
+ optional = true;
+ }
+ ];
+ buildDependencies = [
+ {
+ name = "glob";
+ packageId = "glob";
+ }
+ ];
+ features = {
+ "clang_3_6" = [ "gte_clang_3_6" ];
+ "clang_3_7" = [ "gte_clang_3_6" "gte_clang_3_7" ];
+ "clang_3_8" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" ];
+ "clang_3_9" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" ];
+ "clang_4_0" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" "gte_clang_4_0" ];
+ "clang_5_0" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" "gte_clang_4_0" "gte_clang_5_0" ];
+ "clang_6_0" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" "gte_clang_4_0" "gte_clang_5_0" "gte_clang_6_0" ];
+ "clang_7_0" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" "gte_clang_4_0" "gte_clang_5_0" "gte_clang_6_0" "gte_clang_7_0" ];
+ "clang_8_0" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" "gte_clang_4_0" "gte_clang_5_0" "gte_clang_6_0" "gte_clang_7_0" "gte_clang_8_0" ];
+ "clang_9_0" = [ "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" "gte_clang_4_0" "gte_clang_5_0" "gte_clang_6_0" "gte_clang_7_0" "gte_clang_8_0" "gte_clang_9_0" ];
+ "libloading" = [ "dep:libloading" ];
+ "runtime" = [ "libloading" ];
+ };
+ resolvedDefaultFeatures = [ "clang_6_0" "gte_clang_3_6" "gte_clang_3_7" "gte_clang_3_8" "gte_clang_3_9" "gte_clang_4_0" "gte_clang_5_0" "gte_clang_6_0" "libloading" "runtime" ];
+ };
+ "clap" = rec {
+ crateName = "clap";
+ version = "2.34.0";
+ edition = "2018";
+ sha256 = "071q5d8jfwbazi6zhik9xwpacx5i6kb2vkzy060vhf0c3120aqd0";
+ authors = [
+ "Kevin K. <kbknapp@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "ansi_term";
+ packageId = "ansi_term";
+ optional = true;
+ target = { target, features }: (!(target."windows" or false));
+ }
+ {
+ 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 = {
+ "ansi_term" = [ "dep:ansi_term" ];
+ "atty" = [ "dep:atty" ];
+ "clippy" = [ "dep:clippy" ];
+ "color" = [ "ansi_term" "atty" ];
+ "default" = [ "suggestions" "color" "vec_map" ];
+ "doc" = [ "yaml" ];
+ "strsim" = [ "dep:strsim" ];
+ "suggestions" = [ "strsim" ];
+ "term_size" = [ "dep:term_size" ];
+ "vec_map" = [ "dep:vec_map" ];
+ "wrap_help" = [ "term_size" "textwrap/term_size" ];
+ "yaml" = [ "yaml-rust" ];
+ "yaml-rust" = [ "dep:yaml-rust" ];
+ };
+ resolvedDefaultFeatures = [ "ansi_term" "atty" "color" "default" "strsim" "suggestions" "vec_map" ];
+ };
+ "env_logger 0.7.1" = 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 1.3.0";
+ optional = true;
+ }
+ {
+ name = "log";
+ packageId = "log";
+ features = [ "std" ];
+ }
+ {
+ name = "regex";
+ packageId = "regex";
+ optional = true;
+ }
+ {
+ name = "termcolor";
+ packageId = "termcolor";
+ optional = true;
+ }
+ ];
+ features = {
+ "atty" = [ "dep:atty" ];
+ "default" = [ "termcolor" "atty" "humantime" "regex" ];
+ "humantime" = [ "dep:humantime" ];
+ "regex" = [ "dep:regex" ];
+ "termcolor" = [ "dep:termcolor" ];
+ };
+ resolvedDefaultFeatures = [ "atty" "default" "humantime" "regex" "termcolor" ];
+ };
+ "env_logger 0.9.3" = rec {
+ crateName = "env_logger";
+ version = "0.9.3";
+ edition = "2018";
+ sha256 = "1rq0kqpa8my6i1qcyhfqrn1g9xr5fbkwwbd42nqvlzn9qibncbm1";
+ dependencies = [
+ {
+ name = "atty";
+ packageId = "atty";
+ optional = true;
+ }
+ {
+ name = "humantime";
+ packageId = "humantime 2.1.0";
+ optional = true;
+ }
+ {
+ name = "log";
+ packageId = "log";
+ features = [ "std" ];
+ }
+ {
+ name = "regex";
+ packageId = "regex";
+ optional = true;
+ usesDefaultFeatures = false;
+ features = [ "std" "perf" ];
+ }
+ {
+ name = "termcolor";
+ packageId = "termcolor";
+ optional = true;
+ }
+ ];
+ features = {
+ "atty" = [ "dep:atty" ];
+ "default" = [ "termcolor" "atty" "humantime" "regex" ];
+ "humantime" = [ "dep:humantime" ];
+ "regex" = [ "dep:regex" ];
+ "termcolor" = [ "dep:termcolor" ];
+ };
+ resolvedDefaultFeatures = [ "atty" "default" "humantime" "regex" "termcolor" ];
+ };
+ "glob" = rec {
+ crateName = "glob";
+ version = "0.3.1";
+ edition = "2015";
+ sha256 = "16zca52nglanv23q5qrwd5jinw3d3as5ylya6y1pbx47vkxvrynj";
+ authors = [
+ "The Rust Project Developers"
+ ];
+
+ };
+ "hermit-abi" = rec {
+ crateName = "hermit-abi";
+ version = "0.1.19";
+ edition = "2018";
+ sha256 = "0cxcm8093nf5fyn114w8vxbrbcyvv91d4015rdnlgfll7cs6gd32";
+ authors = [
+ "Stefan Lankes"
+ ];
+ dependencies = [
+ {
+ name = "libc";
+ packageId = "libc";
+ usesDefaultFeatures = false;
+ }
+ ];
+ features = {
+ "compiler_builtins" = [ "dep:compiler_builtins" ];
+ "core" = [ "dep:core" ];
+ "rustc-dep-of-std" = [ "core" "compiler_builtins/rustc-dep-of-std" "libc/rustc-dep-of-std" ];
+ };
+ resolvedDefaultFeatures = [ "default" ];
+ };
+ "humantime 1.3.0" = rec {
+ crateName = "humantime";
+ version = "1.3.0";
+ edition = "2015";
+ sha256 = "0krwgbf35pd46xvkqg14j070vircsndabahahlv3rwhflpy4q06z";
+ authors = [
+ "Paul Colomiets <paul@colomiets.name>"
+ ];
+ dependencies = [
+ {
+ name = "quick-error";
+ packageId = "quick-error";
+ }
+ ];
+
+ };
+ "humantime 2.1.0" = rec {
+ crateName = "humantime";
+ version = "2.1.0";
+ edition = "2018";
+ sha256 = "1r55pfkkf5v0ji1x6izrjwdq9v6sc7bv99xj6srywcar37xmnfls";
+ authors = [
+ "Paul Colomiets <paul@colomiets.name>"
+ ];
+
+ };
+ "ipnetwork" = rec {
+ crateName = "ipnetwork";
+ version = "0.20.0";
+ edition = "2021";
+ sha256 = "03hhmxyimz0800z44wl3z1ak8iw91xcnk7sgx5p5jinmx50naimz";
+ authors = [
+ "Abhishek Chanda <abhishek.becs@gmail.com>"
+ "Linus Färnstrand <faern@faern.net>"
+ ];
+ features = {
+ "default" = [ "serde" ];
+ "schemars" = [ "dep:schemars" ];
+ "serde" = [ "dep:serde" ];
+ };
+ };
+ "lazy_static" = rec {
+ crateName = "lazy_static";
+ version = "1.4.0";
+ edition = "2015";
+ sha256 = "0in6ikhw8mgl33wjv6q6xfrb5b9jr16q8ygjy803fay4zcisvaz2";
+ authors = [
+ "Marvin Löbel <loebel.marvin@gmail.com>"
+ ];
+ features = {
+ "spin" = [ "dep:spin" ];
+ "spin_no_std" = [ "spin" ];
+ };
+ };
+ "lazycell" = rec {
+ crateName = "lazycell";
+ version = "1.3.0";
+ edition = "2015";
+ sha256 = "0m8gw7dn30i0zjjpjdyf6pc16c34nl71lpv461mix50x3p70h3c3";
+ authors = [
+ "Alex Crichton <alex@alexcrichton.com>"
+ "Nikita Pekin <contact@nikitapek.in>"
+ ];
+ features = {
+ "clippy" = [ "dep:clippy" ];
+ "nightly-testing" = [ "clippy" "nightly" ];
+ "serde" = [ "dep:serde" ];
+ };
+ };
+ "libc" = rec {
+ crateName = "libc";
+ version = "0.2.140";
+ edition = "2015";
+ sha256 = "037qjmhfv8iyzfv6zqapxxvf6p1ydg6dzgzhkjbimbhzj8s768lr";
+ authors = [
+ "The Rust Project Developers"
+ ];
+ features = {
+ "default" = [ "std" ];
+ "rustc-dep-of-std" = [ "align" "rustc-std-workspace-core" ];
+ "rustc-std-workspace-core" = [ "dep:rustc-std-workspace-core" ];
+ "use_std" = [ "std" ];
+ };
+ resolvedDefaultFeatures = [ "default" "extra_traits" "std" ];
+ };
+ "libloading" = rec {
+ crateName = "libloading";
+ version = "0.5.2";
+ edition = "2015";
+ sha256 = "0lyply8rcqc8agajzxs7bq6ivba9dnn1i68kgb9z2flnfjh13cgj";
+ authors = [
+ "Simonas Kazlauskas <libloading@kazlauskas.me>"
+ ];
+ dependencies = [
+ {
+ name = "winapi";
+ packageId = "winapi";
+ target = { target, features }: (target."windows" or false);
+ features = [ "winerror" "errhandlingapi" "libloaderapi" ];
+ }
+ ];
+ buildDependencies = [
+ {
+ name = "cc";
+ packageId = "cc";
+ }
+ ];
+
+ };
+ "log" = rec {
+ crateName = "log";
+ version = "0.4.17";
+ edition = "2015";
+ sha256 = "0biqlaaw1lsr8bpnmbcc0fvgjj34yy79ghqzyi0ali7vgil2xcdb";
+ authors = [
+ "The Rust Project Developers"
+ ];
+ dependencies = [
+ {
+ name = "cfg-if";
+ packageId = "cfg-if 1.0.0";
+ }
+ ];
+ features = {
+ "kv_unstable" = [ "value-bag" ];
+ "kv_unstable_serde" = [ "kv_unstable_std" "value-bag/serde" "serde" ];
+ "kv_unstable_std" = [ "std" "kv_unstable" "value-bag/error" ];
+ "kv_unstable_sval" = [ "kv_unstable" "value-bag/sval" "sval" ];
+ "serde" = [ "dep:serde" ];
+ "sval" = [ "dep:sval" ];
+ "value-bag" = [ "dep:value-bag" ];
+ };
+ resolvedDefaultFeatures = [ "std" ];
+ };
+ "memchr" = rec {
+ crateName = "memchr";
+ version = "2.5.0";
+ edition = "2018";
+ sha256 = "0vanfk5mzs1g1syqnj03q8n0syggnhn55dq535h2wxr7rwpfbzrd";
+ authors = [
+ "Andrew Gallant <jamslam@gmail.com>"
+ "bluss"
+ ];
+ features = {
+ "compiler_builtins" = [ "dep:compiler_builtins" ];
+ "core" = [ "dep:core" ];
+ "default" = [ "std" ];
+ "libc" = [ "dep:libc" ];
+ "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
+ "use_std" = [ "std" ];
+ };
+ resolvedDefaultFeatures = [ "default" "std" "use_std" ];
+ };
+ "memoffset" = rec {
+ crateName = "memoffset";
+ version = "0.6.5";
+ edition = "2015";
+ sha256 = "1kkrzll58a3ayn5zdyy9i1f1v3mx0xgl29x0chq614zazba638ss";
+ authors = [
+ "Gilad Naaman <gilad.naaman@gmail.com>"
+ ];
+ buildDependencies = [
+ {
+ name = "autocfg";
+ packageId = "autocfg";
+ }
+ ];
+ features = {
+ };
+ resolvedDefaultFeatures = [ "default" ];
+ };
+ "nix" = rec {
+ crateName = "nix";
+ version = "0.23.2";
+ edition = "2018";
+ sha256 = "0p5kxhm5d8lry0szqbsllpcb5i3z7lg1dkglw0ni2l011b090dwg";
+ authors = [
+ "The nix-rust Project Developers"
+ ];
+ dependencies = [
+ {
+ name = "bitflags";
+ packageId = "bitflags";
+ }
+ {
+ name = "cfg-if";
+ packageId = "cfg-if 1.0.0";
+ }
+ {
+ name = "libc";
+ packageId = "libc";
+ features = [ "extra_traits" ];
+ }
+ {
+ name = "memoffset";
+ packageId = "memoffset";
+ target = { target, features }: (!(target."os" == "redox"));
+ }
+ ];
+ buildDependencies = [
+ {
+ name = "cc";
+ packageId = "cc";
+ target = {target, features}: (target."os" == "dragonfly");
+ }
+ ];
+
+ };
+ "nom" = rec {
+ crateName = "nom";
+ version = "5.1.2";
+ edition = "2018";
+ sha256 = "1br74rwdp3c2ddga03bphnf355spn4mzwf1slg0a30zd4qnjdd7z";
+ authors = [
+ "contact@geoffroycouprie.com"
+ ];
+ dependencies = [
+ {
+ name = "memchr";
+ packageId = "memchr";
+ usesDefaultFeatures = false;
+ }
+ ];
+ buildDependencies = [
+ {
+ name = "version_check";
+ packageId = "version_check";
+ }
+ ];
+ features = {
+ "default" = [ "std" "lexical" ];
+ "lazy_static" = [ "dep:lazy_static" ];
+ "lexical" = [ "lexical-core" ];
+ "lexical-core" = [ "dep:lexical-core" ];
+ "regex" = [ "dep:regex" ];
+ "regexp" = [ "regex" ];
+ "regexp_macros" = [ "regexp" "lazy_static" ];
+ "std" = [ "alloc" "memchr/use_std" ];
+ };
+ resolvedDefaultFeatures = [ "alloc" "std" ];
+ };
+ "once_cell" = rec {
+ crateName = "once_cell";
+ version = "1.17.1";
+ edition = "2021";
+ sha256 = "1lrsy9c5ikf2iwxr4iwgd3rlq9mg8alh0np1g8abnvp1k4151rdp";
+ authors = [
+ "Aleksey Kladov <aleksey.kladov@gmail.com>"
+ ];
+ features = {
+ "alloc" = [ "race" ];
+ "atomic-polyfill" = [ "critical-section" ];
+ "atomic_polyfill" = [ "dep:atomic_polyfill" ];
+ "critical-section" = [ "critical_section" "atomic_polyfill" ];
+ "critical_section" = [ "dep:critical_section" ];
+ "default" = [ "std" ];
+ "parking_lot" = [ "parking_lot_core" ];
+ "parking_lot_core" = [ "dep:parking_lot_core" ];
+ "std" = [ "alloc" ];
+ };
+ resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ];
+ };
+ "peeking_take_while" = rec {
+ crateName = "peeking_take_while";
+ version = "0.1.2";
+ edition = "2015";
+ sha256 = "16bhqr6rdyrp12zv381cxaaqqd0pwysvm1q8h2ygihvypvfprc8r";
+ authors = [
+ "Nick Fitzgerald <fitzgen@gmail.com>"
+ ];
+
+ };
+ "proc-macro-error" = rec {
+ crateName = "proc-macro-error";
+ version = "1.0.4";
+ edition = "2018";
+ sha256 = "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs";
+ authors = [
+ "CreepySkeleton <creepy-skeleton@yandex.ru>"
+ ];
+ dependencies = [
+ {
+ name = "proc-macro-error-attr";
+ packageId = "proc-macro-error-attr";
+ }
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ }
+ {
+ name = "syn";
+ packageId = "syn 1.0.109";
+ optional = true;
+ usesDefaultFeatures = false;
+ }
+ ];
+ buildDependencies = [
+ {
+ name = "version_check";
+ packageId = "version_check";
+ }
+ ];
+ features = {
+ "default" = [ "syn-error" ];
+ "syn" = [ "dep:syn" ];
+ "syn-error" = [ "syn" ];
+ };
+ resolvedDefaultFeatures = [ "default" "syn" "syn-error" ];
+ };
+ "proc-macro-error-attr" = rec {
+ crateName = "proc-macro-error-attr";
+ version = "1.0.4";
+ edition = "2018";
+ sha256 = "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1";
+ procMacro = true;
+ authors = [
+ "CreepySkeleton <creepy-skeleton@yandex.ru>"
+ ];
+ dependencies = [
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ }
+ ];
+ buildDependencies = [
+ {
+ name = "version_check";
+ packageId = "version_check";
+ }
+ ];
+
+ };
+ "proc-macro2" = rec {
+ crateName = "proc-macro2";
+ version = "1.0.52";
+ edition = "2018";
+ sha256 = "0922fkhi689x134yh6l97lnpwgarhbv0vnv3vpnkpk1nx3lil3hx";
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ "Alex Crichton <alex@alexcrichton.com>"
+ ];
+ dependencies = [
+ {
+ name = "unicode-ident";
+ packageId = "unicode-ident";
+ }
+ ];
+ features = {
+ "default" = [ "proc-macro" ];
+ };
+ resolvedDefaultFeatures = [ "default" "proc-macro" ];
+ };
+ "quick-error" = rec {
+ crateName = "quick-error";
+ version = "1.2.3";
+ edition = "2015";
+ sha256 = "1q6za3v78hsspisc197bg3g7rpc989qycy8ypr8ap8igv10ikl51";
+ authors = [
+ "Paul Colomiets <paul@colomiets.name>"
+ "Colin Kiegel <kiegel@gmx.de>"
+ ];
+
+ };
+ "quote" = rec {
+ crateName = "quote";
+ version = "1.0.26";
+ edition = "2018";
+ sha256 = "1z521piwggwzs0rj4wjx4ma6af1g6f1h5dkp382y5akqyx5sy924";
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ usesDefaultFeatures = false;
+ }
+ ];
+ features = {
+ "default" = [ "proc-macro" ];
+ "proc-macro" = [ "proc-macro2/proc-macro" ];
+ };
+ resolvedDefaultFeatures = [ "default" "proc-macro" ];
+ };
+ "regex" = rec {
+ crateName = "regex";
+ version = "1.7.1";
+ edition = "2018";
+ sha256 = "0czp6hxg02lm02hvlhp9xjkd65cjcagw119crnaznwd5idsabaj8";
+ 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;
+ }
+ ];
+ features = {
+ "aho-corasick" = [ "dep:aho-corasick" ];
+ "default" = [ "std" "perf" "unicode" "regex-syntax/default" ];
+ "memchr" = [ "dep:memchr" ];
+ "perf" = [ "perf-cache" "perf-dfa" "perf-inline" "perf-literal" ];
+ "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" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
+ };
+ "regex-syntax" = rec {
+ crateName = "regex-syntax";
+ version = "0.6.28";
+ edition = "2018";
+ sha256 = "0j68z4jnxshfymb08j1drvxn9wgs1469047lfaq4im78wcxn0v25";
+ 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" ];
+ };
+ "rustables" = rec {
+ crateName = "rustables";
+ version = "0.8.1";
+ edition = "2021";
+ src = lib.cleanSourceWith { filter = sourceFilter; src = ../.; };
+ authors = [
+ "lafleur@boum.org"
+ "Simon Thoby"
+ "Mullvad VPN"
+ ];
+ dependencies = [
+ {
+ name = "bitflags";
+ packageId = "bitflags";
+ }
+ {
+ name = "ipnetwork";
+ packageId = "ipnetwork";
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "libc";
+ packageId = "libc";
+ }
+ {
+ name = "log";
+ packageId = "log";
+ }
+ {
+ name = "nix";
+ packageId = "nix";
+ }
+ {
+ name = "rustables-macros";
+ packageId = "rustables-macros";
+ }
+ {
+ name = "thiserror";
+ packageId = "thiserror";
+ }
+ ];
+ buildDependencies = [
+ {
+ name = "bindgen";
+ packageId = "bindgen";
+ }
+ {
+ name = "regex";
+ packageId = "regex";
+ }
+ ];
+ devDependencies = [
+ {
+ name = "env_logger";
+ packageId = "env_logger 0.9.3";
+ }
+ ];
+
+ };
+ "rustables-macros" = rec {
+ crateName = "rustables-macros";
+ version = "0.1.1";
+ edition = "2021";
+ src = lib.cleanSourceWith { filter = sourceFilter; src = ../macros; };
+ procMacro = true;
+ authors = [
+ "lafleur@boum.org"
+ "Simon Thoby"
+ ];
+ dependencies = [
+ {
+ name = "once_cell";
+ packageId = "once_cell";
+ }
+ {
+ name = "proc-macro-error";
+ packageId = "proc-macro-error";
+ }
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ }
+ {
+ name = "syn";
+ packageId = "syn 1.0.109";
+ features = [ "full" ];
+ }
+ ];
+
+ };
+ "rustc-hash" = rec {
+ crateName = "rustc-hash";
+ version = "1.1.0";
+ edition = "2015";
+ sha256 = "1qkc5khrmv5pqi5l5ca9p5nl5hs742cagrndhbrlk3dhlrx3zm08";
+ authors = [
+ "The Rust Project Developers"
+ ];
+ features = {
+ "default" = [ "std" ];
+ };
+ resolvedDefaultFeatures = [ "default" "std" ];
+ };
+ "shlex" = rec {
+ crateName = "shlex";
+ version = "0.1.1";
+ edition = "2015";
+ sha256 = "1lmv6san7g8dv6jdfp14m7bdczq9ss7j7bgsfqyqjc3jnjfippvz";
+ authors = [
+ "comex <comexk@gmail.com>"
+ ];
+
+ };
+ "strsim" = rec {
+ crateName = "strsim";
+ version = "0.8.0";
+ edition = "2015";
+ sha256 = "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf";
+ authors = [
+ "Danny Guo <dannyguo91@gmail.com>"
+ ];
+
+ };
+ "syn 1.0.109" = rec {
+ crateName = "syn";
+ version = "1.0.109";
+ edition = "2018";
+ sha256 = "0ds2if4600bd59wsv7jjgfkayfzy3hnazs394kz6zdkmna8l3dkj";
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ optional = true;
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "unicode-ident";
+ packageId = "unicode-ident";
+ }
+ ];
+ features = {
+ "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
+ "printing" = [ "quote" ];
+ "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
+ "quote" = [ "dep:quote" ];
+ "test" = [ "syn-test-suite/all-features" ];
+ };
+ resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" ];
+ };
+ "syn 2.0.2" = rec {
+ crateName = "syn";
+ version = "2.0.2";
+ edition = "2021";
+ sha256 = "0idhj68il6kghbjacchj0pdy4nrb2ysnjyci28vc780zxrm2glsr";
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ optional = true;
+ usesDefaultFeatures = false;
+ }
+ {
+ name = "unicode-ident";
+ packageId = "unicode-ident";
+ }
+ ];
+ features = {
+ "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
+ "printing" = [ "quote" ];
+ "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
+ "quote" = [ "dep:quote" ];
+ "test" = [ "syn-test-suite/all-features" ];
+ };
+ resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "parsing" "printing" "proc-macro" "quote" ];
+ };
+ "termcolor" = rec {
+ crateName = "termcolor";
+ version = "1.2.0";
+ edition = "2018";
+ sha256 = "1dmrbsljxpfng905qkaxljlwjhv8h0i3969cbiv5rb7y8a4wymdy";
+ authors = [
+ "Andrew Gallant <jamslam@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "winapi-util";
+ packageId = "winapi-util";
+ target = { target, features }: (target."windows" or false);
+ }
+ ];
+
+ };
+ "textwrap" = rec {
+ crateName = "textwrap";
+ version = "0.11.0";
+ edition = "2015";
+ sha256 = "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk";
+ authors = [
+ "Martin Geisler <martin@geisler.net>"
+ ];
+ dependencies = [
+ {
+ name = "unicode-width";
+ packageId = "unicode-width";
+ }
+ ];
+ features = {
+ "hyphenation" = [ "dep:hyphenation" ];
+ "term_size" = [ "dep:term_size" ];
+ };
+ };
+ "thiserror" = rec {
+ crateName = "thiserror";
+ version = "1.0.40";
+ edition = "2018";
+ sha256 = "1b7bdhriasdsr99y39d50jz995xaz9sw3hsbb6z9kp6q9cqrm34p";
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "thiserror-impl";
+ packageId = "thiserror-impl";
+ }
+ ];
+
+ };
+ "thiserror-impl" = rec {
+ crateName = "thiserror-impl";
+ version = "1.0.40";
+ edition = "2018";
+ sha256 = "17sn41kyimc6s983aypkk6a45pcyrkbkvrw6rp407n5hqm16ligr";
+ procMacro = true;
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "proc-macro2";
+ packageId = "proc-macro2";
+ }
+ {
+ name = "quote";
+ packageId = "quote";
+ }
+ {
+ name = "syn";
+ packageId = "syn 2.0.2";
+ }
+ ];
+
+ };
+ "unicode-ident" = rec {
+ crateName = "unicode-ident";
+ version = "1.0.8";
+ edition = "2018";
+ sha256 = "1x4v4v95fv9gn5zbpm23sa9awjvmclap1wh1lmikmw9rna3llip5";
+ authors = [
+ "David Tolnay <dtolnay@gmail.com>"
+ ];
+
+ };
+ "unicode-width" = rec {
+ crateName = "unicode-width";
+ version = "0.1.10";
+ edition = "2015";
+ sha256 = "12vc3wv0qwg8rzcgb9bhaf5119dlmd6lmkhbfy1zfls6n7jx3vf0";
+ authors = [
+ "kwantam <kwantam@gmail.com>"
+ "Manish Goregaokar <manishsmail@gmail.com>"
+ ];
+ features = {
+ "compiler_builtins" = [ "dep:compiler_builtins" ];
+ "core" = [ "dep:core" ];
+ "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ];
+ "std" = [ "dep:std" ];
+ };
+ resolvedDefaultFeatures = [ "default" ];
+ };
+ "vec_map" = rec {
+ crateName = "vec_map";
+ version = "0.8.2";
+ edition = "2015";
+ sha256 = "1481w9g1dw9rxp3l6snkdqihzyrd2f8vispzqmwjwsdyhw8xzggi";
+ authors = [
+ "Alex Crichton <alex@alexcrichton.com>"
+ "Jorge Aparicio <japaricious@gmail.com>"
+ "Alexis Beingessner <a.beingessner@gmail.com>"
+ "Brian Anderson <>"
+ "tbu- <>"
+ "Manish Goregaokar <>"
+ "Aaron Turon <aturon@mozilla.com>"
+ "Adolfo Ochagavía <>"
+ "Niko Matsakis <>"
+ "Steven Fackler <>"
+ "Chase Southwood <csouth3@illinois.edu>"
+ "Eduard Burtescu <>"
+ "Florian Wilkens <>"
+ "Félix Raimundo <>"
+ "Tibor Benke <>"
+ "Markus Siemens <markus@m-siemens.de>"
+ "Josh Branchaud <jbranchaud@gmail.com>"
+ "Huon Wilson <dbau.pp@gmail.com>"
+ "Corey Farwell <coref@rwell.org>"
+ "Aaron Liblong <>"
+ "Nick Cameron <nrc@ncameron.org>"
+ "Patrick Walton <pcwalton@mimiga.net>"
+ "Felix S Klock II <>"
+ "Andrew Paseltiner <apaseltiner@gmail.com>"
+ "Sean McArthur <sean.monstar@gmail.com>"
+ "Vadim Petrochenkov <>"
+ ];
+ features = {
+ "eders" = [ "serde" ];
+ "serde" = [ "dep:serde" ];
+ };
+ };
+ "version_check" = rec {
+ crateName = "version_check";
+ version = "0.9.4";
+ edition = "2015";
+ sha256 = "0gs8grwdlgh0xq660d7wr80x14vxbizmd8dbp29p2pdncx8lp1s9";
+ authors = [
+ "Sergio Benitez <sb@sergio.bz>"
+ ];
+
+ };
+ "which" = rec {
+ crateName = "which";
+ version = "3.1.1";
+ edition = "2015";
+ sha256 = "094pw9pi48szshn9ln69z2kg7syq1jp80h5ps1qncbsaw4d0f4fh";
+ authors = [
+ "Harry Fei <tiziyuanfang@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "libc";
+ packageId = "libc";
+ }
+ ];
+ features = {
+ "default" = [ "failure" ];
+ "failure" = [ "dep:failure" ];
+ };
+ };
+ "winapi" = rec {
+ crateName = "winapi";
+ version = "0.3.9";
+ edition = "2015";
+ sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw";
+ authors = [
+ "Peter Atashian <retep998@gmail.com>"
+ ];
+ 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" "libloaderapi" "minwinbase" "minwindef" "processenv" "std" "winbase" "wincon" "winerror" "winnt" ];
+ };
+ "winapi-i686-pc-windows-gnu" = rec {
+ crateName = "winapi-i686-pc-windows-gnu";
+ version = "0.4.0";
+ edition = "2015";
+ sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc";
+ authors = [
+ "Peter Atashian <retep998@gmail.com>"
+ ];
+
+ };
+ "winapi-util" = rec {
+ crateName = "winapi-util";
+ version = "0.1.5";
+ edition = "2018";
+ sha256 = "0y71bp7f6d536czj40dhqk0d55wfbbwqfp2ymqf1an5ibgl6rv3h";
+ authors = [
+ "Andrew Gallant <jamslam@gmail.com>"
+ ];
+ dependencies = [
+ {
+ name = "winapi";
+ packageId = "winapi";
+ target = { target, features }: (target."windows" or false);
+ 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 <retep998@gmail.com>"
+ ];
+
+ };
+ };
+
+ #
+# 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, testPreRun, testPostRun }:
+ assert builtins.typeOf testCrateFlags == "list";
+ assert builtins.typeOf testInputs == "list";
+ assert builtins.typeOf testPreRun == "string";
+ assert builtins.typeOf testPostRun == "string";
+ 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;
+ }
+ );
+ # If the user hasn't set any pre/post commands, we don't want to
+ # insert empty lines. This means that any existing users of crate2nix
+ # don't get a spurious rebuild unless they set these explicitly.
+ testCommand = pkgs.lib.concatStringsSep "\n"
+ (pkgs.lib.filter (s: s != "") [
+ testPreRun
+ "$f $testCrateFlags 2>&1 | tee -a $out"
+ testPostRun
+ ]);
+ in
+ pkgs.runCommand "run-tests-${testCrate.name}"
+ {
+ inherit testCrateFlags;
+ buildInputs = testInputs;
+ } ''
+ set -ex
+
+ export RUST_BACKTRACE=1
+
+ # recreate a file hierarchy as when running tests with cargo
+
+ # the source for test data
+ ${pkgs.xorg.lndir}/bin/lndir ${crate.src}
+
+ # build outputs
+ testRoot=target/debug
+ mkdir -p $testRoot
+
+ # executables of the crate
+ # we copy to prevent std::env::current_exe() to resolve to a store location
+ for i in ${crate}/bin/*; do
+ cp "$i" "$testRoot"
+ done
+ chmod +w -R .
+
+ # test harness executables are suffixed with a hash, like cargo does
+ # this allows to prevent name collision with the main
+ # executables of the crate
+ hash=$(basename $out)
+ for file in ${drv}/tests/*; do
+ f=$testRoot/$(basename $file)-$hash
+ cp $file $f
+ ${testCommand}
+ done
+ '';
+ in
+ pkgs.runCommand "${crate.name}-linked"
+ {
+ inherit (crate) outputs crateName;
+ passthru = (crate.passthru or { }) // {
+ inherit test;
+ };
+ } ''
+ echo tested by ${test}
+ ${lib.concatMapStringsSep "\n" (output: "ln -s ${crate.${output}} ${"$"}${output}") crate.outputs}
+ '';
+
+ /* A restricted overridable version of builtRustCratesWithFeatures. */
+ buildRustCrateWithFeatures =
+ { packageId
+ , features ? rootFeatures
+ , crateOverrides ? defaultCrateOverrides
+ , buildRustCrateForPkgsFunc ? null
+ , runTests ? false
+ , testCrateFlags ? [ ]
+ , testInputs ? [ ]
+ # Any command to run immediatelly before a test is executed.
+ , testPreRun ? ""
+ # Any command run immediatelly after a test is executed.
+ , testPostRun ? ""
+ }:
+ lib.makeOverridable
+ (
+ { features
+ , crateOverrides
+ , runTests
+ , testCrateFlags
+ , testInputs
+ , testPreRun
+ , testPostRun
+ }:
+ let
+ buildRustCrateForPkgsFuncOverriden =
+ if buildRustCrateForPkgsFunc != null
+ then buildRustCrateForPkgsFunc
+ else
+ (
+ if crateOverrides == pkgs.defaultCrateOverrides
+ then buildRustCrateForPkgs
+ else
+ pkgs: (buildRustCrateForPkgs pkgs).override {
+ defaultCrateOverrides = crateOverrides;
+ }
+ );
+ builtRustCrates = builtRustCratesWithFeatures {
+ inherit packageId features;
+ buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
+ runTests = false;
+ };
+ builtTestRustCrates = builtRustCratesWithFeatures {
+ inherit packageId features;
+ buildRustCrateForPkgsFunc = buildRustCrateForPkgsFuncOverriden;
+ runTests = true;
+ };
+ drv = builtRustCrates.crates.${packageId};
+ testDrv = builtTestRustCrates.crates.${packageId};
+ derivation =
+ if runTests then
+ crateWithTest
+ {
+ crate = drv;
+ testCrate = testDrv;
+ inherit testCrateFlags testInputs testPreRun testPostRun;
+ }
+ else drv;
+ in
+ derivation
+ )
+ { inherit features crateOverrides runTests testCrateFlags testInputs testPreRun testPostRun; };
+
+ /* Returns an attr set with packageId mapped to the result of buildRustCrateForPkgsFunc
+ for the corresponding crate.
+ */
+ builtRustCratesWithFeatures =
+ { packageId
+ , features
+ , crateConfigs ? crates
+ , buildRustCrateForPkgsFunc
+ , 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; };
+ }
+ );
+ # Memoize built packages so that reappearing packages are only built once.
+ builtByPackageIdByPkgs = mkBuiltByPackageIdByPkgs pkgs;
+ mkBuiltByPackageIdByPkgs = pkgs:
+ let
+ self = {
+ crates = lib.mapAttrs (packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId) crateConfigs;
+ build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;
+ };
+ in
+ self;
+ buildByPackageIdForPkgsImpl = self: pkgs: 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 features target;
+ buildByPackageId = depPackageId:
+ # proc_macro crates must be compiled for the build architecture
+ if crateConfigs.${depPackageId}.procMacro or false
+ then self.build.crates.${depPackageId}
+ else self.crates.${depPackageId};
+ dependencies =
+ (crateConfig.dependencies or [ ])
+ ++ devDependencies;
+ };
+ buildDependencies =
+ dependencyDerivations {
+ inherit features target;
+ buildByPackageId = depPackageId:
+ self.build.crates.${depPackageId};
+ 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
+ )
+ );
+ # Crate renames have the form:
+ #
+ # {
+ # crate_name = [
+ # { version = "1.2.3"; rename = "crate_name01"; }
+ # ];
+ # # ...
+ # }
+ crateRenames =
+ let
+ grouped =
+ lib.groupBy
+ (dependency: dependency.name)
+ dependenciesWithRenames;
+ versionAndRename = dep:
+ let
+ package = crateConfigs."${dep.packageId}";
+ in
+ { inherit (dep) rename; version = package.version; };
+ in
+ lib.mapAttrs (name: choices: builtins.map versionAndRename choices) grouped;
+ in
+ buildRustCrateForPkgsFunc pkgs
+ (
+ crateConfig // {
+ src = crateConfig.src or (
+ pkgs.fetchurl rec {
+ name = "${crateConfig.crateName}-${crateConfig.version}.tar.gz";
+ # https://www.pietroalbini.org/blog/downloading-crates-io/
+ # Not rate-limited, CDN URL.
+ url = "https://static.crates.io/crates/${crateConfig.crateName}/${crateConfig.crateName}-${crateConfig.version}.crate";
+ sha256 =
+ assert (lib.assertMsg (crateConfig ? sha256) "Missing sha256 for ${name}");
+ crateConfig.sha256;
+ }
+ );
+ extraRustcOpts = lib.lists.optional (targetFeatures != [ ]) "-C target-feature=${lib.concatMapStringsSep "," (x: "+${x}") targetFeatures}";
+ inherit features dependencies buildDependencies crateRenames release;
+ }
+ );
+ in
+ builtByPackageIdByPkgs;
+
+ /* Returns the actual derivations for the given dependencies. */
+ dependencyDerivations =
+ { buildByPackageId
+ , features
+ , dependencies
+ , target
+ }:
+ assert (builtins.isList features);
+ assert (builtins.isList dependencies);
+ assert (builtins.isAttrs target);
+ let
+ enabledDependencies = filterEnabledDependencies {
+ inherit dependencies features target;
+ };
+ depDerivation = dependency: buildByPackageId 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 {
+ buildRustCrateForPkgsFunc = _: lib.id;
+ inherit packageId;
+ };
+ sanitizedBuildTree = sanitizeForJson buildTree;
+ dependencyTree = sanitizeForJson
+ (
+ buildRustCrateWithFeatures {
+ buildRustCrateForPkgsFunc = _: 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;
+ enabledFeatures = enableFeatures (crateConfig.dependencies or [ ]) expandedFeatures;
+ depWithResolvedFeatures = dependency:
+ let
+ packageId = dependency.packageId;
+ features = dependencyFeatures enabledFeatures dependency;
+ in
+ { inherit packageId features; };
+ resolveDependencies = cache: path: dependencies:
+ assert (builtins.isAttrs cache);
+ assert (builtins.isList dependencies);
+ let
+ enabledDependencies = filterEnabledDependencies {
+ inherit dependencies target;
+ features = enabledFeatures;
+ };
+ 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 ++ enabledFeatures);
+ 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 = lib.concatMap expandFeature inputFeatures;
+ in
+ sortedUnique outFeatures;
+
+ /* This function adds optional dependencies as features if they are enabled
+ indirectly by dependency features. This function mimics Cargo's behavior
+ described in a note at:
+ https://doc.rust-lang.org/nightly/cargo/reference/features.html#dependency-features
+ */
+ enableFeatures = dependencies: features:
+ assert (builtins.isList features);
+ assert (builtins.isList dependencies);
+ let
+ additionalFeatures = lib.concatMap
+ (
+ dependency:
+ assert (builtins.isAttrs dependency);
+ let
+ enabled = builtins.any (doesFeatureEnableDependency dependency) features;
+ in
+ if (dependency.optional or false) && enabled then [ dependency.name ] else [ ]
+ )
+ dependencies;
+ in
+ sortedUnique (features ++ additionalFeatures);
+
+ /*
+ 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)
+ #
+ };
+}
+