87 lines
1.9 KiB
Nix
87 lines
1.9 KiB
Nix
{
|
|
pkgs ? import <nixpkgs> { },
|
|
}:
|
|
|
|
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"
|
|
|
|
|
|
export CUDA_PATH=${pkgs.cudatoolkit}
|
|
export LD_LIBRARY_PATH=${pkgs.linuxPackages.nvidia_x11}/lib:${pkgs.ncurses5}/lib
|
|
export EXTRA_LDFLAGS="-L/lib -L${pkgs.linuxPackages.nvidia_x11}/lib"
|
|
export EXTRA_CCFLAGS="-I/usr/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"
|
|
'';
|
|
}
|