ya-ar/support/compile-rust.nix
2026-02-10 21:24:16 +09:00

68 lines
1.3 KiB
Nix

{ pkgs
, zig
, ...
}:
{ target
, cargoLock
, src
, extraLibs
, ...
}:
let
importCargoLock = pkgs.rustPlatform.importCargoLock;
cargoSetupHook = pkgs.rustPlatform.cargoSetupHook;
stdenv = pkgs.stdenv;
targetAsRust = {
amd64-linux = "x86_64-unknown-linux-musl";
arm64-linux = "aarch64-unknown-linux-musl";
}.${target};
rust-pkg = import ./rust.nix { inherit pkgs zig; system = "x86_64-linux"; };
libPaths = map (x: "${x}/lib") extraLibs;
in
stdenv.mkDerivation {
name = "yaar-${target}";
inherit src;
cargoDeps = importCargoLock cargoLock;
RUSTFLAGS =
"-C link-self-contained=no "
+ builtins.concatStringsSep " " (map (p: "-L ${p}") libPaths);
hardeningDisable = ["all"];
nativeBuildInputs = [
cargoSetupHook
rust-pkg
zig
pkgs.glibc
];
configurePhase = ''
runHook preConfigure
runHook postConfigure
'';
doCheck = false;
strictDeps = true;
buildPhase = ''
runHook preBuild
echo "RUSTFLAGS=$RUSTFLAGS"
echo cargo build --target ${targetAsRust} -j $NIX_BUILD_CORES --offline --release
cargo build --target ${targetAsRust} -j $NIX_BUILD_CORES --offline --release
runHook postBuild
'';
installPhase = ''
cp target/${targetAsRust}/release/yaar "$out"
'';
dontFixup = true;
}