diff --git a/pkgs/by-name/mi/mim-solvers/package.nix b/pkgs/by-name/mi/mim-solvers/package.nix new file mode 100644 index 000000000000..7bc0723a3044 --- /dev/null +++ b/pkgs/by-name/mi/mim-solvers/package.nix @@ -0,0 +1,68 @@ +{ + cmake, + crocoddyl, + fetchFromGitHub, + lib, + llvmPackages, + pkg-config, + proxsuite, + python3Packages, + pythonSupport ? false, + stdenv, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "mim-solvers"; + version = "0.0.5"; + + src = fetchFromGitHub { + owner = "machines-in-motion"; + repo = "mim_solvers"; + rev = "v${finalAttrs.version}"; + hash = "sha256-XV8EJqCOTYqljZe2PQvnhIaPUOJ+bBjRIoshdeqZycA="; + }; + + # eigenpy is not used without python support + postPatch = lib.optionalString (!pythonSupport) '' + substituteInPlace CMakeLists.txt --replace-fail \ + "add_project_dependency(eigenpy 2.7.10 REQUIRED)" \ + "" + ''; + + nativeBuildInputs = [ + cmake + pkg-config + ] ++ lib.optional pythonSupport python3Packages.pythonImportsCheckHook; + buildInputs = lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp; + propagatedBuildInputs = + lib.optionals pythonSupport [ + python3Packages.crocoddyl + python3Packages.osqp + python3Packages.proxsuite + python3Packages.scipy + ] + ++ lib.optionals (!pythonSupport) [ + crocoddyl + proxsuite + ]; + + cmakeFlags = + [ + (lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport) + (lib.cmakeBool "BUILD_WITH_PROXSUITE" true) + ] + ++ lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) ( + lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" "--exclude-regex;'test_solvers'" + ); + + doCheck = true; + pythonImportsCheck = [ "mim_solvers" ]; + + meta = { + description = "Numerical solvers used in the Machines in Motion Laboratory"; + homepage = "https://github.com/machines-in-motion/mim_solvers"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ nim65s ]; + platforms = lib.platforms.all; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a9231aecd6e8..591502e44f47 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7870,6 +7870,11 @@ self: super: with self; { millheater = callPackage ../development/python-modules/millheater { }; + mim-solvers = toPythonModule (pkgs.mim-solvers.override { + python3Packages = self; + pythonSupport = true; + }); + minari = callPackage ../development/python-modules/minari { }; mindsdb-evaluator = callPackage ../development/python-modules/mindsdb-evaluator { };