HDGRZISM2SS4TK5BMNGDIYG22SOXAZRTTC6YFIOPY4LSO53QDWZQC J2D66R2DQVRQVQAFFIR4F7RI3BHQFANY2HEGUFRBNUPFVUZAXUTQC 7ZFRYVVQQGJYG3POPWJWL3CDW37YDXZYZQC3OSWFHWEUSEMYQ4EQC QQZNSB26UHFC4EFFREJX2J7SWAKCB3UAI6OKKIOZ4BLXBK6M54VAC SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC IIV3EL2XYI2X7HZWKXEXQFAE3R3KC2Q7SGOT3Q332HSENMYVF32QC HW5Q7GGYDMCQQYDBFLDAWCTNQQMIQHJ77UOSPN5BHMSD3KMO2O3AC G734WNM64AR5BLAZMN5MDPKSFTYXTUQR6MAGB32NRBC5FXFRWSJAC 3VJB4ULDDBRUZQ3TSOEJQ3TFVYYHE347ONKMFWGTSCLUYUV536XQC FXT5FS5WIDBA3HPTJRFGRGULZIGAWAJXT2U6RFYGDLO2PYDG4VEAC SAGSYAPXQ2T6GC3B3TNRPNFTZMS7UMME6YQGSF5MOIM66S5NKB2QC I52XSRUH5RVHQBFWVMAQPTUSPAJ4KNVID2RMI3UGCVKFLYUO6WZAC B3QWIGDERNMB3M6P5WTWP5CN2DB3KCS7MVTEPC2XVJ237ZXVQGMAC 6DOXSHWGKJIMIPFCNLASGKBAJCJMJULW5HFRZAZ67EYSMXXGJ3KAC KUMJITTFBIAA7MFVPE6O7ZKIRSX553JNM72LF3KQJ6U3CXZI6MMQC CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDAC ENKQ3QZGH2QW246C7GSZRKYLODJOQHKZZSYV7QHB7VPOFP5PASVQC 3WIQYEISUMGOL5FY4LCWOJS55CTTQA7WMJZXAE3Q4GQUTBFLAE7QC YN63NUZO4LVJ7XPMURDULTXBVJKW5MVCTZ24R7Z52QMHO3HPDUVQC JRENVH5DF2F4SOV7UNJENFA7VDI3H63XK76R3LFZK6QCW7JIBLSQC OUWD436ATBTZJR53B6XDSI5SXRRNZV7YGRUEA5ACHZC2RUDP7G5QC WEHUTJUKHOJIBMEK2M7ILPK532FMO7YGWTEAHOIXZP5WOOOSF3ZAC H62VFFJEBL2I3O4D3BAJZ57ROPWUISC7JCDIWFBC5DAYJRHMMDXAC , buildRustCrate ? pkgs.buildRustCrate
, buildRustCrateForPkgs ? if buildRustCrate != nullthen lib.warn "`buildRustCrate` is deprecated, use `buildRustCrateForPkgs` instead" (_: buildRustCrate)else pkgs: pkgs.buildRustCrate# Deprecated, buildRustCrate ? null
workspace_members =internal.deprecationWarning"workspace_members is deprecated in crate2nix 0.4. Please use workspaceMembers instead."lib.mapAttrs (n: v: v.build) workspaceMembers;
# 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;};
"generator" = rec {crateName = "generator";version = "0.6.24";edition = "2018";sha256 = "174skwxbr99p6kf285nraj7dmsd1k4l6amad5djjg271s57x5zm9";authors = ["Xudong Huang <huangxu008@hotmail.com>"];dependencies = [{name = "libc";packageId = "libc";target = { target, features }: target."unix";}{name = "log";packageId = "log";}{name = "winapi";packageId = "winapi";target = { target, features }: target."windows";features = [ "memoryapi" "sysinfoapi" ];}];buildDependencies = [{name = "cc";packageId = "cc";}{name = "rustversion";packageId = "rustversion";}];};
};"loom" = rec {crateName = "loom";version = "0.4.0";edition = "2018";sha256 = "1941ji91nvriqqkgzlx285kq38zg74sw68gb2x4pnjbfcfs76k6l";authors = ["Carl Lerche <me@carllerche.com>"];dependencies = [{name = "cfg-if";packageId = "cfg-if 1.0.0";}{name = "generator";packageId = "generator";}{name = "scoped-tls";packageId = "scoped-tls";}];features = {"checkpoint" = [ "serde" "serde_json" ];"futures" = [ "futures-util" ];};resolvedDefaultFeatures = [ "default" ];
};"tracing-futures" = rec {crateName = "tracing-futures";version = "0.2.5";edition = "2018";sha256 = "1wimg0iwa2ldq7xv98lvivvf3q9ykfminig8r1bs0ig22np9bl4p";authors = ["Eliza Weisman <eliza@buoyant.io>""Tokio Contributors <team@tokio.rs>"];dependencies = [{name = "pin-project";packageId = "pin-project";optional = true;}{name = "tracing";packageId = "tracing";usesDefaultFeatures = false;}];features = {"default" = [ "std-future" "std" ];"futures-01" = [ "futures_01" "std" ];"futures-03" = [ "std-future" "futures" "futures-task" "std" ];"std" = [ "tracing/std" ];"std-future" = [ "pin-project" ];};resolvedDefaultFeatures = [ "pin-project" "std-future" ];
test = letdrv = testCrate.override (_: {buildTests = true;});inpkgs.runCommand "run-tests-${testCrate.name}" {inherit testCrateFlags;buildInputs = testInputs;} ''
test =letdrv = testCrate.override(_: {buildTests = true;});inpkgs.runCommand "run-tests-${testCrate.name}"{inherit testCrateFlags;buildInputs = testInputs;} ''
cd ${crate.src}
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 outputstestRoot=target/debugmkdir -p $testRoot# executables of the crate# we copy to prevent std::env::current_exe() to resolve to a store locationfor i in ${crate}/bin/*; docp "$i" "$testRoot"donechmod +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 cratehash=$(basename $out)
crate.overrideAttrs (old: {checkPhase = ''test -e ${test}'';passthru = (old.passthru or {}) // {inherit test;};});
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}'';
lib.makeOverridable({ features, crateOverrides, runTests, testCrateFlags, testInputs }:letbuiltRustCrates = builtRustCratesWithFeatures {inherit packageId features buildRustCrateFunc;runTests = false;};builtTestRustCrates = builtRustCratesWithFeatures {inherit packageId features buildRustCrateFunc;runTests = true;};drv = builtRustCrates.${packageId};testDrv = builtTestRustCrates.${packageId};inif runTests thencrateWithTest {
lib.makeOverridable({ features, crateOverrides, runTests, testCrateFlags, testInputs}:letbuildRustCrateForPkgsFuncOverriden =if buildRustCrateForPkgsFunc != nullthen buildRustCrateForPkgsFuncelse(if crateOverrides == pkgs.defaultCrateOverridesthen buildRustCrateForPkgselsepkgs: (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 thencrateWithTest{
mergedFeatures = mergePackageFeatures (args // {inherit rootPackageId;target = target // { test = runTests; };});buildByPackageId = packageId: buildByPackageIdImpl packageId;
mergedFeatures = mergePackageFeatures(args // {inherit rootPackageId;target = target // { test = runTests; };});
features = mergedFeatures."${packageId}" or [];
self = {crates = lib.mapAttrs (packageId: value: buildByPackageIdForPkgsImpl self pkgs packageId) crateConfigs;build = mkBuiltByPackageIdByPkgs pkgs.buildPackages;};inself;buildByPackageIdForPkgsImpl = self: pkgs: packageId:letfeatures = mergedFeatures."${packageId}" or [ ];
inherit builtByPackageId features target;
inherit features target;buildByPackageId = depPackageId:# proc_macro crates must be compiled for the build architectureif crateConfigs.${depPackageId}.procMacro or falsethen self.build.crates.${depPackageId}else self.crates.${depPackageId};
lib.filter (d: d ? "rename") (filterEnabledDependenciesForThis((crateConfig.buildDependencies or [])++ (crateConfig.dependencies or [])++ devDependencies));
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"; }# ];# # ...# }
builtins.listToAttrs(map (d: { name = d.name; value = d.rename; }) dependenciesWithRenames);
letgrouped =lib.groupBy(dependency: dependency.name)dependenciesWithRenames;versionAndRename = dep:letpackage = crateConfigs."${dep.packageId}";in{ inherit (dep) rename; version = package.version; };inlib.mapAttrs (name: choices: builtins.map versionAndRename choices) grouped;
url = "https://crates.io/api/v1/crates/${crateConfig.crateName}/${crateConfig.version}/download";sha256 = crateConfig.sha256;
# 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;
dependencyTree = sanitizeForJson (buildRustCrateWithFeatures {buildRustCrateFunc = crate: {"01_crateName" = crate.crateName or false;"02_features" = crate.features or [];"03_dependencies" = crate.dependencies or [];};inherit packageId;});
dependencyTree = sanitizeForJson(buildRustCrateWithFeatures {buildRustCrateForPkgsFunc = _: crate: {"01_crateName" = crate.crateName or false;"02_features" = crate.features or [ ];"03_dependencies" = crate.dependencies or [ ];};inherit packageId;});
foldOverCache(cache: { packageId, features }:letcacheFeatures = cache.${packageId} or [];combinedFeatures = sortedUnique (cacheFeatures ++ features);inif cache ? ${packageId} && cache.${packageId} == combinedFeaturesthen cacheelse mergePackageFeatures {features = combinedFeatures;featuresByPackageId = cache;inherit crateConfigs packageId target runTests rootPackageId;});
foldOverCache(cache: { packageId, features }:letcacheFeatures = cache.${packageId} or [ ];combinedFeatures = sortedUnique (cacheFeatures ++ features);inif cache ? ${packageId} && cache.${packageId} == combinedFeaturesthen cacheelsemergePackageFeatures {features = combinedFeatures;featuresByPackageId = cache;inherit crateConfigs packageId target runTests rootPackageId;});
resolveDependencies cacheWithSelf "dep" (crateConfig.dependencies or []++ lib.optionals(runTests && packageId == rootPackageId)(crateConfig.devDependencies or []));
resolveDependencies cacheWithSelf "dep"(crateConfig.dependencies or [ ]++ lib.optionals(runTests && packageId == rootPackageId)(crateConfig.devDependencies or [ ]));
lettargetFunc = dep.target or (features: true);intargetFunc { inherit features target; }&& (!(dep.optional or false)|| builtins.any (doesFeatureEnableDependency dep) features)
lettargetFunc = dep.target or (features: true);intargetFunc { inherit features target; }&& (!(dep.optional or false)|| builtins.any (doesFeatureEnableDependency dep) features)
[ feature ] ++ (expandFeatures featureMap (featureMap."${feature}" or []));outFeatures = builtins.concatMap expandFeature inputFeatures;
[ feature ] ++ (expandFeatures featureMap (featureMap."${feature}" or [ ]));outFeatures = lib.concatMap expandFeature inputFeatures;
defaultOrNil = if dependency.usesDefaultFeatures or truethen [ "default" ]else [];explicitFeatures = dependency.features or [];
defaultOrNil =if dependency.usesDefaultFeatures or truethen [ "default" ]else [ ];explicitFeatures = dependency.features or [ ];
dependencies = ["cfg-if 1.0.0",][[package]]name = "loom"version = "0.4.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d44c73b4636e497b4917eb21c33539efa3816741a2d3ff26c6316f1b529481a4"
][[package]]name = "tracing-futures"version = "0.2.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"dependencies = ["pin-project","tracing",