{
  lib,
  stdenv,
  fetchFromGitHub,
  ocaml,
  findlib,
  piqi,
  stdlib-shims,
  num,
}:

stdenv.mkDerivation rec {
  version = "0.7.8";
  pname = "piqi-ocaml";
  name = "ocaml${ocaml.version}-${pname}-${version}";

  src = fetchFromGitHub {
    owner = "alavrik";
    repo = pname;
    rev = "v${version}";
    sha256 = "sha256-6Luq49sbo+AqLSq57mc6fLhrRx0K6G5LCUIzkGPfqYo=";
  };

  nativeBuildInputs = [
    ocaml
    findlib
  ];
  buildInputs = [
    piqi
    stdlib-shims
  ];

  checkInputs = [ num ];

  strictDeps = true;

  createFindlibDestdir = true;

  installPhase = ''
    runHook preInstall
    DESTDIR=$out make install
    runHook postInstall
  '';

  meta = with lib; {
    description = "Universal schema language and a collection of tools built around it. These are the ocaml bindings";
    homepage = "https://piqi.org";
    license = licenses.asl20;
    maintainers = [ maintainers.maurer ];
    mainProgram = "piqic-ocaml";
  };
}