This tells josh to include the patch from third_party/overlays/patches/cbtemulator-uds.patch at nixpkgs/cbtemulator-uds.patch. We then use the `additionalOverlays` feature introduced earlier, and pass it an overlay adding the patch to `cbtemulator`. This only gets applied if tvix/shell.nix is not called with a pkgs argument, which is the case in the tvix view. Change-Id: I7bc5543460ddd30325ab0998e891c15fcaf8bcfe Reviewed-on: https://cl.tvl.fyi/c/depot/+/11408 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz> Autosubmit: flokli <flokli@flokli.de>
		
			
				
	
	
		
			64 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
# 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.cbtemulator
 | 
						|
    pkgs.clippy
 | 
						|
    pkgs.evans
 | 
						|
    pkgs.fuse
 | 
						|
    pkgs.go
 | 
						|
    pkgs.google-cloud-bigtable-tool
 | 
						|
    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}
 | 
						|
  '';
 | 
						|
}
 |