{ lib, python3, fetchFromGitLab, fetchpatch, git, openssh, nix-update-script, }: python3.pkgs.buildPythonApplication rec { pname = "marge-bot"; version = "0.16.0"; pyproject = true; src = fetchFromGitLab { owner = "marge-org"; repo = "marge-bot"; rev = version; hash = "sha256-UgdbeJegeTFP6YF6oMxAeQDI9AO2k6yk4WAFZ/Xspu8="; }; patches = [ # TODO: remove when merged https://gitlab.com/marge-org/marge-bot/-/merge_requests/571 (fetchpatch { url = "https://gitlab.com/marge-org/marge-bot/-/commit/7e9668b24455bcf9c99646853019a3e86505d850.patch"; hash = "sha256-n5zB3YmD7i6RmcO9XmHjWVdQHzeVuZUPOzY3+cA6NDk="; }) ./patches/wait-for-mr-update.patch ./patches/allow-self-merges.patch ]; nativeBuildInputs = [ python3.pkgs.setuptools ]; propagatedBuildInputs = (with python3.pkgs; [ configargparse maya pyyaml requests python-gitlab hatchling ]) ++ [ git openssh ]; nativeCheckInputs = (with python3.pkgs; [ pytest-cov-stub pytestCheckHook pendulum ]) ++ [ git ]; pythonImportsCheck = [ "marge" ]; passthru.updateScript = nix-update-script { }; meta = with lib; { description = "Merge bot for GitLab"; homepage = "https://gitlab.com/marge-org/marge-bot"; changelog = "https://gitlab.com/marge-org/marge-bot/-/blob/${src.rev}/CHANGELOG.md"; license = licenses.bsd3; maintainers = with maintainers; [ bcdarwin lelgenio ]; mainProgram = "marge.app"; }; }