{ lib, stdenv, fetchFromGitHub, fetchurl, rust, rustPlatform, cargo-c, python3 }: rustPlatform.buildRustPackage rec { pname = "libimagequant"; version = "4.2.2"; src = fetchFromGitHub { owner = "ImageOptim"; repo = pname; rev = version; hash = "sha256-cZgnJOmj+xJDcewsxH2Jp5AAnFZKVuYxKPtoGeN03g4="; }; cargoLock = { lockFile = ./Cargo.lock; }; postPatch = '' ln -s ${./Cargo.lock} Cargo.lock ''; nativeBuildInputs = [ cargo-c ]; postBuild = '' pushd imagequant-sys ${rust.envVars.setEnv} cargo cbuild --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget} popd ''; postInstall = '' pushd imagequant-sys ${rust.envVars.setEnv} cargo cinstall --release --frozen --prefix=${placeholder "out"} --target ${stdenv.hostPlatform.rust.rustcTarget} popd ''; passthru.tests = { inherit (python3.pkgs) pillow; }; meta = with lib; { homepage = "https://pngquant.org/lib/"; description = "Image quantization library"; longDescription = "Small, portable C library for high-quality conversion of RGBA images to 8-bit indexed-color (palette) images."; license = licenses.gpl3Plus; platforms = platforms.unix; maintainers = with maintainers; [ ma9e marsam ]; }; }