diff --git a/pkgs/development/python-modules/vmas/default.nix b/pkgs/development/python-modules/vmas/default.nix new file mode 100644 index 0000000000000..90812f51e90d0 --- /dev/null +++ b/pkgs/development/python-modules/vmas/default.nix @@ -0,0 +1,89 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + gym, + gym-notices, + gymnasium, + matplotlib, + moviepy, + numpy, + opencv4, + pyglet, + pytestCheckHook, + pythonOlder, + pyyaml, + setuptools, + shimmy, + six, + torch, + tqdm, +}: + +buildPythonPackage rec { + pname = "vmas"; + version = "1.5.2"; + pyproject = true; + + # dependency "gym" broken + disabled = pythonOlder "3.12"; + + src = fetchFromGitHub { + owner = "proroklab"; + repo = "VectorizedMultiAgentSimulator"; + tag = version; + hash = "sha256-i1dr65IPIOGAH/1jXS7+PnxJzl986+fGB7M4ydisIrs="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + gym + gym-notices + numpy + pyglet + six + torch + ]; + + optional-dependencies = { + gymnasium = [ + gymnasium + shimmy + ]; + + render = [ + matplotlib + moviepy + opencv4 + ]; + }; + + pythonRelaxDeps = [ + "gym-notices" + "pyglet" + ]; + + disabledTests = [ + # pyglet.display.xlib.NoSuchDisplayException: Cannot connect to "None" + "test_use_vmas_env" + # Missing python3Packages.cvxpylayers + "test_heuristic" + ]; + + nativeCheckInputs = [ + pytestCheckHook + pyyaml + tqdm + ] + ++ optional-dependencies.gymnasium; + + pythonImportsCheck = [ "vmas" ]; + + meta = { + description = "A vectorized differentiable simulator designed for efficient Multi-Agent Reinforcement Learning benchmarking"; + homepage = "https://github.com/proroklab/VectorizedMultiAgentSimulator"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ derdennisop ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 99e66e842b764..cf8e9e1bc6a8a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -19988,6 +19988,8 @@ self: super: with self; { vllm = callPackage ../development/python-modules/vllm { }; + vmas = callPackage ../development/python-modules/vmas { }; + vmprof = callPackage ../development/python-modules/vmprof { }; vncdo = callPackage ../development/python-modules/vncdo { };