{ pkgs ? import <nixpkgs> { } }:
let
yaz = pkgs.stdenv.mkDerivation rec {
pname = "yaz";
version = "5.37.0";
src = pkgs.fetchurl {
url = "https://download.indexdata.com/pub/yaz/yaz-${version}.tar.gz";
sha256 = "sha256-klf+sG4v27/Ot9BAwTn6E5V8TR67pqopOm3RPKsiJc4=";
};
nativeBuildInputs = with pkgs; [
automake
autoconf
libtool
pkg-config
];
buildInputs = with pkgs; [
libxml2
libxslt
icu
readline
];
configureFlags = [
"--enable-shared"
"--with-xml2"
"--with-xslt"
"--with-icu"
];
meta = with pkgs.lib; {
description = "Z39.50/SRU/Solr client and server";
homepage = "https://www.indexdata.com/resources/software/yaz/";
license = licenses.bsd3;
};
};
in
pkgs.mkShell {
packages = with pkgs; [
# Rust
rustc
cargo
rustfmt
clippy
rust-analyzer
pkg-config
clang
llvmPackages.libclang
# Build tools for yaz
automake
autoconf
libtool
# yaz toolkit as defined above
yaz
];
# Required by bindgen
LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ];
# Add YAZ to library and include paths
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ yaz ];
PKG_CONFIG_PATH = "${yaz}/lib/pkgconfig:${pkgs.libxslt.dev}/lib/pkgconfig:${pkgs.libxml2.dev}/lib/pkgconfig";
# Point rust-analyzer to the rust-src
RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
shellHook = ''
export RUST_BACKTRACE=1
'';
}