diff --git a/crane.nix b/crane.nix index 399f55f..ac1ddfb 100644 --- a/crane.nix +++ b/crane.nix @@ -91,17 +91,27 @@ let cargoExtraArgs = "--target ${crossPlatform.rustTargetSpec}"; - cargoVendorDir = craneLib.vendorMultipleCargoDeps { - inherit (craneLib.findCargoFiles src) cargoConfigs; - cargoLockList = [ - ./Cargo.lock - "${rustNightly.passthru.availableComponents.rust-src}/lib/rustlib/src/rust/Cargo.lock" - ]; - }; + cargoVendorDir = let + orig = craneLib.vendorMultipleCargoDeps { + inherit (craneLib.findCargoFiles src) cargoConfigs; + cargoLockList = [ + ./Cargo.lock + "${rustNightly.passthru.availableComponents.rust-src}/lib/rustlib/src/rust/Cargo.lock" + ]; + }; + in pkgs.runCommandLocal "${orig.name}-deref" {} '' + cp -rL ${orig} $out + chmod u+w $out + sed -i "s|${orig.outPath}|$out|g" "$out/config.toml" + ''; } // crossPlatform.env; + cargoArtifacts = craneLib.buildDepsOnly (commonArgs // { + installCargoArtifactsMode = "use-zstd"; + }); + crate = craneLib.buildPackage (commonArgs // { - cargoArtifacts = craneLib.buildDepsOnly commonArgs; + inherit cargoArtifacts; # The resulting executable must be standalone allowedRequisites = [ ]; diff --git a/flake.lock b/flake.lock index d28aa5f..13ff964 100644 --- a/flake.lock +++ b/flake.lock @@ -12,15 +12,16 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1687310026, - "narHash": "sha256-20RHFbrnC+hsG4Hyeg/58LvQAK7JWfFItTPFAFamu8E=", - "owner": "ipetkov", + "lastModified": 1687893602, + "narHash": "sha256-+Pi3GJ2ZwCHJ6z1HAKzZ3T4jbn8wdpj8sx/MZK6CmVI=", + "owner": "zhaofengli", "repo": "crane", - "rev": "116b32c30b5ff28e49f4fcbeeb1bbe3544593204", + "rev": "54046f5897cef86d9e8f0e536a4b94177eecb495", "type": "github" }, "original": { - "owner": "ipetkov", + "owner": "zhaofengli", + "ref": "mangled-artifacts", "repo": "crane", "type": "github" } diff --git a/flake.nix b/flake.nix index a2c3822..0d2da02 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ }; crane = { - url = "github:ipetkov/crane"; + url = "github:zhaofengli/crane/mangled-artifacts"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-compat.follows = "flake-compat"; };