hyperplonk/shell.nix
shell.nixRaw
1let
2 basePkgs = import ./nix/nixpkgs.nix { };
3
4 rust_overlay = with basePkgs; import (fetchFromGitHub
5 (lib.importJSON ./nix/oxalica_rust_overlay.json));
6
7 pkgs = import ./nix/nixpkgs.nix { overlays = [ rust_overlay ]; };
8
9 nightlyToolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal.override {
10 extensions = [ "rustfmt" ];
11 });
12
13 stableToolchain = pkgs.rust-bin.stable."1.56.1".minimal.override {
14 extensions = [ "clippy" "llvm-tools-preview" "rust-src" ];
15 };
16
17 pre-commit-check = pkgs.callPackage ./nix/pre-commit.nix { };
18in
19with pkgs;
20
21mkShell {
22 buildInputs = [
23 argbash
24 openssl
25 pkgconfig
26 git
27
28 stableToolchain
29 nightlyToolchain
30
31 ] ++ lib.optionals stdenv.isDarwin [
32 darwin.apple_sdk.frameworks.Security
33 ];
34
35 shellHook = ''
36 export RUST_BACKTRACE=full
37 export PATH="$PATH:$(pwd)/target/debug:$(pwd)/target/release"
38
39 # Ensure `cargo fmt` uses `rustfmt` from nightly.
40 export RUSTFMT="${nightlyToolchain}/bin/rustfmt"
41
42 # install pre-commit hooks
43 ${pre-commit-check.shellHook}
44 '';
45}