about summary refs log tree commit diff
path: root/pkgs/build-support/rust/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/rust/default.nix')
-rw-r--r--pkgs/build-support/rust/default.nix24
1 files changed, 9 insertions, 15 deletions
diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix
index 57948c33bbc3..e3ede9372dfc 100644
--- a/pkgs/build-support/rust/default.nix
+++ b/pkgs/build-support/rust/default.nix
@@ -43,21 +43,15 @@ in stdenv.mkDerivation (args // {
   postUnpack = ''
     eval "$cargoDepsHook"
 
-    unpackFile "$cargoDeps"
-    cargoDepsCopy=$(stripHash $(basename $cargoDeps))
-    chmod -R +w "$cargoDepsCopy"
-
-    mkdir .cargo
-    cat >.cargo/config <<-EOF
-      [source.crates-io]
-      registry = 'https://github.com/rust-lang/crates.io-index'
-      replace-with = 'vendored-sources'
-
-      [source.vendored-sources]
-      directory = '$(pwd)/$cargoDepsCopy'
-    EOF
-
-    unset cargoDepsCopy
+    if [[ ! -f $cargoDeps/.config ]]; then
+      echo "ERROR: file not found: $cargoDeps/.config"
+      echo "try updating the cargoSha256"
+      exit 1
+    fi
+
+    mkdir -p .cargo
+    # inherit cargo config from the deps, rewrite the target directory
+    cat $cargoDeps/.config | sed "s|REPLACEME|$cargoDeps|g" > .cargo/config
 
     export RUST_LOG=${logLevel}
     export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt