{ lib, stdenv, buildDunePackage, fetchFromGitHub, fetchpatch, cmdliner, ctypes, ctypes-foreign, dune-configurator, npy, ocaml-compiler-libs, ppx_custom_printf, ppx_expect, ppx_sexp_conv, sexplib, stdio, torch, }: buildDunePackage rec { pname = "torch"; version = "0.17"; minimalOCamlVersion = "4.08"; src = fetchFromGitHub { owner = "LaurentMazare"; repo = "ocaml-${pname}"; rev = version; hash = "sha256-z/9NUBjeFWE63Z/e8OyzDiy8hrn6qzjaiBH8G9MPeos="; }; patches = [ # Pytorch 2.0 support. Drop when it reaches a release (fetchpatch { url = "https://github.com/LaurentMazare/ocaml-torch/commit/ef7ef30cafecb09e45ec1ed8ce4bedae5947cfa5.patch"; hash = "sha256-smdwKy40iIISp/25L2J4az6KmqFS1soeChBElUyhl5A="; }) ]; buildInputs = [ dune-configurator ]; propagatedBuildInputs = [ cmdliner ctypes ctypes-foreign npy ocaml-compiler-libs ppx_custom_printf ppx_expect ppx_sexp_conv sexplib stdio torch torch.dev ]; preBuild = "export LIBTORCH=${torch.dev}/"; doCheck = !stdenv.hostPlatform.isAarch64; meta = with lib; { inherit (src.meta) homepage; description = "Ocaml bindings to Pytorch"; maintainers = [ maintainers.bcdarwin ]; license = licenses.asl20; broken = true; # Not compatible with libtorch ≥ 2.3.0 }; }