хакерский путь
у меня есть этот код в nix для генерации .cargo
кеша:
myVendoredSrc = pkgs.stdenv.mkDerivation {
name = "myVendoredSrc";
# i renamed .cargo into cargo to make this work
src = /home/joachim/cargo;
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
mkdir -p $out/.cargo
cp -R registry $out/.cargo
'';
};
я использую этот грузовой кеш в nix-build
проекте, подобном этому:
buildenv = import ./artiq-dev.nix {
extraProfile = ''
export HOME=${myVendoredSrc}
'';
# --no-compile-gateware to disable vivado build
runScript = "python -m artiq.gateware.targets.kasli -V satellite --no-compile-gateware";
};
это позже вызывает cargo build
и использует кеш без требования для подключения к Интернету.
в nixpkgs есть fetchcargo, см. https://github.com/alexcrichton/cargo-vendor
вопрос
идея: выяснить, как использовать <nixpkgs>/pkgs/build-support/rust/fetchcargo.nix
в моих собственных файлах nix ...
то, что я пробовал раньше
пожалуйста, не намекайте мне на использование carnix
(я попробовал его собрать, это не сработало, и я также обнаружил, что не могу использовать его для этогопроект) или buildRustPackage
или buildRustCrate
(по той же причине, это не может быть использовано для проекта, над которым я работаю, поскольку это кросс-компиляторная установка, которая настраивается из сценария Python, создающего несколько переменных среды) *