{ lib
, python3
, fetchPypi
}:

let
  # bepasty 1.2 needs xstatic-font-awesome < 5, see
  # https://github.com/bepasty/bepasty-server/issues/305
  bepastyPython = python3.override {
    self = bepastyPython;
    packageOverrides = self: super: {
      xstatic-font-awesome = super.xstatic-font-awesome.overridePythonAttrs(oldAttrs: rec {
        version = "4.7.0.0";
        src = oldAttrs.src.override {
          inherit version;
          hash = "sha256-4B+0gMqqfHlj3LMyikcA5jG+9gcNsOi2hYFtIg5oX2w=";
        };
      });
    };
  };
in

# We need to use buildPythonPackage here to get the PYTHONPATH build correctly.
# This is needed for services.bepasty
# https://github.com/NixOS/nixpkgs/pull/38300

bepastyPython.pkgs.buildPythonPackage rec {
  pname = "bepasty";
  version = "1.2.1";
  format = "pyproject";

  propagatedBuildInputs = with bepastyPython.pkgs; [
    flask
    markupsafe
    pygments
    setuptools
    xstatic
    xstatic-asciinema-player
    xstatic-bootbox
    xstatic-bootstrap
    xstatic-font-awesome
    xstatic-jquery
    xstatic-jquery-file-upload
    xstatic-jquery-ui
    xstatic-pygments
  ];

  buildInputs = with bepastyPython.pkgs; [ setuptools-scm ];

  src = fetchPypi {
    inherit pname version;
    hash = "sha256-08cyr2AruGAfHAwHHS8WMfJh7DBKymaYyz4AxI/ubkE=";
  };

  nativeCheckInputs = with bepastyPython.pkgs; [
    build
    flake8
    pytestCheckHook
    pytest-cov
    selenium
    tox
    twine
  ];

  disabledTestPaths = [
    # Can be enabled when werkzeug is updated to >2.2, see #245145
    # and https://github.com/bepasty/bepasty-server/pull/303
    "src/bepasty/tests/test_rest_server.py"

    # These require a web browser
    "src/bepasty/tests/screenshots.py"
    "src/bepasty/tests/test_website.py"
  ];

  meta = with lib; {
    homepage = "https://github.com/bepasty/bepasty-server";
    description = "Binary pastebin server";
    license = licenses.bsd2;
    maintainers = with maintainers; [ aither64 makefu ];
  };
}
