1
0
Files
llmfs/shell.nix
2025-12-11 19:14:42 -08:00

81 lines
1.6 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"
# 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"
'';
}