{ lib, fetchFromGitHub, python, glibcLocales }: let py = python.override { packageOverrides = self: super: { # errbot requires markdown<3, and is not compatible with it either. markdown = super.markdown.overridePythonAttrs (oldAttrs: rec { version = "2.6.11"; src = super.fetchPypi { pname = "Markdown"; inherit version; sha256 = "108g80ryzykh8bj0i7jfp71510wrcixdi771lf2asyghgyf8cmm8"; }; }); # errbot requires slackclient 1.x, see https://github.com/errbotio/errbot/pull/1367 # latest 1.x release would be 1.3.2, but it requires an older websocket_client than the one in nixpkgs # so let's just vendor the known-working version until they've migrated to 2.x. slackclient = super.slackclient.overridePythonAttrs (oldAttrs: rec { version = "1.2.1"; pname = "slackclient"; src = fetchFromGitHub { owner = "slackapi"; repo = "python-slackclient"; rev = version; sha256 = "073fwf6fm2sqdp5ms3vm1v3ljh0pldi69k048404rp6iy3cfwkp0"; }; propagatedBuildInputs = with self; [ websocket_client requests six ]; checkInputs = with self; [ pytest codecov coverage mock pytestcov pytest-mock responses flake8 ]; # test_server.py fails because it needs connection (I think); checkPhase = '' py.test --cov-report= --cov=slackclient tests --ignore=tests/test_server.py ''; }); }; }; in py.pkgs.buildPythonApplication rec { pname = "errbot"; version = "6.1.1"; src = fetchFromGitHub { owner = "errbotio"; repo = "errbot"; rev = version; sha256 = "1s4dl1za5imwsv6j3y7m47dy91hmqd5n221kkqm9ni4mpzgpffz0"; }; LC_ALL = "en_US.utf8"; buildInputs = [ glibcLocales ]; propagatedBuildInputs = with py.pkgs; [ webtest requests jinja2 flask dulwich pyopenssl colorlog markdown ansi pygments daemonize pygments-markdown-lexer telegram irc slackclient sleekxmpp pyasn1 pyasn1-modules hypchat ]; checkInputs = with py.pkgs; [ mock pytest ]; # avoid tests that do network calls checkPhase = '' pytest tests -k 'not backup and not broken_plugin and not plugin_cycle' ''; meta = with lib; { description = "Chatbot designed to be simple to extend with plugins written in Python"; homepage = "http://errbot.io/"; maintainers = with maintainers; [ fpletz globin ]; license = licenses.gpl3; platforms = platforms.linux; # flaky on darwin, "RuntimeError: can't start new thread" }; }