about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tvix/README.md11
-rw-r--r--tvix/default.nix9
2 files changed, 11 insertions, 9 deletions
diff --git a/tvix/README.md b/tvix/README.md
index 2a482097042e..e06b59bef9e7 100644
--- a/tvix/README.md
+++ b/tvix/README.md
@@ -14,14 +14,9 @@ single Rust workspace in `//tvix` to maintain the Nix build
 configuration.
 
 When making changes to Cargo dependency configuration in any of the
-Rust projects under `//tvix`, be sure to run `crate2nix generate` in
-`//tvix` itself and commit the changes to the generated `Cargo.nix`
-file.
-
-`crate2nix` is available via `direnv` inside of depot, or can be built
-from the `third_party.nixpkgs.crate2nix` attribute of depot. Make sure
-to build it from depot to avoid generating files with a different
-version that might have different output.
+Rust projects under `//tvix`, be sure to run
+`mg run //tvix:crate2nixGenerate --` in `//tvix` itself and commit the changes
+to the generated `Cargo.nix` file.
 
 ## License structure
 
diff --git a/tvix/default.nix b/tvix/default.nix
index 23ce0592ceb6..8708222a603d 100644
--- a/tvix/default.nix
+++ b/tvix/default.nix
@@ -1,5 +1,5 @@
 # Nix helpers for projects under //tvix
-{ pkgs, ... }:
+{ pkgs, depot, ... }:
 
 {
   # Load the crate2nix crate tree.
@@ -8,6 +8,13 @@
     nixpkgs = pkgs.path;
   };
 
+  # Run crate2nix generate in the current working directory, then
+  # format the generated file with depotfmt.
+  crate2nixGenerate = pkgs.writeShellScriptBin "crate2nix-generate" ''
+    ${pkgs.crate2nix}/bin/crate2nix generate
+    ${depot.tools.depotfmt}/bin/depotfmt Cargo.nix
+  '';
+
   # Provide a shell for the combined dependencies of all Tvix Rust
   # projects. Note that as this is manually maintained it may be
   # lacking something, but it is required for some people's workflows.