@@ -172,6 +172,11 @@ crate_: lib.makeOverridable
172172 # Example: [ "-Z debuginfo=2" ]
173173 # Default: []
174174 , extraRustcOpts
175+ # A list of extra options to pass to rustc when building a build.rs.
176+ #
177+ # Example: [ "-Z debuginfo=2" ]
178+ # Default: []
179+ , extraRustcOptsForBuildRs
175180 # Whether to enable building tests.
176181 # Use true to enable.
177182 # Default: false
@@ -228,6 +233,7 @@ crate_: lib.makeOverridable
228233 nativeBuildInputs_ = nativeBuildInputs;
229234 buildInputs_ = buildInputs;
230235 extraRustcOpts_ = extraRustcOpts;
236+ extraRustcOptsForBuildRs_ = extraRustcOptsForBuildRs;
231237 buildTests_ = buildTests;
232238
233239 # crate2nix has a hack for the old bash based build script that did split
@@ -308,12 +314,16 @@ crate_: lib.makeOverridable
308314 lib.optionals (crate ? extraRustcOpts) crate.extraRustcOpts
309315 ++ extraRustcOpts_
310316 ++ (lib.optional (edition != null) "--edition ${edition}");
317+ extraRustcOptsForBuildRs =
318+ lib.optionals (crate ? extraRustcOptsForBuildRs) crate.extraRustcOptsForBuildRs
319+ ++ extraRustcOptsForBuildRs_
320+ ++ (lib.optional (edition != null) "--edition ${edition}");
311321
312322
313323 configurePhase = configureCrate {
314324 inherit crateName buildDependencies completeDeps completeBuildDeps crateDescription
315325 crateFeatures crateRenames libName build workspace_member release libPath crateVersion
316− extraLinkFlags extraRustcOpts
326+ extraLinkFlags extraRustcOptsForBuildRs
317327 crateAuthors crateHomepage verbose colors;
318328 };
319329 buildPhase = buildCrate {
@@ -337,6 +347,7 @@ crate_: lib.makeOverridable
337347 release = crate_.release or true;
338348 verbose = crate_.verbose or true;
339349 extraRustcOpts = [ ];
350+ extraRustcOptsForBuildRs = [ ];
340351 features = [ ];
341352 nativeBuildInputs = [ ];
342353 buildInputs = [ ];