diff --git a/shell.nix b/shell.nix
new file mode 100644
index 0000000000000000000000000000000000000000..dcd723ff199e30ffe5821e3200960dd2c07e1710
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,25 @@
+let
+  mozillaOverlay =
+    import (builtins.fetchGit {
+      url = "https://github.com/mozilla/nixpkgs-mozilla.git";
+      rev = "57c8084c7ef41366993909c20491e359bbb90f54";
+    });
+  nixpkgs = import <nixpkgs> { overlays = [ mozillaOverlay ]; };
+  rust-nightly = with nixpkgs; ((rustChannelOf { date = "2020-10-05"; channel = "nightly"; }).rust.override {
+    targets = [ "wasm32-unknown-unknown" ];
+  });
+in
+with nixpkgs; pkgs.mkShell {
+  buildInputs = [
+    clang
+    cmake
+    pkg-config
+    rust-nightly
+  ] ++ stdenv.lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+  ];
+
+  LIBCLANG_PATH = "${llvmPackages.libclang}/lib";
+  PROTOC = "${protobuf}/bin/protoc";
+  ROCKSDB_LIB_DIR = "${rocksdb}/lib";
+}