about summary refs log tree commit diff
path: root/tvix/shell.nix
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/shell.nix')
-rw-r--r--tvix/shell.nix62
1 files changed, 62 insertions, 0 deletions
diff --git a/tvix/shell.nix b/tvix/shell.nix
new file mode 100644
index 0000000000..f0d8ab1657
--- /dev/null
+++ b/tvix/shell.nix
@@ -0,0 +1,62 @@
+# This file is shell.nix in the tvix josh workspace,
+# *and* used to provide the //tvix:shell attribute in a full depot checkout.
+# Hence, it may not use depot as a toplevel argument.
+
+{
+  # This falls back to the tvix josh workspace-provided nixpkgs checkout.
+  # In the case of depot, it's always set explicitly.
+  pkgs ? (import ./nixpkgs {
+    depotOverlays = false;
+    depot.third_party.sources = import ./sources { };
+    additionalOverlays = [
+      (self: super: {
+        # https://github.com/googleapis/google-cloud-go/pull/9665
+        cbtemulator = super.cbtemulator.overrideAttrs (old: {
+          patches = old.patches or [ ] ++ [
+            ./nixpkgs/cbtemulator-uds.patch
+          ];
+        });
+      })
+    ];
+  })
+, ...
+}:
+
+pkgs.mkShell {
+  name = "tvix-rust-dev-env";
+  packages = [
+    pkgs.buf-language-server
+    pkgs.cargo
+    pkgs.cargo-machete
+    pkgs.cargo-expand
+    pkgs.clippy
+    pkgs.evans
+    pkgs.fuse
+    pkgs.go
+    pkgs.grpcurl
+    pkgs.hyperfine
+    pkgs.mdbook
+    pkgs.mdbook-plantuml
+    pkgs.nix_2_3 # b/313
+    pkgs.pkg-config
+    pkgs.rust-analyzer
+    pkgs.rustc
+    pkgs.rustfmt
+    pkgs.plantuml
+    pkgs.protobuf
+  ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
+    # We need these two dependencies in the ambient environment to be able to
+    # `cargo build` on MacOS.
+    pkgs.libiconv
+    pkgs.buildPackages.darwin.apple_sdk.frameworks.Security
+  ];
+
+  # Set TVIX_BENCH_NIX_PATH to a somewhat pinned nixpkgs path.
+  # This is for invoking `cargo bench` imperatively on the developer machine.
+  # For tvix benchmarking across longer periods of time (by CI), we probably
+  # should also benchmark with a more static nixpkgs checkout, so nixpkgs
+  # refactorings are not observed as eval perf changes.
+  shellHook = ''
+    export TVIX_BENCH_NIX_PATH=nixpkgs=${pkgs.path}
+  '';
+}