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.nix23
1 files changed, 16 insertions, 7 deletions
diff --git a/pkgs/build-support/rust/default.nix b/pkgs/build-support/rust/default.nix
index 91569d0c070a..2275a065594f 100644
--- a/pkgs/build-support/rust/default.nix
+++ b/pkgs/build-support/rust/default.nix
@@ -7,6 +7,7 @@
 , buildInputs ? []
 , cargoUpdateHook ? ""
 , cargoDepsHook ? ""
+, cargoBuildFlags ? []
 , ... } @ args:
 
 let
@@ -26,7 +27,11 @@ in stdenv.mkDerivation (args // {
 
   buildInputs = [ git rust.cargo rust.rustc ] ++ buildInputs;
 
-  configurePhase = args.configurePhase or "true";
+  configurePhase = args.configurePhase or ''
+    runHook preConfigure
+    # noop
+    runHook postConfigure
+  '';
 
   postUnpack = ''
     eval "$cargoDepsHook"
@@ -92,22 +97,26 @@ in stdenv.mkDerivation (args // {
     )
   '' + (args.prePatch or "");
 
-  buildPhase = args.buildPhase or ''
-    echo "Running cargo build --release"
-    cargo build --release
+  buildPhase = with builtins; args.buildPhase or ''
+    runHook preBuild
+    echo "Running cargo build --release ${concatStringsSep " " cargoBuildFlags}"
+    cargo build --release ${concatStringsSep " " cargoBuildFlags}
+    runHook postBuild
   '';
 
   checkPhase = args.checkPhase or ''
+    runHook preCheck
     echo "Running cargo test"
     cargo test
+    runHook postCheck
   '';
 
   doCheck = args.doCheck or true;
 
   installPhase = args.installPhase or ''
+    runHook preInstall
     mkdir -p $out/bin
-    for f in $(find target/release -maxdepth 1 -type f); do
-      cp $f $out/bin
-    done;
+    find target/release -maxdepth 1 -executable -exec cp "{}" $out/bin \;
+    runHook postInstall
   '';
 })