arnaucube
arnaucube/hyperplonkPublic Self-hosted repository
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}