diff options
Diffstat (limited to 'tvix/shell.nix')
-rw-r--r-- | tvix/shell.nix | 62 |
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} + ''; +} |