diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..f0a0d7d --- /dev/null +++ b/shell.nix @@ -0,0 +1,80 @@ +{ + pkgs ? import { }, +}: + +pkgs.mkShell { + name = "platform-rust"; + + buildInputs = with pkgs; [ + # do not install, use system rust toolchain + # that is installed by rustup. Easier in nixos. + #rustc + #cargo + #rustfmt + #clippy + #rust-analyzer + + # Build dependencies + pkg-config + openssl + cmake + gcc + gnumake + openssl.dev + + # for lance + protobuf + + # image processing + libiconv + + # sqlx + postgresql + sqlite + git + + # wasm + wasm-pack + binaryen + python3 + + # for ort + stdenv.cc.cc.lib + ]; + + nativeBuildInputs = with pkgs; [ + pkg-config + cmake + ]; + + # Environment variables + shellHook = '' + echo "Rust toolchain:" + echo " rustc: $(rustc --version)" + echo " cargo: $(cargo --version)" + echo "" + + # Set up environment variables for builds + export PKG_CONFIG_PATH="${pkgs.openssl.dev}/lib/pkgconfig:${pkgs.postgresql}/lib/pkgconfig:$PKG_CONFIG_PATH" + export OPENSSL_DIR="${pkgs.openssl.dev}" + export OPENSSL_LIB_DIR="${pkgs.openssl.out}/lib" + export OPENSSL_INCLUDE_DIR="${pkgs.openssl.dev}/include" + + # Not sure which of these are necessary... + # For DuckDB + export CMAKE_PREFIX_PATH="${pkgs.cmake}/bin:$CMAKE_PREFIX_PATH" + + # For lance + export PROTOC="${pkgs.protobuf}/bin/protoc" + export PROTOBUF_LOCATION="${pkgs.protobuf}" + + # For ONNX Runtime + ${pkgs.lib.optionalString pkgs.stdenv.isLinux '' + export LD_LIBRARY_PATH="${pkgs.stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH" + ''} + + # sqlx + export SQLITE3_LIB_DIR="${pkgs.sqlite.out}/lib" + export PG_CONFIG="${pkgs.postgresql}/bin/pg_config" + ''; +}