summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/languages-frameworks/python.section.md34
-rw-r--r--nixos/doc/manual/release-notes/rl-1903.xml2
-rw-r--r--pkgs/applications/networking/browsers/w3m/default.nix6
-rw-r--r--pkgs/applications/science/math/sage/sage-src.nix6
-rw-r--r--pkgs/development/compilers/gcc/4.8/default.nix29
-rw-r--r--pkgs/development/compilers/gcc/4.9/default.nix30
-rw-r--r--pkgs/development/compilers/gcc/5/default.nix17
-rw-r--r--pkgs/development/compilers/gcc/6/default.nix27
-rw-r--r--pkgs/development/compilers/gcc/7/default.nix15
-rw-r--r--pkgs/development/compilers/gcc/8/default.nix15
-rw-r--r--pkgs/development/compilers/gcc/snapshot/default.nix15
-rw-r--r--pkgs/development/compilers/llvm/5/llvm.nix4
-rw-r--r--pkgs/development/interpreters/python/cpython/3.6/default.nix4
-rw-r--r--pkgs/development/interpreters/python/cpython/3.7/default.nix4
-rw-r--r--pkgs/development/interpreters/python/mk-python-derivation.nix4
-rw-r--r--pkgs/development/libraries/boehm-gc/default.nix4
-rw-r--r--pkgs/development/libraries/c-ares/default.nix15
-rw-r--r--pkgs/development/libraries/cairo/default.nix4
-rw-r--r--pkgs/development/libraries/freetds/default.nix4
-rw-r--r--pkgs/development/libraries/glibc/common.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/bad/default.nix8
-rw-r--r--pkgs/development/libraries/gstreamer/base/default.nix8
-rw-r--r--pkgs/development/libraries/gstreamer/core/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/ges/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/good/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/libav/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/rtsp-server/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/ugly/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/vaapi/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/validate/default.nix4
-rw-r--r--pkgs/development/libraries/harfbuzz/default.nix4
-rw-r--r--pkgs/development/libraries/imlib2/default.nix4
-rw-r--r--pkgs/development/libraries/libdrm/default.nix4
-rw-r--r--pkgs/development/libraries/libgcrypt/default.nix7
-rw-r--r--pkgs/development/libraries/libgcrypt/fix-jent-locking.patch29
-rw-r--r--pkgs/development/libraries/libssh/default.nix16
-rw-r--r--pkgs/development/libraries/libwacom/default.nix14
-rw-r--r--pkgs/development/libraries/mesa/default.nix4
-rw-r--r--pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch20
-rw-r--r--pkgs/development/libraries/nghttp2/default.nix6
-rw-r--r--pkgs/development/libraries/nghttp2/fix-stream-operator.patch63
-rw-r--r--pkgs/development/libraries/speex/default.nix4
-rw-r--r--pkgs/development/python-modules/Cython/default.nix5
-rw-r--r--pkgs/development/python-modules/aioeventlet/default.nix35
-rw-r--r--pkgs/development/python-modules/argh/default.nix33
-rw-r--r--pkgs/development/python-modules/autobahn/default.nix4
-rw-r--r--pkgs/development/python-modules/basemap/default.nix43
-rw-r--r--pkgs/development/python-modules/blessings/default.nix25
-rw-r--r--pkgs/development/python-modules/blist/default.nix23
-rw-r--r--pkgs/development/python-modules/bootstrapped-pip/default.nix4
-rw-r--r--pkgs/development/python-modules/cffi/default.nix2
-rw-r--r--pkgs/development/python-modules/cliapp/default.nix31
-rw-r--r--pkgs/development/python-modules/clint/default.nix39
-rw-r--r--pkgs/development/python-modules/clize/default.nix26
-rw-r--r--pkgs/development/python-modules/cmdtest/default.nix32
-rw-r--r--pkgs/development/python-modules/daemonize/default.nix21
-rw-r--r--pkgs/development/python-modules/datadiff/default.nix25
-rw-r--r--pkgs/development/python-modules/dot2tex/default.nix28
-rw-r--r--pkgs/development/python-modules/eggdeps/default.nix28
-rw-r--r--pkgs/development/python-modules/entrypoints/default.nix12
-rw-r--r--pkgs/development/python-modules/evernote/default.nix27
-rw-r--r--pkgs/development/python-modules/fasteners/default.nix35
-rw-r--r--pkgs/development/python-modules/flaskbabel/default.nix29
-rw-r--r--pkgs/development/python-modules/freezegun/default.nix28
-rw-r--r--pkgs/development/python-modules/funcy/default.nix24
-rw-r--r--pkgs/development/python-modules/gdata/default.nix24
-rw-r--r--pkgs/development/python-modules/geeknote/default.nix38
-rw-r--r--pkgs/development/python-modules/geoalchemy2/default.nix25
-rw-r--r--pkgs/development/python-modules/geopy/default.nix30
-rw-r--r--pkgs/development/python-modules/grequests/default.nix29
-rw-r--r--pkgs/development/python-modules/gst-python/default.nix40
-rw-r--r--pkgs/development/python-modules/gst-python/different-path-with-pygobject.patch20
-rw-r--r--pkgs/development/python-modules/hgsvn/default.nix32
-rw-r--r--pkgs/development/python-modules/html2text/default.nix21
-rw-r--r--pkgs/development/python-modules/hypothesis/default.nix4
-rw-r--r--pkgs/development/python-modules/imapclient/default.nix32
-rw-r--r--pkgs/development/python-modules/importmagic/default.nix26
-rw-r--r--pkgs/development/python-modules/isodate/default.nix30
-rw-r--r--pkgs/development/python-modules/jenkins-job-builder/default.nix38
-rw-r--r--pkgs/development/python-modules/jenkinsapi/default.nix31
-rw-r--r--pkgs/development/python-modules/kaa-base/default.nix51
-rw-r--r--pkgs/development/python-modules/kaa-metadata/default.nix56
-rw-r--r--pkgs/development/python-modules/larch/default.nix32
-rw-r--r--pkgs/development/python-modules/lasagne/default.nix31
-rw-r--r--pkgs/development/python-modules/libarchive-c/default.nix36
-rw-r--r--pkgs/development/python-modules/linecache2/default.nix26
-rw-r--r--pkgs/development/python-modules/lz4/default.nix24
-rw-r--r--pkgs/development/python-modules/mailcap-fix/default.nix23
-rw-r--r--pkgs/development/python-modules/maildir-deduplicate/default.nix26
-rw-r--r--pkgs/development/python-modules/mmpython/default.nix26
-rw-r--r--pkgs/development/python-modules/mongodict/default.nix24
-rw-r--r--pkgs/development/python-modules/mox3/default.nix40
-rw-r--r--pkgs/development/python-modules/mps-youtube/default.nix39
-rw-r--r--pkgs/development/python-modules/neovim_gui/default.nix35
-rw-r--r--pkgs/development/python-modules/nose_progressive/default.nix32
-rw-r--r--pkgs/development/python-modules/numexpr/default.nix12
-rw-r--r--pkgs/development/python-modules/numpy/default.nix32
-rw-r--r--pkgs/development/python-modules/ofxparse/default.nix25
-rw-r--r--pkgs/development/python-modules/ofxtools/default.nix30
-rw-r--r--pkgs/development/python-modules/pagerduty/default.nix23
-rw-r--r--pkgs/development/python-modules/pamqp/default.nix28
-rw-r--r--pkgs/development/python-modules/pandocfilters/default.nix24
-rw-r--r--pkgs/development/python-modules/parsedatetime/default.nix27
-rw-r--r--pkgs/development/python-modules/parsel/default.nix34
-rw-r--r--pkgs/development/python-modules/parsimonious/default.nix27
-rw-r--r--pkgs/development/python-modules/paste/default.nix31
-rw-r--r--pkgs/development/python-modules/pastedeploy/default.nix24
-rw-r--r--pkgs/development/python-modules/pastescript/default.nix32
-rw-r--r--pkgs/development/python-modules/patch/default.nix26
-rw-r--r--pkgs/development/python-modules/pathos/default.nix30
-rw-r--r--pkgs/development/python-modules/pdfkit/default.nix25
-rw-r--r--pkgs/development/python-modules/pep8/default.nix26
-rw-r--r--pkgs/development/python-modules/percol/default.nix24
-rw-r--r--pkgs/development/python-modules/pexif/default.nix21
-rw-r--r--pkgs/development/python-modules/pg8000/default.nix25
-rw-r--r--pkgs/development/python-modules/pgpdump/default.nix24
-rw-r--r--pkgs/development/python-modules/pickleshare/default.nix30
-rw-r--r--pkgs/development/python-modules/pid/default.nix27
-rw-r--r--pkgs/development/python-modules/piep/default.nix27
-rw-r--r--pkgs/development/python-modules/pika/default.nix35
-rw-r--r--pkgs/development/python-modules/pilkit/default.nix36
-rw-r--r--pkgs/development/python-modules/pip2nix/default.nix36
-rw-r--r--pkgs/development/python-modules/pivy/default.nix27
-rw-r--r--pkgs/development/python-modules/posix_ipc/default.nix21
-rw-r--r--pkgs/development/python-modules/power/default.nix24
-rw-r--r--pkgs/development/python-modules/pox/default.nix21
-rw-r--r--pkgs/development/python-modules/ppft/default.nix24
-rw-r--r--pkgs/development/python-modules/prettytable/default.nix28
-rw-r--r--pkgs/development/python-modules/process-tests/default.nix24
-rw-r--r--pkgs/development/python-modules/ptest/default.nix23
-rw-r--r--pkgs/development/python-modules/purepng/default.nix21
-rw-r--r--pkgs/development/python-modules/pweave/default.nix30
-rw-r--r--pkgs/development/python-modules/py/default.nix4
-rw-r--r--pkgs/development/python-modules/py3dns/default.nix30
-rw-r--r--pkgs/development/python-modules/pyacoustid/default.nix34
-rw-r--r--pkgs/development/python-modules/pyacoustid/pyacoustid-py3.patch (renamed from pkgs/development/python-modules/pyacoustid-py3.patch)0
-rw-r--r--pkgs/development/python-modules/pyalgotrade/default.nix28
-rw-r--r--pkgs/development/python-modules/pyaudio/default.nix26
-rw-r--r--pkgs/development/python-modules/pybcrypt/default.nix21
-rw-r--r--pkgs/development/python-modules/pyblock/default.nix38
-rw-r--r--pkgs/development/python-modules/pyblosxom/default.nix31
-rw-r--r--pkgs/development/python-modules/pycapnp/default.nix34
-rw-r--r--pkgs/development/python-modules/pycarddav/default.nix31
-rw-r--r--pkgs/development/python-modules/pycdio/default.nix44
-rw-r--r--pkgs/development/python-modules/pychef/default.nix30
-rw-r--r--pkgs/development/python-modules/pycodestyle/default.nix10
-rw-r--r--pkgs/development/python-modules/pycryptopp/default.nix34
-rw-r--r--pkgs/development/python-modules/pycurl2/default.nix34
-rw-r--r--pkgs/development/python-modules/pydenticon/default.nix25
-rw-r--r--pkgs/development/python-modules/pydispatcher/default.nix28
-rw-r--r--pkgs/development/python-modules/pydns/default.nix23
-rw-r--r--pkgs/development/python-modules/pydot_ng/default.nix34
-rw-r--r--pkgs/development/python-modules/pyelftools/default.nix31
-rw-r--r--pkgs/development/python-modules/pyenchant/default.nix36
-rw-r--r--pkgs/development/python-modules/pyexcelerator/default.nix28
-rw-r--r--pkgs/development/python-modules/pyfantom/default.nix24
-rw-r--r--pkgs/development/python-modules/pygments-markdown-lexer/default.nix27
-rw-r--r--pkgs/development/python-modules/pyicu/default.nix37
-rw-r--r--pkgs/development/python-modules/pyinotify/default.nix25
-rw-r--r--pkgs/development/python-modules/pyinputevent/default.nix24
-rw-r--r--pkgs/development/python-modules/pyinsane2/default.nix45
-rw-r--r--pkgs/development/python-modules/pykickstart/default.nix36
-rw-r--r--pkgs/development/python-modules/pykka/default.nix26
-rw-r--r--pkgs/development/python-modules/pyliblo/default.nix26
-rw-r--r--pkgs/development/python-modules/pymaging/default.nix24
-rw-r--r--pkgs/development/python-modules/pymaging_png/default.nix27
-rw-r--r--pkgs/development/python-modules/pymongo/2_9_1.nix24
-rw-r--r--pkgs/development/python-modules/pynac/default.nix21
-rw-r--r--pkgs/development/python-modules/pync/default.nix34
-rw-r--r--pkgs/development/python-modules/pynzb/default.nix30
-rw-r--r--pkgs/development/python-modules/pyopengl/default.nix50
-rw-r--r--pkgs/development/python-modules/pyparted/default.nix49
-rw-r--r--pkgs/development/python-modules/pypdf/default.nix25
-rw-r--r--pkgs/development/python-modules/pypdf2/default.nix35
-rw-r--r--pkgs/development/python-modules/pypeg2/default.nix30
-rw-r--r--pkgs/development/python-modules/pyplatec/default.nix21
-rw-r--r--pkgs/development/python-modules/pyptlib/default.nix26
-rw-r--r--pkgs/development/python-modules/pyqtgraph/default.nix31
-rw-r--r--pkgs/development/python-modules/pyquery/default.nix30
-rw-r--r--pkgs/development/python-modules/pyreport/default.nix26
-rw-r--r--pkgs/development/python-modules/pyrsistent/default.nix32
-rw-r--r--pkgs/development/python-modules/pyrss2gen/default.nix25
-rw-r--r--pkgs/development/python-modules/pysaml2/default.nix66
-rw-r--r--pkgs/development/python-modules/pyscss/default.nix39
-rw-r--r--pkgs/development/python-modules/pysendfile/default.nix28
-rw-r--r--pkgs/development/python-modules/pysftp/default.nix31
-rw-r--r--pkgs/development/python-modules/pysmi/default.nix28
-rw-r--r--pkgs/development/python-modules/pysnmp/default.nix30
-rw-r--r--pkgs/development/python-modules/pysocks/default.nix23
-rw-r--r--pkgs/development/python-modules/pyspotify/default.nix44
-rw-r--r--pkgs/development/python-modules/pysqlite/default.nix57
-rw-r--r--pkgs/development/python-modules/pysvn/default.nix58
-rw-r--r--pkgs/development/python-modules/pytest/default.nix7
-rw-r--r--pkgs/development/python-modules/python-etcd/default.nix37
-rw-r--r--pkgs/development/python-modules/python-jenkins/default.nix38
-rw-r--r--pkgs/development/python-modules/python-libarchive/default.nix27
-rw-r--r--pkgs/development/python-modules/python-wifi/default.nix27
-rw-r--r--pkgs/development/python-modules/python3pika/default.nix33
-rw-r--r--pkgs/development/python-modules/python_keyczar/default.nix27
-rw-r--r--pkgs/development/python-modules/python_mimeparse/default.nix24
-rw-r--r--pkgs/development/python-modules/python_statsd/default.nix28
-rw-r--r--pkgs/development/python-modules/pyutil/default.nix50
-rw-r--r--pkgs/development/python-modules/pyuv/default.nix29
-rw-r--r--pkgs/development/python-modules/pyuv/pyuv-external-libuv.patch (renamed from pkgs/development/python-modules/pyuv-external-libuv.patch)0
-rw-r--r--pkgs/development/python-modules/pywebkitgtk/default.nix27
-rw-r--r--pkgs/development/python-modules/pyx/default.nix27
-rw-r--r--pkgs/development/python-modules/qpid-python/default.nix26
-rw-r--r--pkgs/development/python-modules/qrcode/default.nix28
-rw-r--r--pkgs/development/python-modules/qscintilla/default.nix41
-rw-r--r--pkgs/development/python-modules/qserve/default.nix24
-rw-r--r--pkgs/development/python-modules/queuelib/default.nix25
-rw-r--r--pkgs/development/python-modules/qutip/default.nix44
-rw-r--r--pkgs/development/python-modules/rabbitpy/default.nix27
-rw-r--r--pkgs/development/python-modules/rbtools/default.nix31
-rw-r--r--pkgs/development/python-modules/readme/default.nix37
-rw-r--r--pkgs/development/python-modules/recaptcha_client/default.nix23
-rw-r--r--pkgs/development/python-modules/rencode/default.nix27
-rw-r--r--pkgs/development/python-modules/repeated_test/default.nix26
-rw-r--r--pkgs/development/python-modules/repocheck/default.nix23
-rw-r--r--pkgs/development/python-modules/repoze_who/default.nix25
-rw-r--r--pkgs/development/python-modules/resampy/default.nix33
-rw-r--r--pkgs/development/python-modules/retry_decorator/default.nix21
-rw-r--r--pkgs/development/python-modules/retrying/default.nix27
-rw-r--r--pkgs/development/python-modules/robotframework-requests/default.nix28
-rw-r--r--pkgs/development/python-modules/robotframework-selenium2library/default.nix30
-rw-r--r--pkgs/development/python-modules/robotframework-tools/default.nix29
-rw-r--r--pkgs/development/python-modules/routes/default.nix29
-rw-r--r--pkgs/development/python-modules/rpdb/default.nix21
-rw-r--r--pkgs/development/python-modules/rpyc/default.nix25
-rw-r--r--pkgs/development/python-modules/rsa/default.nix26
-rw-r--r--pkgs/development/python-modules/ruamel_base/default.nix21
-rw-r--r--pkgs/development/python-modules/ruamel_ordereddict/default.nix24
-rw-r--r--pkgs/development/python-modules/ruamel_yaml/default.nix31
-rw-r--r--pkgs/development/python-modules/runsnakerun/default.nix25
-rw-r--r--pkgs/development/python-modules/sandboxlib/default.nix26
-rw-r--r--pkgs/development/python-modules/scales/default.nix29
-rw-r--r--pkgs/development/python-modules/scipy/default.nix7
-rw-r--r--pkgs/development/python-modules/scripttest/default.nix27
-rw-r--r--pkgs/development/python-modules/semantic/default.nix30
-rw-r--r--pkgs/development/python-modules/setproctitle/default.nix22
-rw-r--r--pkgs/development/python-modules/setuptools/default.nix4
-rw-r--r--pkgs/development/python-modules/setuptoolsdarcs/default.nix30
-rw-r--r--pkgs/development/python-modules/setuptoolstrial/default.nix38
-rw-r--r--pkgs/development/python-modules/sexpdata/default.nix23
-rw-r--r--pkgs/development/python-modules/shortuuid/default.nix25
-rw-r--r--pkgs/development/python-modules/shouldbe/default.nix28
-rw-r--r--pkgs/development/python-modules/signedjson/default.nix26
-rw-r--r--pkgs/development/python-modules/sigtools/default.nix33
-rw-r--r--pkgs/development/python-modules/simpleai/default.nix29
-rw-r--r--pkgs/development/python-modules/simplebayes/default.nix36
-rw-r--r--pkgs/development/python-modules/simpleparse/default.nix26
-rw-r--r--pkgs/development/python-modules/sipsimple/default.nix41
-rw-r--r--pkgs/development/python-modules/slob/default.nix34
-rw-r--r--pkgs/development/python-modules/slowaes/default.nix24
-rw-r--r--pkgs/development/python-modules/smartdc/default.nix25
-rw-r--r--pkgs/development/python-modules/smartypants/default.nix25
-rw-r--r--pkgs/development/python-modules/smugline/default.nix41
-rw-r--r--pkgs/development/python-modules/snappergui/default.nix30
-rw-r--r--pkgs/development/python-modules/socksipy-branch/default.nix21
-rw-r--r--pkgs/development/python-modules/sopel/default.nix40
-rw-r--r--pkgs/development/python-modules/sorl_thumbnail/default.nix24
-rw-r--r--pkgs/development/python-modules/speaklater/default.nix22
-rw-r--r--pkgs/development/python-modules/sphinx_pypi_upload/default.nix21
-rw-r--r--pkgs/development/python-modules/sphinx_rtd_theme/default.nix22
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix36
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-openapi/default.nix29
-rw-r--r--pkgs/development/python-modules/sphinxcontrib-spelling/default.nix30
-rw-r--r--pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix28
-rw-r--r--pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix24
-rw-r--r--pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix28
-rw-r--r--pkgs/development/python-modules/sqlalchemy-imageattach/default.nix42
-rw-r--r--pkgs/development/python-modules/sqlite3dbm/default.nix23
-rw-r--r--pkgs/development/python-modules/sqlobject/default.nix29
-rw-r--r--pkgs/development/python-modules/sqlparse/default.nix34
-rw-r--r--pkgs/development/python-modules/squaremap/default.nix23
-rw-r--r--pkgs/development/python-modules/stompclient/default.nix29
-rw-r--r--pkgs/development/python-modules/subdownloader/default.nix66
-rw-r--r--pkgs/development/python-modules/subunit/default.nix21
-rw-r--r--pkgs/development/python-modules/suds-jurko/default.nix33
-rw-r--r--pkgs/development/python-modules/suds/default.nix29
-rw-r--r--pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch (renamed from pkgs/development/python-modules/suds-0.4-CVE-2013-2217.patch)0
-rw-r--r--pkgs/development/python-modules/sure/default.nix32
-rw-r--r--pkgs/development/python-modules/svg2tikz/default.nix28
-rw-r--r--pkgs/development/python-modules/svgwrite/default.nix26
-rw-r--r--pkgs/development/python-modules/tarman/default.nix34
-rw-r--r--pkgs/development/python-modules/taskw/default.nix40
-rw-r--r--pkgs/development/python-modules/telegram/default.nix21
-rw-r--r--pkgs/development/python-modules/termcolor/default.nix21
-rw-r--r--pkgs/development/python-modules/terminaltables/default.nix21
-rw-r--r--pkgs/development/python-modules/testpath/default.nix22
-rw-r--r--pkgs/development/python-modules/testrepository/default.nix34
-rw-r--r--pkgs/development/python-modules/testscenarios/default.nix24
-rw-r--r--pkgs/development/python-modules/threadpool/default.nix21
-rw-r--r--pkgs/development/python-modules/thrift/default.nix25
-rw-r--r--pkgs/development/python-modules/thumborpexif/default.nix23
-rw-r--r--pkgs/development/python-modules/tilestache/default.nix31
-rw-r--r--pkgs/development/python-modules/timelib/default.nix22
-rw-r--r--pkgs/development/python-modules/tissue/default.nix27
-rw-r--r--pkgs/development/python-modules/tkinter/default.nix28
-rw-r--r--pkgs/development/python-modules/tlsh/default.nix37
-rw-r--r--pkgs/development/python-modules/tlslite/default.nix21
-rw-r--r--pkgs/development/python-modules/tokenlib/default.nix26
-rw-r--r--pkgs/development/python-modules/toposort/default.nix23
-rw-r--r--pkgs/development/python-modules/traceback2/default.nix28
-rw-r--r--pkgs/development/python-modules/tracing/default.nix28
-rw-r--r--pkgs/development/python-modules/traits/default.nix39
-rw-r--r--pkgs/development/python-modules/translationstring/default.nix22
-rw-r--r--pkgs/development/python-modules/transmissionrpc/default.nix24
-rw-r--r--pkgs/development/python-modules/trezor_agent/default.nix31
-rw-r--r--pkgs/development/python-modules/ttystatus/default.nix30
-rw-r--r--pkgs/development/python-modules/tvdb_api/default.nix25
-rw-r--r--pkgs/development/python-modules/tvnamer/default.nix30
-rw-r--r--pkgs/development/python-modules/twiggy/default.nix25
-rw-r--r--pkgs/development/python-modules/twitter-common-collections/default.nix25
-rw-r--r--pkgs/development/python-modules/twitter-common-confluence/default.nix25
-rw-r--r--pkgs/development/python-modules/twitter-common-dirutil/default.nix25
-rw-r--r--pkgs/development/python-modules/twitter-common-lang/default.nix22
-rw-r--r--pkgs/development/python-modules/twitter-common-log/default.nix26
-rw-r--r--pkgs/development/python-modules/twitter-common-options/default.nix22
-rw-r--r--pkgs/development/python-modules/twitter/default.nix23
-rw-r--r--pkgs/development/python-modules/txaio/default.nix9
-rw-r--r--pkgs/development/python-modules/txamqp/default.nix25
-rw-r--r--pkgs/development/python-modules/txgithub/default.nix39
-rw-r--r--pkgs/development/python-modules/txrequests/default.nix35
-rw-r--r--pkgs/development/python-modules/typogrify/default.nix32
-rw-r--r--pkgs/development/python-modules/ujson/default.nix23
-rw-r--r--pkgs/development/python-modules/umalqurra/default.nix26
-rw-r--r--pkgs/development/python-modules/unicodecsv/default.nix24
-rw-r--r--pkgs/development/python-modules/unittest2/default.nix38
-rw-r--r--pkgs/development/python-modules/unpaddedbase64/default.nix22
-rw-r--r--pkgs/development/python-modules/upass/default.nix27
-rw-r--r--pkgs/development/python-modules/uptime/default.nix22
-rw-r--r--pkgs/development/python-modules/uritemplate_py/default.nix22
-rw-r--r--pkgs/development/python-modules/urwidtrees/default.nix26
-rw-r--r--pkgs/development/python-modules/versiontools/default.nix24
-rw-r--r--pkgs/development/python-modules/veryprettytable/default.nix25
-rw-r--r--pkgs/development/python-modules/virtualenv-clone/default.nix29
-rw-r--r--pkgs/development/python-modules/virtualenvwrapper/default.nix75
-rw-r--r--pkgs/development/python-modules/vmprof/default.nix28
-rw-r--r--pkgs/development/python-modules/vultr/default.nix30
-rw-r--r--pkgs/development/python-modules/w3lib/default.nix26
-rw-r--r--pkgs/development/python-modules/waitress/default.nix24
-rw-r--r--pkgs/development/python-modules/web/default.nix28
-rw-r--r--pkgs/development/python-modules/webhelpers/default.nix31
-rw-r--r--pkgs/development/python-modules/webob/default.nix25
-rw-r--r--pkgs/development/python-modules/websockify/default.nix24
-rw-r--r--pkgs/development/python-modules/webtest/default.nix37
-rw-r--r--pkgs/development/python-modules/wheel/default.nix4
-rw-r--r--pkgs/development/python-modules/willow/default.nix32
-rw-r--r--pkgs/development/python-modules/word2vec/default.nix32
-rw-r--r--pkgs/development/python-modules/worldengine/default.nix63
-rw-r--r--pkgs/development/python-modules/wsgiproxy/default.nix27
-rw-r--r--pkgs/development/python-modules/wsgiproxy2/default.nix30
-rw-r--r--pkgs/development/python-modules/x11_hash/default.nix22
-rw-r--r--pkgs/development/python-modules/xattr/default.nix32
-rw-r--r--pkgs/development/python-modules/xcaplib/default.nix28
-rw-r--r--pkgs/development/python-modules/xkcdpass/default.nix25
-rw-r--r--pkgs/development/python-modules/xlib/default.nix31
-rw-r--r--pkgs/development/python-modules/xlrd/default.nix28
-rw-r--r--pkgs/development/python-modules/xlsx2csv/default.nix22
-rw-r--r--pkgs/development/python-modules/yapsy/default.nix23
-rw-r--r--pkgs/development/python-modules/zbaemon/default.nix28
-rw-r--r--pkgs/development/python-modules/zbase32/default.nix27
-rw-r--r--pkgs/development/python-modules/zdaemon/default.nix28
-rw-r--r--pkgs/development/python-modules/zerobin/default.nix33
-rw-r--r--pkgs/development/python-modules/zfec/default.nix37
-rw-r--r--pkgs/development/python-modules/zope_broken/default.nix26
-rw-r--r--pkgs/development/python-modules/zope_component/default.nix32
-rw-r--r--pkgs/development/python-modules/zope_configuration/default.nix31
-rw-r--r--pkgs/development/python-modules/zope_contenttype/default.nix22
-rw-r--r--pkgs/development/python-modules/zope_dottedname/default.nix22
-rw-r--r--pkgs/development/python-modules/zope_event/default.nix22
-rw-r--r--pkgs/development/python-modules/zope_exceptions/default.nix28
-rw-r--r--pkgs/development/python-modules/zope_filerepresentation/default.nix25
-rw-r--r--pkgs/development/python-modules/zope_i18n/default.nix26
-rw-r--r--pkgs/development/python-modules/zope_i18nmessageid/default.nix22
-rw-r--r--pkgs/development/python-modules/zope_lifecycleevent/default.nix26
-rw-r--r--pkgs/development/python-modules/zope_location/default.nix32
-rw-r--r--pkgs/development/python-modules/zope_proxy/default.nix28
-rw-r--r--pkgs/development/python-modules/zope_schema/default.nix33
-rw-r--r--pkgs/development/python-modules/zope_size/default.nix26
-rw-r--r--pkgs/development/python-modules/zope_testing/default.nix30
-rw-r--r--pkgs/development/tools/analysis/valgrind/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/meson/default.nix8
-rw-r--r--pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch98
-rw-r--r--pkgs/os-specific/darwin/cctools/port.nix48
-rw-r--r--pkgs/os-specific/darwin/cctools/support-ios.patch13
-rw-r--r--pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch17
-rw-r--r--pkgs/os-specific/linux/alsa-lib/default.nix4
-rw-r--r--pkgs/os-specific/linux/apparmor/default.nix8
-rw-r--r--pkgs/os-specific/linux/iproute/default.nix4
-rw-r--r--pkgs/os-specific/linux/kernel-headers/default.nix48
-rw-r--r--pkgs/os-specific/linux/v4l-utils/default.nix4
-rw-r--r--pkgs/stdenv/generic/make-derivation.nix16
-rw-r--r--pkgs/tools/misc/file/default.nix6
-rw-r--r--pkgs/tools/misc/parallel/default.nix4
-rw-r--r--pkgs/tools/networking/curl/default.nix4
-rw-r--r--pkgs/tools/networking/unbound/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix11
-rw-r--r--pkgs/top-level/perl-packages.nix211
-rw-r--r--pkgs/top-level/python-packages.nix6975
401 files changed, 10340 insertions, 7192 deletions
diff --git a/doc/languages-frameworks/python.section.md b/doc/languages-frameworks/python.section.md
index 907f4d9152a..81ce4d94ad2 100644
--- a/doc/languages-frameworks/python.section.md
+++ b/doc/languages-frameworks/python.section.md
@@ -484,11 +484,11 @@ and in this case the `python35` interpreter is automatically used.
 ### Interpreters
 
 Versions 2.7, 3.5, 3.6 and 3.7 of the CPython interpreter are available as
-respectively `python27`, `python35` and `python36`. The PyPy interpreter
-is available as `pypy`. The aliases `python2` and `python3` correspond to respectively `python27` and
-`python35`. The default interpreter, `python`, maps to `python2`.
-The Nix expressions for the interpreters can be found in
-`pkgs/development/interpreters/python`.
+respectively `python27`, `python35`, `python36` and `python37`. The PyPy
+interpreter is available as `pypy`. The aliases `python2` and `python3`
+correspond to respectively `python27` and `python37`. The default interpreter,
+`python`, maps to `python2`. The Nix expressions for the interpreters can be
+found in `pkgs/development/interpreters/python`.
 
 All packages depending on any Python interpreter get appended
 `out/{python.sitePackages}` to `$PYTHONPATH` if such directory
@@ -537,7 +537,7 @@ sets are
 and the aliases
 
 * `pkgs.python2Packages` pointing to `pkgs.python27Packages`
-* `pkgs.python3Packages` pointing to `pkgs.python36Packages`
+* `pkgs.python3Packages` pointing to `pkgs.python37Packages`
 * `pkgs.pythonPackages` pointing to `pkgs.python2Packages`
 
 #### `buildPythonPackage` function
@@ -1078,8 +1078,7 @@ To modify only a Python package set instead of a whole Python derivation, use th
 Use the following overlay template:
 
 ```nix
-self: super:
-{
+self: super: {
   python = super.python.override {
     packageOverrides = python-self: python-super: {
       zerobin = python-super.zerobin.overrideAttrs (oldAttrs: {
@@ -1094,6 +1093,25 @@ self: super:
 }
 ```
 
+### How to use Intel's MKL with numpy and scipy?
+
+A `site.cfg` is created that configures BLAS based on the `blas` parameter
+of the `numpy` derivation. By passing in `mkl`, `numpy` and packages depending
+on `numpy` will be built with `mkl`.
+
+The following is an overlay that configures `numpy` to use `mkl`:
+```nix
+self: super: {
+  python36 = super.python36.override {
+    packageOverrides = python-self: python-super: {
+      numpy = python-super.numpy.override {
+        blas = super.pkgs.mkl;
+      };
+    };
+  };
+}
+```
+
 ## Contributing
 
 ### Contributing guidelines
diff --git a/nixos/doc/manual/release-notes/rl-1903.xml b/nixos/doc/manual/release-notes/rl-1903.xml
index c1649edcf23..5beca39e8be 100644
--- a/nixos/doc/manual/release-notes/rl-1903.xml
+++ b/nixos/doc/manual/release-notes/rl-1903.xml
@@ -19,6 +19,8 @@
 
   <itemizedlist>
    <listitem>
+    <para>
+    The default Python 3 interpreter is now CPython 3.7 instead of CPython 3.6.
     <para />
    </listitem>
   </itemizedlist>
diff --git a/pkgs/applications/networking/browsers/w3m/default.nix b/pkgs/applications/networking/browsers/w3m/default.nix
index d1561a06526..70eb381c60e 100644
--- a/pkgs/applications/networking/browsers/w3m/default.nix
+++ b/pkgs/applications/networking/browsers/w3m/default.nix
@@ -15,13 +15,13 @@ assert mouseSupport -> gpm-ncurses != null;
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  name = "w3m-0.5.3+git20161120";
+  name = "w3m-0.5.3+git20180125";
 
   src = fetchFromGitHub {
     owner = "tats";
     repo = "w3m";
-    rev = "v0.5.3+git20161120";
-    sha256 = "06n5a9jdyihkd4xdjmyci32dpqp1k2l5awia5g9ng0bn256bacdc";
+    rev = "v0.5.3+git20180125";
+    sha256 = "0dafdfx1yhrvhbqzslkcapj09dvf64m2jadz3wl2icni0k4msq90";
   };
 
   NIX_LDFLAGS = optionalString stdenv.isSunOS "-lsocket -lnsl";
diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix
index b32e063f39d..295125eefd1 100644
--- a/pkgs/applications/science/math/sage/sage-src.nix
+++ b/pkgs/applications/science/math/sage/sage-src.nix
@@ -65,12 +65,18 @@ stdenv.mkDerivation rec {
     ./patches/numpy-1.15.1.patch
 
     # ntl upgrade
+    # https://trac.sagemath.org/ticket/25532#comment:29
     (fetchpatch {
       name = "lcalc-c++11.patch";
       url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/sagemath-lcalc-c++11.patch?h=packages/sagemath&id=0e31ae526ab7c6b5c0bfacb3f8b1c4fd490035aa";
       sha256 = "0p5wnvbx65i7cp0bjyaqgp4rly8xgnk12pqwaq3dqby0j2bk6ijb";
     })
 
+    (fetchpatch {
+      name = "cython-0.29.patch";
+      url = "https://git.sagemath.org/sage.git/patch/?h=f77de1d0e7f90ee12761140500cb8cbbb789ab20";
+      sha256 = "14wrpy8jgbnpza1j8a2nx8y2r946y82pll1fv3cn6gpfmm6640l3";
+    })
     # https://trac.sagemath.org/ticket/26360
     (fetchpatch {
       name = "arb-2.15.1.patch";
diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix
index e40994a078e..bcb724fd58c 100644
--- a/pkgs/development/compilers/gcc/4.8/default.nix
+++ b/pkgs/development/compilers/gcc/4.8/default.nix
@@ -52,12 +52,9 @@ with builtins;
 
 let version = "4.8.5";
 
-    enableParallelBuilding = true;
-
     inherit (stdenv) buildPlatform hostPlatform targetPlatform;
 
-    patches = [ ]
-      ++ optional enableParallelBuilding ../parallel-bconfig.patch
+    patches = [ ../parallel-bconfig.patch ]
       ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
       ++ optional noSysDirs ../no-sys-dirs.patch
       ++ optional langFortran ../gfortran-driving.patch
@@ -214,20 +211,27 @@ stdenv.mkDerivation ({
     ++ (optional (perl != null) perl)
     ++ (optional javaAwtGtk pkgconfig);
 
-  buildInputs = [ gmp mpfr libmpc libelf ]
-    ++ (optional (cloog != null) cloog)
+  # For building runtime libs
+  depsBuildTarget =
+    if hostPlatform == buildPlatform then [
+      targetPackages.stdenv.cc.bintools # newly-built gcc will be used
+    ] else assert targetPlatform == hostPlatform; [ # build != host == target
+      stdenv.cc
+    ];
+
+  buildInputs = [
+    gmp mpfr libmpc libelf
+    targetPackages.stdenv.cc.bintools # For linking code at run-time
+  ] ++ (optional (cloog != null) cloog)
     ++ (optional (isl != null) isl)
     ++ (optional (zlib != null) zlib)
     ++ (optionals langJava [ boehmgc zip unzip ])
     ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs))
-    ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools])
-
     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
     ++ (optional hostPlatform.isDarwin gnused)
     ;
 
-
   preConfigure = stdenv.lib.optionalString (hostPlatform.isSunOS && hostPlatform.is64bit) ''
     export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g`
     export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
@@ -359,8 +363,8 @@ stdenv.mkDerivation ({
     ++ optional (zlib != null) zlib
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ])
-  );
+    ++ optionals javaAwtGtk [ gmp mpfr ]
+  ));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -387,7 +391,8 @@ stdenv.mkDerivation ({
     hardeningUnsupportedFlags = [ "stackprotector" ];
   };
 
-  inherit enableParallelBuilding enableMultilib;
+  enableParallelBuilding = true;
+  inherit enableMultilib;
 
   inherit (stdenv) is64bit;
 
diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix
index bd5257b94a0..13ff4165a41 100644
--- a/pkgs/development/compilers/gcc/4.9/default.nix
+++ b/pkgs/development/compilers/gcc/4.9/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, targetPackages, fetchurl, noSysDirs, fetchpatch
+{ stdenv, targetPackages, fetchurl, fetchpatch, noSysDirs
 , langC ? true, langCC ? true, langFortran ? false
 , langObjC ? stdenv.targetPlatform.isDarwin
 , langObjCpp ? stdenv.targetPlatform.isDarwin
@@ -52,13 +52,10 @@ with builtins;
 
 let version = "4.9.4";
 
-    enableParallelBuilding = true;
-
     inherit (stdenv) buildPlatform hostPlatform targetPlatform;
 
     patches =
-      [ ../use-source-date-epoch.patch ]
-      ++ optionals enableParallelBuilding [ ../parallel-bconfig.patch ./parallel-strsignal.patch ]
+      [ ../use-source-date-epoch.patch ../parallel-bconfig.patch ./parallel-strsignal.patch ]
       ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
       ++ optional noSysDirs ../no-sys-dirs.patch
       ++ optional langFortran ../gfortran-driving.patch
@@ -239,8 +236,6 @@ stdenv.mkDerivation ({
     ++ (optional (zlib != null) zlib)
     ++ (optionals langJava [ boehmgc zip unzip ])
     ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs))
-    ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools])
-
     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
     ++ (optional hostPlatform.isDarwin gnused)
@@ -255,8 +250,7 @@ stdenv.mkDerivation ({
   ''
   + stdenv.lib.optionalString (langJava || langGo) ''
     export lib=$out;
-  ''
-  ;
+  '';
 
   dontDisableStatic = true;
 
@@ -268,7 +262,8 @@ stdenv.mkDerivation ({
     [
       "--with-gmp-include=${gmp.dev}/include"
       "--with-gmp-lib=${gmp.out}/lib"
-      "--with-mpfr=${mpfr.dev}"
+      "--with-mpfr-include=${mpfr.dev}/include"
+      "--with-mpfr-lib=${mpfr.out}/lib"
       "--with-mpc=${libmpc}"
     ] ++
     optional (libelf != null) "--with-libelf=${libelf}" ++
@@ -381,7 +376,8 @@ stdenv.mkDerivation ({
     ++ optional (zlib != null) zlib
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]));
+    ++ optionals javaAwtGtk [ gmp mpfr ]
+  ));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -402,10 +398,13 @@ stdenv.mkDerivation ({
         "-Wl,-rpath-link,${libcCross.out}${libcCross.libdir or "/lib"}"
     ]));
 
-  passthru =
-    { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
+  passthru = {
+    inherit langC langCC langObjC langObjCpp langFortran langGo version;
+    isGNU = true;
+  };
 
-  inherit enableParallelBuilding enableMultilib;
+  enableParallelBuilding = true;
+  inherit enableMultilib;
 
   inherit (stdenv) is64bit;
 
@@ -429,7 +428,8 @@ stdenv.mkDerivation ({
     platforms =
       stdenv.lib.platforms.linux ++
       stdenv.lib.platforms.freebsd ++
-      stdenv.lib.platforms.illumos;
+      stdenv.lib.platforms.illumos ++
+      stdenv.lib.platforms.darwin;
   };
 }
 
diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix
index 85b3d96e136..a30cd6bbda9 100644
--- a/pkgs/development/compilers/gcc/5/default.nix
+++ b/pkgs/development/compilers/gcc/5/default.nix
@@ -49,9 +49,6 @@ with stdenv.lib;
 with builtins;
 
 let version = "5.5.0";
-    sha256 = "11zd1hgzkli3b2v70qsm2hyqppngd4616qc96lmm9zl2kl9yl32k";
-
-    enableParallelBuilding = true;
 
     inherit (stdenv) buildPlatform hostPlatform targetPlatform;
 
@@ -170,7 +167,7 @@ stdenv.mkDerivation ({
 
   src = fetchurl {
     url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz";
-    inherit sha256;
+    sha256 = "11zd1hgzkli3b2v70qsm2hyqppngd4616qc96lmm9zl2kl9yl32k";
   };
 
   inherit patches;
@@ -244,12 +241,10 @@ stdenv.mkDerivation ({
     ++ (optional (zlib != null) zlib)
     ++ (optionals langJava [ boehmgc zip unzip ])
     ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs))
-    ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools])
 
     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
     ++ (optional hostPlatform.isDarwin gnused)
-    ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools)
     ;
 
   NIX_LDFLAGS = stdenv.lib.optionalString  hostPlatform.isSunOS "-lm -ldl";
@@ -408,10 +403,13 @@ stdenv.mkDerivation ({
         "-Wl,-rpath-link,${libcCross.out}${libcCross.libdir or "/lib"}"
     ]));
 
-  passthru =
-    { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
+  passthru = {
+    inherit langC langCC langObjC langObjCpp langFortran langGo version;
+    isGNU = true;
+  };
 
-  inherit enableParallelBuilding enableMultilib;
+  enableParallelBuilding = true;
+  inherit enableMultilib;
 
   inherit (stdenv) is64bit;
 
@@ -435,6 +433,7 @@ stdenv.mkDerivation ({
     platforms =
       stdenv.lib.platforms.linux ++
       stdenv.lib.platforms.freebsd ++
+      stdenv.lib.platforms.illumos ++
       stdenv.lib.platforms.darwin;
   };
 }
diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix
index 98e24900b01..372a7065f2d 100644
--- a/pkgs/development/compilers/gcc/6/default.nix
+++ b/pkgs/development/compilers/gcc/6/default.nix
@@ -48,9 +48,7 @@ assert langGo -> langCC;
 with stdenv.lib;
 with builtins;
 
-let version = "6.4.0";
-
-    enableParallelBuilding = true;
+let version = "6.5.0";
 
     inherit (stdenv) buildPlatform hostPlatform targetPlatform;
 
@@ -59,8 +57,6 @@ let version = "6.4.0";
       ++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
       ++ optional noSysDirs ../no-sys-dirs.patch
       ++ optional langFortran ../gfortran-driving.patch
-      ++ [ ../struct-ucontext.patch ../struct-sigaltstack.patch ] # glibc-2.26
-      ++ optional langJava [ ../struct-ucontext-libjava.patch ] # glibc-2.26
       ++ optional (targetPlatform.libc == "musl") ../libgomp-dont-force-initial-exec.patch
       ;
 
@@ -170,7 +166,7 @@ stdenv.mkDerivation ({
 
   src = fetchurl {
     url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.xz";
-    sha256 = "1m0lr7938lw5d773dkvwld90hjlcq2282517d1gwvrfzmwgg42w5";
+    sha256 = "0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby";
   };
 
   inherit patches;
@@ -245,12 +241,9 @@ stdenv.mkDerivation ({
     ++ (optional (zlib != null) zlib)
     ++ (optionals langJava [ boehmgc zip unzip ])
     ++ (optionals javaAwtGtk ([ gtk2 libart_lgpl ] ++ xlibs))
-    ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools])
-
     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
     ++ (optional hostPlatform.isDarwin gnused)
-    ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools)
     ;
 
   NIX_LDFLAGS = stdenv.lib.optionalString  hostPlatform.isSunOS "-lm -ldl";
@@ -263,8 +256,7 @@ stdenv.mkDerivation ({
   ''
   + stdenv.lib.optionalString (langJava || langGo) ''
     export lib=$out;
-  ''
-  ;
+  '';
 
   dontDisableStatic = true;
 
@@ -391,7 +383,8 @@ stdenv.mkDerivation ({
     ++ optional (zlib != null) zlib
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]));
+    ++ optionals javaAwtGtk [ gmp mpfr ]
+  ));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -412,10 +405,13 @@ stdenv.mkDerivation ({
         "-Wl,-rpath-link,${libcCross.out}${libcCross.libdir or "/lib"}"
     ]));
 
-  passthru =
-    { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
+  passthru = {
+    inherit langC langCC langObjC langObjCpp langFortran langGo version;
+    isGNU = true;
+  };
 
-  inherit enableParallelBuilding enableMultilib;
+  enableParallelBuilding = true;
+  inherit enableMultilib;
 
   inherit (stdenv) is64bit;
 
@@ -439,6 +435,7 @@ stdenv.mkDerivation ({
     platforms =
       stdenv.lib.platforms.linux ++
       stdenv.lib.platforms.freebsd ++
+      stdenv.lib.platforms.illumos ++
       stdenv.lib.platforms.darwin;
   };
 }
diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix
index 064d9eb6bc7..094c26cbf69 100644
--- a/pkgs/development/compilers/gcc/7/default.nix
+++ b/pkgs/development/compilers/gcc/7/default.nix
@@ -39,8 +39,6 @@ with builtins;
 
 let version = "7.3.0";
 
-    enableParallelBuilding = true;
-
     inherit (stdenv) buildPlatform hostPlatform targetPlatform;
 
     patches =
@@ -221,12 +219,9 @@ stdenv.mkDerivation ({
     targetPackages.stdenv.cc.bintools # For linking code at run-time
   ] ++ (optional (isl != null) isl)
     ++ (optional (zlib != null) zlib)
-    ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools])
-
     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
     ++ (optional hostPlatform.isDarwin gnused)
-    ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools)
     ;
 
   NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.cc.isClang && langFortran) "-Wno-unused-command-line-argument";
@@ -361,10 +356,13 @@ stdenv.mkDerivation ({
         "-Wl,-rpath-link,${libcCross.out}${libcCross.libdir or "/lib"}"
     ]));
 
-  passthru =
-    { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
+  passthru = {
+    inherit langC langCC langObjC langObjCpp langFortran langGo version;
+    isGNU = true;
+  };
 
-  inherit enableParallelBuilding enableMultilib;
+  enableParallelBuilding = true;
+  inherit enableMultilib;
 
   inherit (stdenv) is64bit;
 
@@ -388,6 +386,7 @@ stdenv.mkDerivation ({
     platforms =
       stdenv.lib.platforms.linux ++
       stdenv.lib.platforms.freebsd ++
+      stdenv.lib.platforms.illumos ++
       stdenv.lib.platforms.darwin;
   };
 }
diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix
index c6fea70cfbb..1335666c54c 100644
--- a/pkgs/development/compilers/gcc/8/default.nix
+++ b/pkgs/development/compilers/gcc/8/default.nix
@@ -39,8 +39,6 @@ with builtins;
 
 let version = "8.2.0";
 
-    enableParallelBuilding = true;
-
     inherit (stdenv) buildPlatform hostPlatform targetPlatform;
 
     patches =
@@ -210,12 +208,9 @@ stdenv.mkDerivation ({
     targetPackages.stdenv.cc.bintools # For linking code at run-time
   ] ++ (optional (isl != null) isl)
     ++ (optional (zlib != null) zlib)
-    ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools])
-
     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
     ++ (optional hostPlatform.isDarwin gnused)
-    ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools)
     ;
 
   NIX_LDFLAGS = stdenv.lib.optionalString  hostPlatform.isSunOS "-lm -ldl";
@@ -339,10 +334,13 @@ stdenv.mkDerivation ({
         "-Wl,-rpath-link,${libcCross.out}${libcCross.libdir or "/lib"}"
     ]));
 
-  passthru =
-    { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
+  passthru = {
+    inherit langC langCC langObjC langObjCpp langFortran langGo version;
+    isGNU = true;
+  };
 
-  inherit enableParallelBuilding enableMultilib;
+  enableParallelBuilding = true;
+  inherit enableMultilib;
 
   inherit (stdenv) is64bit;
 
@@ -366,6 +364,7 @@ stdenv.mkDerivation ({
     platforms =
       stdenv.lib.platforms.linux ++
       stdenv.lib.platforms.freebsd ++
+      stdenv.lib.platforms.illumos ++
       stdenv.lib.platforms.darwin;
   };
 }
diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix
index a308abd9c16..c18189cd949 100644
--- a/pkgs/development/compilers/gcc/snapshot/default.nix
+++ b/pkgs/development/compilers/gcc/snapshot/default.nix
@@ -40,8 +40,6 @@ with builtins;
 
 let version = "7-20170409";
 
-    enableParallelBuilding = true;
-
     inherit (stdenv) buildPlatform hostPlatform targetPlatform;
 
     patches =
@@ -179,12 +177,9 @@ stdenv.mkDerivation ({
     targetPackages.stdenv.cc.bintools # For linking code at run-time
   ] ++ (optional (isl != null) isl)
     ++ (optional (zlib != null) zlib)
-    ++ (optionals (targetPlatform != hostPlatform) [targetPackages.stdenv.cc.bintools])
-
     # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
     # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
     ++ (optional hostPlatform.isDarwin gnused)
-    ++ (optional hostPlatform.isDarwin targetPackages.stdenv.cc.bintools)
     ;
 
   NIX_LDFLAGS = stdenv.lib.optionalString  hostPlatform.isSunOS "-lm -ldl";
@@ -311,10 +306,13 @@ stdenv.mkDerivation ({
         "-Wl,-rpath-link,${libcCross.out}${libcCross.libdir or "/lib"}"
     ]));
 
-  passthru =
-    { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
+  passthru = {
+    inherit langC langCC langObjC langObjCpp langFortran langGo version;
+    isGNU = true;
+  };
 
-  inherit enableParallelBuilding enableMultilib;
+  enableParallelBuilding = true;
+  inherit enableMultilib;
 
   inherit (stdenv) is64bit;
 
@@ -338,6 +336,7 @@ stdenv.mkDerivation ({
     platforms =
       stdenv.lib.platforms.linux ++
       stdenv.lib.platforms.freebsd ++
+      stdenv.lib.platforms.illumos ++
       stdenv.lib.platforms.darwin;
 
     broken = true;
diff --git a/pkgs/development/compilers/llvm/5/llvm.nix b/pkgs/development/compilers/llvm/5/llvm.nix
index 6dae8be97c8..ae4b2744159 100644
--- a/pkgs/development/compilers/llvm/5/llvm.nix
+++ b/pkgs/development/compilers/llvm/5/llvm.nix
@@ -36,9 +36,7 @@ in stdenv.mkDerivation (rec {
   nativeBuildInputs = [ cmake python ]
     ++ stdenv.lib.optional enableManpages python.pkgs.sphinx;
 
-  buildInputs = [ libxml2 libffi ]
-    # TODO(@Ericson2314): Remove next mass rebuild
-    ++ stdenv.lib.optionals (stdenv.isDarwin && stdenv.hostPlatform == stdenv.buildPlatform) [ libcxxabi ];
+  buildInputs = [ libxml2 libffi ];
 
   propagatedBuildInputs = [ ncurses zlib ];
 
diff --git a/pkgs/development/interpreters/python/cpython/3.6/default.nix b/pkgs/development/interpreters/python/cpython/3.6/default.nix
index 5b5041f5bcd..4c9d0c2a896 100644
--- a/pkgs/development/interpreters/python/cpython/3.6/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.6/default.nix
@@ -26,7 +26,7 @@ with stdenv.lib;
 
 let
   majorVersion = "3.6";
-  minorVersion = "6";
+  minorVersion = "7";
   minorVersionSuffix = "";
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
@@ -51,7 +51,7 @@ in stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
-    sha256 = "0vz1wqg50zq6g15givdx1s2rq5752y5g2f1978bs6wvf8mfw36yp";
+    sha256 = "0zgp8nvz3rkiz5cxd42vgpah4rvw3kmg9qz9lfq36rfnm40i9zc1";
   };
 
   NIX_LDFLAGS = optionalString stdenv.isLinux "-lgcc_s";
diff --git a/pkgs/development/interpreters/python/cpython/3.7/default.nix b/pkgs/development/interpreters/python/cpython/3.7/default.nix
index be503d29b3a..093d8599690 100644
--- a/pkgs/development/interpreters/python/cpython/3.7/default.nix
+++ b/pkgs/development/interpreters/python/cpython/3.7/default.nix
@@ -26,7 +26,7 @@ with stdenv.lib;
 
 let
   majorVersion = "3.7";
-  minorVersion = "0";
+  minorVersion = "1";
   minorVersionSuffix = "";
   version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
   libPrefix = "python${majorVersion}";
@@ -48,7 +48,7 @@ in stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://www.python.org/ftp/python/${majorVersion}.${minorVersion}/Python-${version}.tar.xz";
-    sha256 = "0j9mic5c9lbd2b20wka7hily7szz740wy9ilfrczxap63rnrk0h3";
+    sha256 = "0v9x4h22rh5cwpsq1mwpdi3c9lc9820lzp2nmn9g20llij72nzps";
   };
 
   NIX_LDFLAGS = optionalString stdenv.isLinux "-lgcc_s";
diff --git a/pkgs/development/interpreters/python/mk-python-derivation.nix b/pkgs/development/interpreters/python/mk-python-derivation.nix
index 63ffdbb8c0a..ef8ee4e5425 100644
--- a/pkgs/development/interpreters/python/mk-python-derivation.nix
+++ b/pkgs/development/interpreters/python/mk-python-derivation.nix
@@ -101,6 +101,10 @@ toPythonModule (python.stdenv.mkDerivation (builtins.removeAttrs attrs [
     ${python.interpreter} ${./catch_conflicts}/catch_conflicts.py
   '' + attrs.postFixup or '''';
 
+  # Print fewer warnings so we have less noise in our logs
+  # The amount of warnings also caused builds to be terminated.
+  PYTHONWARNINGS="once";
+
   meta = {
     # default to python's platforms
     platforms = python.meta.platforms;
diff --git a/pkgs/development/libraries/boehm-gc/default.nix b/pkgs/development/libraries/boehm-gc/default.nix
index 012c1d123b6..ad7aff6b540 100644
--- a/pkgs/development/libraries/boehm-gc/default.nix
+++ b/pkgs/development/libraries/boehm-gc/default.nix
@@ -4,14 +4,14 @@
 
 stdenv.mkDerivation rec {
   name = "boehm-gc-${version}";
-  version = "7.6.8";
+  version = "8.0.0";
 
   src = fetchurl {
     urls = [
       "http://www.hboehm.info/gc/gc_source/gc-${version}.tar.gz"
       "https://github.com/ivmai/bdwgc/releases/download/v${version}/gc-${version}.tar.gz"
     ];
-    sha256 = "0n720a0i584ghcwmdsjiq6bl9ig0p9mrja29rp4cgsqvpz6wa2h4";
+    sha256 = "014gjv3f1qycsv5yh3fyhvrvsig60yc288pipzr0ml4312igj8wg";
   };
 
   buildInputs = [ libatomic_ops ];
diff --git a/pkgs/development/libraries/c-ares/default.nix b/pkgs/development/libraries/c-ares/default.nix
index 099d02c8263..efe7a5820b5 100644
--- a/pkgs/development/libraries/c-ares/default.nix
+++ b/pkgs/development/libraries/c-ares/default.nix
@@ -2,23 +2,14 @@
 
 let self =
 stdenv.mkDerivation rec {
-  name = "c-ares-1.14.0";
+  name = "c-ares-1.15.0";
 
   src = fetchurl {
     url = "https://c-ares.haxx.se/download/${name}.tar.gz";
-    sha256 = "0vnwmbvymw677k780kpb6sb8i3szdp89rzy8mz1fwg1657yw3ls5";
+    sha256 = "0lk8knip4xk6qzksdkn7085mmgm4ixfczdyyjw656c193y3rgnvc";
   };
 
-  configureFlags = if stdenv.hostPlatform.isWindows then [ "--disable-shared" "--enable-static" ] else null;
-
-  # ares_android.h header is missing
-  # see issue https://github.com/c-ares/c-ares/issues/216
-  postPatch = if stdenv.hostPlatform.isAndroid then ''
-    cp ${fetchurl {
-      url = "https://raw.githubusercontent.com/c-ares/c-ares/cares-1_14_0/ares_android.h";
-      sha256 = "1aw8y6r5c8zq6grjwf4mcm2jj35r5kgdklrp296214s1f1827ps8";
-    }} ares_android.h
-  '' else null;
+  configureFlags = stdenv.lib.optionals stdenv.hostPlatform.isWindows [ "--disable-shared" "--enable-static" ];
 
   meta = with stdenv.lib; {
     description = "A C library for asynchronous DNS requests";
diff --git a/pkgs/development/libraries/cairo/default.nix b/pkgs/development/libraries/cairo/default.nix
index 7c0664533b8..8f7a04cbb68 100644
--- a/pkgs/development/libraries/cairo/default.nix
+++ b/pkgs/development/libraries/cairo/default.nix
@@ -10,14 +10,14 @@
 assert glSupport -> libGL != null;
 
 let
-  version = "1.15.14";
+  version = "1.16.0";
   inherit (stdenv.lib) optional optionals;
 in stdenv.mkDerivation rec {
   name = "cairo-${version}";
 
   src = fetchurl {
     url = "https://cairographics.org/${if stdenv.lib.mod (builtins.fromJSON (stdenv.lib.versions.minor version)) 2 == 0 then "releases" else "snapshots"}/${name}.tar.xz";
-    sha256 = "1399jfdpdhn4hf812hxlj1gyi3bznxwzhp2rnyq1nxjs05n6nmhn";
+    sha256 = "0c930mk5xr2bshbdljv005j3j8zr47gqmkry3q6qgvqky6rjjysy";
   };
 
   outputs = [ "out" "dev" "devdoc" ];
diff --git a/pkgs/development/libraries/freetds/default.nix b/pkgs/development/libraries/freetds/default.nix
index 4f07316bd3f..42313fc4e5e 100644
--- a/pkgs/development/libraries/freetds/default.nix
+++ b/pkgs/development/libraries/freetds/default.nix
@@ -8,11 +8,11 @@ assert odbcSupport -> unixODBC != null;
 
 stdenv.mkDerivation rec {
   name = "freetds-${version}";
-  version = "1.00.94";
+  version = "1.00.104";
 
   src = fetchurl {
     url    = "http://www.freetds.org/files/stable/${name}.tar.bz2";
-    sha256 = "1r03ns0jp2sbbivys5bks376vbdqbnx8v764kjh74gpbajjmkksz";
+    sha256 = "0mlg027mppv2348f4wwdpxpac9baqkdsg7xqx21kyx5dx5kmr71g";
   };
 
   buildInputs = [
diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix
index b77c450bdec..042f5ca90ba 100644
--- a/pkgs/development/libraries/glibc/common.nix
+++ b/pkgs/development/libraries/glibc/common.nix
@@ -133,9 +133,7 @@ stdenv.mkDerivation ({
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
   nativeBuildInputs = [ bison ];
-  # TODO make linuxHeaders unconditional next mass rebuild
-  buildInputs = lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) linuxHeaders
-    ++ lib.optionals withGd [ gd libpng ];
+  buildInputs = [ linuxHeaders ] ++ lib.optionals withGd [ gd libpng ];
 
   # Needed to install share/zoneinfo/zone.tab.  Set to impure /bin/sh to
   # prevent a retained dependency on the bootstrap tools in the stdenv-linux
diff --git a/pkgs/development/libraries/gstreamer/bad/default.nix b/pkgs/development/libraries/gstreamer/bad/default.nix
index 3f030b7469e..5d9c03b1919 100644
--- a/pkgs/development/libraries/gstreamer/bad/default.nix
+++ b/pkgs/development/libraries/gstreamer/bad/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, fetchpatch, meson, ninja, gettext
-, pkgconfig, python, gst-plugins-base, orc
+, pkgconfig, python3, gst-plugins-base, orc
 , faacSupport ? false, faac ? null
 , faad2, libass, libkate, libmms, librdf, ladspaH
 , libnice, webrtc-audio-processing, lilv, lv2, serd, sord, sratom
@@ -18,7 +18,7 @@ let
 in
 stdenv.mkDerivation rec {
   name = "gst-plugins-bad-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Bad Plugins";
@@ -54,12 +54,12 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-bad/${name}.tar.xz";
-    sha256 = "1bqy3dn7q4kdkd4lqznyly8fv854d0hhncv88jk6ai4rf3dbgyil";
+    sha256 = "1r8dma3x127rbx42yab7kwq7q1bhkmvz2ykn0rnqnzl95q74w2wi";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ meson ninja pkgconfig python gettext ];
+  nativeBuildInputs = [ meson ninja pkgconfig python3 gettext ];
 
   buildInputs = [
     gst-plugins-base orc
diff --git a/pkgs/development/libraries/gstreamer/base/default.nix b/pkgs/development/libraries/gstreamer/base/default.nix
index a5f8e340642..c67526fb712 100644
--- a/pkgs/development/libraries/gstreamer/base/default.nix
+++ b/pkgs/development/libraries/gstreamer/base/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, fetchpatch, lib
 , pkgconfig, meson, ninja, gettext, gobjectIntrospection
-, python, gstreamer, orc, pango, libtheora
+, python3, gstreamer, orc, pango, libtheora
 , libintl, libopus
 , enableX11 ? stdenv.isLinux, libXv
 , enableWayland ? stdenv.isLinux, wayland
@@ -10,7 +10,7 @@
 
 stdenv.mkDerivation rec {
   name = "gst-plugins-base-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = with lib; {
     description = "Base plugins and helper libraries";
@@ -22,12 +22,12 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-base/${name}.tar.xz";
-    sha256 = "0z0wy0p0nxxqhsis3n517d6ykldm02g7rca9fhq9kxb9m05yidx4";
+    sha256 = "0qbllw4kphchwhy4p7ivdysigx69i97gyw6q0rvkx1j81r4kjqfa";
   };
 
   outputs = [ "out" "dev" ];
 
-  nativeBuildInputs = [ pkgconfig python gettext gobjectIntrospection ]
+  nativeBuildInputs = [ pkgconfig python3 gettext gobjectIntrospection ]
 
   # Broken meson with Darwin. Should hopefully be fixed soon. Tracking
   # in https://bugzilla.gnome.org/show_bug.cgi?id=781148.
diff --git a/pkgs/development/libraries/gstreamer/core/default.nix b/pkgs/development/libraries/gstreamer/core/default.nix
index b4a324d68d9..c1f2b2f006c 100644
--- a/pkgs/development/libraries/gstreamer/core/default.nix
+++ b/pkgs/development/libraries/gstreamer/core/default.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   name = "gstreamer-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = with lib ;{
     description = "Open source multimedia framework";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer/${name}.tar.xz";
-    sha256 = "029fi3v0vrravysgfwhfkrb3ndg64sjmigbb0iwr7wpkk5r15mjb";
+    sha256 = "1izzhnlsy83rgr4zl3jcl1sryxqbbigrrqw3j4x3nnphqnb6ckzr";
   };
 
   patches = [
diff --git a/pkgs/development/libraries/gstreamer/ges/default.nix b/pkgs/development/libraries/gstreamer/ges/default.nix
index d2c3cbcc6ac..56d17b49cbb 100644
--- a/pkgs/development/libraries/gstreamer/ges/default.nix
+++ b/pkgs/development/libraries/gstreamer/ges/default.nix
@@ -5,7 +5,7 @@
 
 stdenv.mkDerivation rec {
   name = "gstreamer-editing-services-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = with stdenv.lib; {
     description = "Library for creation of audio/video non-linear editors";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer-editing-services/${name}.tar.xz";
-    sha256 = "0d0zqvgxp51mmffz5vvscsdzqqw9mjsv6bnk6ivg2dxnkv8q1ch5";
+    sha256 = "0pxk65jib3mqszjkyvlzklwia4kbdj6j2b6jw1d502b06mdx5lak";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gstreamer/good/default.nix b/pkgs/development/libraries/gstreamer/good/default.nix
index 45f700e158a..d4e7b8c5da4 100644
--- a/pkgs/development/libraries/gstreamer/good/default.nix
+++ b/pkgs/development/libraries/gstreamer/good/default.nix
@@ -16,7 +16,7 @@ let
 in
 stdenv.mkDerivation rec {
   name = "gst-plugins-good-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Good Plugins";
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-good/${name}.tar.xz";
-    sha256 = "1bfa4n6xhr4v4wga8pv1y00rm1aka498snw6kgszy2w624l5wmy0";
+    sha256 = "0y89qynb4b6fry3h43z1r99qslmi3m8xhlq0i5baq2nbc0r5b2sz";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gstreamer/libav/default.nix b/pkgs/development/libraries/gstreamer/libav/default.nix
index f78015704fc..7f7393bba28 100644
--- a/pkgs/development/libraries/gstreamer/libav/default.nix
+++ b/pkgs/development/libraries/gstreamer/libav/default.nix
@@ -10,7 +10,7 @@ assert withSystemLibav -> libav != null;
 
 stdenv.mkDerivation rec {
   name = "gst-libav-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = {
     homepage = https://gstreamer.freedesktop.org;
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-libav/${name}.tar.xz";
-    sha256 = "1pknqpjxq1l3vlprdsmxxwk0lwqa555fqd543k9vphngqlwiqdca";
+    sha256 = "1nk5g24z2xx5kaw5cg8dv8skdc516inahmkymcz8bxqxj28qbmyz";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gstreamer/rtsp-server/default.nix b/pkgs/development/libraries/gstreamer/rtsp-server/default.nix
index 4166f357cda..624b967765c 100644
--- a/pkgs/development/libraries/gstreamer/rtsp-server/default.nix
+++ b/pkgs/development/libraries/gstreamer/rtsp-server/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   name = "gst-rtsp-server-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = with stdenv.lib; {
     description = "Gstreamer RTSP server";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-rtsp-server/${name}.tar.xz";
-    sha256 = "161c49hg21xpkdw5ppc7ljbg6kyslxd1y3v1shsg7ibarxapff7p";
+    sha256 = "1wc4d0y57hpfvv9sykjg8mxj86dw60mf696fbqbiqq6dzlmcw3ix";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gstreamer/ugly/default.nix b/pkgs/development/libraries/gstreamer/ugly/default.nix
index b5256bf4b4c..6bc2ea8af89 100644
--- a/pkgs/development/libraries/gstreamer/ugly/default.nix
+++ b/pkgs/development/libraries/gstreamer/ugly/default.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   name = "gst-plugins-ugly-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = with lib; {
     description = "Gstreamer Ugly Plugins";
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-ugly/${name}.tar.xz";
-    sha256 = "0s9xrz8knfv06fj1nbv3iq4xj7dj4cnzj3xvgb7zs89rv7crgq2m";
+    sha256 = "08vd1xgwmapnviah47zv5h2r02qdd20y4f07rvv5zhv6y4vxh0mc";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gstreamer/vaapi/default.nix b/pkgs/development/libraries/gstreamer/vaapi/default.nix
index be7ee8f1278..e84f8dce912 100644
--- a/pkgs/development/libraries/gstreamer/vaapi/default.nix
+++ b/pkgs/development/libraries/gstreamer/vaapi/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "gst-vaapi-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer-vaapi/gstreamer-vaapi-${version}.tar.xz";
-    sha256 = "12hdyfma2lnfj38dj6y891vsxnxrlbqjbd36xx13mgasgzi6843z";
+    sha256 = "18yha6119v7mwz47idv2vykzfssqfmh6hc824wqqsshwjvzdn66f";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/gstreamer/validate/default.nix b/pkgs/development/libraries/gstreamer/validate/default.nix
index 63893bbc523..abcdd0b9305 100644
--- a/pkgs/development/libraries/gstreamer/validate/default.nix
+++ b/pkgs/development/libraries/gstreamer/validate/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   name = "gst-validate-${version}";
-  version = "1.14.2";
+  version = "1.14.4";
 
   meta = {
     description = "Integration testing infrastructure for the GStreamer framework";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-validate/${name}.tar.xz";
-    sha256 = "17zilvmwv13l6rbj0a7dnbg4kz5bwwa1gshaibpqbvvhahz457pa";
+    sha256 = "1ismv4i7ldi04swq76pcpd5apxqd52yify5hvlyan2yw9flwrp0q";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/development/libraries/harfbuzz/default.nix b/pkgs/development/libraries/harfbuzz/default.nix
index 130bc6f97bf..7a7624c9675 100644
--- a/pkgs/development/libraries/harfbuzz/default.nix
+++ b/pkgs/development/libraries/harfbuzz/default.nix
@@ -8,7 +8,7 @@
 }:
 
 let
-  version = "1.9.0";
+  version = "2.1.0";
   inherit (stdenv.lib) optional optionals optionalString;
 in
 
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-${version}.tar.bz2";
-    sha256 = "004b4j812wgfv8pmcypyrlwrjfa6149lwpz5df6rnm5cy0msdv0i";
+    sha256 = "1y8jzm76wj8pcj3z47fikhasipyizd6w9r20yc7p139jqxp4jnwf";
   };
 
   postPatch = ''
diff --git a/pkgs/development/libraries/imlib2/default.nix b/pkgs/development/libraries/imlib2/default.nix
index 18b42ea4b4f..2576580908a 100644
--- a/pkgs/development/libraries/imlib2/default.nix
+++ b/pkgs/development/libraries/imlib2/default.nix
@@ -5,11 +5,11 @@
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  name = "imlib2-1.5.0";
+  name = "imlib2-1.5.1";
 
   src = fetchurl {
     url = "mirror://sourceforge/enlightenment/${name}.tar.bz2";
-    sha256 = "0kg28b5wp886hiy12v7abdybrvlymb7g3nvg0ysn2y8h883s5w8m";
+    sha256 = "1bms2iwmvnvpz5jqq3r52glarqkafif47zbh1ykz8hw85d2mfkps";
   };
 
   buildInputs = [ libjpeg libtiff giflib libpng bzip2 freetype libid3tag ]
diff --git a/pkgs/development/libraries/libdrm/default.nix b/pkgs/development/libraries/libdrm/default.nix
index 761216f420b..3d236ab5851 100644
--- a/pkgs/development/libraries/libdrm/default.nix
+++ b/pkgs/development/libraries/libdrm/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, libpthreadstubs, libpciaccess, valgrind-light }:
 
 stdenv.mkDerivation rec {
-  name = "libdrm-2.4.94";
+  name = "libdrm-2.4.96";
 
   src = fetchurl {
     url = "https://dri.freedesktop.org/libdrm/${name}.tar.bz2";
-    sha256 = "1ghn3l1dv1rsp9z6jpmy4ryna1s8rm4xx0ds532041bnlfq5jg5p";
+    sha256 = "14xkip83qgljjaahzq40qgl60j54q7k00la1hbf5kk5lgg7ilmhd";
   };
 
   outputs = [ "out" "dev" "bin" ];
diff --git a/pkgs/development/libraries/libgcrypt/default.nix b/pkgs/development/libraries/libgcrypt/default.nix
index d8708114c8e..6912817419f 100644
--- a/pkgs/development/libraries/libgcrypt/default.nix
+++ b/pkgs/development/libraries/libgcrypt/default.nix
@@ -6,11 +6,11 @@ assert enableCapabilities -> stdenv.isLinux;
 
 stdenv.mkDerivation rec {
   name = "libgcrypt-${version}";
-  version = "1.8.3";
+  version = "1.8.4";
 
   src = fetchurl {
     url = "mirror://gnupg/libgcrypt/${name}.tar.bz2";
-    sha256 = "0z5gs1khzyknyfjr19k8gk4q148s6q987ya85cpn0iv70fz91v36";
+    sha256 = "09r27ywj9zplq6n9qw3mn7zmvf6y2jdmwx5d1kg8yqkj0qx18f7n";
   };
 
   outputs = [ "out" "dev" "info" ];
@@ -21,9 +21,6 @@ stdenv.mkDerivation rec {
   # The build enables -O2 by default for everything else.
   hardeningDisable = stdenv.lib.optional stdenv.cc.isClang "fortify";
 
-  # Accepted upstream, should be in next update: #42150, https://dev.gnupg.org/T4034
-  patches = [ ./fix-jent-locking.patch ];
-
   depsBuildBuild = [ buildPackages.stdenv.cc ];
 
   buildInputs = [ libgpgerror ]
diff --git a/pkgs/development/libraries/libgcrypt/fix-jent-locking.patch b/pkgs/development/libraries/libgcrypt/fix-jent-locking.patch
deleted file mode 100644
index 5394e51468e..00000000000
--- a/pkgs/development/libraries/libgcrypt/fix-jent-locking.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From bbe989be6ca5e093d5244413590bd80e12c2ec9b Mon Sep 17 00:00:00 2001
-From: Will Dietz <w@wdtz.org>
-Date: Sun, 17 Jun 2018 18:53:58 -0500
-Subject: [PATCH] rndjent: move locking to fix trying to obtain held lock,
- hanging
-
----
- random/rndjent.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/random/rndjent.c b/random/rndjent.c
-index 0c5a820b..3740ddd4 100644
---- a/random/rndjent.c
-+++ b/random/rndjent.c
-@@ -334,9 +334,10 @@ _gcry_rndjent_get_version (int *r_active)
-     {
-       if (r_active)
-         {
--          lock_rng ();
-           /* Make sure the RNG is initialized.  */
-           _gcry_rndjent_poll (NULL, 0, 0);
-+
-+          lock_rng ();
-           /* To ease debugging we store 2 for a clock_gettime based
-            * implementation and 1 for a rdtsc based code.  */
-           *r_active = jent_rng_collector? is_rng_available () : 0;
--- 
-2.18.0-rc2
-
diff --git a/pkgs/development/libraries/libssh/default.nix b/pkgs/development/libraries/libssh/default.nix
index 1ec15e88f13..e67ecea0776 100644
--- a/pkgs/development/libraries/libssh/default.nix
+++ b/pkgs/development/libraries/libssh/default.nix
@@ -1,23 +1,13 @@
 { stdenv, fetchurl, fetchpatch, pkgconfig, cmake, zlib, openssl, libsodium }:
 
 stdenv.mkDerivation rec {
-  name = "libssh-0.7.6";
+  name = "libssh-0.8.4";
 
   src = fetchurl {
-    url = "https://www.libssh.org/files/0.7/libssh-0.7.6.tar.xz";
-    sha256 = "14hhdpn2hflywsi9d5bz2pfjxqkyi07znjij89cpakr7b4w7sq0x";
+    url = "https://www.libssh.org/files/0.8/${name}.tar.xz";
+    sha256 = "06xqfm1alfb6faqzjhyhjs0arjcd8rnc7ci046x8d18s089pgc3b";
   };
 
-  patches = [
-    # Fix mysql-workbench compilation
-    # https://bugs.mysql.com/bug.php?id=91923
-    (fetchpatch {
-      name = "include-fix-segfault-in-getissuebanner-add-missing-wrappers-in-libsshpp.patch";
-      url = https://git.libssh.org/projects/libssh.git/patch/?id=5ea81166bf885d0fd5d4bb232fc22633f5aaf3c4;
-      sha256 = "12q818l3nasqrfrsghxdvjcyya1bfcg0idvsf8xwm5zj7criln0a";
-    })
-  ];
-
   postPatch = ''
     # Fix headers to use libsodium instead of NaCl
     sed -i 's,nacl/,sodium/,g' ./include/libssh/curve25519.h src/curve25519.c
diff --git a/pkgs/development/libraries/libwacom/default.nix b/pkgs/development/libraries/libwacom/default.nix
index 67563e41d01..6cfc5060b61 100644
--- a/pkgs/development/libraries/libwacom/default.nix
+++ b/pkgs/development/libraries/libwacom/default.nix
@@ -1,15 +1,17 @@
-{ fetchurl, stdenv, glib, pkgconfig, udev, libgudev }:
+{ stdenv, fetchFromGitHub, autoreconfHook, glib, pkgconfig, udev, libgudev }:
 
 stdenv.mkDerivation rec {
   name = "libwacom-${version}";
-  version = "0.29";
+  version = "0.31";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/linuxwacom/libwacom/${name}.tar.bz2";
-    sha256 = "1diklgcjhmvcxi9p1ifp6wcnyr6k7z9jhrlzfhzjqd6zipk01slw";
+  src = fetchFromGitHub {
+    owner = "linuxwacom";
+    repo = "libwacom";
+    rev = "libwacom-${version}";
+    sha256 = "0qjd4bn2abwzic34cm0sw3srx02spszbsvfdbzbpn2cb62b5gjmw";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
   buildInputs = [ glib udev libgudev ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index d2539f8d54e..91813b4180e 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -67,7 +67,7 @@ let
 in
 
 let
-  version = "18.2.2";
+  version = "18.2.4";
   branch  = head (splitString "." version);
 in
 
@@ -81,7 +81,7 @@ let self = stdenv.mkDerivation {
       "ftp://ftp.freedesktop.org/pub/mesa/older-versions/${branch}.x/${version}/mesa-${version}.tar.xz"
       "https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz"
     ];
-    sha256 = "1i3ky3d210vi3f5hlr9la1kspdyv093npndxsbzdklw95aqq5fn3";
+    sha256 = "0knbr6nl7qk5bijz6p7yqr8fc806gvmz9p6jlnvdaxkqnpmil7b2";
   };
 
   prePatch = "patchShebangs .";
diff --git a/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch b/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch
index 47391567fb9..37813db8934 100644
--- a/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch
+++ b/pkgs/development/libraries/mesa/disk_cache-include-dri-driver-path-in-cache-key.patch
@@ -1,4 +1,4 @@
-From 9c9df280b318c26aece9873cf77b32e4f95634c1 Mon Sep 17 00:00:00 2001
+From 2a1e32b4105fe95413a615a44d40938920ea1a19 Mon Sep 17 00:00:00 2001
 From: David McFarland <corngood@gmail.com>
 Date: Mon, 6 Aug 2018 15:52:11 -0300
 Subject: [PATCH] disk_cache: include dri driver path in cache key
@@ -11,10 +11,10 @@ timestamps in /nix/store are zero.
  2 files changed, 6 insertions(+)
 
 diff --git a/src/util/Makefile.am b/src/util/Makefile.am
-index 07bf052175..aea09f60b3 100644
+index bafb57439a..a22e2e41eb 100644
 --- a/src/util/Makefile.am
 +++ b/src/util/Makefile.am
-@@ -30,6 +30,9 @@ noinst_LTLIBRARIES = \
+@@ -35,6 +35,9 @@ noinst_LTLIBRARIES = \
  	libmesautil.la \
  	libxmlconfig.la
  
@@ -25,28 +25,28 @@ index 07bf052175..aea09f60b3 100644
  	$(PTHREAD_CFLAGS) \
  	-I$(top_srcdir)/include
 diff --git a/src/util/disk_cache.c b/src/util/disk_cache.c
-index 4a762eff20..8086c0be75 100644
+index 368ec41792..071220b2ba 100644
 --- a/src/util/disk_cache.c
 +++ b/src/util/disk_cache.c
-@@ -388,8 +388,10 @@ disk_cache_create(const char *gpu_name, const char *timestamp,
+@@ -388,8 +388,10 @@ disk_cache_create(const char *gpu_name, const char *driver_id,
  
     /* Create driver id keys */
-    size_t ts_size = strlen(timestamp) + 1;
+    size_t id_size = strlen(driver_id) + 1;
 +   size_t key_size = strlen(DISK_CACHE_KEY) + 1;
     size_t gpu_name_size = strlen(gpu_name) + 1;
-    cache->driver_keys_blob_size += ts_size;
+    cache->driver_keys_blob_size += id_size;
 +   cache->driver_keys_blob_size += key_size;
     cache->driver_keys_blob_size += gpu_name_size;
  
     /* We sometimes store entire structs that contains a pointers in the cache,
-@@ -410,6 +412,7 @@ disk_cache_create(const char *gpu_name, const char *timestamp,
+@@ -410,6 +412,7 @@ disk_cache_create(const char *gpu_name, const char *driver_id,
     uint8_t *drv_key_blob = cache->driver_keys_blob;
     DRV_KEY_CPY(drv_key_blob, &cache_version, cv_size)
-    DRV_KEY_CPY(drv_key_blob, timestamp, ts_size)
+    DRV_KEY_CPY(drv_key_blob, driver_id, id_size)
 +   DRV_KEY_CPY(drv_key_blob, DISK_CACHE_KEY, key_size)
     DRV_KEY_CPY(drv_key_blob, gpu_name, gpu_name_size)
     DRV_KEY_CPY(drv_key_blob, &ptr_size, ptr_size_size)
     DRV_KEY_CPY(drv_key_blob, &driver_flags, driver_flags_size)
 -- 
-2.18.0
+2.19.1
 
diff --git a/pkgs/development/libraries/nghttp2/default.nix b/pkgs/development/libraries/nghttp2/default.nix
index 471684ea7dd..d4c859db289 100644
--- a/pkgs/development/libraries/nghttp2/default.nix
+++ b/pkgs/development/libraries/nghttp2/default.nix
@@ -18,13 +18,15 @@ let inherit (stdenv.lib) optional; in
 
 stdenv.mkDerivation rec {
   name = "nghttp2-${version}";
-  version = "1.32.0";
+  version = "1.34.0";
 
   src = fetchurl {
     url = "https://github.com/nghttp2/nghttp2/releases/download/v${version}/nghttp2-${version}.tar.bz2";
-    sha256 = "0jlndbp4bnyvdg8b59pznrzz0bvwb9nmag7zgcflg51lm1pq2q06";
+    sha256 = "1l5rir8d73x97p3p1x4l8cawjc9m2adnippnb27fmrbcd3rfaxbl";
   };
 
+  patches = [ ./fix-stream-operator.patch /* can't fetchpatch during bootstrap */ ];
+
   outputs = [ "bin" "out" "dev" "lib" ];
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/libraries/nghttp2/fix-stream-operator.patch b/pkgs/development/libraries/nghttp2/fix-stream-operator.patch
new file mode 100644
index 00000000000..7d8acde8ebc
--- /dev/null
+++ b/pkgs/development/libraries/nghttp2/fix-stream-operator.patch
@@ -0,0 +1,63 @@
+From 153531d4d0ebe00ac95047dbf1fec1d9d694f29f Mon Sep 17 00:00:00 2001
+From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
+Date: Sun, 7 Oct 2018 22:19:00 +0900
+Subject: [PATCH] nghttpx: Use the same type as standard stream operator<<
+
+---
+ src/shrpx_log.cc |  4 ++--
+ src/shrpx_log.h  | 20 ++++++++++++++------
+ 2 files changed, 16 insertions(+), 8 deletions(-)
+
+diff --git a/src/shrpx_log.cc b/src/shrpx_log.cc
+index 8459d15e3..6966cf945 100644
+--- a/src/shrpx_log.cc
++++ b/src/shrpx_log.cc
+@@ -228,7 +228,7 @@ Log &Log::operator<<(const ImmutableString &s) {
+   return *this;
+ }
+ 
+-Log &Log::operator<<(int64_t n) {
++Log &Log::operator<<(long long n) {
+   if (n >= 0) {
+     return *this << static_cast<uint64_t>(n);
+   }
+@@ -262,7 +262,7 @@ Log &Log::operator<<(int64_t n) {
+   return *this;
+ }
+ 
+-Log &Log::operator<<(uint64_t n) {
++Log &Log::operator<<(unsigned long long n) {
+   if (flags_ & fmt_hex) {
+     write_hex(n);
+     return *this;
+diff --git a/src/shrpx_log.h b/src/shrpx_log.h
+index 1130b8da8..17b90536e 100644
+--- a/src/shrpx_log.h
++++ b/src/shrpx_log.h
+@@ -100,12 +100,20 @@ class Log {
+   Log &operator<<(const char *s);
+   Log &operator<<(const StringRef &s);
+   Log &operator<<(const ImmutableString &s);
+-  Log &operator<<(int16_t n) { return *this << static_cast<int64_t>(n); }
+-  Log &operator<<(int32_t n) { return *this << static_cast<int64_t>(n); }
+-  Log &operator<<(int64_t n);
+-  Log &operator<<(uint16_t n) { return *this << static_cast<uint64_t>(n); }
+-  Log &operator<<(uint32_t n) { return *this << static_cast<uint64_t>(n); }
+-  Log &operator<<(uint64_t n);
++  Log &operator<<(short n) { return *this << static_cast<long long>(n); }
++  Log &operator<<(int n) { return *this << static_cast<long long>(n); }
++  Log &operator<<(long n) { return *this << static_cast<long long>(n); }
++  Log &operator<<(long long n);
++  Log &operator<<(unsigned short n) {
++    return *this << static_cast<unsigned long long>(n);
++  }
++  Log &operator<<(unsigned int n) {
++    return *this << static_cast<unsigned long long>(n);
++  }
++  Log &operator<<(unsigned long n) {
++    return *this << static_cast<unsigned long long>(n);
++  }
++  Log &operator<<(unsigned long long n);
+   Log &operator<<(float n) { return *this << static_cast<double>(n); }
+   Log &operator<<(double n);
+   Log &operator<<(long double n);
diff --git a/pkgs/development/libraries/speex/default.nix b/pkgs/development/libraries/speex/default.nix
index 173b460a0ab..1321a558d5e 100644
--- a/pkgs/development/libraries/speex/default.nix
+++ b/pkgs/development/libraries/speex/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, autoreconfHook, pkgconfig, fftw, speexdsp }:
 
 stdenv.mkDerivation rec {
-  name = "speex-1.2rc2";
+  name = "speex-1.2.0";
 
   src = fetchurl {
     url = "http://downloads.us.xiph.org/releases/speex/${name}.tar.gz";
-    sha256 = "14g8ph39inkrif749lzjm089g7kwk0hymq1a3i9ch5gz8xr7r8na";
+    sha256 = "150047wnllz4r94whb9r73l5qf0z5z3rlhy98bawfbblmkq8mbpa";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/Cython/default.nix b/pkgs/development/python-modules/Cython/default.nix
index 53e9ec270ac..d4191731973 100644
--- a/pkgs/development/python-modules/Cython/default.nix
+++ b/pkgs/development/python-modules/Cython/default.nix
@@ -13,6 +13,7 @@
 
 let
   excludedTests = []
+    ++ [ "reimport_from_subinterpreter" ]
     # cython's testsuite is not working very well with libc++
     # We are however optimistic about things outside of testsuite still working
     ++ stdenv.lib.optionals (stdenv.cc.isClang or false) [ "cpdef_extern_func" "libcpp_algo" ]
@@ -25,11 +26,11 @@ let
 
 in buildPythonPackage rec {
   pname = "Cython";
-  version = "0.28.5";
+  version = "0.29";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "b64575241f64f6ec005a4d4137339fb0ba5e156e826db2fdb5f458060d9979e0";
+    sha256 = "15zama7fgp7yyi3z39xp3z2lvwcgch8fn3ycscw2cs37vqg6v4cl";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/aioeventlet/default.nix b/pkgs/development/python-modules/aioeventlet/default.nix
new file mode 100644
index 00000000000..73d4b278058
--- /dev/null
+++ b/pkgs/development/python-modules/aioeventlet/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, eventlet
+, trollius
+, asyncio
+, mock
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "aioeventlet";
+  version = "0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "19krvycaiximchhv1hcfhz81249m3w3jrbp2h4apn1yf4yrc4y7y";
+  };
+
+  propagatedBuildInputs = [ eventlet trollius asyncio ];
+  buildInputs = [ mock ];
+
+  # 2 tests error out
+  doCheck = false;
+  checkPhase = ''
+    ${python.interpreter} runtests.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "aioeventlet implements the asyncio API (PEP 3156) on top of eventlet. It makes";
+    homepage = http://aioeventlet.readthedocs.org/;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/argh/default.nix b/pkgs/development/python-modules/argh/default.nix
new file mode 100644
index 00000000000..04508b3cc1e
--- /dev/null
+++ b/pkgs/development/python-modules/argh/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, py
+, mock
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "argh";
+  version = "0.26.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1nqham81ihffc9xmw85dz3rg3v90rw7h0dp3dy0bh3qkp4n499q6";
+  };
+
+  buildInputs = [ pytest py mock pkgs.glibcLocales ];
+
+  checkPhase = ''
+    export LANG="en_US.UTF-8"
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/neithere/argh/;
+    description = "An unobtrusive argparse wrapper with natural syntax";
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/autobahn/default.nix b/pkgs/development/python-modules/autobahn/default.nix
index 01922f98c40..0174bb3a029 100644
--- a/pkgs/development/python-modules/autobahn/default.nix
+++ b/pkgs/development/python-modules/autobahn/default.nix
@@ -4,11 +4,11 @@
 }:
 buildPythonPackage rec {
   pname = "autobahn";
-  version = "18.8.2";
+  version = "18.10.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "448df2e241011ea2948799918930042d81e63d26b01912c472f5a9a37f42f319";
+    sha256 = "b5767bebd94ba13fc286604f889f208e7babc77d72d9f372d331bc14c89c5a40";
   };
 
   propagatedBuildInputs = [ six txaio twisted zope_interface cffi ] ++
diff --git a/pkgs/development/python-modules/basemap/default.nix b/pkgs/development/python-modules/basemap/default.nix
new file mode 100644
index 00000000000..256abef592c
--- /dev/null
+++ b/pkgs/development/python-modules/basemap/default.nix
@@ -0,0 +1,43 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, numpy
+, matplotlib
+, pillow
+, setuptools
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "basemap";
+  version = "1.0.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz";
+    sha256 = "0ca522zirj5sj10vg3fshlmgi615zy5gw2assapcj91vsvhc4zp0";
+  };
+
+  propagatedBuildInputs = [ numpy matplotlib pillow ];
+  buildInputs = [ setuptools pkgs.geos pkgs.proj ];
+
+  # Standard configurePhase from `buildPythonPackage` seems to break the setup.py script
+  configurePhase = ''
+    export GEOS_DIR=${pkgs.geos}
+  '';
+
+  # The 'check' target is not supported by the `setup.py` script.
+  # TODO : do the post install checks (`cd examples && ${python.interpreter} run_all.py`)
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://matplotlib.org/basemap/";
+    description = "Plot data on map projections with matplotlib";
+    longDescription = ''
+      An add-on toolkit for matplotlib that lets you plot data on map projections with
+      coastlines, lakes, rivers and political boundaries. See
+      http://matplotlib.github.com/basemap/users/examples.html for examples of what it can do.
+    '';
+    license = with licenses; [ mit gpl2 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/blessings/default.nix b/pkgs/development/python-modules/blessings/default.nix
new file mode 100644
index 00000000000..d1785169654
--- /dev/null
+++ b/pkgs/development/python-modules/blessings/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "blessings";
+  version = "1.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "01rhgn2c3xjf9h1lxij9m05iwf2ba6d0vd7nic26c2gic4q73igd";
+  };
+
+  # 4 failing tests, 2to3
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/erikrose/blessings;
+    description = "A thin, practical wrapper around terminal coloring, styling, and positioning";
+    license = licenses.mit;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/blist/default.nix b/pkgs/development/python-modules/blist/default.nix
new file mode 100644
index 00000000000..d6d55accaca
--- /dev/null
+++ b/pkgs/development/python-modules/blist/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "blist";
+  version = "1.3.6";
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1hqz9pqbwx0czvq9bjdqjqh5bwfksva1is0anfazig81n18c84is";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://stutzbachenterprises.com/blist/;
+    description = "A list-like type with better asymptotic performance and similar performance on small lists";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/bootstrapped-pip/default.nix b/pkgs/development/python-modules/bootstrapped-pip/default.nix
index d482b7a8c88..869eaa1663f 100644
--- a/pkgs/development/python-modules/bootstrapped-pip/default.nix
+++ b/pkgs/development/python-modules/bootstrapped-pip/default.nix
@@ -3,9 +3,9 @@
 let
   wheel_source = fetchPypi {
     pname = "wheel";
-    version = "0.32.1";
+    version = "0.32.2";
     format = "wheel";
-    sha256 = "15hizylh761jcaz8zfdc3wg30jf33izaakyv1p82ppx2y5rgg8cz";
+    sha256 = "1216licil12jjixfqvkb84xkync5zz0fdc2kgzhl362z3xqjsgn9";
   };
   setuptools_source = fetchPypi {
     pname = "setuptools";
diff --git a/pkgs/development/python-modules/cffi/default.nix b/pkgs/development/python-modules/cffi/default.nix
index 3f1456f6e94..18826d46b86 100644
--- a/pkgs/development/python-modules/cffi/default.nix
+++ b/pkgs/development/python-modules/cffi/default.nix
@@ -33,7 +33,7 @@ if isPyPy then null else buildPythonPackage rec {
 
   doCheck = !stdenv.hostPlatform.isMusl; # TODO: Investigate
   checkPhase = ''
-    py.test
+    py.test -k "not test_char_pointer_conversion"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/python-modules/cliapp/default.nix b/pkgs/development/python-modules/cliapp/default.nix
new file mode 100644
index 00000000000..a7ae70a4379
--- /dev/null
+++ b/pkgs/development/python-modules/cliapp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, sphinx
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "cliapp";
+  version = "1.20150305";
+  disabled = isPy3k;
+
+  src = fetchgit {
+      url = "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp";
+      rev = "569df8a5959cd8ef46f78c9497461240a5aa1123";
+      sha256 = "882c5daf933e4cf089842995efc721e54361d98f64e0a075e7373b734cd899f3";
+  };
+
+  buildInputs = [ sphinx ];
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://liw.fi/cliapp/;
+    description = "Python framework for Unix command line programs";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ rickynils ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/clint/default.nix b/pkgs/development/python-modules/clint/default.nix
new file mode 100644
index 00000000000..602ab00b084
--- /dev/null
+++ b/pkgs/development/python-modules/clint/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, mock
+, blessings
+, nose
+, nose_progressive
+, pillow
+, args
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "clint";
+  version = "0.5.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5";
+  };
+
+  LC_ALL="en_US.UTF-8";
+
+  checkPhase = ''
+    ${python.interpreter} test_clint.py
+  '';
+
+  buildInputs = [ mock nose nose_progressive pkgs.glibcLocales ];
+  propagatedBuildInputs = [ pillow blessings args ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kennethreitz/clint;
+    description = "Python Command Line Interface Tools";
+    license = licenses.isc;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/clize/default.nix b/pkgs/development/python-modules/clize/default.nix
new file mode 100644
index 00000000000..8456f8d473b
--- /dev/null
+++ b/pkgs/development/python-modules/clize/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dateutil
+, sigtools
+}:
+
+buildPythonPackage rec {
+  pname = "clize";
+  version = "3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1xkr3h404d7pgj5gdpg6bddv3v3yq2hgx8qlwkgw5abg218k53hm";
+  };
+
+  buildInputs = [ dateutil ];
+  propagatedBuildInputs = [ sigtools ];
+
+  meta = with stdenv.lib; {
+    description = "Command-line argument parsing for Python";
+    homepage = "https://github.com/epsy/clize";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/cmdtest/default.nix b/pkgs/development/python-modules/cmdtest/default.nix
new file mode 100644
index 00000000000..605529b1747
--- /dev/null
+++ b/pkgs/development/python-modules/cmdtest/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, cliapp
+, ttystatus
+, markdown
+, isPy3k
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  name = "cmdtest-${version}";
+  version = "0.18";
+  disabled = isPy3k || isPyPy;
+
+  src = fetchurl {
+    url = "http://code.liw.fi/debian/pool/main/c/cmdtest/cmdtest_${version}.orig.tar.xz";
+    sha256 = "068f24k8ad520hcf8g3gj7wvq1wspyd46ay0k9xa360jlb4dv2mn";
+  };
+
+  propagatedBuildInputs = [ cliapp ttystatus markdown ];
+
+  # TODO: cmdtest tests must be run before the buildPhase
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://liw.fi/cmdtest/;
+    description = "Black box tests Unix command line tools";
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/daemonize/default.nix b/pkgs/development/python-modules/daemonize/default.nix
new file mode 100644
index 00000000000..68863c61ada
--- /dev/null
+++ b/pkgs/development/python-modules/daemonize/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "daemonize";
+  version = "2.4.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0y139sq657bpzfv6k0aqm4071z4s40i6ybpni9qvngvdcz6r86n2";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Library to enable your code run as a daemon process on Unix-like systems";
+    homepage = https://github.com/thesharp/daemonize;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/datadiff/default.nix b/pkgs/development/python-modules/datadiff/default.nix
new file mode 100644
index 00000000000..72964e3d1f6
--- /dev/null
+++ b/pkgs/development/python-modules/datadiff/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "datadiff";
+  version = "1.1.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "f1402701063998f6a70609789aae8dc05703f3ad0a34882f6199653654c55543";
+  };
+
+  buildInputs = [ nose ];
+
+  meta = with stdenv.lib; {
+    description = "DataDiff";
+    homepage = https://sourceforge.net/projects/datadiff/;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/dot2tex/default.nix b/pkgs/development/python-modules/dot2tex/default.nix
new file mode 100644
index 00000000000..9d644c22eaf
--- /dev/null
+++ b/pkgs/development/python-modules/dot2tex/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pyparsing
+}:
+
+buildPythonPackage rec {
+  pname = "dot2tex";
+  version = "2.9.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7d3e54add7dccdaeb6cc9e61ceaf7b587914cf8ebd6821cfea008acdc1e50d4a";
+  };
+
+  # Tests fail with 3.x. Furthermore, package is no longer maintained.
+  disabled = isPy3k;
+
+  propagatedBuildInputs = [ pyparsing ];
+
+  meta = with stdenv.lib; {
+    description = "Convert graphs generated by Graphviz to LaTeX friendly formats";
+    homepage = "https://github.com/kjellmf/dot2tex";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/eggdeps/default.nix b/pkgs/development/python-modules/eggdeps/default.nix
new file mode 100644
index 00000000000..0622bd41d23
--- /dev/null
+++ b/pkgs/development/python-modules/eggdeps/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+, zope_testing
+}:
+
+buildPythonPackage rec {
+  pname = "eggdeps";
+  version = "0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "a99de5e4652865224daab09b2e2574a4f7c1d0d9a267048f9836aa914a2caf3a";
+  };
+
+  propagatedBuildInputs = [ zope_interface zope_testing ];
+
+  # tests fail, see http://hydra.nixos.org/build/4316603/log/raw
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A tool which computes a dependency graph between active Python eggs";
+    homepage = http://thomas-lotze.de/en/software/eggdeps/;
+    license = licenses.zpl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/entrypoints/default.nix b/pkgs/development/python-modules/entrypoints/default.nix
index 9ee0810571a..3f79e663455 100644
--- a/pkgs/development/python-modules/entrypoints/default.nix
+++ b/pkgs/development/python-modules/entrypoints/default.nix
@@ -4,6 +4,7 @@
 , configparser
 , pytest
 , isPy3k
+, isPy27
 }:
 
 buildPythonPackage rec {
@@ -19,8 +20,15 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = lib.optional (!isPy3k) configparser;
 
-  checkPhase = ''
-    py.test tests
+  checkPhase = let
+    # On python2 with pytest 3.9.2 (not with pytest 3.7.4) the test_bad
+    # test fails. It tests that a warning (exectly one) is thrown on a "bad"
+    # path. The pytest upgrade added some warning, resulting in two warnings
+    # being thrown.
+    # upstream: https://github.com/takluyver/entrypoints/issues/23
+    pyTestArgs = if isPy27 then "-k 'not test_bad'" else "";
+  in ''
+    py.test ${pyTestArgs} tests
   '';
 
   meta = {
diff --git a/pkgs/development/python-modules/evernote/default.nix b/pkgs/development/python-modules/evernote/default.nix
new file mode 100644
index 00000000000..717ab77018e
--- /dev/null
+++ b/pkgs/development/python-modules/evernote/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, oauth2
+}:
+
+buildPythonPackage rec {
+  pname = "evernote";
+  version = "1.25.0";
+  disabled = ! isPy27; #some dependencies do not work with py3
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1lwlg6fpi3530245jzham1400a5b855bm4sbdyck229h9kg1v02d";
+  };
+
+   propagatedBuildInputs = [ oauth2 ];
+
+   meta = with stdenv.lib; {
+    description = "Evernote SDK for Python";
+    homepage = http://dev.evernote.com;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hbunke ];
+   };
+
+}
diff --git a/pkgs/development/python-modules/fasteners/default.nix b/pkgs/development/python-modules/fasteners/default.nix
new file mode 100644
index 00000000000..77a6f9b0408
--- /dev/null
+++ b/pkgs/development/python-modules/fasteners/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, monotonic
+, testtools
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "fasteners";
+  version = "0.14.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "063y20kx01ihbz2mziapmjxi2cd0dq48jzg587xdsdp07xvpcz22";
+  };
+
+  propagatedBuildInputs = [ six monotonic testtools ];
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover
+  '';
+
+  # Tests are written for Python 3.x only (concurrent.futures)
+  doCheck = isPy3k;
+
+  meta = with stdenv.lib; {
+    description = "Fasteners";
+    homepage = https://github.com/harlowja/fasteners;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/flaskbabel/default.nix b/pkgs/development/python-modules/flaskbabel/default.nix
new file mode 100644
index 00000000000..e04bae7f1c0
--- /dev/null
+++ b/pkgs/development/python-modules/flaskbabel/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, flask
+, jinja2
+, speaklater
+, Babel
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "Flask-Babel";
+  version = "0.11.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj";
+  };
+
+  propagatedBuildInputs = [ flask jinja2 speaklater Babel pytz ];
+
+  meta = with stdenv.lib; {
+    description = "Adds i18n/l10n support to Flask applications";
+    homepage = https://github.com/mitsuhiko/flask-babel;
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ matejc ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/freezegun/default.nix b/pkgs/development/python-modules/freezegun/default.nix
new file mode 100644
index 00000000000..3be87da2f82
--- /dev/null
+++ b/pkgs/development/python-modules/freezegun/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dateutil
+, six
+, mock
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "freezegun";
+  version = "0.3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151";
+  };
+
+  propagatedBuildInputs = [ dateutil six ];
+  buildInputs = [ mock nose ];
+
+  meta = with stdenv.lib; {
+    description = "FreezeGun: Let your Python tests travel through time";
+    homepage = "https://github.com/spulec/freezegun";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/funcy/default.nix b/pkgs/development/python-modules/funcy/default.nix
new file mode 100644
index 00000000000..ab7500466e0
--- /dev/null
+++ b/pkgs/development/python-modules/funcy/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "funcy";
+  version = "1.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "511495db0c5660af18d3151b008c6ce698ae7fbf60887278e79675e35eed1f01";
+  };
+
+  # No tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Collection of fancy functional tools focused on practicality";
+    homepage = "http://funcy.readthedocs.org/";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/gdata/default.nix b/pkgs/development/python-modules/gdata/default.nix
new file mode 100644
index 00000000000..dbf2911ce19
--- /dev/null
+++ b/pkgs/development/python-modules/gdata/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+  pname = "gdata";
+  version = "2.0.18";
+
+  src = fetchurl {
+    url = "https://gdata-python-client.googlecode.com/files/${pname}-${version}.tar.gz";
+    sha256 = "1dpxl5hwyyqd71avpm5vkvw8fhlvf9liizmhrq9jphhrx0nx5rsn";
+  };
+
+  # Fails with "error: invalid command 'test'"
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://code.google.com/p/gdata-python-client/;
+    description = "Python client library for Google data APIs";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/geeknote/default.nix b/pkgs/development/python-modules/geeknote/default.nix
new file mode 100644
index 00000000000..d352d6def24
--- /dev/null
+++ b/pkgs/development/python-modules/geeknote/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy27
+, thrift
+, beautifulsoup4
+, markdown2
+, sqlalchemy
+, html2text
+, evernote
+}:
+
+buildPythonPackage rec {
+  version = "2015-05-11";
+  pname = "geeknote";
+  disabled = ! isPy27;
+
+  src = fetchFromGitHub {
+    owner = "VitaliyRodnenko";
+    repo = "geeknote";
+    rev = "8489a87d044e164edb321ba9acca8d4631de3dca";
+    sha256 = "0l16v4xnyqnsf84b1pma0jmdyxvmfwcv3sm8slrv3zv7zpmcm3lf";
+  };
+
+  /* build with tests fails with "Can not create application dirictory :
+   /homeless-shelter/.geeknotebuilder". */
+  doCheck = false;
+
+  propagatedBuildInputs = [ thrift beautifulsoup4 markdown2 sqlalchemy html2text evernote ];
+
+  meta = with stdenv.lib; {
+    description = "Work with Evernote from command line";
+    homepage = http://www.geeknote.me;
+    license = licenses.gpl1;
+    maintainers = with maintainers; [ hbunke ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/geoalchemy2/default.nix b/pkgs/development/python-modules/geoalchemy2/default.nix
new file mode 100644
index 00000000000..ca99f73c021
--- /dev/null
+++ b/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sqlalchemy
+, shapely
+}:
+
+buildPythonPackage rec {
+  pname = "GeoAlchemy2";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0p2h1kgl5b0jz8wadx485vjh1mmm5s67p71yxh9lhp1441hkfswf";
+  };
+
+  propagatedBuildInputs = [ sqlalchemy shapely ];
+
+  meta = with stdenv.lib; {
+    homepage =  http://geoalchemy.org/;
+    license = licenses.mit;
+    description = "Toolkit for working with spatial databases";
+  };
+
+}
diff --git a/pkgs/development/python-modules/geopy/default.nix b/pkgs/development/python-modules/geopy/default.nix
new file mode 100644
index 00000000000..160a519ee10
--- /dev/null
+++ b/pkgs/development/python-modules/geopy/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, mock
+, tox
+, pylint
+}:
+
+buildPythonPackage rec {
+  pname = "geopy";
+  version = "1.11.0";
+  disabled = !isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "04j1lxcsfyv03h0n0q7p2ig7a4n13x4x20fzxn8bkazpx6lyal22";
+  };
+
+  doCheck = false;  # too much
+
+  buildInputs = [ mock tox pylint ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/geopy/geopy";
+    description = "Python Geocoding Toolbox";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/grequests/default.nix b/pkgs/development/python-modules/grequests/default.nix
new file mode 100644
index 00000000000..c42ace2e695
--- /dev/null
+++ b/pkgs/development/python-modules/grequests/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, gevent
+}:
+
+buildPythonPackage rec {
+  pname = "grequests";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0lafzax5igbh8y4x0krizr573wjsxz7bhvwygiah6qwrzv83kv5c";
+  };
+
+  # No tests in archive
+  doCheck = false;
+
+  propagatedBuildInputs = [ requests gevent ];
+
+  meta = with stdenv.lib; {
+    description = "Asynchronous HTTP requests";
+    homepage = https://github.com/kennethreitz/grequests;
+    license = with licenses; [ bsd2 ];
+    maintainers = with maintainers; [ matejc ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/gst-python/default.nix b/pkgs/development/python-modules/gst-python/default.nix
index 49f44bb16e4..8cbc08dbbfd 100644
--- a/pkgs/development/python-modules/gst-python/default.nix
+++ b/pkgs/development/python-modules/gst-python/default.nix
@@ -1,38 +1,52 @@
-{ buildPythonPackage, fetchurl, stdenv, meson, ninja, pkgconfig, python, pygobject3
-, gst-plugins-base, ncurses
+{ buildPythonPackage, fetchurl, meson, ninja, stdenv, pkgconfig, python, pygobject3
+, gobjectIntrospection, gst-plugins-base, isPy3k
 }:
 
 let
   pname = "gst-python";
-  version = "1.14.2";
+  version = "1.14.4";
   name = "${pname}-${version}";
 in buildPythonPackage rec {
   inherit pname version;
   format = "other";
 
+  outputs = [ "out" "dev" ];
+
   src = fetchurl {
     urls = [
       "${meta.homepage}/src/gst-python/${name}.tar.xz"
       "mirror://gentoo/distfiles/${name}.tar.xz"
       ];
-    sha256 = "08nb011acyvlz48fqh8c084k0dlssz9b7wha7zzk797inidbwh6w";
+    sha256 = "06ssx19fs6pg4d32p9ph9w4f0xwmxaw2dxfj17rqkn5njd7v5zfh";
   };
 
-  outputs = [ "out" "dev" ];
+  patches = [
+    # Meson build does not support Python 2 at the moment
+    # https://bugzilla.gnome.org/show_bug.cgi?id=796092
+    (fetchurl {
+      name = "0002-meson-use-new-python-module.patch";
+      url = https://bugzilla.gnome.org/attachment.cgi?id=371989;
+      sha256 = "1k46nvw175c1wvkqnx783i9d4w9vn431spcl48jb3y224jj3va08";
+    })
+  ];
 
-  nativeBuildInputs = [ meson ninja pkgconfig python ];
+  # TODO: First python_dep in meson.build needs to be removed
+  postPatch = ''
+    substituteInPlace meson.build --replace python3 python${if isPy3k then "3" else "2"}
+  '';
 
-  # XXX: in the Libs.private field of python3.pc
-  buildInputs = [ ncurses ];
+  nativeBuildInputs = [ meson ninja pkgconfig python gobjectIntrospection ];
 
   mesonFlags = [
-    "-Dpygi-overrides-dir=${python.sitePackages}/gi/overrides"
+    "-Dpython=python${if isPy3k then "3" else "2"}"
+    "-Dpygi-overrides-dir=${placeholder "out"}/${python.sitePackages}/gi/overrides"
   ];
 
-  postPatch = ''
-    chmod +x scripts/pythondetector # patchShebangs requires executable file
-    patchShebangs scripts/pythondetector
-  '';
+  doCheck = true;
+
+  # TODO: Meson setup hook does not like buildPythonPackage
+  # https://github.com/NixOS/nixpkgs/issues/47390
+  installCheckPhase = "meson test --print-errorlogs";
 
   propagatedBuildInputs = [ gst-plugins-base pygobject3 ];
 
diff --git a/pkgs/development/python-modules/gst-python/different-path-with-pygobject.patch b/pkgs/development/python-modules/gst-python/different-path-with-pygobject.patch
deleted file mode 100644
index 7326b3630f7..00000000000
--- a/pkgs/development/python-modules/gst-python/different-path-with-pygobject.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -Nru gst-python-1.2.0-orig/gi/overrides/Makefile.in gst-python-1.2.0/gi/overrides/Makefile.in
---- gst-python-1.2.0-orig/gi/overrides/Makefile.in	2014-03-22 21:47:56.235364405 +0800
-+++ gst-python-1.2.0/gi/overrides/Makefile.in	2014-03-22 21:48:28.737958066 +0800
-@@ -356,7 +356,7 @@
- 
- # We install everything in the gi/overrides folder
- pygioverridesdir = $(PYGI_OVERRIDES_DIR)
--pygioverrides_PYTHON = Gst.py GstPbutils.py
-+pygioverrides_PYTHON = Gst.py GstPbutils.py __init__.py
- pygioverridesexecdir = $(PYGI_OVERRIDES_DIR)
- EXTRA_DIST = Gst.py
- INCLUDES = $(PYTHON_INCLUDES)
-diff -Nru gst-python-1.2.0-orig/gi/overrides/__init__.py gst-python-1.2.0/gi/overrides/__init__.py
---- gst-python-1.2.0-orig/gi/overrides/__init__.py	1970-01-01 08:00:00.000000000 +0800
-+++ gst-python-1.2.0/gi/overrides/__init__.py	2014-03-22 21:48:15.442124287 +0800
-@@ -0,0 +1,4 @@
-+from pkgutil import extend_path
-+
-+__path__ = extend_path(__path__, __name__)
-+print(__path__, __name__)
diff --git a/pkgs/development/python-modules/hgsvn/default.nix b/pkgs/development/python-modules/hgsvn/default.nix
new file mode 100644
index 00000000000..29af19aaf99
--- /dev/null
+++ b/pkgs/development/python-modules/hgsvn/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, hglib
+, isPy3k
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "hgsvn";
+  version = "0.3.11";
+  disabled = isPy3k || isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "0yvhwdh8xx8rvaqd3pnnyb99hfa0zjdciadlc933p27hp9rf880p";
+  };
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ hglib ];
+
+  doCheck = false;  # too many assumptions
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/hgsvn;
+    description = "A set of scripts to work locally on Subversion checkouts using Mercurial";
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/html2text/default.nix b/pkgs/development/python-modules/html2text/default.nix
new file mode 100644
index 00000000000..6840f461cc9
--- /dev/null
+++ b/pkgs/development/python-modules/html2text/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "html2text";
+  version = "2016.9.19";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "554ef5fd6c6cf6e3e4f725a62a3e9ec86a0e4d33cd0928136d1c79dbeb7b2d55";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Turn HTML into equivalent Markdown-structured text";
+    homepage = https://github.com/Alir3z4/html2text/;
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/hypothesis/default.nix b/pkgs/development/python-modules/hypothesis/default.nix
index 5694ea92405..71eced5c7ee 100644
--- a/pkgs/development/python-modules/hypothesis/default.nix
+++ b/pkgs/development/python-modules/hypothesis/default.nix
@@ -9,7 +9,7 @@ buildPythonPackage rec {
   # pytz fake_factory django numpy pytest
   # If you need these, you can just add them to your environment.
 
-  version = "3.66.2";
+  version = "3.79.3";
   pname = "hypothesis";
 
   # Use github tarballs that includes tests
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "HypothesisWorks";
     repo = "hypothesis-python";
     rev = "hypothesis-python-${version}";
-    sha256 = "17ywbwa76z7f0pgash0003fvm25fsj7hxdrdiprdbv99y3i8bm88";
+    sha256 = "1ay0kwh5315scv7yz9xxrr7shynyx6flgplc1qzbz3j21cyx3yn7";
   };
 
   postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
diff --git a/pkgs/development/python-modules/imapclient/default.nix b/pkgs/development/python-modules/imapclient/default.nix
new file mode 100644
index 00000000000..5334d473620
--- /dev/null
+++ b/pkgs/development/python-modules/imapclient/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPy34
+, isPy35
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "IMAPClient";
+  version = "0.13";
+  disabled = isPy34 || isPy35;
+
+  src = fetchurl {
+    url = "http://freshfoo.com/projects/IMAPClient/${pname}-${version}.tar.gz";
+    sha256 = "0v7kd1crdbff0rmh4ddm5qszkis6hpk9084qh94al8h7g4y9l3is";
+  };
+
+  buildInputs = [ mock ];
+
+  preConfigure = ''
+    sed -i '/distribute_setup/d' setup.py
+    substituteInPlace setup.py --replace "mock==0.8.0" "mock"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://imapclient.freshfoo.com/;
+    description = "Easy-to-use, Pythonic and complete IMAP client library";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/importmagic/default.nix b/pkgs/development/python-modules/importmagic/default.nix
new file mode 100644
index 00000000000..c708343818f
--- /dev/null
+++ b/pkgs/development/python-modules/importmagic/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "importmagic";
+  version = "0.1.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "194bl8l8sc2ibwi6g5kz6xydkbngdqpaj6r2gcsaw1fc73iswwrj";
+  };
+
+  propagatedBuildInputs = [ six ];
+
+  doCheck = false;  # missing json file from tarball
+
+  meta = with stdenv.lib; {
+    description = "Python Import Magic - automagically add, remove and manage imports";
+    homepage = https://github.com/alecthomas/importmagic;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/isodate/default.nix b/pkgs/development/python-modules/isodate/default.nix
new file mode 100644
index 00000000000..cc4594e9770
--- /dev/null
+++ b/pkgs/development/python-modules/isodate/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "isodate";
+  version = "0.5.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "42105c41d037246dc1987e36d96f3752ffd5c0c24834dd12e4fdbe1e79544e31";
+  };
+
+  # Judging from SyntaxError
+  doCheck = !(isPy3k);
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover -s src/isodate/tests
+  '';
+
+  meta = with stdenv.lib; {
+    description = "ISO 8601 date/time parser";
+    homepage = http://cheeseshop.python.org/pypi/isodate;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/jenkins-job-builder/default.nix b/pkgs/development/python-modules/jenkins-job-builder/default.nix
new file mode 100644
index 00000000000..ac654498ac4
--- /dev/null
+++ b/pkgs/development/python-modules/jenkins-job-builder/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pip
+, pbr
+, mock
+, python-jenkins
+, pyyaml
+, six
+, stevedore
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "jenkins-job-builder";
+  version = "2.0.0.0b2";
+  disabled = !isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1y0yl2w6c9c91f9xbjkvff1ag8p72r24nzparrzrw9sl8kn9632x";
+  };
+
+  patchPhase = ''
+    export HOME=$TMPDIR
+  '';
+
+  buildInputs = [ pip ];
+  propagatedBuildInputs = [ pbr mock python-jenkins pyyaml six stevedore ];
+
+  meta = with stdenv.lib; {
+    description = "Jenkins Job Builder is a system for configuring Jenkins jobs using simple YAML files stored in Git";
+    homepage = "https://docs.openstack.org/infra/system-config/jjb.html";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ garbas ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/jenkinsapi/default.nix b/pkgs/development/python-modules/jenkinsapi/default.nix
new file mode 100644
index 00000000000..a8032070708
--- /dev/null
+++ b/pkgs/development/python-modules/jenkinsapi/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, requests
+, coverage
+, mock
+, nose
+, unittest2
+}:
+
+buildPythonPackage rec {
+  pname = "jenkinsapi";
+  version = "0.2.32";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0fcc78b8dfc87237942aad2a8be54dbc08bc4afceaa7f6897f3d894e7d4bfd22";
+  };
+
+  propagatedBuildInputs = [ pytz requests ];
+  buildInputs = [ coverage mock nose unittest2 ];
+
+  meta = with stdenv.lib; {
+    description = "A Python API for accessing resources on a Jenkins continuous-integration server";
+    homepage = https://github.com/salimfadhley/jenkinsapi;
+    maintainers = with maintainers; [ drets ];
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/kaa-base/default.nix b/pkgs/development/python-modules/kaa-base/default.nix
new file mode 100644
index 00000000000..f0994cebe11
--- /dev/null
+++ b/pkgs/development/python-modules/kaa-base/default.nix
@@ -0,0 +1,51 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, isPy3k
+, python
+}:
+
+buildPythonPackage rec {
+  version = "0.99.2dev-384-2b73caca";
+  pname = "kaa-base";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0k3zzz84wzz9q1fl3vvqr2ys96z9pcf4viq9q6s2a63zaysmcfd2";
+  };
+
+  doCheck = false;
+
+  disabled = isPyPy || isPy3k;
+
+  # Same as in buildPythonPackage except that it does not pass --old-and-unmanageable
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+
+    export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --prefix="$out"
+
+    eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth
+    if [ -e "$eapth" ]; then
+    mv "$eapth" $(dirname "$eapth")/${pname}-${version}.pth
+    fi
+
+    rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Generic application framework, providing the foundation for other modules";
+    homepage = https://github.com/freevo/kaa-base;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/kaa-metadata/default.nix b/pkgs/development/python-modules/kaa-metadata/default.nix
new file mode 100644
index 00000000000..d78adf7fd39
--- /dev/null
+++ b/pkgs/development/python-modules/kaa-metadata/default.nix
@@ -0,0 +1,56 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, kaa-base
+, isPyPy
+, isPy3k
+, python
+, pkgs
+}:
+
+buildPythonPackage rec {
+  version = "0.7.8dev-r4569-20111003";
+  pname = "kaa-metadata";
+  disabled = isPyPy || isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0bkbzfgxvmby8lvzkqjp86anxvv3vjd9nksv2g4l7shsk1n7y27a";
+  };
+
+  doCheck = false;
+
+  buildInputs = [ pkgs.libdvdread ];
+
+  propagatedBuildInputs = [ kaa-base ];
+
+  # Same as in buildPythonPackage except that it does not pass --old-and-unmanageable
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+
+    export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --prefix="$out"
+
+    eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth
+    if [ -e "$eapth" ]; then
+    mv "$eapth" $(dirname "$eapth")/${pname}-${version}.pth
+    fi
+
+    rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Python library for parsing media metadata, which can extract metadata (e.g., such as id3 tags) from a wide range of media files";
+    homepage = https://github.com/freevo/kaa-metadata;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/larch/default.nix b/pkgs/development/python-modules/larch/default.nix
new file mode 100644
index 00000000000..74703ff5c9d
--- /dev/null
+++ b/pkgs/development/python-modules/larch/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, sphinx
+, tracing
+, ttystatus
+, cliapp
+}:
+
+buildPythonPackage rec {
+  pname = "larch";
+  version = "1.20131130";
+
+  src = fetchurl {
+    url = "http://code.liw.fi/debian/pool/main/p/python-larch/python-larch_${version}.orig.tar.gz";
+    sha256 = "1hfanp9l6yc5348i3f5sb8c5s4r43y382hflnbl6cnz4pm8yh5r7";
+  };
+
+  buildInputs = [ sphinx ];
+  propagatedBuildInputs = [ tracing ttystatus cliapp ];
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://liw.fi/larch/;
+    description = "Python B-tree library";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ rickynils ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/lasagne/default.nix b/pkgs/development/python-modules/lasagne/default.nix
new file mode 100644
index 00000000000..febd38acc63
--- /dev/null
+++ b/pkgs/development/python-modules/lasagne/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, Theano
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "Lasagne";
+  version = "0.1";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0cqj86rdm6c7y5vq3i13qy76fg5xi3yjp4r0hpqy8hvynv54wqrw";
+  };
+
+  propagatedBuildInputs = [ numpy Theano ];
+
+  # there are no tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Lightweight library to build and train neural networks in Theano";
+    homepage = "https://github.com/Lasagne/Lasagne";
+    maintainers = with maintainers; [ NikolaMandic ];
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/libarchive-c/default.nix b/pkgs/development/python-modules/libarchive-c/default.nix
new file mode 100644
index 00000000000..e1beafaf10a
--- /dev/null
+++ b/pkgs/development/python-modules/libarchive-c/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "libarchive-c";
+  version = "2.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "011bfsmqpcwd6920kckllh7zhw2y4rrasgmddb7wjzn2hg1xpsjn";
+  };
+
+  buildInputs = [ pytest pkgs.glibcLocales ];
+
+  LC_ALL="en_US.UTF-8";
+
+  postPatch = ''
+    substituteInPlace libarchive/ffi.py --replace \
+      "find_library('archive')" "'${pkgs.libarchive.lib}/lib/libarchive.so'"
+  '';
+
+  checkPhase = ''
+    py.test tests -k 'not test_check_archiveentry_with_unicode_entries_and_name_zip and not test_check_archiveentry_using_python_testtar'
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/Changaco/python-libarchive-c;
+    description = "Python interface to libarchive";
+    license = licenses.cc0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/linecache2/default.nix b/pkgs/development/python-modules/linecache2/default.nix
new file mode 100644
index 00000000000..9890d382742
--- /dev/null
+++ b/pkgs/development/python-modules/linecache2/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+}:
+
+buildPythonPackage rec {
+  pname = "linecache2";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb";
+  };
+
+  buildInputs = [ pbr ];
+  # circular dependencies for tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A backport of linecache to older supported Pythons";
+    homepage = "https://github.com/testing-cabal/linecache2";
+    license = licenses.psfl;
+  };
+
+}
diff --git a/pkgs/development/python-modules/lz4/default.nix b/pkgs/development/python-modules/lz4/default.nix
new file mode 100644
index 00000000000..adc0042a52e
--- /dev/null
+++ b/pkgs/development/python-modules/lz4/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "lz4";
+  version = "0.8.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1irad4sq4hdr30fr53smvv3zzk4rddcf9b4jx19w8s9xsxhr1x3b";
+  };
+
+  buildInputs = [ nose ];
+
+  meta = with stdenv.lib; {
+    description = "Compression library";
+    homepage = https://github.com/python-lz4/python-lz4;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/mailcap-fix/default.nix b/pkgs/development/python-modules/mailcap-fix/default.nix
new file mode 100644
index 00000000000..886a3ed66b3
--- /dev/null
+++ b/pkgs/development/python-modules/mailcap-fix/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy36
+}:
+
+buildPythonPackage rec {
+  pname = "mailcap-fix";
+  version = "1.0.1";
+  disabled = isPy36; # this fix is merged into python 3.6
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "02lijkq6v379r8zkqg9q2srin3i80m4wvwik3hcbih0s14v0ng0i";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A patched mailcap module that conforms to RFC 1524";
+    homepage = "https://github.com/michael-lazar/mailcap_fix";
+    license = licenses.unlicense;
+  };
+
+}
diff --git a/pkgs/development/python-modules/maildir-deduplicate/default.nix b/pkgs/development/python-modules/maildir-deduplicate/default.nix
new file mode 100644
index 00000000000..a0a4e52ea27
--- /dev/null
+++ b/pkgs/development/python-modules/maildir-deduplicate/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, click
+}:
+
+buildPythonPackage rec {
+  pname = "maildir-deduplicate";
+  version = "1.0.2";
+  disabled = !isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1xy5z756alrjgpl9qx2gdx898rw1mryrqkwmipbh39mgrvkl3fz9";
+  };
+
+  propagatedBuildInputs = [ click ];
+
+  meta = with stdenv.lib; {
+    description = "Command-line tool to deduplicate mails from a set of maildir folders";
+    homepage = "https://github.com/kdeldycke/maildir-deduplicate";
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/mmpython/default.nix b/pkgs/development/python-modules/mmpython/default.nix
new file mode 100644
index 00000000000..c35b2e35cfb
--- /dev/null
+++ b/pkgs/development/python-modules/mmpython/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPyPy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  version = "0.4.10";
+  pname = "mmpython";
+
+  src = fetchurl {
+    url = http://sourceforge.net/projects/mmpython/files/latest/download;
+    sha256 = "1b7qfad3shgakj37gcj1b9h78j1hxlz6wp9k7h76pb4sq4bfyihy";
+    name = "${pname}-${version}.tar.gz";
+  };
+
+  disabled = isPyPy || isPy3k;
+
+  meta = with stdenv.lib; {
+    description = "Media Meta Data retrieval framework";
+    homepage = https://sourceforge.net/projects/mmpython/;
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/mongodict/default.nix b/pkgs/development/python-modules/mongodict/default.nix
new file mode 100644
index 00000000000..932160bb9fa
--- /dev/null
+++ b/pkgs/development/python-modules/mongodict/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pymongo
+}:
+
+buildPythonPackage rec {
+  pname = "mongodict";
+  version = "0.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0nv5amfs337m0gbxpjb0585s20rndqfc3mfrzq1iwgnds5gxcrlw";
+  };
+
+  propagatedBuildInputs = [ pymongo ];
+
+  meta = with stdenv.lib; {
+    description = "MongoDB-backed Python dict-like interface";
+    homepage = "https://github.com/turicas/mongodict/";
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/mox3/default.nix b/pkgs/development/python-modules/mox3/default.nix
new file mode 100644
index 00000000000..8701ea177b0
--- /dev/null
+++ b/pkgs/development/python-modules/mox3/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, subunit
+, testrepository
+, testtools
+, six
+, pbr
+, fixtures
+, isPy36
+}:
+
+buildPythonPackage rec {
+  pname = "mox3";
+  version = "0.23.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0q26sg0jasday52a7y0cch13l0ssjvr4yqnvswqxsinj1lv5ld88";
+  };
+
+  patchPhase = ''
+    sed -i 's@python@${python.interpreter}@' .testr.conf
+  '';
+
+  buildInputs = [ subunit testrepository testtools six ];
+  propagatedBuildInputs = [ pbr fixtures ];
+
+  #  FAIL: mox3.tests.test_mox.RegexTest.testReprWithFlags
+  #  ValueError: cannot use LOCALE flag with a str pattern
+  doCheck = !isPy36;
+
+  meta = with stdenv.lib; {
+    description = "Mock object framework for Python";
+    homepage = https://docs.openstack.org/mox3/latest/;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/mps-youtube/default.nix b/pkgs/development/python-modules/mps-youtube/default.nix
new file mode 100644
index 00000000000..4a3ff00f835
--- /dev/null
+++ b/pkgs/development/python-modules/mps-youtube/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, pafy
+}:
+
+buildPythonPackage rec {
+  name = "mps-youtube-${version}";
+  version = "0.2.7.1";
+  disabled = (!isPy3k);
+
+  src = fetchFromGitHub {
+    owner = "mps-youtube";
+    repo = "mps-youtube";
+    rev = "v${version}";
+    sha256 = "16zn5gwb3568w95lr21b88zkqlay61p1541sa9c3x69zpi8v0pys";
+  };
+
+  propagatedBuildInputs = [ pafy ];
+
+  # disabled due to error in loading unittest
+  # don't know how to make test from: <mps_youtube. ...>
+  doCheck = false;
+
+  # before check create a directory and redirect XDG_CONFIG_HOME to it
+  preCheck = ''
+    mkdir -p check-phase
+    export XDG_CONFIG_HOME=$(pwd)/check-phase
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Terminal based YouTube player and downloader";
+    homepage = https://github.com/np1/mps-youtube;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ odi ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/neovim_gui/default.nix b/pkgs/development/python-modules/neovim_gui/default.nix
new file mode 100644
index 00000000000..da3a0591f7c
--- /dev/null
+++ b/pkgs/development/python-modules/neovim_gui/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, neovim
+, click
+, pygobject3
+, isPy27
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "neovim-pygui";
+  version = "0.1.3";
+  disabled = !isPy27;
+
+  src = fetchFromGitHub {
+    owner = "neovim";
+    repo = "python-gui";
+    rev = version;
+    sha256 = "1vpvr3zm3f9sxg1z1cl7f7gi8v1xksjdvxj62qnw65aqj3zqxnkz";
+  };
+
+  propagatedBuildInputs = [ neovim click pygobject3 pkgs.gobjectIntrospection pkgs.makeWrapper pkgs.gtk3 ];
+
+  patchPhase = ''
+    sed -i -e "s|entry_points=entry_points,|entry_points=dict(console_scripts=['pynvim=neovim.ui.cli:main [GUI]']),|" setup.py
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/pynvim \
+      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
+      --prefix PYTHONPATH : "${pygobject3}/lib/python2.7/site-packages:$PYTHONPATH"
+  '';
+
+}
diff --git a/pkgs/development/python-modules/nose_progressive/default.nix b/pkgs/development/python-modules/nose_progressive/default.nix
new file mode 100644
index 00000000000..98e34212cb8
--- /dev/null
+++ b/pkgs/development/python-modules/nose_progressive/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pillow
+, blessings
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "nose-progressive";
+  version = "1.5.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0mfbjv3dcg23q0a130670g7xpfyvgza4wxkj991xxh8w9hs43ga4";
+  };
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ pillow blessings ];
+
+  # fails with obscure error
+  doCheck = !isPy3k;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/erikrose/nose-progressive;
+    description = "A testrunner with a progress bar and smarter tracebacks";
+    license = licenses.mit;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/numexpr/default.nix b/pkgs/development/python-modules/numexpr/default.nix
index 6e237b2bd9e..acf41fb539e 100644
--- a/pkgs/development/python-modules/numexpr/default.nix
+++ b/pkgs/development/python-modules/numexpr/default.nix
@@ -3,6 +3,7 @@
 , fetchPypi
 , python
 , numpy
+, llvmPackages ? null
 }:
 
 buildPythonPackage rec {
@@ -14,6 +15,17 @@ buildPythonPackage rec {
     sha256 = "ee8bc7201aa2f1962c67d27c326a11eef9df887d7b87b1278a1d4e722bf44375";
   };
 
+  # Remove existing site.cfg, use the one we built for numpy.
+  # Somehow openmp needs to be added to LD_LIBRARY_PATH
+  # https://software.intel.com/en-us/forums/intel-system-studio/topic/611682
+  preBuild = ''
+    rm site.cfg
+    ln -s ${numpy.cfg} site.cfg
+    export LD_LIBRARY_PATH=${llvmPackages.openmp}/lib
+  '';
+
+  buildInputs = [] ++ lib.optional (numpy.blasImplementation == "mkl") llvmPackages.openmp;
+
   propagatedBuildInputs = [ numpy ];
 
   # Run the test suite.
diff --git a/pkgs/development/python-modules/numpy/default.nix b/pkgs/development/python-modules/numpy/default.nix
index 87428f4563d..5710c9cc7a4 100644
--- a/pkgs/development/python-modules/numpy/default.nix
+++ b/pkgs/development/python-modules/numpy/default.nix
@@ -1,13 +1,27 @@
-{ stdenv, lib, fetchPypi, python, buildPythonPackage, isPyPy, gfortran, pytest, blas }:
+{ stdenv, lib, fetchPypi, python, buildPythonPackage, isPyPy, gfortran, pytest, blas, writeTextFile }:
 
-buildPythonPackage rec {
+let
+  blasImplementation = lib.nameFromURL blas.name "-";
+  cfg = writeTextFile {
+    name = "site.cfg";
+    text = (lib.generators.toINI {} {
+      "${blasImplementation}" = {
+        include_dirs = "${blas}/include";
+        library_dirs = "${blas}/lib";
+      } // lib.optionalAttrs (blasImplementation == "mkl") {
+        mkl_libs = "mkl_rt";
+        lapack_libs = "";
+      };
+    });
+  };
+in buildPythonPackage rec {
   pname = "numpy";
-  version = "1.15.2";
+  version = "1.15.3";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "27a0d018f608a3fe34ac5e2b876f4c23c47e38295c47dd0775cc294cd2614bc1";
+    sha256 = "1c0c80e74759fa4942298044274f2c11b08c86230b25b8b819e55e644f5ff2b6";
   };
 
   disabled = isPyPy;
@@ -39,12 +53,7 @@ buildPythonPackage rec {
   '';
 
   preBuild = ''
-    echo "Creating site.cfg file..."
-    cat << EOF > site.cfg
-    [openblas]
-    include_dirs = ${blas}/include
-    library_dirs = ${blas}/lib
-    EOF
+    ln -s ${cfg} site.cfg
   '';
 
   enableParallelBuilding = true;
@@ -59,8 +68,11 @@ buildPythonPackage rec {
 
   passthru = {
     blas = blas;
+    inherit blasImplementation cfg;
   };
 
+  doCheck = blasImplementation != "mkl";
+
   # Disable two tests
   # - test_f2py: f2py isn't yet on path.
   # - test_large_file_support: takes a long time and can cause the machine to run out of disk space
diff --git a/pkgs/development/python-modules/ofxparse/default.nix b/pkgs/development/python-modules/ofxparse/default.nix
new file mode 100644
index 00000000000..6308921aeab
--- /dev/null
+++ b/pkgs/development/python-modules/ofxparse/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, beautifulsoup4
+}:
+
+buildPythonPackage rec {
+  pname = "ofxparse";
+  version = "0.14";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "d8c486126a94d912442d040121db44fbc4a646ea70fa935df33b5b4dbfbbe42a";
+  };
+
+  propagatedBuildInputs = [ six beautifulsoup4 ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://sites.google.com/site/ofxparse";
+    description = "Tools for working with the OFX (Open Financial Exchange) file format";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/ofxtools/default.nix b/pkgs/development/python-modules/ofxtools/default.nix
new file mode 100644
index 00000000000..8490aae4f5c
--- /dev/null
+++ b/pkgs/development/python-modules/ofxtools/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, sqlalchemy
+}:
+
+buildPythonPackage rec {
+  pname = "ofxtools";
+  version = "0.3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "88f289a60f4312a1599c38a8fb3216e2b46d10cc34476f9a16a33ac8aac7ec35";
+  };
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover -s ofxtools
+  '';
+
+  buildInputs = [ sqlalchemy ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/csingley/ofxtools";
+    description = "Library for working with Open Financial Exchange (OFX) formatted data used by financial institutions";
+    license = licenses.mit;
+    broken = true;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pagerduty/default.nix b/pkgs/development/python-modules/pagerduty/default.nix
new file mode 100644
index 00000000000..634de3947a6
--- /dev/null
+++ b/pkgs/development/python-modules/pagerduty/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pagerduty";
+  version = "0.2.1";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "e8c237239d3ffb061069aa04fc5b3d8ae4fb0af16a9713fe0977f02261d323e9";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/samuel/python-pagerduty;
+    description = "Library for the PagerDuty service API";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pamqp/default.nix b/pkgs/development/python-modules/pamqp/default.nix
new file mode 100644
index 00000000000..89e88476e37
--- /dev/null
+++ b/pkgs/development/python-modules/pamqp/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, nose
+, pep8
+, pylint
+, mccabe
+}:
+
+buildPythonPackage rec {
+  version = "1.6.1";
+  pname = "pamqp";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1vmyvynqzx5zvbipaxff4fnzy3h3dvl3zicyr15yb816j93jl2ca";
+  };
+
+  buildInputs = [ mock nose pep8 pylint mccabe ];
+
+  meta = with stdenv.lib; {
+    description = "RabbitMQ Focused AMQP low-level library";
+    homepage = https://pypi.python.org/pypi/pamqp;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pandocfilters/default.nix b/pkgs/development/python-modules/pandocfilters/default.nix
new file mode 100644
index 00000000000..b3a815e997c
--- /dev/null
+++ b/pkgs/development/python-modules/pandocfilters/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec{
+  version = "1.4.1";
+  pname = "pandocfilters";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ec8bcd100d081db092c57f93462b1861bcfa1286ef126f34da5cb1d969538acd";
+  };
+
+  # No tests available
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A python module for writing pandoc filters, with a collection of examples";
+    homepage = https://github.com/jgm/pandocfilters;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/parsedatetime/default.nix b/pkgs/development/python-modules/parsedatetime/default.nix
new file mode 100644
index 00000000000..6548e39078e
--- /dev/null
+++ b/pkgs/development/python-modules/parsedatetime/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytestrunner
+, future
+}:
+
+buildPythonPackage rec {
+  pname = "parsedatetime";
+  version = "2.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1vkrmd398s11h1zn3zaqqsiqhj9lwy1ikcg6irx2lrgjzjg3rjll";
+  };
+
+  buildInputs = [ pytest pytestrunner ];
+  propagatedBuildInputs = [ future ];
+
+  meta = with stdenv.lib; {
+    description = "Parse human-readable date/time text";
+    homepage = "https://github.com/bear/parsedatetime";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/parsel/default.nix b/pkgs/development/python-modules/parsel/default.nix
new file mode 100644
index 00000000000..ef6c795773c
--- /dev/null
+++ b/pkgs/development/python-modules/parsel/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytestrunner
+, six
+, w3lib
+, lxml
+, cssselect
+}:
+
+buildPythonPackage rec {
+  pname = "parsel";
+  version = "1.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0a34d1c0bj1fzb5dk5744m2ag6v3b8glk4xp0amqxdan9ldbcd97";
+  };
+
+  buildInputs = [ pytest pytestrunner ];
+  propagatedBuildInputs = [ six w3lib lxml cssselect ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/scrapy/parsel";
+    description = "Parsel is a library to extract data from HTML and XML using XPath and CSS selectors";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/parsimonious/default.nix b/pkgs/development/python-modules/parsimonious/default.nix
new file mode 100644
index 00000000000..13fabd4cbf9
--- /dev/null
+++ b/pkgs/development/python-modules/parsimonious/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, six
+}:
+
+buildPythonPackage rec {
+  version = "0.7.0";
+  pname = "parsimonious";
+
+  src = fetchFromGitHub {
+    repo = "parsimonious";
+    owner = "erikrose";
+    rev = version;
+    sha256 = "087npc8ccryrxabmqifcz56w4wd0hzmv0mc91wrbhc1sil196j0a";
+  };
+
+  propagatedBuildInputs = [ nose six ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/erikrose/parsimonious";
+    description = "Fast arbitrary-lookahead parser written in pure Python";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/paste/default.nix b/pkgs/development/python-modules/paste/default.nix
new file mode 100644
index 00000000000..e8aceae062f
--- /dev/null
+++ b/pkgs/development/python-modules/paste/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "paste";
+  version = "2.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3";
+  };
+
+  checkInputs = [ nose ];
+  propagatedBuildInputs = [ six ];
+
+  # Certain tests require network
+  checkPhase = ''
+    NOSE_EXCLUDE=test_ok,test_form,test_error,test_stderr,test_paste_website nosetests
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tools for using a Web Server Gateway Interface stack";
+    homepage = http://pythonpaste.org/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pastedeploy/default.nix b/pkgs/development/python-modules/pastedeploy/default.nix
new file mode 100644
index 00000000000..433a67da51c
--- /dev/null
+++ b/pkgs/development/python-modules/pastedeploy/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+  version = "1.5.2";
+  pname = "PasteDeploy";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "d5858f89a255e6294e63ed46b73613c56e3b9a2d82a42f1df4d06c8421a9e3cb";
+  };
+
+  buildInputs = [ nose ];
+
+  meta = with stdenv.lib; {
+    description = "Load, configure, and compose WSGI applications and servers";
+    homepage = http://pythonpaste.org/deploy/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pastescript/default.nix b/pkgs/development/python-modules/pastescript/default.nix
new file mode 100644
index 00000000000..06e71cf790b
--- /dev/null
+++ b/pkgs/development/python-modules/pastescript/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+, paste
+, PasteDeploy
+, cheetah
+, argparse
+}:
+
+buildPythonPackage rec {
+  version = "1.7.5";
+  pname = "PasteScript";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2b685be69d6ac8bc0fe6f558f119660259db26a15e16a4943c515fbee8093539";
+  };
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ six paste PasteDeploy cheetah argparse ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A pluggable command-line frontend, including commands to setup package file layouts";
+    homepage = http://pythonpaste.org/script/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/patch/default.nix b/pkgs/development/python-modules/patch/default.nix
new file mode 100644
index 00000000000..1a7ce953947
--- /dev/null
+++ b/pkgs/development/python-modules/patch/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchzip
+}:
+
+buildPythonPackage rec {
+  version = "1.16";
+  pname = "patch";
+
+  src = fetchzip {
+    url = "mirror://pypi/p/${pname}/${pname}-${version}.zip";
+    sha256 = "1nj55hvyvzax4lxq7vkyfbw91pianzr3hp7ka7j12pgjxccac50g";
+    stripRoot = false;
+  };
+
+  # No tests included in archive
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A library to parse and apply unified diffs";
+    homepage = https://github.com/techtonik/python-patch/;
+    license = licenses.mit;
+    maintainers = [ maintainers.igsha ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pathos/default.nix b/pkgs/development/python-modules/pathos/default.nix
new file mode 100644
index 00000000000..081e5bb3aa4
--- /dev/null
+++ b/pkgs/development/python-modules/pathos/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, dill
+, pox
+, ppft
+, multiprocess
+}:
+
+buildPythonPackage rec {
+  pname = "pathos";
+  version = "0.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "e35418af733bf434da83746d46acca94375d6e306b3df330b2a1808db026a188";
+  };
+
+  propagatedBuildInputs = [ dill pox ppft multiprocess ];
+
+  # Require network
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Parallel graph management and execution in heterogeneous computing";
+    homepage = http://www.cacr.caltech.edu/~mmckerns/pathos.htm;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pdfkit/default.nix b/pkgs/development/python-modules/pdfkit/default.nix
new file mode 100644
index 00000000000..c797c57c40f
--- /dev/null
+++ b/pkgs/development/python-modules/pdfkit/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pdfkit";
+  version = "0.5.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "1p1m6gp51ql3wzjs2iwds8sc3hg1i48yysii9inrky6qc3s6q5vf";
+  };
+
+  # tests are not distributed
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/pdfkit;
+    description = "Wkhtmltopdf python wrapper to convert html to pdf using the webkit rendering engine and qt";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pep8/default.nix b/pkgs/development/python-modules/pep8/default.nix
new file mode 100644
index 00000000000..9e31063b461
--- /dev/null
+++ b/pkgs/development/python-modules/pep8/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+  pname = "pep8";
+  version = "1.7.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "a113d5f5ad7a7abacef9df5ec3f2af23a20a28005921577b15dd584d099d5900";
+  };
+
+  # FAIL: test_checkers_testsuite (testsuite.test_all.Pep8TestCase)
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "http://pep8.readthedocs.org/";
+    description = "Python style guide checker";
+    license = licenses.mit;
+    maintainers = with maintainers; [ garbas ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/percol/default.nix b/pkgs/development/python-modules/percol/default.nix
new file mode 100644
index 00000000000..2ecb6de2d23
--- /dev/null
+++ b/pkgs/development/python-modules/percol/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "percol";
+  version = "0.0.8";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "169s5mhw1s60qbsd6pkf9bb2x6wfgx8hn8nw9d4qgc68qnnpp2cj";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/mooz/percol;
+    description = "Adds flavor of interactive filtering to the traditional pipe concept of shell";
+    license = licenses.mit;
+    maintainers = with maintainers; [ koral ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pexif/default.nix b/pkgs/development/python-modules/pexif/default.nix
new file mode 100644
index 00000000000..ac1c7de8682
--- /dev/null
+++ b/pkgs/development/python-modules/pexif/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pexif";
+  version = "0.15";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "45a3be037c7ba8b64bbfc48f3586402cc17de55bb9d7357ef2bc99954a18da3f";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A module for editing JPEG EXIF data";
+    homepage = http://www.benno.id.au/code/pexif/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pg8000/default.nix b/pkgs/development/python-modules/pg8000/default.nix
new file mode 100644
index 00000000000..65301a8c406
--- /dev/null
+++ b/pkgs/development/python-modules/pg8000/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "pg8000";
+  version = "1.10.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "188658db63c2ca931ae1bf0167b34efaac0ecc743b707f0118cc4b87e90ce488";
+  };
+
+  propagatedBuildInputs = [ pytz ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/realazthat/aiopg8000;
+    description = "PostgreSQL interface library, for asyncio";
+    maintainers = with maintainers; [ garbas domenkozar ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pgpdump/default.nix b/pkgs/development/python-modules/pgpdump/default.nix
new file mode 100644
index 00000000000..ea9ef0a156f
--- /dev/null
+++ b/pkgs/development/python-modules/pgpdump/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pgpdump";
+  version = "1.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw";
+  };
+
+  # Disabling check because of: https://github.com/toofishes/python-pgpdump/issues/18
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python library for parsing PGP packets";
+    homepage = https://github.com/toofishes/python-pgpdump;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pickleshare/default.nix b/pkgs/development/python-modules/pickleshare/default.nix
new file mode 100644
index 00000000000..4ca42184765
--- /dev/null
+++ b/pkgs/development/python-modules/pickleshare/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pathpy
+, pathlib2
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  version = "0.7.4";
+  pname = "pickleshare";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b";
+  };
+
+  propagatedBuildInputs = [ pathpy ]
+    ++ stdenv.lib.optional (pythonOlder "3.4") pathlib2;
+
+  # No proper test suite
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Tiny 'shelve'-like database with concurrency support";
+    homepage = https://github.com/vivainio/pickleshare;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pid/default.nix b/pkgs/development/python-modules/pid/default.nix
new file mode 100644
index 00000000000..64f4ee882ab
--- /dev/null
+++ b/pkgs/development/python-modules/pid/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "pid";
+  version = "2.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0cylj8p25nwkdfgy4pzai21wyzmrxdqlwwbzqag9gb5qcjfdwk05";
+  };
+
+  buildInputs = [ nose ];
+
+  # No tests included
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Pidfile featuring stale detection and file-locking";
+    homepage = https://github.com/trbs/pid/;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/piep/default.nix b/pkgs/development/python-modules/piep/default.nix
new file mode 100644
index 00000000000..671f631a40c
--- /dev/null
+++ b/pkgs/development/python-modules/piep/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pygments
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  version = "0.8.0";
+  pname = "piep";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1wgkg1kc28jpya5k4zvbc9jmpa60b3d5c3gwxfbp15hw6smyqirj";
+  };
+
+  propagatedBuildInputs = [ pygments ];
+
+  meta = with stdenv.lib; {
+    description = "Bringing the power of python to stream editing";
+    homepage = https://github.com/timbertson/piep;
+    maintainers = with maintainers; [ timbertson ];
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pika/default.nix b/pkgs/development/python-modules/pika/default.nix
new file mode 100644
index 00000000000..3cc1ba3b00f
--- /dev/null
+++ b/pkgs/development/python-modules/pika/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, nose
+, mock
+, pyyaml
+, unittest2
+, pyev
+, twisted
+, tornado
+}:
+
+buildPythonPackage rec {
+  pname = "pika";
+  version = "0.10.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj";
+  };
+
+  # Tests require twisted which is only availalble for python-2.x
+  doCheck = !isPy3k;
+
+  buildInputs = [ nose mock pyyaml unittest2 pyev ]
+    ++ stdenv.lib.optionals (!isPy3k) [ twisted tornado ];
+
+  meta = with stdenv.lib; {
+    description = "Pure-Python implementation of the AMQP 0-9-1 protocol";
+    homepage = https://pika.readthedocs.org;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pilkit/default.nix b/pkgs/development/python-modules/pilkit/default.nix
new file mode 100644
index 00000000000..eab44b3724a
--- /dev/null
+++ b/pkgs/development/python-modules/pilkit/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pillow
+, nose_progressive
+, nose
+, mock
+, blessings
+}:
+
+buildPythonPackage rec {
+  pname = "pilkit";
+  version = "1.1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "e00585f5466654ea2cdbf7decef9862cb00e16fd363017fa7ef6623a16b0d2c7";
+  };
+
+  preConfigure = ''
+    substituteInPlace setup.py --replace 'nose==1.2.1' 'nose'
+  '';
+
+  # tests fail, see https://github.com/matthewwithanm/pilkit/issues/9
+  doCheck = false;
+
+  buildInputs = [ pillow nose_progressive nose mock blessings ];
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/matthewwithanm/pilkit/;
+    description = "A collection of utilities and processors for the Python Imaging Libary";
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pip2nix/default.nix b/pkgs/development/python-modules/pip2nix/default.nix
new file mode 100644
index 00000000000..0e648f1ca18
--- /dev/null
+++ b/pkgs/development/python-modules/pip2nix/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, click
+, configobj
+, contexter
+, jinja2
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "pip2nix";
+  version = "0.7.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ec9a71e09ac7f43cc7b6c9d386384eb7b5c331bf6ea0e72ca559d87979397a95";
+  };
+
+  propagatedBuildInputs = [ click configobj contexter jinja2 pytest ];
+
+  postPatch = ''
+    sed -i "s/'pip>=8,<10'/'pip'/" setup.py
+    sed -i "s/pip<10,>=8/pip/" ${pname}.egg-info/requires.txt
+  '';
+
+  # tests not included with pypi release
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Generate Nix expressions for Python packages";
+    homepage = https://github.com/johbo/pip2nix;
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pivy/default.nix b/pkgs/development/python-modules/pivy/default.nix
new file mode 100644
index 00000000000..ee02f2cb5d2
--- /dev/null
+++ b/pkgs/development/python-modules/pivy/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchhg
+, pkgs
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  version = "20101207";
+  pname = "pivy";
+  disabled = isPy3k; # Judging from SyntaxError
+
+  src = fetchhg {
+    url = "https://bitbucket.org/Coin3D/pivy";
+    rev = "8eab90908f2a3adcc414347566f4434636202344";
+    sha256 = "18n14ha2d3j3ghg2f2aqnf2mks94nn7ma9ii7vkiwcay93zm82cf";
+  };
+
+  buildInputs = [ pkgs.swig1 pkgs.coin3d pkgs.soqt pkgs.libGLU_combined pkgs.xorg.libXi ];
+
+  meta = with stdenv.lib; {
+    homepage = http://pivy.coin3d.org/;
+    description = "A Python binding for Coin";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/posix_ipc/default.nix b/pkgs/development/python-modules/posix_ipc/default.nix
new file mode 100644
index 00000000000..0114c9b66eb
--- /dev/null
+++ b/pkgs/development/python-modules/posix_ipc/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "posix_ipc";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1jzg66708pi5n9w07fbz6rlxx30cjds9hp2yawjjfryafh1hg4ww";
+  };
+
+  meta = with stdenv.lib; {
+    description = "POSIX IPC primitives (semaphores, shared memory and message queues)";
+    license = licenses.bsd3;
+    homepage = http://semanchuk.com/philip/posix_ipc/;
+  };
+
+}
diff --git a/pkgs/development/python-modules/power/default.nix b/pkgs/development/python-modules/power/default.nix
new file mode 100644
index 00000000000..a54bd025dc7
--- /dev/null
+++ b/pkgs/development/python-modules/power/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "power";
+  version = "1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7d7d60ec332acbe3a7d00379b45e39abf650bf7ee311d61da5ab921f52f060f0";
+  };
+
+  # Tests can't work because there is no power information available.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Cross-platform system power status information";
+    homepage = https://github.com/Kentzo/Power;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pox/default.nix b/pkgs/development/python-modules/pox/default.nix
new file mode 100644
index 00000000000..29a24343f25
--- /dev/null
+++ b/pkgs/development/python-modules/pox/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pox";
+  version = "0.2.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "22e97ac6d2918c754e65a9581dbe02e9d00ae4a54ca48d05118f87c1ea92aa19";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Utilities for filesystem exploration and automated builds";
+    license = licenses.bsd3;
+    homepage = http://www.cacr.caltech.edu/~mmckerns/pox.htm;
+  };
+
+}
diff --git a/pkgs/development/python-modules/ppft/default.nix b/pkgs/development/python-modules/ppft/default.nix
new file mode 100644
index 00000000000..2a1dd73f96c
--- /dev/null
+++ b/pkgs/development/python-modules/ppft/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "ppft";
+  version = "1.6.4.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6f99c861822884cb00badbd5f364ee32b90a157084a6768040793988c6b92bff";
+  };
+
+  propagatedBuildInputs = [ six ];
+
+  meta = with stdenv.lib; {
+    description = "Distributed and parallel python";
+    homepage = https://github.com/uqfoundation;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/prettytable/default.nix b/pkgs/development/python-modules/prettytable/default.nix
new file mode 100644
index 00000000000..2ab92217144
--- /dev/null
+++ b/pkgs/development/python-modules/prettytable/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, glibcLocales
+}:
+
+buildPythonPackage rec {
+  pname = "prettytable";
+  version = "0.7.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "599bc5b4b9602e28294cf795733c889c26dd934aa7e0ee9cff9b905d4fbad188";
+  };
+
+  buildInputs = [ glibcLocales ];
+
+  preCheck = ''
+    export LANG="en_US.UTF-8"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
+    homepage = http://code.google.com/p/prettytable/;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/process-tests/default.nix b/pkgs/development/python-modules/process-tests/default.nix
new file mode 100644
index 00000000000..8f8bbc59d4f
--- /dev/null
+++ b/pkgs/development/python-modules/process-tests/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "process-tests";
+  version = "1.2.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "65c9d7a0260f31c15b4a22a851757e61f7072d0557db5f8a976112fbe81ff7e9";
+  };
+
+  # No tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Tools for testing processes";
+    license = licenses.bsd2;
+    homepage = https://github.com/ionelmc/python-process-tests;
+  };
+
+}
diff --git a/pkgs/development/python-modules/ptest/default.nix b/pkgs/development/python-modules/ptest/default.nix
new file mode 100644
index 00000000000..0de6f98828f
--- /dev/null
+++ b/pkgs/development/python-modules/ptest/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "ptest";
+  version =  "1.5.3";
+
+  src = fetchFromGitHub {
+    owner = "KarlGong";
+    repo = pname;
+    rev = version + "-release";
+    sha256 = "1r50lm6n59jzdwpp53n0c0hp3aj1jxn304bk5gh830226gsaf2hn";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Test classes and test cases using decorators, execute test cases by command line, and get clear reports";
+    homepage = https://pypi.python.org/pypi/ptest;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/purepng/default.nix b/pkgs/development/python-modules/purepng/default.nix
new file mode 100644
index 00000000000..49e4d93a534
--- /dev/null
+++ b/pkgs/development/python-modules/purepng/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "purepng";
+  version = "0.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1kcl7a6d7d59360fbz2jwfk6ha6pmqgn396962p4s62j893d2r0d";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Pure Python library for PNG image encoding/decoding";
+    homepage    = https://github.com/scondo/purepng;
+    license     = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pweave/default.nix b/pkgs/development/python-modules/pweave/default.nix
new file mode 100644
index 00000000000..980a1df6d05
--- /dev/null
+++ b/pkgs/development/python-modules/pweave/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, matplotlib
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "Pweave";
+  version = "0.25";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1isqjz66c7vxdaqfwpkspki9p4054dsfx7pznwz28ik634hnj3qw";
+  };
+
+  buildInputs = [ mock pkgs.glibcLocales ];
+  propagatedBuildInputs = [ matplotlib ];
+
+  # fails due to trying to run CSS as test
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Scientific reports with embedded python computations with reST, LaTeX or markdown";
+    homepage = http://mpastell.com/pweave/ ;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/py/default.nix b/pkgs/development/python-modules/py/default.nix
index 14ffb8e2773..5f41a88d26e 100644
--- a/pkgs/development/python-modules/py/default.nix
+++ b/pkgs/development/python-modules/py/default.nix
@@ -1,11 +1,11 @@
 { stdenv, buildPythonPackage, fetchPypi, setuptools_scm }:
 buildPythonPackage rec {
   pname = "py";
-  version = "1.5.4";
+  version = "1.7.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3fd59af7435864e1a243790d322d763925431213b6b8529c6ca71081ace3bbf7";
+    sha256 = "bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694";
   };
 
   # Circular dependency on pytest
diff --git a/pkgs/development/python-modules/py3dns/default.nix b/pkgs/development/python-modules/py3dns/default.nix
new file mode 100644
index 00000000000..1e5b84aa262
--- /dev/null
+++ b/pkgs/development/python-modules/py3dns/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "py3dns";
+  version = "3.1.1a";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0z0qmx9j1ivpgg54gqqmh42ljnzxaychc5inz2gbgv0vls765smz";
+  };
+
+  preConfigure = ''
+    sed -i \
+      -e '/import DNS/d' \
+      -e 's/DNS.__version__/"${version}"/g' \
+      setup.py
+  '';
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python 3 DNS library";
+    homepage = https://launchpad.net/py3dns;
+    license = licenses.psfl;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyacoustid/default.nix b/pkgs/development/python-modules/pyacoustid/default.nix
new file mode 100644
index 00000000000..ba7879554a8
--- /dev/null
+++ b/pkgs/development/python-modules/pyacoustid/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, audioread
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pyacoustid";
+  version = "1.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0117039cb116af245e6866e8e8bf3c9c8b2853ad087142bd0c2dfc0acc09d452";
+  };
+
+  propagatedBuildInputs = [ requests audioread ];
+
+  patches = [ ./pyacoustid-py3.patch ];
+
+  postPatch = ''
+    sed -i \
+        -e '/^FPCALC_COMMAND *=/s|=.*|= "${pkgs.chromaprint}/bin/fpcalc"|' \
+        acoustid.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Bindings for Chromaprint acoustic fingerprinting";
+    homepage = "https://github.com/sampsyo/pyacoustid";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyacoustid-py3.patch b/pkgs/development/python-modules/pyacoustid/pyacoustid-py3.patch
index f79b35fd345..f79b35fd345 100644
--- a/pkgs/development/python-modules/pyacoustid-py3.patch
+++ b/pkgs/development/python-modules/pyacoustid/pyacoustid-py3.patch
diff --git a/pkgs/development/python-modules/pyalgotrade/default.nix b/pkgs/development/python-modules/pyalgotrade/default.nix
new file mode 100644
index 00000000000..b9752a71f51
--- /dev/null
+++ b/pkgs/development/python-modules/pyalgotrade/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, numpy
+, scipy
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "pyalgotrade";
+  version = "0.16";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "a253617254194b91cfebae7bfd184cb109d4e48a8c70051b9560000a2c0f94b3";
+  };
+
+  propagatedBuildInputs = [ numpy scipy pytz ];
+
+  meta = with stdenv.lib; {
+    description = "Python Algorithmic Trading";
+    homepage = http://gbeced.github.io/pyalgotrade/;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyaudio/default.nix b/pkgs/development/python-modules/pyaudio/default.nix
new file mode 100644
index 00000000000..2f788966718
--- /dev/null
+++ b/pkgs/development/python-modules/pyaudio/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "python-pyaudio";
+  version = "0.2.9";
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "bfd694272b3d1efc51726d0c27650b3c3ba1345f7f8fdada7e86c9751ce0f2a1";
+  };
+
+  buildInputs = [ pkgs.portaudio ];
+
+  meta = with stdenv.lib; {
+    description = "Python bindings for PortAudio";
+    homepage = "http://people.csail.mit.edu/hubert/pyaudio/";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pybcrypt/default.nix b/pkgs/development/python-modules/pybcrypt/default.nix
new file mode 100644
index 00000000000..3f9f3b69a78
--- /dev/null
+++ b/pkgs/development/python-modules/pybcrypt/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pybcrypt";
+  version = "0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5fa13bce551468350d66c4883694850570f3da28d6866bb638ba44fe5eabda78";
+  };
+
+  meta = with stdenv.lib; {
+    description = "bcrypt password hashing and key derivation";
+    homepage = https://code.google.com/p/py-bcrypt2;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyblock/default.nix b/pkgs/development/python-modules/pyblock/default.nix
new file mode 100644
index 00000000000..1be0ad1d4c7
--- /dev/null
+++ b/pkgs/development/python-modules/pyblock/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, fetchurl
+, python
+, pkgs
+, isPy3k
+}:
+
+stdenv.mkDerivation rec {
+  name = "pyblock-${version}";
+  version = "0.53";
+  md5_path = "f6d33a8362dee358517d0a9e2ebdd044";
+
+  src = pkgs.fetchurl rec {
+    url = "http://src.fedoraproject.org/repo/pkgs/python-pyblock/"
+        + "${name}.tar.bz2/${md5_path}/${name}.tar.bz2";
+    sha256 = "f6cef88969300a6564498557eeea1d8da58acceae238077852ff261a2cb1d815";
+  };
+
+  postPatch = ''
+    sed -i -e 's|/usr/include/python|${python}/include/python|' \
+           -e 's/-Werror *//' -e 's|/usr/|'"$out"'/|' Makefile
+  '';
+
+  buildInputs = [ python pkgs.lvm2 pkgs.dmraid ];
+
+  makeFlags = [
+    "USESELINUX=0"
+    "SITELIB=$(out)/${python.sitePackages}"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://www.centos.org/docs/5/html/5.4/Technical_Notes/python-pyblock.html;
+    description = "Interface for working with block devices";
+    license = licenses.gpl2Plus;
+    broken = isPy3k; # doesn't build on python 3, 2018-04-11
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyblosxom/default.nix b/pkgs/development/python-modules/pyblosxom/default.nix
new file mode 100644
index 00000000000..dfb3e94ba27
--- /dev/null
+++ b/pkgs/development/python-modules/pyblosxom/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, pygments
+, markdown
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pyblosxom";
+  version = "1.5.3";
+  disabled = isPy3k;
+
+  src = fetchurl {
+    url = "https://github.com/pyblosxom/pyblosxom/archive/v${version}.tar.gz";
+    sha256 = "0de9a7418f4e6d1c45acecf1e77f61c8f96f036ce034493ac67124626fd0d885";
+  };
+
+  propagatedBuildInputs = [ pygments markdown ];
+
+  # FAIL:test_generate_entry and test_time
+  # both tests fail due to time issue that doesn't seem to matter in practice
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "http://pyblosxom.github.io";
+    description = "File-based blogging engine";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pycapnp/default.nix b/pkgs/development/python-modules/pycapnp/default.nix
new file mode 100644
index 00000000000..2ba0e653e77
--- /dev/null
+++ b/pkgs/development/python-modules/pycapnp/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, capnproto
+, cython
+, isPyPy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pycapnp";
+  version = "0.6.3";
+  disabled = isPyPy || isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "b3c5a1fcc93fd02fdc070aeccb89654b87f20bdc740f643cc6378925ed6d4c17";
+  };
+
+  buildInputs = [ capnproto cython ];
+
+  # import setuptools as soon as possible, to minimize monkeypatching mayhem.
+  postConfigure = ''
+    sed -i '3iimport setuptools' setup.py
+  '';
+
+  meta = with stdenv.lib; {
+    maintainers = with maintainers; [ cstrahan ];
+    license = licenses.bsd2;
+    homepage = "http://jparyani.github.io/pycapnp/index.html";
+    broken = true; # 2018-04-11
+  };
+
+}
diff --git a/pkgs/development/python-modules/pycarddav/default.nix b/pkgs/development/python-modules/pycarddav/default.nix
new file mode 100644
index 00000000000..c5c6182e4e0
--- /dev/null
+++ b/pkgs/development/python-modules/pycarddav/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+, vobject
+, lxml
+, requests
+, urwid
+, pyxdg
+}:
+
+buildPythonPackage rec {
+  version = "0.7.0";
+  pname = "pycarddav";
+  disabled = isPy3k || isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0avkrcpisfvhz103v7vmq2jd83hvmpqrb4mlbx6ikkk1wcvclsx8";
+  };
+
+  propagatedBuildInputs = [ vobject lxml requests urwid pyxdg ];
+
+  meta = with stdenv.lib; {
+    description = "Command-line interface carddav client";
+    homepage = http://lostpackets.de/pycarddav;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pycdio/default.nix b/pkgs/development/python-modules/pycdio/default.nix
new file mode 100644
index 00000000000..4c7dc52e79b
--- /dev/null
+++ b/pkgs/development/python-modules/pycdio/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, nose
+, pkgs
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "pycdio";
+  version = "2.0.0";
+  disabled = !isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1a1h0lmfl56a2a9xqhacnjclv81nv3906vdylalybxrk4bhrm3hj";
+  };
+
+  prePatch = "sed -i -e '/DRIVER_BSDI/d' pycdio.py";
+
+  preConfigure = ''
+    patchShebangs .
+  '';
+
+  nativeBuildInputs = [ pkgs.pkgconfig ];
+  buildInputs = [ setuptools nose pkgs.swig pkgs.libcdio ]
+    ++ stdenv.lib.optional stdenv.isDarwin pkgs.libiconv;
+
+  # Run tests using nosetests but first need to install the binaries
+  # to the root source directory where they can be found.
+  checkPhase = ''
+    ./setup.py install_lib -d .
+    nosetests
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.gnu.org/software/libcdio/;
+    description = "Wrapper around libcdio (CD Input and Control library)";
+    maintainers = with maintainers; [ rycee ];
+    license = licenses.gpl3Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pychef/default.nix b/pkgs/development/python-modules/pychef/default.nix
new file mode 100644
index 00000000000..f3c4109dd93
--- /dev/null
+++ b/pkgs/development/python-modules/pychef/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, requests
+, mock
+, unittest2
+}:
+
+buildPythonPackage rec {
+  pname    = "PyChef";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0zdz8lw545cd3a34cpib7mdwnad83gr2mrrxyj3v74h4zhwabhmg";
+  };
+
+  propagatedBuildInputs = [ six requests mock unittest2 ];
+
+  # FIXME
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/coderanger/pychef;
+    description = "Python implementation of a Chef API client";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pycodestyle/default.nix b/pkgs/development/python-modules/pycodestyle/default.nix
index 69b8e2bc0d1..43a8e6f9f45 100644
--- a/pkgs/development/python-modules/pycodestyle/default.nix
+++ b/pkgs/development/python-modules/pycodestyle/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildPythonPackage, fetchPypi }:
+{ lib, buildPythonPackage, fetchPypi, fetchpatch }:
 
 buildPythonPackage rec {
   pname = "pycodestyle";
@@ -9,6 +9,14 @@ buildPythonPackage rec {
     sha256 = "cbfca99bd594a10f674d0cd97a3d802a1fdef635d4361e1a2658de47ed261e3a";
   };
 
+  patches = [
+    # https://github.com/PyCQA/pycodestyle/pull/801
+    (fetchpatch {
+      url = https://github.com/PyCQA/pycodestyle/commit/397463014fda3cdefe8d6c9d117ae16d878dc494.patch;
+      sha256 = "01zask2y2gim5il9lcmlhr2qaadv9v7kaw1y619l8xbjhpbq2zh8";
+    })
+  ];
+
   meta = with lib; {
     description = "Python style guide checker (formerly called pep8)";
     homepage = https://pycodestyle.readthedocs.io;
diff --git a/pkgs/development/python-modules/pycryptopp/default.nix b/pkgs/development/python-modules/pycryptopp/default.nix
new file mode 100644
index 00000000000..785da4f6dc8
--- /dev/null
+++ b/pkgs/development/python-modules/pycryptopp/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+, setuptoolsDarcs
+, darcsver
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pycryptopp";
+  version = "0.6.0.1206569328141510525648634803928199668821045408958";
+  disabled = isPy3k || isPyPy;  # see https://bitbucket.org/pypy/pypy/issue/1190/
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0n90h1yg7bfvlbhnc54xb6dbqm286ykaksyg04kxlhyjgf8mhq8i";
+  };
+
+  # Prefer crypto++ library from the Nix store over the one that's included
+  # in the pycryptopp distribution.
+  preConfigure = "export PYCRYPTOPP_DISABLE_EMBEDDED_CRYPTOPP=1";
+
+  buildInputs = [ setuptoolsDarcs darcsver pkgs.cryptopp ];
+
+  meta = with stdenv.lib; {
+    homepage = http://allmydata.org/trac/pycryptopp;
+    description = "Python wrappers for the Crypto++ library";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pycurl2/default.nix b/pkgs/development/python-modules/pycurl2/default.nix
new file mode 100644
index 00000000000..9b04f2b6fcb
--- /dev/null
+++ b/pkgs/development/python-modules/pycurl2/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, isPy3k
+, simplejson
+, unittest2
+, nose
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pycurl2";
+  version = "7.20.0";
+  disabled = isPy3k;
+
+  src = fetchgit {
+    url = "https://github.com/Lispython/pycurl.git";
+    rev = "0f00109950b883d680bd85dc6e8a9c731a7d0d13";
+    sha256 = "1qmw3cm93kxj94s71a8db9lwv2cxmr2wjv7kp1r8zildwdzhaw7j";
+  };
+
+  # error: (6, "Couldn't resolve host 'h.wrttn.me'")
+  doCheck = false;
+
+  buildInputs = [ pkgs.curl simplejson unittest2 nose ];
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/pycurl2;
+    description = "A fork from original PycURL library that no maintained from 7.19.0";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pydenticon/default.nix b/pkgs/development/python-modules/pydenticon/default.nix
new file mode 100644
index 00000000000..f217b68808c
--- /dev/null
+++ b/pkgs/development/python-modules/pydenticon/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pillow
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "pydenticon";
+  version = "0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "035dawcspgjw2rksbnn863s7b0i9ac8cc1nshshvd1l837ir1czp";
+  };
+
+  propagatedBuildInputs = [ pillow mock ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/azaghal/pydenticon;
+    description = "Library for generating identicons. Port of Sigil (https://github.com/cupcake/sigil) with enhancements";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pydispatcher/default.nix b/pkgs/development/python-modules/pydispatcher/default.nix
new file mode 100644
index 00000000000..29d464587a0
--- /dev/null
+++ b/pkgs/development/python-modules/pydispatcher/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+  version = "2.0.5";
+  pname = "pydispatcher";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1bswbmhlbqdxlgbxlb6xrlm4k253sg8nvpl1whgsys8p3fg0cw2m";
+  };
+
+  buildInputs = [ pytest ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://pydispatcher.sourceforge.net/;
+    description = "Signal-registration and routing infrastructure for use in multiple contexts";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pydns/default.nix b/pkgs/development/python-modules/pydns/default.nix
new file mode 100644
index 00000000000..48bc3c3fa00
--- /dev/null
+++ b/pkgs/development/python-modules/pydns/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pydns";
+  version = "2.3.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0qnv7i9824nb5h9psj0rwzjyprwgfiwh5s5raa9avbqazy5hv5pi";
+  };
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python DNS library";
+    homepage = http://pydns.sourceforge.net/;
+    license = licenses.psfl;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pydot_ng/default.nix b/pkgs/development/python-modules/pydot_ng/default.nix
new file mode 100644
index 00000000000..a96c03bed4f
--- /dev/null
+++ b/pkgs/development/python-modules/pydot_ng/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyparsing
+, pytest
+, unittest2
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pydot_ng";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0h8k8wlzvnb40v4js7afgfyhp3wasmb1kg4gr6z7ck63iv8fq864";
+  };
+
+  buildInputs = [ pytest unittest2 ];
+  propagatedBuildInputs = [ pkgs.graphviz pyparsing ];
+
+  checkPhase = ''
+    mkdir test/my_tests
+    py.test test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://pypi.python.org/pypi/pydot-ng";
+    description = "Python 3-compatible update of pydot, a Python interface to Graphviz's Dot";
+    license = licenses.mit;
+    maintainers = [ maintainers.bcdarwin ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyelftools/default.nix b/pkgs/development/python-modules/pyelftools/default.nix
new file mode 100644
index 00000000000..cb3e77f0e8d
--- /dev/null
+++ b/pkgs/development/python-modules/pyelftools/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "pyelftools";
+  version = "0.24";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "17259kf6hwwsmizr5myp9jv3k9g5i3dvmnl8m646pfd5hpb9gpg9";
+  };
+
+  checkPhase = ''
+    ${python.interpreter} test/all_tests.py
+  '';
+
+  # Tests cannot pass against system-wide readelf
+  # https://github.com/eliben/pyelftools/issues/65
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A library for analyzing ELF files and DWARF debugging information";
+    homepage = https://github.com/eliben/pyelftools;
+    license = licenses.publicDomain;
+    maintainers = [ maintainers.igsha ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyenchant/default.nix b/pkgs/development/python-modules/pyenchant/default.nix
new file mode 100644
index 00000000000..f775612d90f
--- /dev/null
+++ b/pkgs/development/python-modules/pyenchant/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pyenchant";
+  version = "1.6.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "25c9d2667d512f8fc4410465fdd2e868377ca07eb3d56e2b6e534a86281d64d3";
+  };
+
+  propagatedBuildInputs = [ pkgs.enchant ];
+
+  patchPhase = let
+    path_hack_script = "s|LoadLibrary(e_path)|LoadLibrary('${pkgs.enchant}/lib/' + e_path)|";
+  in ''
+    sed -i "${path_hack_script}" enchant/_enchant.py
+
+    # They hardcode a bad path for Darwin in their library search code
+    substituteInPlace enchant/_enchant.py --replace '/opt/local/lib/' ""
+  '';
+
+  # dictionaries needed for tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "pyenchant: Python bindings for the Enchant spellchecker";
+    homepage = https://pythonhosted.org/pyenchant/;
+    license = licenses.lgpl21;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyexcelerator/default.nix b/pkgs/development/python-modules/pyexcelerator/default.nix
new file mode 100644
index 00000000000..2dfb5831f7f
--- /dev/null
+++ b/pkgs/development/python-modules/pyexcelerator/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pyexcelerator";
+  version = "0.6.4.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "18rcnc9f71lj06h8nppnv6idzb7xfmh2rp1zfqayskcg686lilrb";
+  };
+
+  disabled = isPy3k;
+
+  # No tests are included in archive
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "library for generating Excel 97/2000/XP/2003 and OpenOffice Calc compatible spreadsheets.";
+    homepage = "https://sourceforge.net/projects/pyexcelerator";
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ womfoo ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyfantom/default.nix b/pkgs/development/python-modules/pyfantom/default.nix
new file mode 100644
index 00000000000..1abf0407988
--- /dev/null
+++ b/pkgs/development/python-modules/pyfantom/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+}:
+
+buildPythonPackage rec {
+  pname = "pyfantom";
+  version = "unstable-2013-12-18";
+
+  src = fetchgit {
+    url = "http://git.ni.fr.eu.org/pyfantom.git";
+    sha256 = "1m53n8bxslq5zmvcf7i1xzsgq5bdsf1z529br5ypmj5bg0s86j4q";
+  };
+
+  # No tests included
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://pyfantom.ni.fr.eu.org/;
+    description = "Wrapper for the LEGO Mindstorms Fantom Driver";
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pygments-markdown-lexer/default.nix b/pkgs/development/python-modules/pygments-markdown-lexer/default.nix
new file mode 100644
index 00000000000..65688cf17bb
--- /dev/null
+++ b/pkgs/development/python-modules/pygments-markdown-lexer/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pygments
+}:
+
+buildPythonPackage rec {
+  pname = "pygments-markdown-lexer";
+  version = "0.1.0.dev39";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "1pzb5wy23q3fhs0rqzasjnw6hdzwjngpakb73i98cn0b8lk8q4jc";
+  };
+
+  propagatedBuildInputs = [ pygments ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/jhermann/pygments-markdown-lexer;
+    description = "Pygments Markdown Lexer – A Markdown lexer for Pygments to highlight Markdown code snippets";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyicu/default.nix b/pkgs/development/python-modules/pyicu/default.nix
new file mode 100644
index 00000000000..4b984566e91
--- /dev/null
+++ b/pkgs/development/python-modules/pyicu/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, six
+, fetchpatch
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "PyICU";
+  version = "2.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0pzss3l0b0vcsyr7wlqdd6pkcqldspajfgd9k2iijf6r152d2ln4";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = https://sources.debian.org/data/main/p/pyicu/2.0.3-1/debian/patches/icu_test.patch;
+      sha256 = "1iavdkyqixm9i753svl17barla93b7jzgkw09dn3hnggamx7zwx9";
+    })
+  ];
+
+  buildInputs = [ pkgs.icu pytest ];
+  propagatedBuildInputs = [ six ];
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/PyICU/;
+    description = "Python extension wrapping the ICU C++ API";
+    license = licenses.mit;
+    platforms = platforms.linux; # Maybe other non-darwin Unix
+    maintainers = [ maintainers.rycee ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyinotify/default.nix b/pkgs/development/python-modules/pyinotify/default.nix
new file mode 100644
index 00000000000..0e070d8a89d
--- /dev/null
+++ b/pkgs/development/python-modules/pyinotify/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pyinotify";
+  version = "0.9.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw";
+  };
+
+  # No tests distributed
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/seb-m/pyinotify/wiki;
+    description = "Monitor filesystems events on Linux platforms with inotify";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyinputevent/default.nix b/pkgs/development/python-modules/pyinputevent/default.nix
new file mode 100644
index 00000000000..4709cf0d116
--- /dev/null
+++ b/pkgs/development/python-modules/pyinputevent/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  name = "pyinputevent";
+  version = "2016-10-18";
+
+  src = fetchFromGitHub {
+    owner = "ntzrmtthihu777";
+    repo = "pyinputevent";
+    rev = "d2075fa5db5d8a402735fe788bb33cf9fe272a5b";
+    sha256 = "0rkis0xp8f9jc00x7jb9kbvhdla24z1vl30djqa6wy6fx0cr6sib";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/ntzrmtthihu777/pyinputevent";
+    description = "Python interface to the Input Subsystem's input_event and uinput";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyinsane2/default.nix b/pkgs/development/python-modules/pyinsane2/default.nix
new file mode 100644
index 00000000000..cf44538b746
--- /dev/null
+++ b/pkgs/development/python-modules/pyinsane2/default.nix
@@ -0,0 +1,45 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pillow
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pyinsane2";
+  version = "2.0.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "00d1wqb3w9bn1rxb2dwmdqbar2lr96izq855l5vzprc17dkgip3j";
+  };
+
+  # This is needed by setup.py regardless of whether tests are enabled.
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ pillow ];
+
+  postPatch = ''
+    # pyinsane2 forks itself, so we need to re-inject the PYTHONPATH.
+    sed -i -e '/os.putenv.*PYINSANE_DAEMON/ {
+      a \        os.putenv("PYTHONPATH", ":".join(sys.path))
+    }' pyinsane2/sane/abstract_proc.py
+
+    sed -i -e 's,"libsane.so.1","${pkgs.sane-backends}/lib/libsane.so",' \
+      pyinsane2/sane/rawapi.py
+  '';
+
+  # Tests require a scanner to be physically connected, so let's just do a
+  # quick check whether initialization works.
+  checkPhase = ''
+    python -c 'import pyinsane2; pyinsane2.init()'
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jflesch/pyinsane";
+    description = "Access and use image scanners";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pykickstart/default.nix b/pkgs/development/python-modules/pykickstart/default.nix
new file mode 100644
index 00000000000..98b26387d01
--- /dev/null
+++ b/pkgs/development/python-modules/pykickstart/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, urlgrabber
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "pykickstart";
+  version = "1.99.39";
+  md5_path = "d249f60aa89b1b4facd63f776925116d";
+
+  src = fetchurl rec {
+    url = "http://src.fedoraproject.org/repo/pkgs/pykickstart/"
+    + "${pname}-${version}.tar.gz/${md5_path}/${pname}-${version}.tar.gz";
+    sha256 = "e0d0f98ac4c5607e6a48d5c1fba2d50cc804de1081043f9da68cbfc69cad957a";
+  };
+
+  postPatch = ''
+    sed -i -e "s/for tst in tstList/for tst in sorted(tstList, \
+               key=lambda m: m.__name__)/" tests/baseclass.py
+  '';
+
+  propagatedBuildInputs = [ urlgrabber ];
+
+  checkPhase = ''
+    ${python.interpreter} tests/baseclass.py -vv
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://fedoraproject.org/wiki/Pykickstart";
+    description = "Read and write Fedora kickstart files";
+    license = licenses.gpl2Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pykka/default.nix b/pkgs/development/python-modules/pykka/default.nix
new file mode 100644
index 00000000000..4fe7816d4fd
--- /dev/null
+++ b/pkgs/development/python-modules/pykka/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+}:
+
+buildPythonPackage rec {
+  pname = "pykka";
+  version = "1.2.0";
+
+  src = fetchgit {
+    url = "https://github.com/jodal/pykka.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0qlfw1054ap0cha1m6dbnq51kjxqxaf338g7jwnwy33b3gr8x0hg";
+  };
+
+  # There are no tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://www.pykka.org;
+    description = "A Python implementation of the actor model";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ rickynils ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyliblo/default.nix b/pkgs/development/python-modules/pyliblo/default.nix
new file mode 100644
index 00000000000..9dc57aa9c72
--- /dev/null
+++ b/pkgs/development/python-modules/pyliblo/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pyliblo";
+  version = "0.9.2";
+  disabled = isPyPy;
+
+  src = fetchurl {
+    url = "http://das.nasophon.de/download/${pname}-${version}.tar.gz";
+    sha256 = "382ee7360aa00aeebf1b955eef65f8491366657a626254574c647521b36e0eb0";
+  };
+
+  propagatedBuildInputs = [ pkgs.liblo ];
+
+  meta = with stdenv.lib; {
+    homepage = http://das.nasophon.de/pyliblo/;
+    description = "Python wrapper for the liblo OSC library";
+    license = licenses.lgpl21;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pymaging/default.nix b/pkgs/development/python-modules/pymaging/default.nix
new file mode 100644
index 00000000000..34620c55c80
--- /dev/null
+++ b/pkgs/development/python-modules/pymaging/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  name = "pymaging";
+  version = "unstable-2016-11-16";
+
+  src = fetchFromGitHub {
+    owner = "ojii";
+    repo = "pymaging";
+    rev = "596a08fce5664e58d6e8c96847393fbe987783f2";
+    sha256 = "18g3n7kfrark30l4vzykh0gdbnfv5wb1zvvjbs17sj6yampypn38";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Pure Python imaging library with Python 2.6, 2.7, 3.1+ support";
+    homepage    = http://pymaging.rtfd.org;
+    license     = licenses.mit;
+    maintainers = with maintainers; [ mic92 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pymaging_png/default.nix b/pkgs/development/python-modules/pymaging_png/default.nix
new file mode 100644
index 00000000000..6756f9deee3
--- /dev/null
+++ b/pkgs/development/python-modules/pymaging_png/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pymaging
+}:
+
+buildPythonPackage rec {
+  name = "pymaging-png";
+  version = "unstable-2016-11-16";
+
+  src = fetchFromGitHub {
+    owner = "ojii";
+    repo = "pymaging-png";
+    rev = "83d85c44e4b2342818e6c068065e031a9f81bb9f";
+    sha256 = "1mknxvsq0lr1ffm8amzm3w2prn043c6ghqgpxlkw83r988p5fn57";
+  };
+
+  propagatedBuildInputs = [ pymaging ];
+
+  meta = with stdenv.lib; {
+    description = "Pure Python imaging library with Python 2.6, 2.7, 3.1+ support";
+    homepage    = https://github.com/ojii/pymaging-png/;
+    license     = licenses.mit;
+    maintainers = with maintainers; [ mic92 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pymongo/2_9_1.nix b/pkgs/development/python-modules/pymongo/2_9_1.nix
new file mode 100644
index 00000000000..181d99a93f6
--- /dev/null
+++ b/pkgs/development/python-modules/pymongo/2_9_1.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pymongo";
+  version = "2.9.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1nrr1fxyrlxd69bgxl7bvaj2j4z7v3zaciij5sbhxg0vqiz6ny50";
+  };
+
+  # Tests call a running mongodb instance
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/mongodb/mongo-python-driver;
+    license = licenses.asl20;
+    description = "Python driver for MongoDB ";
+  };
+
+}
diff --git a/pkgs/development/python-modules/pynac/default.nix b/pkgs/development/python-modules/pynac/default.nix
new file mode 100644
index 00000000000..0839cb1aa4a
--- /dev/null
+++ b/pkgs/development/python-modules/pynac/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+}:
+
+buildPythonPackage rec {
+  pname = "pynac";
+  version = "0.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/pynac/pynac/pynac-0.2/pynac-0.2.tar.gz";
+    sha256 = "0avzqqcxl54karjmla9jbsyid98mva36lxahwmrsx5h40ys2ggxp";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/se-esss-litterbox/Pynac;
+    description = "A Python wrapper around the Dynac charged particle simulator";
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pync/default.nix b/pkgs/development/python-modules/pync/default.nix
new file mode 100644
index 00000000000..ad02b3f2f2f
--- /dev/null
+++ b/pkgs/development/python-modules/pync/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+, dateutil
+, pkgs
+}:
+
+buildPythonPackage rec {
+  version  = "1.4";
+  pname = "pync";
+  disabled = ! isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0lc1x0pai85avm1r452xnvxc12wijnhz87xv20yp3is9fs6rnkrh";
+  };
+
+  buildInputs = [ pkgs.coreutils ];
+  propagatedBuildInputs = [ dateutil ];
+
+  preInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    sed -i 's|^\([ ]*\)self.bin_path.*$|\1self.bin_path = "${pkgs.terminal-notifier}/bin/terminal-notifier"|' build/lib/pync/TerminalNotifier.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Python Wrapper for Mac OS 10.8 Notification Center";
+    homepage    = https://pypi.python.org/pypi/pync/1.4;
+    license     = licenses.mit;
+    platforms   = platforms.darwin;
+    maintainers = with maintainers; [ lovek323 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pynzb/default.nix b/pkgs/development/python-modules/pynzb/default.nix
new file mode 100644
index 00000000000..4225d30c6fe
--- /dev/null
+++ b/pkgs/development/python-modules/pynzb/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "pynzb";
+  version = "0.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0735b3889a1174bbb65418ee503629d3f5e4a63f04b16f46ffba18253ec3ef17";
+  };
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest -s pynzb -t .
+  '';
+
+  # Can't get them working
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/ericflo/pynzb;
+    description = "Unified API for parsing NZB files";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyopengl/default.nix b/pkgs/development/python-modules/pyopengl/default.nix
new file mode 100644
index 00000000000..11a51f354d9
--- /dev/null
+++ b/pkgs/development/python-modules/pyopengl/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pkgs
+, pillow
+}:
+
+buildPythonPackage rec {
+  pname = "pyopengl";
+  version = "3.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9b47c5c3a094fa518ca88aeed35ae75834d53e4285512c61879f67a48c94ddaf";
+  };
+
+  propagatedBuildInputs = [ pkgs.libGLU_combined pkgs.freeglut pillow ];
+
+  patchPhase = let
+    ext = stdenv.hostPlatform.extensions.sharedLibrary; in ''
+    substituteInPlace OpenGL/platform/glx.py \
+      --replace "'GL'" "'${pkgs.libGL}/lib/libGL${ext}'" \
+      --replace "'GLU'" "'${pkgs.libGLU}/lib/libGLU${ext}'" \
+      --replace "'glut'" "'${pkgs.freeglut}/lib/libglut${ext}'"
+    substituteInPlace OpenGL/platform/darwin.py \
+      --replace "'OpenGL'" "'${pkgs.libGL}/lib/libGL${ext}'" \
+      --replace "'GLUT'" "'${pkgs.freeglut}/lib/libglut${ext}'"
+  '';
+
+  # Need to fix test runner
+  # Tests have many dependencies
+  # Extension types could not be found.
+  # Should run test suite from $out/${python.sitePackages}
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://pyopengl.sourceforge.net/;
+    description = "PyOpenGL, the Python OpenGL bindings";
+    longDescription = ''
+      PyOpenGL is the cross platform Python binding to OpenGL and
+      related APIs.  The binding is created using the standard (in
+      Python 2.5) ctypes library, and is provided under an extremely
+      liberal BSD-style Open-Source license.
+    '';
+    license = "BSD-style";
+    platforms = platforms.mesaPlatforms;
+  };
+
+
+}
diff --git a/pkgs/development/python-modules/pyparted/default.nix b/pkgs/development/python-modules/pyparted/default.nix
new file mode 100644
index 00000000000..1db09842fa9
--- /dev/null
+++ b/pkgs/development/python-modules/pyparted/default.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPyPy
+, pkgs
+, python
+}:
+
+buildPythonPackage rec {
+  name = "pyparted-${version}";
+  version = "3.10.7";
+  disabled = isPyPy;
+
+  src = pkgs.fetchurl {
+    url = "https://github.com/rhinstaller/pyparted/archive/v${version}.tar.gz";
+    sha256 = "0c9ljrdggwawd8wdzqqqzrna9prrlpj6xs59b0vkxzip0jkf652r";
+  };
+
+  postPatch = ''
+    sed -i -e 's|mke2fs|${pkgs.e2fsprogs}/bin/mke2fs|' tests/baseclass.py
+    sed -i -e '
+      s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
+    ' tests/test__ped_ped.py
+  '' + stdenv.lib.optionalString stdenv.isi686 ''
+    # remove some integers in this test case which overflow on 32bit systems
+    sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
+      tests/test__ped_ped.py
+  '';
+
+  preConfigure = ''
+    PATH="${pkgs.parted}/sbin:$PATH"
+  '';
+
+  nativeBuildInputs = [ pkgs.pkgconfig ];
+  propagatedBuildInputs = [ pkgs.parted ];
+
+  checkPhase = ''
+    patchShebangs Makefile
+    make test PYTHON=${python.executable}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://fedorahosted.org/pyparted/";
+    description = "Python interface for libparted";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pypdf/default.nix b/pkgs/development/python-modules/pypdf/default.nix
new file mode 100644
index 00000000000..5842e1c510a
--- /dev/null
+++ b/pkgs/development/python-modules/pypdf/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pyPdf";
+  version = "1.13";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "3aede4c3c9c6ad07c98f059f90db0b09ed383f7c791c46100f649e1cabda0e3b";
+  };
+
+  # Not supported. Package is no longer maintained.
+  disabled = isPy3k;
+
+  meta = with stdenv.lib; {
+    description = "Pure-Python PDF toolkit";
+    homepage = "http://pybrary.net/pyPdf/";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pypdf2/default.nix b/pkgs/development/python-modules/pypdf2/default.nix
new file mode 100644
index 00000000000..1c3b908396e
--- /dev/null
+++ b/pkgs/development/python-modules/pypdf2/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, glibcLocales
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "PyPDF2";
+  version = "1.26.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "11a3aqljg4sawjijkvzhs3irpw0y67zivqpbjpm065ha5wpr13z2";
+  };
+
+  LC_ALL = "en_US.UTF-8";
+  buildInputs = [ glibcLocales ];
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover -s Tests
+  '';
+
+  # Tests broken on Python 3.x
+  doCheck = !(isPy3k);
+
+  meta = with stdenv.lib; {
+    description = "A Pure-Python library built as a PDF toolkit";
+    homepage = "http://mstamy2.github.com/PyPDF2/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ desiderius vrthra ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pypeg2/default.nix b/pkgs/development/python-modules/pypeg2/default.nix
new file mode 100644
index 00000000000..de2ddc98a8e
--- /dev/null
+++ b/pkgs/development/python-modules/pypeg2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  version = "2.15.2";
+  pname = "pypeg2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b";
+  };
+
+  checkPhase = ''
+    # The tests assume that test_xmlast does not run before test_pyPEG2.
+    python -m unittest pypeg2.test.test_pyPEG2 pypeg2.test.test_xmlast
+  '';
+
+  #https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
+  doCheck = !isPy3k;
+
+  meta = with stdenv.lib; {
+    description = "PEG parser interpreter in Python";
+    homepage = http://fdik.org/pyPEG;
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyplatec/default.nix b/pkgs/development/python-modules/pyplatec/default.nix
new file mode 100644
index 00000000000..a17c650e0f0
--- /dev/null
+++ b/pkgs/development/python-modules/pyplatec/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "PyPlatec";
+  version = "1.4.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0kqx33flcrrlipccmqs78d14pj5749bp85b6k5fgaq2c7yzz02jg";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Library to simulate plate tectonics with Python bindings";
+    homepage    = https://github.com/Mindwerks/plate-tectonics;
+    license     = licenses.lgpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyptlib/default.nix b/pkgs/development/python-modules/pyptlib/default.nix
new file mode 100644
index 00000000000..6349b56b474
--- /dev/null
+++ b/pkgs/development/python-modules/pyptlib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pyptlib";
+  version = "0.0.6";
+  disabled = isPyPy || isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "01y6vbwncqb0hxlnin6whd9wrrm5my4qzjhk76fnix78v7ip515r";
+  };
+
+  doCheck = false;  # No such file or directory errors on 32bit
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.org/project/pyptlib/;
+    description = "A python implementation of the Pluggable Transports for Circumvention specification for Tor";
+    license = licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyqtgraph/default.nix b/pkgs/development/python-modules/pyqtgraph/default.nix
new file mode 100644
index 00000000000..5eb24f830c7
--- /dev/null
+++ b/pkgs/development/python-modules/pyqtgraph/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, scipy
+, numpy
+, pyqt4
+, pyopengl
+}:
+
+buildPythonPackage rec {
+  pname = "pyqtgraph";
+  version = "0.9.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "188pcxf3sxxjf0aipjn820lx2rf9f42zzp0sibmcl90955a3ipf1";
+  };
+
+  propagatedBuildInputs = [ scipy numpy pyqt4 pyopengl ];
+
+  doCheck = false;  # "PyQtGraph requires either PyQt4 or PySide; neither package could be imported."
+
+  meta = with stdenv.lib; {
+    description = "Scientific Graphics and GUI Library for Python";
+    homepage = http://www.pyqtgraph.org/;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ koral ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyquery/default.nix b/pkgs/development/python-modules/pyquery/default.nix
new file mode 100644
index 00000000000..70f144b6258
--- /dev/null
+++ b/pkgs/development/python-modules/pyquery/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cssselect
+, lxml
+, webob
+}:
+
+buildPythonPackage rec {
+  pname = "pyquery";
+  version = "1.2.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "00p6f1dfma65192hc72dxd506491lsq3g5wgxqafi1xpg2w1xia6";
+  };
+
+  propagatedBuildInputs = [ cssselect lxml webob ];
+
+  # circular dependency on webtest
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/gawel/pyquery;
+    description = "A jquery-like library for python";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyreport/default.nix b/pkgs/development/python-modules/pyreport/default.nix
new file mode 100644
index 00000000000..d75119b6e32
--- /dev/null
+++ b/pkgs/development/python-modules/pyreport/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pyreport";
+  version = "0.3.4c";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1584607596b7b310bf0b6ce79f424bd44238a017fd870aede11cd6732dbe0d4d";
+  };
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/pyreport;
+    license = licenses.bsd0;
+    description = "Pyreport makes notes out of a python script";
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyrsistent/default.nix b/pkgs/development/python-modules/pyrsistent/default.nix
new file mode 100644
index 00000000000..376b306cbb2
--- /dev/null
+++ b/pkgs/development/python-modules/pyrsistent/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pytest
+, hypothesis
+}:
+
+buildPythonPackage rec {
+  pname = "pyrsistent";
+  version = "0.11.12";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0jgyhkkq36wn36rymn4jiyqh2vdslmradq4a2mjkxfbk2cz6wpi5";
+  };
+
+  propagatedBuildInputs = [ six ];
+  buildInputs = [ pytest hypothesis ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/tobgu/pyrsistent/;
+    description = "Persistent/Functional/Immutable data structures";
+    license = licenses.mit;
+    maintainers = with maintainers; [ desiderius ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyrss2gen/default.nix b/pkgs/development/python-modules/pyrss2gen/default.nix
new file mode 100644
index 00000000000..1c65d7ca5c7
--- /dev/null
+++ b/pkgs/development/python-modules/pyrss2gen/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "PyRSS2Gen";
+  version = "1.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r";
+  };
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://www.dalkescientific.om/Python/PyRSS2Gen.html;
+    description = "Library for generating RSS 2.0 feeds";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysaml2/default.nix b/pkgs/development/python-modules/pysaml2/default.nix
new file mode 100644
index 00000000000..1e9ce18afb9
--- /dev/null
+++ b/pkgs/development/python-modules/pysaml2/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, repoze_who
+, paste
+, cryptography
+, pycrypto
+, pyopenssl
+, ipaddress
+, six
+, cffi
+, idna
+, enum34
+, pytz
+, setuptools
+, zope_interface
+, dateutil
+, requests
+, pyasn1
+, webob
+, decorator
+, pycparser
+, defusedxml
+, Mako
+, pytest
+, memcached
+, pymongo
+, mongodict
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pysaml2";
+  version = "3.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0y2iw1dddcvi13xjh3l52z1mvnrbc41ik9k4nn7lwj8x5kimnk9n";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "CVE-2016-10127.patch";
+      url = "https://sources.debian.net/data/main/p/python-pysaml2/3.0.0-5/debian/patches/fix-xxe-in-xml-parsing.patch";
+      sha256 = "184lkwdayjqiahzsn4yp15parqpmphjsb1z7zwd636jvarxqgs2q";
+    })
+  ];
+
+  propagatedBuildInputs = [ repoze_who paste cryptography pycrypto pyopenssl ipaddress six cffi idna enum34 pytz setuptools zope_interface dateutil requests pyasn1 webob decorator pycparser defusedxml ];
+  buildInputs = [ Mako pytest memcached pymongo mongodict pkgs.xmlsec ];
+
+  preConfigure = ''
+    sed -i 's/pymongo==3.0.1/pymongo/' setup.py
+  '';
+
+  # 16 failed, 427 passed, 17 error in 88.85 seconds
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/rohe/pysaml2";
+    description = "Python implementation of SAML Version 2 Standard";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyscss/default.nix b/pkgs/development/python-modules/pyscss/default.nix
new file mode 100644
index 00000000000..cf63d3660ef
--- /dev/null
+++ b/pkgs/development/python-modules/pyscss/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, six
+, enum34
+, pathlib
+, ordereddict
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "pyScss";
+  version = "1.3.5";
+
+  src = fetchFromGitHub {
+    sha256 = "0lfsan74vcw6dypb196gmbprvlbran8p7w6czy8hyl2b1l728mhz";
+    rev = "v1.3.5";
+    repo = "pyScss";
+    owner = "Kronuz";
+  };
+
+  checkInputs = [ pytest ];
+
+  propagatedBuildInputs = [ six ]
+    ++ (stdenv.lib.optionals (pythonOlder "3.4") [ enum34 pathlib ])
+    ++ (stdenv.lib.optionals (pythonOlder "2.7") [ ordereddict ]);
+
+  checkPhase = ''
+    py.test
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Scss compiler for Python";
+    homepage = http://pyscss.readthedocs.org/en/latest/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysendfile/default.nix b/pkgs/development/python-modules/pysendfile/default.nix
new file mode 100644
index 00000000000..b49ec5030f9
--- /dev/null
+++ b/pkgs/development/python-modules/pysendfile/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "pysendfile";
+  version = "2.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji";
+  };
+
+  checkPhase = ''
+    # this test takes too long
+    sed -i 's/test_big_file/noop/' test/test_sendfile.py
+    ${python.executable} test/test_sendfile.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/giampaolo/pysendfile";
+    description = "A Python interface to sendfile(2)";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysftp/default.nix b/pkgs/development/python-modules/pysftp/default.nix
new file mode 100644
index 00000000000..0ed5790a519
--- /dev/null
+++ b/pkgs/development/python-modules/pysftp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, paramiko
+}:
+
+buildPythonPackage rec {
+  pname = "pysftp";
+  version = "0.2.9";
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0jl5qix5cxzrv4lb8rfpjkpcghbkacnxkb006ikn7mkl5s05mxgv";
+  };
+
+  propagatedBuildInputs = [ paramiko ];
+
+  meta = with stdenv.lib; {
+    homepage = https://bitbucket.org/dundeemt/pysftp;
+    description = "A friendly face on SFTP";
+    license = licenses.mit;
+    longDescription = ''
+      A simple interface to SFTP. The module offers high level abstractions
+      and task based routines to handle your SFTP needs. Checkout the Cook
+      Book, in the docs, to see what pysftp can do for you.
+    '';
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysmi/default.nix b/pkgs/development/python-modules/pysmi/default.nix
new file mode 100644
index 00000000000..0471e948f2f
--- /dev/null
+++ b/pkgs/development/python-modules/pysmi/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ply
+}:
+
+buildPythonPackage rec {
+  version = "0.0.7";
+  pname = "pysmi";
+
+ src = fetchPypi {
+    inherit pname version;
+    sha256 = "05h1lv2a687b9qjc399w6728ildx7majbn338a0c4k3gw6wnv7wr";
+  };
+
+  propagatedBuildInputs = [ ply ];
+
+  # Tests require pysnmp, which in turn requires pysmi => infinite recursion
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://pysmi.sf.net;
+    description = "SNMP SMI/MIB Parser";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ koral ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysnmp/default.nix b/pkgs/development/python-modules/pysnmp/default.nix
new file mode 100644
index 00000000000..22fdf17b3b6
--- /dev/null
+++ b/pkgs/development/python-modules/pysnmp/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyasn1
+, pycrypto
+, pysmi
+}:
+
+buildPythonPackage rec {
+  version = "4.3.2";
+  pname = "pysnmp";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0xw925f3p02vdpb3f0ls60qj59w44aiyfs3s0nhdr9vsy4fxhavw";
+  };
+
+  # NameError: name 'mibBuilder' is not defined
+  doCheck = false;
+
+  propagatedBuildInputs = [ pyasn1 pycrypto pysmi ];
+
+  meta = with stdenv.lib; {
+    homepage = http://pysnmp.sf.net;
+    description = "A pure-Python SNMPv1/v2c/v3 library";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ koral ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysocks/default.nix b/pkgs/development/python-modules/pysocks/default.nix
new file mode 100644
index 00000000000..83437cd1201
--- /dev/null
+++ b/pkgs/development/python-modules/pysocks/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "pysocks";
+  version = "1.6.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0h9zwr8z9j6l313ns335irjrkk6qnk4qzvwmjqygrp7mbwi9lh82";
+  };
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "SOCKS module for Python";
+    license     = licenses.bsd3;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyspotify/default.nix b/pkgs/development/python-modules/pyspotify/default.nix
new file mode 100644
index 00000000000..39671041d8a
--- /dev/null
+++ b/pkgs/development/python-modules/pyspotify/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, cffi
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pyspotify";
+  version = "2.0.5";
+
+  src = fetchurl {
+    url = "https://github.com/mopidy/pyspotify/archive/v${version}.tar.gz";
+    sha256 = "1ilbz2w1gw3f1bpapfa09p84dwh08bf7qcrkmd3aj0psz57p2rls";
+  };
+
+  propagatedBuildInputs = [ cffi ];
+  buildInputs = [ pkgs.libspotify ];
+
+  # python zip complains about old timestamps
+  preConfigure = ''
+    find -print0 | xargs -0 touch
+  '';
+
+  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    find "$out" -name _spotify.so -exec \
+        install_name_tool -change \
+        @loader_path/../Frameworks/libspotify.framework/libspotify \
+        ${pkgs.libspotify}/lib/libspotify.dylib \
+        {} \;
+  '';
+
+  # There are no tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage    = http://pyspotify.mopidy.com;
+    description = "A Python interface to Spotify’s online music streaming service";
+    license     = licenses.unfree;
+    maintainers = with maintainers; [ lovek323 rickynils ];
+    platforms   = platforms.unix;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysqlite/default.nix b/pkgs/development/python-modules/pysqlite/default.nix
new file mode 100644
index 00000000000..c1118aeeecd
--- /dev/null
+++ b/pkgs/development/python-modules/pysqlite/default.nix
@@ -0,0 +1,57 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pysqlite";
+  version = "2.8.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "17d3335863e8cf8392eea71add33dab3f96d060666fe68ab7382469d307f4490";
+  };
+
+  # Need to use the builtin sqlite3 on Python 3
+  disabled = isPy3k;
+
+  # Since the `.egg' file is zipped, the `NEEDED' of the `.so' files
+  # it contains is not taken into account.  Thus, we must explicitly make
+  # it a propagated input.
+  propagatedBuildInputs = [ pkgs.sqlite ];
+
+  patchPhase = ''
+    substituteInPlace "setup.cfg"                                     \
+            --replace "/usr/local/include" "${pkgs.sqlite.dev}/include"   \
+            --replace "/usr/local/lib" "${pkgs.sqlite.out}/lib"
+    ${stdenv.lib.optionalString (!stdenv.isDarwin) ''export LDSHARED="$CC -pthread -shared"''}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://pysqlite.org/;
+    description = "Python bindings for the SQLite embedded relational database engine";
+    longDescription = ''
+      pysqlite is a DB-API 2.0-compliant database interface for SQLite.
+
+      SQLite is a relational database management system contained in
+      a relatively small C library.  It is a public domain project
+      created by D. Richard Hipp.  Unlike the usual client-server
+      paradigm, the SQLite engine is not a standalone process with
+      which the program communicates, but is linked in and thus
+      becomes an integral part of the program.  The library
+      implements most of SQL-92 standard, including transactions,
+      triggers and most of complex queries.
+
+      pysqlite makes this powerful embedded SQL engine available to
+      Python programmers.  It stays compatible with the Python
+      database API specification 2.0 as much as possible, but also
+      exposes most of SQLite's native API, so that it is for example
+      possible to create user-defined SQL functions and aggregates
+      in Python.
+    '';
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pysvn/default.nix b/pkgs/development/python-modules/pysvn/default.nix
new file mode 100644
index 00000000000..2dcb7908522
--- /dev/null
+++ b/pkgs/development/python-modules/pysvn/default.nix
@@ -0,0 +1,58 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, pkgs
+, isPy3k
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "pysvn";
+  version = "1.8.0";
+  disabled = isPy3k;
+  format = "other";
+
+  src = fetchurl {
+    url = "http://pysvn.barrys-emacs.org/source_kits/${pname}-${version}.tar.gz";
+    sha256 = "0srjr2qgxfs69p65d9vvdib2lc142x10w8afbbdrqs7dhi46yn9r";
+  };
+
+  buildInputs = [ pkgs.subversion pkgs.apr pkgs.aprutil pkgs.expat pkgs.neon pkgs.openssl ]
+    ++ (if stdenv.isLinux then [pkgs.e2fsprogs] else []);
+
+  # There seems to be no way to pass that path to configure.
+  NIX_CFLAGS_COMPILE="-I${pkgs.aprutil.dev}/include/apr-1";
+
+  preConfigure = ''
+    cd Source
+    ${python.interpreter} setup.py backport
+    ${python.interpreter} setup.py configure \
+      --apr-inc-dir=${pkgs.apr.dev}/include \
+      --apu-inc-dir=${pkgs.aprutil.dev}/include \
+      --apr-lib-dir=${pkgs.apr.out}/lib \
+      --svn-lib-dir=${pkgs.subversion.out}/lib \
+      --svn-bin-dir=${pkgs.subversion.out}/bin \
+      --svn-root-dir=${pkgs.subversion.dev}
+  '' + (if !stdenv.isDarwin then "" else ''
+    sed -i -e 's|libpython2.7.dylib|lib/libpython2.7.dylib|' Makefile
+  '');
+
+  checkPhase = "make -C ../Tests";
+
+  installPhase = ''
+    dest=$(toPythonPath $out)/pysvn
+    mkdir -p $dest
+    cp pysvn/__init__.py $dest/
+    cp pysvn/_pysvn*.so $dest/
+    mkdir -p $out/share/doc
+    mv -v ../Docs $out/share/doc/pysvn-1.7.2
+    rm -v $out/share/doc/pysvn-1.7.2/generate_cpp_docs_from_html_docs.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Python bindings for Subversion";
+    homepage = http://pysvn.tigris.org/;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pytest/default.nix b/pkgs/development/python-modules/pytest/default.nix
index cdfdb8a64c9..ad8c8d9ad0d 100644
--- a/pkgs/development/python-modules/pytest/default.nix
+++ b/pkgs/development/python-modules/pytest/default.nix
@@ -3,7 +3,7 @@
 , atomicwrites, mock, writeText, pathlib2
 }:
 buildPythonPackage rec {
-  version = "3.7.4";
+  version = "3.9.3";
   pname = "pytest";
 
   preCheck = ''
@@ -13,7 +13,7 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "2d7c49e931316cc7d1638a3e5f54f5d7b4e5225972b3c9838f3584788d27f349";
+    sha256 = "a9e5e8d7ab9d5b0747f37740276eb362e6a76275d76cebbb52c6049d93b475db";
   };
 
   checkInputs = [ hypothesis mock ];
@@ -24,7 +24,8 @@ buildPythonPackage rec {
 
   checkPhase = ''
     runHook preCheck
-    $out/bin/py.test -x testing/
+    # Re-enable warnings because the test suite relies on it.
+    PYTHONWARNINGS= $out/bin/py.test -x testing/
     runHook postCheck
   '';
 
diff --git a/pkgs/development/python-modules/python-etcd/default.nix b/pkgs/development/python-modules/python-etcd/default.nix
new file mode 100644
index 00000000000..d1780fc782b
--- /dev/null
+++ b/pkgs/development/python-modules/python-etcd/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, mock
+, pyopenssl
+, urllib3
+, dnspython
+}:
+
+buildPythonPackage rec {
+  pname = "python-etcd";
+  version = "0.4.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "cf53262b3890d185fe637eed15fe39c8d7a8261864ddcd7037b22c961456d7fc";
+  };
+
+  buildInputs = [ nose mock pyopenssl ];
+
+  propagatedBuildInputs = [ urllib3 dnspython ];
+
+  postPatch = ''
+    sed -i '19s/dns/"dnspython"/' setup.py
+  '';
+
+  # Some issues with etcd not in path even though most tests passed
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A python client for Etcd";
+    homepage = https://github.com/jplana/python-etcd;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/python-jenkins/default.nix b/pkgs/development/python-modules/python-jenkins/default.nix
new file mode 100644
index 00000000000..8509caa2794
--- /dev/null
+++ b/pkgs/development/python-modules/python-jenkins/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, mock
+, pbr
+, pyyaml
+, six
+, multi_key_dict
+, testtools
+, testscenarios
+, testrepository
+, kerberos
+}:
+
+buildPythonPackage rec {
+  pname = "python-jenkins";
+  version = "0.4.14";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1n8ikvd9jf4dlki7nqlwjlsn8wpsx4x7wg4h3d6bkvyvhwwf8yqf";
+  };
+
+  patchPhase = ''
+    sed -i 's@python@${python.interpreter}@' .testr.conf
+  '';
+
+  buildInputs = [ mock ];
+  propagatedBuildInputs = [ pbr pyyaml six multi_key_dict testtools testscenarios testrepository kerberos ];
+
+  meta = with stdenv.lib; {
+    description = "Python bindings for the remote Jenkins API";
+    homepage = https://pypi.python.org/pypi/python-jenkins;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/python-libarchive/default.nix b/pkgs/development/python-modules/python-libarchive/default.nix
new file mode 100644
index 00000000000..bae94191fc0
--- /dev/null
+++ b/pkgs/development/python-modules/python-libarchive/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPy3k
+, pkgs
+}:
+
+buildPythonPackage rec {
+  version = "3.1.2-1";
+  pname = "libarchive";
+  disabled = isPy3k;
+
+  src = fetchurl {
+    url = "http://python-libarchive.googlecode.com/files/python-libarchive-${version}.tar.gz";
+    sha256 = "0j4ibc4mvq64ljya9max8832jafi04jciff9ia9qy0xhhlwkcx8x";
+  };
+
+  propagatedBuildInputs = [ pkgs.libarchive.lib ];
+
+  meta = with stdenv.lib; {
+    description = "Multi-format archive and compression library";
+    homepage = https://libarchive.org/;
+    license = licenses.bsd0;
+    broken = true;
+  };
+
+}
diff --git a/pkgs/development/python-modules/python-wifi/default.nix b/pkgs/development/python-modules/python-wifi/default.nix
new file mode 100644
index 00000000000..7e4f2ebccf0
--- /dev/null
+++ b/pkgs/development/python-modules/python-wifi/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "python-wifi";
+  version = "0.6.1";
+  disabled = !isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "tar.bz2";
+    sha256 = "149c3dznb63d82143cz5hqdim0mqjysz6p3yk0zv271vq3xnmzvv";
+  };
+
+  meta = with stdenv.lib; {
+    inherit version;
+    description = "Read & write wireless card capabilities using the Linux Wireless Extensions";
+    homepage = http://pythonwifi.tuxfamily.org/;
+    # From the README: "pythonwifi is licensed under LGPLv2+, however, the
+    # examples (e.g. iwconfig.py and iwlist.py) are licensed under GPLv2+."
+    license = with licenses; [ lgpl2Plus gpl2Plus ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/python3pika/default.nix b/pkgs/development/python-modules/python3pika/default.nix
new file mode 100644
index 00000000000..4f75acff02e
--- /dev/null
+++ b/pkgs/development/python-modules/python3pika/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, nose
+, mock
+, pyyaml
+, unittest2
+}:
+
+buildPythonPackage rec {
+  pname = "python3-pika";
+  version = "0.9.14";
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1c3hifwvn04kvlja88iawf0awyz726jynwnpcb6gn7376b4nfch7";
+  };
+
+  # Unit tests adds dependencies on pyev, tornado and twisted (and twisted is disabled for Python 3)
+  doCheck = false;
+
+  buildInputs = [ nose mock pyyaml ];
+  propagatedBuildInputs = [ unittest2 ];
+
+  meta = with stdenv.lib; {
+    homepage = https://pika.readthedocs.org/;
+    description = "Pika Python AMQP Client Library";
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/python_keyczar/default.nix b/pkgs/development/python-modules/python_keyczar/default.nix
new file mode 100644
index 00000000000..b2cbe101f3d
--- /dev/null
+++ b/pkgs/development/python-modules/python_keyczar/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyasn1
+, pycrypto
+}:
+
+buildPythonPackage rec {
+  pname = "python-keyczar";
+  version = "0.71c";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "18mhiwqq6vp65ykmi8x3i5l3gvrvrrr8z2kv11z1rpixmyr7sw1p";
+  };
+
+  buildInputs = [ pyasn1 pycrypto ];
+
+  meta = with stdenv.lib; {
+    description = "Toolkit for safe and simple cryptography";
+    homepage    = https://pypi.python.org/pypi/python-keyczar;
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ lovek323 ];
+    platforms   = platforms.unix;
+  };
+
+}
diff --git a/pkgs/development/python-modules/python_mimeparse/default.nix b/pkgs/development/python-modules/python_mimeparse/default.nix
new file mode 100644
index 00000000000..755a73d2909
--- /dev/null
+++ b/pkgs/development/python-modules/python_mimeparse/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "python-mimeparse";
+  version = "0.1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w";
+  };
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges";
+    homepage = https://code.google.com/p/mimeparse/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/python_statsd/default.nix b/pkgs/development/python-modules/python_statsd/default.nix
new file mode 100644
index 00000000000..744894212c7
--- /dev/null
+++ b/pkgs/development/python-modules/python_statsd/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, mock
+, nose
+, coverage
+}:
+
+buildPythonPackage rec {
+  pname = "python-statsd";
+  version = "1.6.0";
+  disabled = isPy3k;  # next release will be py3k compatible
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "3d2fc153e0d894aa9983531ef47d20d75bd4ee9fd0e46a9d82f452dde58a0a71";
+  };
+
+  buildInputs = [ mock nose coverage ];
+
+  meta = with stdenv.lib; {
+    description = "A client for Etsy's node-js statsd server";
+    homepage = https://github.com/WoLpH/python-statsd;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyutil/default.nix b/pkgs/development/python-modules/pyutil/default.nix
new file mode 100644
index 00000000000..8f875acac1b
--- /dev/null
+++ b/pkgs/development/python-modules/pyutil/default.nix
@@ -0,0 +1,50 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptoolsDarcs
+, setuptoolsTrial
+, simplejson
+, zbase32
+, argparse
+, twisted
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "pyutil";
+  version = "2.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1fsg9yz5mi2sb0h6c1vvcqchx56i89nbvdb5gfgv1ia3b2w5ra8c";
+  };
+
+  buildInputs = [ setuptoolsDarcs setuptoolsTrial ] ++ (if doCheck then [ simplejson ] else []);
+  propagatedBuildInputs = [ zbase32 argparse twisted ];
+
+  # Tests fail because they try to write new code into the twisted
+  # package, apparently some kind of plugin.
+  doCheck = false;
+
+  prePatch = stdenv.lib.optionalString isPyPy ''
+    grep -rl 'utf-8-with-signature-unix' ./ | xargs sed -i -e "s|utf-8-with-signature-unix|utf-8|g"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Pyutil, a collection of mature utilities for Python programmers";
+
+    longDescription = ''
+      These are a few data structures, classes and functions which
+      we've needed over many years of Python programming and which
+      seem to be of general use to other Python programmers. Many of
+      the modules that have existed in pyutil over the years have
+      subsequently been obsoleted by new features added to the
+      Python language or its standard library, thus showing that
+      we're not alone in wanting tools like these.
+    '';
+
+    homepage = http://allmydata.org/trac/pyutil;
+    license = licenses.gpl2Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyuv/default.nix b/pkgs/development/python-modules/pyuv/default.nix
new file mode 100644
index 00000000000..04e2c2f0818
--- /dev/null
+++ b/pkgs/development/python-modules/pyuv/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "pyuv";
+  version = "1.2.0";
+  disabled = isPyPy;  # see https://github.com/saghul/pyuv/issues/49
+
+  src = pkgs.fetchurl {
+    url = "https://github.com/saghul/pyuv/archive/${pname}-${version}.tar.gz";
+    sha256 = "19yl1l5l6dq1xr8xcv6dhx1avm350nr4v2358iggcx4ma631rycx";
+  };
+
+  patches = [ ./pyuv-external-libuv.patch ];
+
+  buildInputs = [ pkgs.libuv ];
+
+  meta = with stdenv.lib; {
+    description = "Python interface for libuv";
+    homepage = https://github.com/saghul/pyuv;
+    repositories.git = git://github.com/saghul/pyuv.git;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyuv-external-libuv.patch b/pkgs/development/python-modules/pyuv/pyuv-external-libuv.patch
index 41e169acd5f..41e169acd5f 100644
--- a/pkgs/development/python-modules/pyuv-external-libuv.patch
+++ b/pkgs/development/python-modules/pyuv/pyuv-external-libuv.patch
diff --git a/pkgs/development/python-modules/pywebkitgtk/default.nix b/pkgs/development/python-modules/pywebkitgtk/default.nix
new file mode 100644
index 00000000000..5448f5c6951
--- /dev/null
+++ b/pkgs/development/python-modules/pywebkitgtk/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, pkgs
+, pygtk
+}:
+
+buildPythonPackage rec {
+  pname = "pywebkitgtk";
+  version = "1.1.8";
+  format = "other";
+
+  src = fetchurl {
+    url = "http://pywebkitgtk.googlecode.com/files/${pname}-${version}.tar.bz2";
+    sha256 = "1svlwyl61rvbqbcbalkg6pbf38yjyv7qkq9sx4x35yk69lscaac2";
+  };
+
+  nativeBuildInputs = [ pkgs.pkgconfig ];
+  buildInputs = [ pygtk pkgs.gtk2 pkgs.libxml2 pkgs.libxslt pkgs.libsoup pkgs.webkitgtk24x-gtk2 pkgs.icu ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://code.google.com/p/pywebkitgtk/";
+    description = "Python bindings for the WebKit GTK+ port";
+    license = licenses.lgpl2Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/pyx/default.nix b/pkgs/development/python-modules/pyx/default.nix
new file mode 100644
index 00000000000..a377845563a
--- /dev/null
+++ b/pkgs/development/python-modules/pyx/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pyx";
+  version = "0.14.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "05d1b7fc813379d2c12fcb5bd0195cab522b5aabafac88f72913f1d47becd912";
+  };
+
+  disabled = !isPy3k;
+
+  # No tests in archive
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python package for the generation of PostScript, PDF, and SVG files";
+    homepage = http://pyx.sourceforge.net/;
+    license = with licenses; [ gpl2 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/qpid-python/default.nix b/pkgs/development/python-modules/qpid-python/default.nix
new file mode 100644
index 00000000000..713e9db566e
--- /dev/null
+++ b/pkgs/development/python-modules/qpid-python/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "qpid-python";
+  version = "0.32";
+  disabled = isPy3k;
+
+  src = fetchurl {
+    url = "http://www.us.apache.org/dist/qpid/${version}/${pname}-${version}.tar.gz";
+    sha256 = "09hdfjgk8z4s3dr8ym2r6xn97j1f9mkb2743pr6zd0bnj01vhsv4";
+  };
+
+  # needs a broker running and then ./qpid-python-test
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://qpid.apache.org/;
+    description = "Python client implementation and AMQP conformance tests for Apache Qpid";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/qrcode/default.nix b/pkgs/development/python-modules/qrcode/default.nix
new file mode 100644
index 00000000000..173f3f579b1
--- /dev/null
+++ b/pkgs/development/python-modules/qrcode/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pillow
+, pymaging_png
+, mock
+}:
+
+buildPythonPackage rec {
+  pname = "qrcode";
+  version = "5.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1";
+  };
+
+  propagatedBuildInputs = [ six pillow pymaging_png ];
+  checkInputs = [ mock ];
+
+  meta = with stdenv.lib; {
+    description = "Quick Response code generation for Python";
+    homepage = "https://pypi.python.org/pypi/qrcode";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/qscintilla/default.nix b/pkgs/development/python-modules/qscintilla/default.nix
new file mode 100644
index 00000000000..c4ea8ff2e73
--- /dev/null
+++ b/pkgs/development/python-modules/qscintilla/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, disabledIf
+, isPy3k
+, isPyPy
+, pkgs
+, python
+, pyqt4
+}:
+
+disabledIf (isPy3k || isPyPy)
+  (buildPythonPackage rec {
+    # TODO: Qt5 support
+    name = "qscintilla-${version}";
+    version = pkgs.qscintilla.version;
+    format = "other";
+
+    src = pkgs.qscintilla.src;
+
+    buildInputs = [ pkgs.xorg.lndir pyqt4.qt pyqt4 ];
+
+    preConfigure = ''
+      mkdir -p $out
+      lndir ${pyqt4} $out
+      rm -rf "$out/nix-support"
+      cd Python
+      ${python.executable} ./configure-old.py \
+          --destdir $out/lib/${python.libPrefix}/site-packages/PyQt4 \
+          --apidir $out/api/${python.libPrefix} \
+          -n ${pkgs.qscintilla}/include \
+          -o ${pkgs.qscintilla}/lib \
+          --sipdir $out/share/sip
+    '';
+
+    meta = with stdenv.lib; {
+      description = "A Python binding to QScintilla, Qt based text editing control";
+      license = licenses.lgpl21Plus;
+      maintainers = with maintainers; [ danbst ];
+      platforms = platforms.unix;
+    };
+  })
diff --git a/pkgs/development/python-modules/qserve/default.nix b/pkgs/development/python-modules/qserve/default.nix
new file mode 100644
index 00000000000..ad1a7fd2ca3
--- /dev/null
+++ b/pkgs/development/python-modules/qserve/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "qserve";
+  version = "0.2.8";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "0b04b2d4d11b464ff1efd42a9ea9f8136187d59f4076f57c9ba95361d41cd7ed";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Job queue server";
+    homepage = "https://github.com/pediapress/qserve";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/queuelib/default.nix b/pkgs/development/python-modules/queuelib/default.nix
new file mode 100644
index 00000000000..e80235bcdad
--- /dev/null
+++ b/pkgs/development/python-modules/queuelib/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "queuelib";
+  version = "1.4.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "a6829918157ed433fafa87b0bb1e93e3e63c885270166db5884a02c34c86f914";
+  };
+
+  buildInputs = [ pytest ];
+
+  meta = with stdenv.lib; {
+    description = "A collection of persistent (disk-based) queues for Python";
+    homepage = "https://github.com/scrapy/queuelib";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ drewkett ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/qutip/default.nix b/pkgs/development/python-modules/qutip/default.nix
new file mode 100644
index 00000000000..4a8460ddfdb
--- /dev/null
+++ b/pkgs/development/python-modules/qutip/default.nix
@@ -0,0 +1,44 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, numpy
+, scipy
+, matplotlib
+, pyqt4
+, cython
+, pkgs
+, nose
+}:
+
+buildPythonPackage rec {
+  name = "qutip";
+  version = "2.2.0";
+
+  src = fetchurl {
+    url = "https://qutip.googlecode.com/files/QuTiP-2.2.0.tar.gz";
+    sha256 = "a26a639d74b2754b3a1e329d91300e587e8c399d8a81d8f18a4a74c6d6f02ba3";
+  };
+
+  propagatedBuildInputs = [ numpy scipy matplotlib pyqt4 cython ];
+
+  buildInputs = [ pkgs.gcc pkgs.qt4 pkgs.blas nose ];
+
+  meta = with stdenv.lib; {
+    description = "QuTiP - Quantum Toolbox in Python";
+    longDescription = ''
+      QuTiP is open-source software for simulating the dynamics of
+      open quantum systems. The QuTiP library depends on the
+      excellent Numpy and Scipy numerical packages. In addition,
+      graphical output is provided by Matplotlib. QuTiP aims to
+      provide user-friendly and efficient numerical simulations of a
+      wide variety of Hamiltonians, including those with arbitrary
+      time-dependence, commonly found in a wide range of physics
+      applications such as quantum optics, trapped ions,
+      superconducting circuits, and quantum nanomechanical
+      resonators.
+    '';
+    homepage = http://qutip.org/;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/rabbitpy/default.nix b/pkgs/development/python-modules/rabbitpy/default.nix
new file mode 100644
index 00000000000..b9ec712759b
--- /dev/null
+++ b/pkgs/development/python-modules/rabbitpy/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, mock
+, nose
+, pamqp
+}:
+
+buildPythonPackage rec {
+  version = "0.26.2";
+  pname = "rabbitpy";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0pgijv7mgxc4sm7p9s716dhl600l8isisxzyg4hz7ng1sk09p1w3";
+  };
+
+  buildInputs = [ mock nose ];
+  propagatedBuildInputs = [ pamqp ];
+
+  meta = with stdenv.lib; {
+    description = "A pure python, thread-safe, minimalistic and pythonic RabbitMQ client library";
+    homepage = https://pypi.python.org/pypi/rabbitpy;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/rbtools/default.nix b/pkgs/development/python-modules/rbtools/default.nix
new file mode 100644
index 00000000000..127188ac3fb
--- /dev/null
+++ b/pkgs/development/python-modules/rbtools/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, nose
+, six
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  name = "rbtools";
+  version = "0.7.2";
+  disabled = isPy3k;
+
+  src = fetchurl {
+    url = "http://downloads.reviewboard.org/releases/RBTools/0.7/RBTools-0.7.2.tar.gz";
+    sha256 = "1ng8l8cx81cz23ls7fq9wz4ijs0zbbaqh4kj0mj6plzcqcf8na4i";
+  };
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ six ];
+
+  checkPhase = "nosetests";
+
+  meta = with stdenv.lib; {
+    homepage = https://www.reviewboard.org/docs/rbtools/dev/;
+    description = "RBTools is a set of command line tools for working with Review Board and RBCommons";
+    license = licenses.mit;
+    maintainers = with maintainers; [ domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/readme/default.nix b/pkgs/development/python-modules/readme/default.nix
new file mode 100644
index 00000000000..4bc7e1cc233
--- /dev/null
+++ b/pkgs/development/python-modules/readme/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, six
+, docutils
+, pygments
+, bleach
+, html5lib
+}:
+
+buildPythonPackage rec {
+  pname = "readme";
+  version = "0.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "08j2w67nilczn1i5r7h22vag9673i6vnfhyq2rv27r1bdmi5a30m";
+  };
+
+  buildInputs = [ pytest ];
+  propagatedBuildInputs = [ six docutils pygments bleach html5lib ];
+
+  checkPhase = ''
+    py.test
+  '';
+
+  # Tests fail, possibly broken.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Readme is a library for rendering readme descriptions for Warehouse";
+    homepage = "https://github.com/pypa/readme";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/recaptcha_client/default.nix b/pkgs/development/python-modules/recaptcha_client/default.nix
new file mode 100644
index 00000000000..09090540a5b
--- /dev/null
+++ b/pkgs/development/python-modules/recaptcha_client/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonAtLeast
+}:
+
+buildPythonPackage rec {
+  pname = "recaptcha-client";
+  version = "1.0.6";
+  disabled = pythonAtLeast "3.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "28c6853c1d13d365b7dc71a6b05e5ffb56471f70a850de318af50d3d7c0dea2f";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A CAPTCHA for Python using the reCAPTCHA service";
+    homepage = http://recaptcha.net/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/rencode/default.nix b/pkgs/development/python-modules/rencode/default.nix
new file mode 100644
index 00000000000..ac041d664ae
--- /dev/null
+++ b/pkgs/development/python-modules/rencode/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, isPy33
+, fetchgit
+, cython
+}:
+
+buildPythonPackage rec {
+  pname = "rencode";
+  version = "git20150810";
+  disabled = isPy33;
+
+  src = fetchgit {
+    url = https://github.com/aresch/rencode;
+    rev = "b45e04abdca0dea36e383a8199783269f186c99e";
+    sha256 = "b4bd82852d4220e8a9493d3cfaecbc57b1325708a2d48c0f8acf262edb10dc40";
+  };
+
+  buildInputs = [ cython ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/aresch/rencode;
+    description = "Fast (basic) object serialization similar to bencode";
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/repeated_test/default.nix b/pkgs/development/python-modules/repeated_test/default.nix
new file mode 100644
index 00000000000..5722a858fae
--- /dev/null
+++ b/pkgs/development/python-modules/repeated_test/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, unittest2
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "repeated_test";
+  version = "0.1a3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "062syp7kl2g0x6qx3z8zb5sdycpi7qcpxp9iml2v8dqzqnij9bpg";
+  };
+
+  buildInputs = [ unittest2 ];
+  propagatedBuildInputs = [ six ];
+
+  meta = with stdenv.lib; {
+    description = "A quick unittest-compatible framework for repeating a test function over many fixtures";
+    homepage = "https://github.com/epsy/repeated_test";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/repocheck/default.nix b/pkgs/development/python-modules/repocheck/default.nix
new file mode 100644
index 00000000000..17dea17105e
--- /dev/null
+++ b/pkgs/development/python-modules/repocheck/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  name = "repocheck";
+  version = "2015-08-05";
+
+  src = fetchFromGitHub {
+    sha256 = "1jc4v5zy7z7xlfmbfzvyzkyz893f5x2k6kvb3ni3rn2df7jqhc81";
+    rev = "ee48d0e88d3f5814d24a8d1f22d5d83732824688";
+    repo = "repocheck";
+    owner = "kynikos";
+  };
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Check the status of code repositories under a root directory";
+    license = licenses.gpl3Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/repoze_who/default.nix b/pkgs/development/python-modules/repoze_who/default.nix
new file mode 100644
index 00000000000..227fbdeca65
--- /dev/null
+++ b/pkgs/development/python-modules/repoze_who/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+, webob
+}:
+
+buildPythonPackage rec {
+  pname = "repoze.who";
+  version = "2.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "12wsviar45nwn35w2y4i8b929dq2219vmwz8013wx7bpgkn2j9ij";
+  };
+
+  propagatedBuildInputs = [ zope_interface webob ];
+
+  meta = with stdenv.lib; {
+    description = "WSGI Authentication Middleware / API";
+    homepage = "http://www.repoze.org";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/resampy/default.nix b/pkgs/development/python-modules/resampy/default.nix
new file mode 100644
index 00000000000..8e69b423c9b
--- /dev/null
+++ b/pkgs/development/python-modules/resampy/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, pytestcov
+, numpy
+, scipy
+, cython
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "resampy";
+  version = "0.1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "cf4f149d8699af70a1b4b0769fa16fab21835d936ea7ff25e98446aa49e743d4";
+  };
+
+  checkInputs = [ pytest pytestcov ];
+  propagatedBuildInputs = [ numpy scipy cython six ];
+
+  # No tests included
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/bmcfee/resampy;
+    description = "Efficient signal resampling";
+    license = licenses.isc;
+  };
+
+}
diff --git a/pkgs/development/python-modules/retry_decorator/default.nix b/pkgs/development/python-modules/retry_decorator/default.nix
new file mode 100644
index 00000000000..15ab826b0a6
--- /dev/null
+++ b/pkgs/development/python-modules/retry_decorator/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "retry_decorator";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "086zahyb6yn7ggpc58909c5r5h3jz321i1694l1c28bbpaxnlk88";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/pnpnpn/retry-decorator;
+    description = "Retry Decorator for python functions";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/retrying/default.nix b/pkgs/development/python-modules/retrying/default.nix
new file mode 100644
index 00000000000..9074634e9b6
--- /dev/null
+++ b/pkgs/development/python-modules/retrying/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "retrying";
+  version = "1.3.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0fwp86xv0rvkncjdvy2mwcvbglw4w9k0fva25i7zx8kd19b3kh08";
+  };
+
+  propagatedBuildInputs = [ six ];
+
+  # doesn't ship tests in tarball
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/rholder/retrying;
+    description = "General-purpose retrying library";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/robotframework-requests/default.nix b/pkgs/development/python-modules/robotframework-requests/default.nix
new file mode 100644
index 00000000000..eeaf74fb8f9
--- /dev/null
+++ b/pkgs/development/python-modules/robotframework-requests/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, unittest2
+, robotframework
+, lxml
+, requests
+}:
+
+buildPythonPackage rec {
+  version = "0.4.6";
+  pname = "robotframework-requests";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0416rxg7g0pfg77akljnkass0xz0id26v4saag2q2h1fgwrm7n4q";
+  };
+
+  buildInputs = [ unittest2 ];
+  propagatedBuildInputs = [ robotframework lxml requests ];
+
+  meta = with stdenv.lib; {
+    description = "Robot Framework keyword library wrapper around the HTTP client library requests";
+    homepage = https://github.com/bulkan/robotframework-requests;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/robotframework-selenium2library/default.nix b/pkgs/development/python-modules/robotframework-selenium2library/default.nix
new file mode 100644
index 00000000000..15fd977936b
--- /dev/null
+++ b/pkgs/development/python-modules/robotframework-selenium2library/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, robotframework
+, selenium
+, docutils
+, decorator
+}:
+
+buildPythonPackage rec {
+  version = "1.6.0";
+  pname = "robotframework-selenium2library";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1asdwrpb4s7q08bx641yrh3yicgba14n3hxmsqs58mqf86ignwly";
+  };
+
+  # error: invalid command 'test'
+  #doCheck = false;
+
+  propagatedBuildInputs = [ robotframework selenium docutils decorator ];
+
+  meta = with stdenv.lib; {
+    description = "Web testing library for Robot Framework";
+    homepage = http://robotframework.org/;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/robotframework-tools/default.nix b/pkgs/development/python-modules/robotframework-tools/default.nix
new file mode 100644
index 00000000000..98bed064b1f
--- /dev/null
+++ b/pkgs/development/python-modules/robotframework-tools/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, robotframework
+, moretools
+, pathpy
+, six
+, setuptools
+}:
+
+buildPythonPackage rec {
+  version = "0.1a115";
+  pname = "robotframework-tools";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "04gkn1zpf3rsvbqdxrrjqqi8sa0md9gqwh6n5w2m03fdwjg4lc7q";
+  };
+
+  propagatedBuildInputs = [ robotframework moretools pathpy six setuptools ];
+
+  meta = with stdenv.lib; {
+    description = "Python Tools for Robot Framework and Test Libraries";
+    homepage = https://bitbucket.org/userzimmermann/robotframework-tools;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/routes/default.nix b/pkgs/development/python-modules/routes/default.nix
new file mode 100644
index 00000000000..1e2e67c6206
--- /dev/null
+++ b/pkgs/development/python-modules/routes/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, repoze_lru
+, six
+, webob
+, coverage
+, webtest
+}:
+
+buildPythonPackage rec {
+  pname = "Routes";
+  version = "2.4.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1zamff3m0kc4vyfniyhxpkkcqv1rrgnmh37ykxv34nna1ws47vi6";
+  };
+
+  propagatedBuildInputs = [ repoze_lru six webob ];
+  checkInputs = [ coverage webtest ];
+
+  meta = with stdenv.lib; {
+    description = "A Python re-implementation of the Rails routes system for mapping URLs to application actions";
+    homepage = http://routes.groovie.org/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/rpdb/default.nix b/pkgs/development/python-modules/rpdb/default.nix
new file mode 100644
index 00000000000..182709b525a
--- /dev/null
+++ b/pkgs/development/python-modules/rpdb/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "rpdb";
+  version = "0.1.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0rql1hq3lziwcql0h3dy05w074cn866p397ng9bv6qbz85ifw1bk";
+  };
+
+  meta = with stdenv.lib; {
+    description = "pdb wrapper with remote access via tcp socket";
+    homepage = https://github.com/tamentis/rpdb;
+    license = licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/rpyc/default.nix b/pkgs/development/python-modules/rpyc/default.nix
new file mode 100644
index 00000000000..42176b134ec
--- /dev/null
+++ b/pkgs/development/python-modules/rpyc/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, plumbum
+}:
+
+buildPythonPackage rec {
+  pname = "rpyc";
+  version = "3.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "43fa845314f0bf442f5f5fab15bb1d1b5fe2011a8fc603f92d8022575cef8b4b";
+  };
+
+  propagatedBuildInputs = [ nose plumbum ];
+
+  meta = with stdenv.lib; {
+    description = "Remote Python Call (RPyC), a transparent and symmetric RPC library";
+    homepage = http://rpyc.readthedocs.org;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/rsa/default.nix b/pkgs/development/python-modules/rsa/default.nix
new file mode 100644
index 00000000000..82eedf70cb0
--- /dev/null
+++ b/pkgs/development/python-modules/rsa/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, unittest2
+, pyasn1
+}:
+
+buildPythonPackage rec {
+  pname = "rsa";
+  version = "3.4.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5";
+  };
+
+  nativeBuildInputs = [ unittest2 ];
+  propagatedBuildInputs = [ pyasn1 ];
+
+  meta = with stdenv.lib; {
+    homepage = https://stuvel.eu/rsa;
+    license = licenses.asl20;
+    description = "A pure-Python RSA implementation";
+  };
+
+}
diff --git a/pkgs/development/python-modules/ruamel_base/default.nix b/pkgs/development/python-modules/ruamel_base/default.nix
new file mode 100644
index 00000000000..ba6a79fdd63
--- /dev/null
+++ b/pkgs/development/python-modules/ruamel_base/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "ruamel.base";
+  version = "1.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1wswxrn4givsm917mfl39rafgadimf1sldpbjdjws00g1wx36hf0";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Common routines for ruamel packages";
+    homepage = https://bitbucket.org/ruamel/base;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/ruamel_ordereddict/default.nix b/pkgs/development/python-modules/ruamel_ordereddict/default.nix
new file mode 100644
index 00000000000..fa7bd815b68
--- /dev/null
+++ b/pkgs/development/python-modules/ruamel_ordereddict/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "ruamel.ordereddict";
+  version = "0.4.9";
+  disabled = isPy3k || isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A version of dict that keeps keys in insertion resp. sorted order";
+    homepage = https://bitbucket.org/ruamel/ordereddict;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/ruamel_yaml/default.nix b/pkgs/development/python-modules/ruamel_yaml/default.nix
new file mode 100644
index 00000000000..59674d82c90
--- /dev/null
+++ b/pkgs/development/python-modules/ruamel_yaml/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, ruamel_base
+, typing
+, ruamel_ordereddict
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "ruamel.yaml";
+  version = "0.15.35";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0xggyfaj6vprggahf7cq8kp9j79rb7hn8ndk3bxj2sxvwhhliiwd";
+  };
+
+  # Tests cannot load the module to test
+  doCheck = false;
+
+  propagatedBuildInputs = [ ruamel_base typing ]
+    ++ stdenv.lib.optional (!isPy3k) ruamel_ordereddict;
+
+  meta = with stdenv.lib; {
+    description = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order";
+    homepage = https://bitbucket.org/ruamel/yaml;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/runsnakerun/default.nix b/pkgs/development/python-modules/runsnakerun/default.nix
new file mode 100644
index 00000000000..eba8871fd02
--- /dev/null
+++ b/pkgs/development/python-modules/runsnakerun/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, squaremap
+, wxPython
+}:
+
+buildPythonPackage rec {
+  pname = "runsnakerun";
+  version = "2.0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "61d03a13f1dcb3c1829f5a146da1fe0cc0e27947558a51e848b6d469902815ef";
+  };
+
+  propagatedBuildInputs = [ squaremap wxPython ];
+
+  meta = with stdenv.lib; {
+    description = "GUI Viewer for Python profiling runs";
+    homepage = http://www.vrplumber.com/programming/runsnakerun/;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sandboxlib/default.nix b/pkgs/development/python-modules/sandboxlib/default.nix
new file mode 100644
index 00000000000..1a3511dab97
--- /dev/null
+++ b/pkgs/development/python-modules/sandboxlib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "sandboxlib";
+  version = "0.31";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0csj8hbpylqdkxcpqkcfs73dfvdqkyj23axi8m9drqdi4dhxb41h";
+  };
+
+  buildInputs = [ pbr ];
+
+  meta = with stdenv.lib; {
+    description = "Sandboxing Library for Python";
+    homepage = https://pypi.python.org/pypi/sandboxlib/0.3.1;
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/scales/default.nix b/pkgs/development/python-modules/scales/default.nix
new file mode 100644
index 00000000000..4fb169b1558
--- /dev/null
+++ b/pkgs/development/python-modules/scales/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "scales";
+  version = "1.0.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "8b6930f7d4bf115192290b44c757af5e254e3fcfcb75ff9a51f5c96a404e2753";
+  };
+
+  checkInputs = [ nose ];
+  propagatedBuildInputs = [ six ];
+
+  # No tests included
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Stats for Python processes";
+    homepage = https://www.github.com/Cue/scales;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/scipy/default.nix b/pkgs/development/python-modules/scipy/default.nix
index 5fdffedc6f2..597a8e0783a 100644
--- a/pkgs/development/python-modules/scipy/default.nix
+++ b/pkgs/development/python-modules/scipy/default.nix
@@ -29,12 +29,7 @@ buildPythonPackage rec {
   '';
 
   preBuild = ''
-    echo "Creating site.cfg file..."
-    cat << EOF > site.cfg
-    [openblas]
-    include_dirs = ${numpy.blas}/include
-    library_dirs = ${numpy.blas}/lib
-    EOF
+    ln -s ${numpy.cfg} site.cfg
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/python-modules/scripttest/default.nix b/pkgs/development/python-modules/scripttest/default.nix
new file mode 100644
index 00000000000..2ae7a4c8e36
--- /dev/null
+++ b/pkgs/development/python-modules/scripttest/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+}:
+
+buildPythonPackage rec {
+  version = "1.3";
+  pname = "scripttest";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "951cfc25219b0cd003493a565f2e621fd791beaae9f9a3bdd7024d8626419c38";
+  };
+
+  buildInputs = [ pytest ];
+
+  # Tests are not included. See https://github.com/pypa/scripttest/issues/11
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A library for testing interactive command-line applications";
+    homepage = https://pypi.python.org/pypi/ScriptTest/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/semantic/default.nix b/pkgs/development/python-modules/semantic/default.nix
new file mode 100644
index 00000000000..b5855fbb143
--- /dev/null
+++ b/pkgs/development/python-modules/semantic/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, quantities
+, numpy
+}:
+
+buildPythonPackage rec {
+  pname = "semantic";
+  version = "1.0.3";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "bbc47dad03dddb1ba5895612fdfa1e43cfb3c497534976cebacd4f3684b505b4";
+  };
+
+  propagatedBuildInputs = [ quantities numpy ];
+
+  # strange setuptools error (can not import semantic.test)
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Common Natural Language Processing Tasks for Python";
+    homepage = https://github.com/crm416/semantic;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/setproctitle/default.nix b/pkgs/development/python-modules/setproctitle/default.nix
new file mode 100644
index 00000000000..3aea75e3de8
--- /dev/null
+++ b/pkgs/development/python-modules/setproctitle/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "python-setproctitle";
+  version = "1.1.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1mqadassxcm0m9r1l02m5vr4bbandn48xz8gifvxmb4wiz8i8d0w";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Allows a process to change its title (as displayed by system tools such as ps and top)";
+    homepage =  https://github.com/dvarrazzo/py-setproctitle;
+    license = licenses.bsdOriginal;
+    maintainers = with maintainers; [ exi ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/setuptools/default.nix b/pkgs/development/python-modules/setuptools/default.nix
index b61af72909f..ac3d0e47395 100644
--- a/pkgs/development/python-modules/setuptools/default.nix
+++ b/pkgs/development/python-modules/setuptools/default.nix
@@ -8,13 +8,13 @@
 # Should use buildPythonPackage here somehow
 stdenv.mkDerivation rec {
   pname = "setuptools";
-  version = "40.2.0";
+  version = "40.4.3";
   name = "${python.libPrefix}-${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
     extension = "zip";
-    sha256 = "47881d54ede4da9c15273bac65f9340f8929d4f0213193fa7894be384f2dcfa6";
+    sha256 = "acbc5740dd63f243f46c2b4b8e2c7fd92259c2ddb55a4115b16418a2ed371b15";
   };
 
   nativeBuildInputs = [ unzip wrapPython ];
diff --git a/pkgs/development/python-modules/setuptoolsdarcs/default.nix b/pkgs/development/python-modules/setuptoolsdarcs/default.nix
new file mode 100644
index 00000000000..d696a5be08f
--- /dev/null
+++ b/pkgs/development/python-modules/setuptoolsdarcs/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, darcsver
+}:
+
+buildPythonPackage rec {
+  pname = "setuptools_darcs";
+  version = "1.2.11";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1wsh0g1fn10msqk87l5jrvzs0yj5mp6q9ld3gghz6zrhl9kqzdn1";
+  };
+
+  # In order to break the dependency on darcs -> ghc, we don't add
+  # darcs as a propagated build input.
+  propagatedBuildInputs = [ darcsver ];
+
+  # ugly hack to specify version that should otherwise come from darcs
+  patchPhase = ''
+    substituteInPlace setup.py --replace "name=PKG" "name=PKG, version='${version}'"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Setuptools plugin for the Darcs version control system";
+    homepage = http://allmydata.org/trac/setuptools_darcs;
+    license = licenses.bsd0;
+  };
+}
diff --git a/pkgs/development/python-modules/setuptoolstrial/default.nix b/pkgs/development/python-modules/setuptoolstrial/default.nix
new file mode 100644
index 00000000000..b393d0eb200
--- /dev/null
+++ b/pkgs/development/python-modules/setuptoolstrial/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, virtualenv
+, pytestrunner
+, pytest-virtualenv
+, twisted
+, pathlib2
+}:
+
+buildPythonPackage rec {
+  pname = "setuptools_trial";
+  version = "0.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "14220f8f761c48ba1e2526f087195077cf54fad7098b382ce220422f0ff59b12";
+  };
+
+  buildInputs = [ pytest virtualenv pytestrunner pytest-virtualenv ];
+  propagatedBuildInputs = [ twisted pathlib2 ];
+
+  postPatch = ''
+    sed -i '12,$d' tests/test_main.py
+  '';
+
+  # Couldn't get tests working
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Setuptools plugin that makes unit tests execute with trial instead of pyunit.";
+    homepage = "https://github.com/rutsky/setuptools-trial";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ ryansydnor nand0p ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/sexpdata/default.nix b/pkgs/development/python-modules/sexpdata/default.nix
new file mode 100644
index 00000000000..97bb5b35b19
--- /dev/null
+++ b/pkgs/development/python-modules/sexpdata/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "sexpdata";
+  version = "0.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "eb696bc66b35def5fb356de09481447dff4e9a3ed926823134e1d0f35eade428";
+  };
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "S-expression parser for Python";
+    homepage = "https://github.com/tkf/sexpdata";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/shortuuid/default.nix b/pkgs/development/python-modules/shortuuid/default.nix
new file mode 100644
index 00000000000..43cf9806ba6
--- /dev/null
+++ b/pkgs/development/python-modules/shortuuid/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pep8
+}:
+
+buildPythonPackage rec {
+  pname = "shortuuid";
+  version = "0.4.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4606dbb19124d98109c00e2cafae2df8117aec02115623e18fb2abe3f766d293";
+  };
+
+  buildInputs = [pep8];
+
+  meta = with stdenv.lib; {
+    description = "A generator library for concise, unambiguous and URL-safe UUIDs";
+    homepage = https://github.com/stochastic-technologies/shortuuid/;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ zagy ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/shouldbe/default.nix b/pkgs/development/python-modules/shouldbe/default.nix
new file mode 100644
index 00000000000..df868bb4d5e
--- /dev/null
+++ b/pkgs/development/python-modules/shouldbe/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, forbiddenfruit
+}:
+
+buildPythonPackage rec {
+  version = "0.1.0";
+  pname = "shouldbe";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "07pchxpv1xvjbck0xy44k3a1jrvklg0wbyccn14w0i7d135d4174";
+  };
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ forbiddenfruit ];
+
+  doCheck = false;  # Segmentation fault on py 3.5
+
+  meta = with stdenv.lib; {
+    description = "Python Assertion Helpers inspired by Shouldly";
+    homepage =  https://pypi.python.org/pypi/shouldbe/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/signedjson/default.nix b/pkgs/development/python-modules/signedjson/default.nix
new file mode 100644
index 00000000000..33a615fefd4
--- /dev/null
+++ b/pkgs/development/python-modules/signedjson/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, canonicaljson
+, unpaddedbase64
+, pynacl
+}:
+
+buildPythonPackage rec {
+  pname = "signedjson";
+  version = "1.0.0";
+
+  src = fetchgit {
+    url = "https://github.com/matrix-org/python-signedjson.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0b8xxhc3npd4567kqapfp4gs7m0h057xam3an7424az262ind82n";
+  };
+
+  propagatedBuildInputs = [ canonicaljson unpaddedbase64 pynacl ];
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.org/project/signedjson/;
+    description = "Sign JSON with Ed25519 signatures";
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/python-modules/sigtools/default.nix b/pkgs/development/python-modules/sigtools/default.nix
new file mode 100644
index 00000000000..88bddacbe05
--- /dev/null
+++ b/pkgs/development/python-modules/sigtools/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, repeated_test
+, sphinx
+, mock
+, coverage
+, unittest2
+, funcsigs
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "sigtools";
+  version = "1.1a3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "190w14vzbiyvxcl9jmyyimpahar5b0bq69v9iv7chi852yi71w6w";
+  };
+
+  buildInputs = [ repeated_test sphinx mock coverage unittest2 ];
+  propagatedBuildInputs = [ funcsigs six ];
+
+  patchPhase = ''sed -i s/test_suite="'"sigtools.tests"'"/test_suite="'"unittest2.collector"'"/ setup.py'';
+
+  meta = with stdenv.lib; {
+    description = "Utilities for working with 3.3's inspect.Signature objects.";
+    homepage = "https://pypi.python.org/pypi/sigtools";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/simpleai/default.nix b/pkgs/development/python-modules/simpleai/default.nix
new file mode 100644
index 00000000000..3d4bdf3968f
--- /dev/null
+++ b/pkgs/development/python-modules/simpleai/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+, isPy3k
+}:
+
+buildPythonPackage rec {
+   version = "0.7.11";
+   pname = "simpleai";
+   disabled = isPy3k;
+
+   src = fetchPypi {
+     inherit pname version;
+     sha256 = "03frjc5jxsz9xm24jz7qa4hcp0dicgazrxkdsa2rsnir672lwkwz";
+   };
+
+   propagatedBuildInputs = [ numpy ];
+
+   #No tests in archive
+   doCheck = false;
+
+   meta = with stdenv.lib; {
+     homepage = https://github.com/simpleai-team/simpleai;
+     description = "This lib implements many of the artificial intelligence algorithms described on the book 'Artificial Intelligence, a Modern Approach'";
+     maintainers = with maintainers; [ NikolaMandic ];
+   };
+
+}
diff --git a/pkgs/development/python-modules/simplebayes/default.nix b/pkgs/development/python-modules/simplebayes/default.nix
new file mode 100644
index 00000000000..705b7559372
--- /dev/null
+++ b/pkgs/development/python-modules/simplebayes/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, mock
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "simplebayes";
+  version = "1.5.8";
+
+  # Use GitHub instead of pypi, because it contains tests.
+  src = fetchFromGitHub {
+    repo = "simplebayes";
+    owner = "hickeroar";
+    # NOTE: This is actually 1.5.8 but the tag is wrong!
+    rev = "1.5.7";
+    sha256 = "0mp7rvfdmpfxnka4czw3lv5kkh6gdxh6dm4r6hcln1zzfg9lxp4h";
+  };
+
+  checkInputs = [ nose mock ];
+
+  postPatch = stdenv.lib.optionalString isPy3k ''
+    sed -i -e 's/open *(\([^)]*\))/open(\1, encoding="utf-8")/' setup.py
+  '';
+
+  checkPhase = "nosetests tests/test.py";
+
+  meta = with stdenv.lib; {
+    description = "Memory-based naive bayesian text classifier";
+    homepage = "https://github.com/hickeroar/simplebayes";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/simpleparse/default.nix b/pkgs/development/python-modules/simpleparse/default.nix
new file mode 100644
index 00000000000..025331a49e9
--- /dev/null
+++ b/pkgs/development/python-modules/simpleparse/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  version = "2.1.1";
+  pname = "simpleparse";
+  disabled = isPy3k || isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1n8msk71lpl3kv086xr2sv68ppgz6228575xfnbszc6p1mwr64rg";
+  };
+
+  doCheck = false;  # weird error
+
+  meta = with stdenv.lib; {
+    description = "A Parser Generator for Python";
+    homepage = https://pypi.python.org/pypi/SimpleParse;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sipsimple/default.nix b/pkgs/development/python-modules/sipsimple/default.nix
new file mode 100644
index 00000000000..1df36dcf5d0
--- /dev/null
+++ b/pkgs/development/python-modules/sipsimple/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, buildPythonPackage
+, fetchdarcs
+, isPy3k
+, pkgs
+, cython
+, dnspython
+, dateutil
+, xcaplib
+, msrplib
+, lxml
+, python-otr
+}:
+
+buildPythonPackage rec {
+  pname = "sipsimple";
+  version = "3.1.1";
+  disabled = isPy3k;
+
+  src = fetchdarcs {
+    url = http://devel.ag-projects.com/repositories/python-sipsimple;
+    rev = "release-${version}";
+    sha256 = "0jdilm11f5aahxrzrkxrfx9sgjgkbla1r0wayc5dzd2wmjrdjyrg";
+  };
+
+  preConfigure = ''
+    chmod +x ./deps/pjsip/configure ./deps/pjsip/aconfigure
+  '';
+
+  nativeBuildInputs = [ pkgs.pkgconfig ];
+  buildInputs = with pkgs; [ alsaLib ffmpeg libv4l sqlite libvpx ];
+  propagatedBuildInputs = [ cython pkgs.openssl dnspython dateutil xcaplib msrplib lxml python-otr ];
+
+  meta = with stdenv.lib; {
+    description = "SIP SIMPLE implementation for Python";
+    homepage = http://sipsimpleclient.org/;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ pSub ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/slob/default.nix b/pkgs/development/python-modules/slob/default.nix
new file mode 100644
index 00000000000..490113d6952
--- /dev/null
+++ b/pkgs/development/python-modules/slob/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, isPy3k
+, PyICU
+, python
+}:
+
+buildPythonPackage rec {
+  name = "slob";
+  verison = "unstable-2016-11-03";
+  disabled = !isPy3k;
+
+  src = fetchFromGitHub {
+    owner = "itkach";
+    repo = "slob";
+    rev = "d1ed71e4778729ecdfc2fe27ed783689a220a6cd";
+    sha256 = "1r510s4r124s121wwdm9qgap6zivlqqxrhxljz8nx0kv0cdyypi5";
+  };
+
+  propagatedBuildInputs = [ PyICU ];
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest slob
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/itkach/slob/;
+    description = "Reference implementation of the slob (sorted list of blobs) format";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.rycee ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/slowaes/default.nix b/pkgs/development/python-modules/slowaes/default.nix
new file mode 100644
index 00000000000..f9175e507b4
--- /dev/null
+++ b/pkgs/development/python-modules/slowaes/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "slowaes";
+  version = "0.1a1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "83658ae54cc116b96f7fdb12fdd0efac3a4e8c7c7064e3fac3f4a881aa54bf09";
+  };
+
+  disabled = isPy3k;
+
+  meta = with stdenv.lib; {
+    homepage = "http://code.google.com/p/slowaes/";
+    description = "AES implemented in pure python";
+    license = with licenses; [ asl20 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/smartdc/default.nix b/pkgs/development/python-modules/smartdc/default.nix
new file mode 100644
index 00000000000..e22c99651e6
--- /dev/null
+++ b/pkgs/development/python-modules/smartdc/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, http_signature
+}:
+
+buildPythonPackage rec {
+  pname = "smartdc";
+  version = "0.1.12";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "36206f4fddecae080c66faf756712537e650936b879abb23a8c428731d2415fe";
+  };
+
+  propagatedBuildInputs = [ requests http_signature ];
+
+  meta = with stdenv.lib; {
+    description = "Joyent SmartDataCenter CloudAPI connector using http-signature authentication via Requests";
+    homepage = https://github.com/atl/py-smartdc;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/smartypants/default.nix b/pkgs/development/python-modules/smartypants/default.nix
new file mode 100644
index 00000000000..3c4735013ab
--- /dev/null
+++ b/pkgs/development/python-modules/smartypants/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchhg
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  version = "1.8.6";
+  pname = "smartypants";
+  disabled = isPyPy;
+
+  src = fetchhg {
+    url = "https://bitbucket.org/livibetter/smartypants.py";
+    rev = "v${version}";
+    sha256 = "1cmzz44d2hm6y8jj2xcq1wfr26760gi7iq92ha8xbhb1axzd7nq6";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Python with the SmartyPants";
+    homepage = "https://bitbucket.org/livibetter/smartypants.py";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ garbas ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/smugline/default.nix b/pkgs/development/python-modules/smugline/default.nix
new file mode 100644
index 00000000000..ac625cf1fa0
--- /dev/null
+++ b/pkgs/development/python-modules/smugline/default.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, fetchFromGitHub
+, docopt
+, requests
+, smugpy
+, python
+, pkgs
+}:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname   = "smugline";
+  version = "20160106";
+
+  src = fetchFromGitHub {
+    owner  = "gingerlime";
+    repo   = pname;
+    rev    = "134554c574c2d282112ba60165a8c5ffe0f16fd4";
+    sha256 = "00n012ijkdrx8wsl8x3ghdcxcdp29s4kwr3yxvlyj79g5yhfvaj6";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  buildInputs = [ python pkgs.makeWrapper ];
+  propagatedBuildInputs = [ docopt requests smugpy ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/libexec
+    cp smugline.py $out/libexec
+    makeWrapper ${python.interpreter} $out/bin/smugline \
+      --add-flags "$out/libexec/smugline.py" \
+      --prefix PYTHONPATH : "$PYTHONPATH"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/gingerlime/smugline;
+    description = "A simple command line tool for smugmug ";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/snappergui/default.nix b/pkgs/development/python-modules/snappergui/default.nix
new file mode 100644
index 00000000000..43e942a9588
--- /dev/null
+++ b/pkgs/development/python-modules/snappergui/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, pygobject3
+, dbus-python
+}:
+
+buildPythonPackage rec {
+  name = "Snapper-GUI";
+  version = "0.1";
+
+  src = fetchgit {
+    url = "https://github.com/ricardomv/snapper-gui";
+    rev = "11d98586b122180c75a86fccda45c4d7e3137591";
+    sha256 = "7a9f86fc17dbf130526e70c3e925eac30e2c74d6b932efbf7e7cd9fbba6dc4b1";
+  };
+
+  # no tests available
+  doCheck = false;
+
+  propagatedBuildInputs = [ pygobject3 dbus-python ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/ricardomv/snapper-gui;
+    description = "Graphical frontend for snapper";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ tstrobel ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/socksipy-branch/default.nix b/pkgs/development/python-modules/socksipy-branch/default.nix
new file mode 100644
index 00000000000..37961f898f5
--- /dev/null
+++ b/pkgs/development/python-modules/socksipy-branch/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "SocksiPy-branch";
+  version = "1.01";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://code.google.com/p/socksipy-branch/;
+    description = "This Python module allows you to create TCP connections through a SOCKS proxy without any special effort";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sopel/default.nix b/pkgs/development/python-modules/sopel/default.nix
new file mode 100644
index 00000000000..1103e0fa3d3
--- /dev/null
+++ b/pkgs/development/python-modules/sopel/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, praw
+, xmltodict
+, pytz
+, pyenchant
+, pygeoip
+, python
+, isPyPy
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "sopel";
+  version = "6.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1swvw7xw8n5anb8ah8jilk4vk1y30y62fkibfd9vm9fbk45d1q48";
+  };
+
+  buildInputs = [ pytest ];
+  propagatedBuildInputs = [ praw xmltodict pytz pyenchant pygeoip ];
+
+  disabled = isPyPy || isPy27;
+
+  checkPhase = ''
+    ${python.interpreter} test/*.py                                         #*/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple and extensible IRC bot";
+    homepage = "http://sopel.chat";
+    license = licenses.efl20;
+    maintainers = with maintainers; [ mog ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/sorl_thumbnail/default.nix b/pkgs/development/python-modules/sorl_thumbnail/default.nix
new file mode 100644
index 00000000000..a580f80f281
--- /dev/null
+++ b/pkgs/development/python-modules/sorl_thumbnail/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "sorl-thumbnail";
+  version = "11.12";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "050b9kzbx7jvs3qwfxxshhis090hk128maasy8pi5wss6nx5kyw4";
+  };
+
+  # Disabled due to an improper configuration error when tested against django. This looks like something broken in the test cases for sorl.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://sorl-thumbnail.readthedocs.org/en/latest/;
+    description = "Thumbnails for Django";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/speaklater/default.nix b/pkgs/development/python-modules/speaklater/default.nix
new file mode 100644
index 00000000000..5de86d9e14c
--- /dev/null
+++ b/pkgs/development/python-modules/speaklater/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "speaklater";
+  version = "1.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ab5dbfzzgz6cnz4xlwx79gz83id4bhiw67k1cgqrlzfs0va7zjr";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Implements a lazy string for python useful for use with gettext";
+    homepage = https://github.com/mitsuhiko/speaklater;
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ matejc ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinx_pypi_upload/default.nix b/pkgs/development/python-modules/sphinx_pypi_upload/default.nix
new file mode 100644
index 00000000000..52590817c71
--- /dev/null
+++ b/pkgs/development/python-modules/sphinx_pypi_upload/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "Sphinx-PyPI-upload";
+  version = "0.2.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "5f919a47ce7a7e6028dba809de81ae1297ac192347cf6fc54efca919d4865159";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Setuptools command for uploading Sphinx documentation to PyPI";
+    homepage = https://bitbucket.org/jezdez/sphinx-pypi-upload/;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinx_rtd_theme/default.nix b/pkgs/development/python-modules/sphinx_rtd_theme/default.nix
new file mode 100644
index 00000000000..69845d10c35
--- /dev/null
+++ b/pkgs/development/python-modules/sphinx_rtd_theme/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "sphinx_rtd_theme";
+  version = "0.2.5b2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0grf16fi4g0p3dfh11b1624ic34iqkjhf5i1g6hvsh4nlm0ll00q";
+  };
+
+  meta = with stdenv.lib; {
+    description = "ReadTheDocs.org theme for Sphinx";
+    homepage = https://github.com/snide/sphinx_rtd_theme/;
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix b/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
new file mode 100644
index 00000000000..1eeb40ddbc2
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib-blockdiag/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, mock
+, sphinx-testing
+, sphinx
+, blockdiag
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-blockdiag";
+  version = "1.5.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1w7q2hhpzk159wd35hlbwkh80hnglqa475blcd9vjwpkv1kgkpvw";
+  };
+
+  buildInputs = [ mock sphinx-testing ];
+  propagatedBuildInputs = [ sphinx blockdiag ];
+
+  # Seems to look for files in the wrong dir
+  doCheck = false;
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover -s tests
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Sphinx blockdiag extension";
+    homepage = "https://github.com/blockdiag/sphinxcontrib-blockdiag";
+    maintainers = with maintainers; [ nand0p ];
+    license = licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix b/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
new file mode 100644
index 00000000000..a800694ad94
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib-openapi/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools_scm
+, pyyaml
+, jsonschema
+, sphinxcontrib_httpdomain
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-openapi";
+  version = "0.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0fyniq37nnmhrk4j7mzvg6vfcpb624hb9x70g6mccyw4xrnhadv6";
+  };
+
+  propagatedBuildInputs = [setuptools_scm pyyaml jsonschema sphinxcontrib_httpdomain];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/ikalnytskyi/sphinxcontrib-openapi;
+    description = "OpenAPI (fka Swagger) spec renderer for Sphinx";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix b/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
new file mode 100644
index 00000000000..4d9a4b2ba94
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib-spelling/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+, pyenchant
+, pbr
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-spelling";
+  version = "2.2.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1f0fymrk4kvhqs0vj9gay4lhacxkfrlrpj4gvg0p4wjdczplxd3z";
+  };
+
+  propagatedBuildInputs = [ sphinx pyenchant pbr ];
+
+  # No tests included
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Sphinx spelling extension";
+    homepage = https://bitbucket.org/dhellmann/sphinxcontrib-spelling;
+    maintainers = with maintainers; [ nand0p ];
+    license = licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix b/pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix
new file mode 100644
index 00000000000..8416e9b3d8d
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib_httpdomain/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-httpdomain";
+  version = "1.5.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0srg8lwf4m1hyhz942fcdfxh689xphndngiidb575qmfbi89gc7a";
+  };
+
+  propagatedBuildInputs = [ sphinx ];
+
+  # Check is disabled due to this issue:
+  # https://bitbucket.org/pypa/setuptools/issue/137/typeerror-unorderable-types-str-nonetype
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Provides a Sphinx domain for describing RESTful HTTP APIs";
+    homepage = https://bitbucket.org/birkenfeld/sphinx-contrib;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix b/pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix
new file mode 100644
index 00000000000..2dfaf7dbc14
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib_newsfeed/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-newsfeed";
+  version = "0.1.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p";
+  };
+
+  propagatedBuildInputs = [ sphinx ];
+
+  meta = with stdenv.lib; {
+    description = "Extension for adding a simple Blog, News or Announcements section to a Sphinx website";
+    homepage = https://bitbucket.org/prometheus/sphinxcontrib-newsfeed;
+    license = licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix b/pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix
new file mode 100644
index 00000000000..3b9119d6651
--- /dev/null
+++ b/pkgs/development/python-modules/sphinxcontrib_plantuml/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, sphinx
+, plantuml
+}:
+
+buildPythonPackage rec {
+  pname = "sphinxcontrib-plantuml";
+  version = "0.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "011yprqf41dcm1824zgk2w8vi9115286pmli6apwhlrsxc6b6cwv";
+  };
+
+  # No tests included.
+  doCheck = false;
+
+  propagatedBuildInputs = [ sphinx plantuml ];
+
+  meta = with stdenv.lib; {
+    description = "Provides a Sphinx domain for embedding UML diagram with PlantUML";
+    homepage = https://bitbucket.org/birkenfeld/sphinx-contrib;
+    license = with licenses; [ bsd2 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/sqlalchemy-imageattach/default.nix b/pkgs/development/python-modules/sqlalchemy-imageattach/default.nix
new file mode 100644
index 00000000000..53eb223b25a
--- /dev/null
+++ b/pkgs/development/python-modules/sqlalchemy-imageattach/default.nix
@@ -0,0 +1,42 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pytest
+, Wand
+, webob
+, sqlalchemy
+, isPyPy
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "SQLAlchemy-ImageAttach";
+  version = "1.0.0";
+
+  src = pkgs.fetchFromGitHub {
+    repo = "sqlalchemy-imageattach";
+    owner = "dahlia";
+    rev = "${version}";
+    sha256 = "0ba97pn5dh00qvxyjbr0mr3pilxqw5kb3a6jd4wwbsfcv6nngqig";
+  };
+
+  checkInputs = [ pytest Wand.imagemagick webob ];
+  propagatedBuildInputs = [ sqlalchemy Wand ];
+
+  checkPhase = ''
+    cd tests
+    export MAGICK_HOME="${pkgs.imagemagick.dev}"
+    export PYTHONPATH=$PYTHONPATH:../
+    py.test
+    cd ..
+  '';
+
+  doCheck = !isPyPy;  # failures due to sqla version mismatch
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/dahlia/sqlalchemy-imageattach;
+    description = "SQLAlchemy extension for attaching images to entity objects";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sqlite3dbm/default.nix b/pkgs/development/python-modules/sqlite3dbm/default.nix
new file mode 100644
index 00000000000..bc49c0e426b
--- /dev/null
+++ b/pkgs/development/python-modules/sqlite3dbm/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "sqlite3dbm";
+  version = "0.1.4";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4721607e0b817b89efdba7e79cab881a03164b94777f4cf796ad5dd59a7612c5";
+  };
+
+  meta = with stdenv.lib; {
+    description = "sqlite-backed dictionary";
+    homepage = https://github.com/Yelp/sqlite3dbm;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sqlobject/default.nix b/pkgs/development/python-modules/sqlobject/default.nix
new file mode 100644
index 00000000000..7a3551e88a0
--- /dev/null
+++ b/pkgs/development/python-modules/sqlobject/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, FormEncode
+, PasteDeploy
+, paste
+, pydispatcher
+}:
+
+buildPythonPackage rec {
+  pname = "SQLObject";
+  version = "3.3.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0p2dxrxh7xrv5yys09v5z95d0z40w22aq3xc01ghdidd7hr79xy9";
+  };
+
+  checkInputs = [ pytest ];
+  propagatedBuildInputs = [ FormEncode PasteDeploy paste pydispatcher ];
+
+  meta = with stdenv.lib; {
+    description = "Object Relational Manager for providing an object interface to your database";
+    homepage = "http://www.sqlobject.org/";
+    license = licenses.lgpl21;
+  };
+
+}
diff --git a/pkgs/development/python-modules/sqlparse/default.nix b/pkgs/development/python-modules/sqlparse/default.nix
new file mode 100644
index 00000000000..934bf79de5d
--- /dev/null
+++ b/pkgs/development/python-modules/sqlparse/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "sqlparse";
+  version = "0.2.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "08dszglfhf1c4rwqinkbp4x55v0b90rgm1fxc1l4dy965imjjinl";
+  };
+
+  buildInputs = [ pytest ];
+  checkPhase = ''
+    py.test
+  '';
+
+  # Package supports 3.x, but tests are clearly 2.x only.
+  doCheck = !isPy3k;
+
+  meta = with stdenv.lib; {
+    description = "Non-validating SQL parser for Python";
+    longDescription = ''
+      Provides support for parsing, splitting and formatting SQL statements.
+    '';
+    homepage = https://github.com/andialbrecht/sqlparse;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/squaremap/default.nix b/pkgs/development/python-modules/squaremap/default.nix
new file mode 100644
index 00000000000..3a0e95ab77e
--- /dev/null
+++ b/pkgs/development/python-modules/squaremap/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, isPy3k
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "squaremap";
+  version = "1.0.4";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "feab6cb3b222993df68440e34825d8a16de2c74fdb290ae3974c86b1d5f3eef8";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Hierarchic visualization control for wxPython";
+    homepage = https://launchpad.net/squaremap;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/stompclient/default.nix b/pkgs/development/python-modules/stompclient/default.nix
new file mode 100644
index 00000000000..1efcd6a6500
--- /dev/null
+++ b/pkgs/development/python-modules/stompclient/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, mock
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "stompclient";
+  version = "0.3.2";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "95a4e98dd0bba348714439ea11a25ee8a74acb8953f95a683924b5bf2a527e4e";
+  };
+
+  buildInputs = [ mock nose ];
+
+  # XXX: Ran 0 tests in 0.217s
+
+  meta = with stdenv.lib; {
+    description = "Lightweight and extensible STOMP messaging client";
+    homepage = https://bitbucket.org/hozn/stompclient;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/subdownloader/default.nix b/pkgs/development/python-modules/subdownloader/default.nix
new file mode 100644
index 00000000000..24b082123b8
--- /dev/null
+++ b/pkgs/development/python-modules/subdownloader/default.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, mmpython
+, pyqt4
+}:
+
+buildPythonPackage rec {
+  version = "2.0.18";
+  pname = "subdownloader";
+
+  src = fetchurl {
+    url = "https://launchpad.net/subdownloader/trunk/2.0.18/+download/subdownloader_2.0.18.orig.tar.gz";
+    sha256 = "0manlfdpb585niw23ibb8n21mindd1bazp0pnxvmdjrp2mnw97ig";
+  };
+
+  propagatedBuildInputs = [ mmpython pyqt4 ];
+
+  setup = ''
+    import os
+    import sys
+
+    try:
+        if os.environ.get("NO_SETUPTOOLS"):
+            raise ImportError()
+        from setuptools import setup, Extension
+        SETUPTOOLS = True
+    except ImportError:
+        SETUPTOOLS = False
+        # Use distutils.core as a fallback.
+        # We won t be able to build the Wheel file on Windows.
+        from distutils.core import setup, Extension
+
+    with open("README") as fp:
+        long_description = fp.read()
+
+    requirements = [ ]
+
+    install_options = {
+        "name": "subdownloader",
+        "version": "2.0.18",
+        "description": "Tool for automatic download/upload subtitles for videofiles using fast hashing",
+        "long_description": long_description,
+        "url": "http://www.subdownloader.net",
+
+        "scripts": ["run.py"],
+        "packages": ["cli", "FileManagement", "gui", "languages", "modules"],
+
+    }
+    if SETUPTOOLS:
+        install_options["install_requires"] = requirements
+
+    setup(**install_options)
+  '';
+
+  postUnpack = ''
+    echo '${setup}' > $sourceRoot/setup.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tool for automatic download/upload subtitles for videofiles using fast hashing";
+    homepage = http://www.subdownloader.net;
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/subunit/default.nix b/pkgs/development/python-modules/subunit/default.nix
new file mode 100644
index 00000000000..ac21ea41555
--- /dev/null
+++ b/pkgs/development/python-modules/subunit/default.nix
@@ -0,0 +1,21 @@
+{ buildPythonPackage
+, pkgs
+, testtools
+, testscenarios
+}:
+
+buildPythonPackage rec {
+  name = pkgs.subunit.name;
+  src = pkgs.subunit.src;
+
+  propagatedBuildInputs = [ testtools testscenarios ];
+  nativeBuildInputs = [ pkgs.pkgconfig ];
+  buildInputs = [ pkgs.check pkgs.cppunit ];
+
+  patchPhase = ''
+    sed -i 's/version=VERSION/version="${pkgs.subunit.version}"/' setup.py
+  '';
+
+  meta = pkgs.subunit.meta;
+
+}
diff --git a/pkgs/development/python-modules/suds-jurko/default.nix b/pkgs/development/python-modules/suds-jurko/default.nix
new file mode 100644
index 00000000000..5c04c5bd5d3
--- /dev/null
+++ b/pkgs/development/python-modules/suds-jurko/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "suds-jurko";
+  version = "0.6";
+  disabled = isPyPy;  # lots of failures
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "1s4radwf38kdh3jrn5acbidqlr66sx786fkwi0rgq61hn4n2bdqw";
+  };
+
+  buildInputs = [ pytest ];
+
+  preBuild = ''
+    # fails
+    substituteInPlace tests/test_transport_http.py \
+      --replace "test_sending_unicode_data" "noop"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Lightweight SOAP client (Jurko's fork)";
+    homepage = https://bitbucket.org/jurko/suds;
+    license = licenses.lgpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/suds/default.nix b/pkgs/development/python-modules/suds/default.nix
new file mode 100644
index 00000000000..c4a8e480ed4
--- /dev/null
+++ b/pkgs/development/python-modules/suds/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "suds";
+  version = "0.4";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1w4s9051iv90c0gs73k80c3d51y2wbx1xgfdgg2hk7mv4gjlllnm";
+  };
+
+  patches = [ ./suds-0.4-CVE-2013-2217.patch ];
+
+  meta = with stdenv.lib; {
+    # Broken for security issues:
+    # - https://github.com/NixOS/nixpkgs/issues/19678
+    # - https://lwn.net/Vulnerabilities/559200/
+    broken = true;
+    description = "Lightweight SOAP client";
+    homepage = https://fedorahosted.org/suds;
+    license = licenses.lgpl3Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/suds-0.4-CVE-2013-2217.patch b/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch
index 235fc1f928c..235fc1f928c 100644
--- a/pkgs/development/python-modules/suds-0.4-CVE-2013-2217.patch
+++ b/pkgs/development/python-modules/suds/suds-0.4-CVE-2013-2217.patch
diff --git a/pkgs/development/python-modules/sure/default.nix b/pkgs/development/python-modules/sure/default.nix
new file mode 100644
index 00000000000..31ec9c12b00
--- /dev/null
+++ b/pkgs/development/python-modules/sure/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, six
+, mock
+, pkgs
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "sure";
+  version = "1.2.24";
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1lyjq0rvkbv585dppjdq90lbkm6gyvag3wgrggjzyh7cpyh5c12w";
+  };
+
+  LC_ALL="en_US.UTF-8";
+
+  buildInputs = [ nose pkgs.glibcLocales ];
+  propagatedBuildInputs = [ six mock ];
+
+  meta = with stdenv.lib; {
+    description = "Utility belt for automated testing";
+    homepage = https://falcao.it/sure/;
+    license = licenses.gpl3Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/svg2tikz/default.nix b/pkgs/development/python-modules/svg2tikz/default.nix
new file mode 100644
index 00000000000..c3308bf229c
--- /dev/null
+++ b/pkgs/development/python-modules/svg2tikz/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, lxml
+, isPy27
+}:
+
+buildPythonPackage {
+  name = "svg2tikz";
+  version = "1.0.0";
+  disabled = ! isPy27;
+
+  propagatedBuildInputs = [ lxml ];
+
+  src = fetchgit {
+    url = "https://github.com/kjellmf/svg2tikz";
+    sha256 = "429428ec435e53672b85cdfbb89bb8af0ff9f8238f5d05970729e5177d252d5f";
+    rev = "ad36f2c3818da13c4136d70a0fd8153acf8daef4";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kjellmf/svg2tikz;
+    description = "An SVG to TikZ converter";
+    license = licenses.gpl2Plus;
+    maintainers =  with maintainers; [ gal_bolle ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/svgwrite/default.nix b/pkgs/development/python-modules/svgwrite/default.nix
new file mode 100644
index 00000000000..79e03acd359
--- /dev/null
+++ b/pkgs/development/python-modules/svgwrite/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptools
+, pyparsing
+}:
+
+buildPythonPackage rec {
+  pname = "svgwrite";
+  version = "1.1.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1f018813072aa4d7e95e58f133acb3f68fa7de0a0d89ec9402cc38406a0ec5b8";
+  };
+
+  buildInputs = [ setuptools ];
+  propagatedBuildInputs = [ pyparsing ];
+
+  meta = with stdenv.lib; {
+    description = "A Python library to create SVG drawings";
+    homepage = https://bitbucket.org/mozman/svgwrite;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/tarman/default.nix b/pkgs/development/python-modules/tarman/default.nix
new file mode 100644
index 00000000000..305daecc8de
--- /dev/null
+++ b/pkgs/development/python-modules/tarman/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+, unittest2
+, nose
+, mock
+, libarchive
+}:
+
+buildPythonPackage rec {
+  version = "0.1.3";
+  pname = "tarman";
+
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0ri6gj883k042xaxa2d5ymmhbw2bfcxdzhh4bz7700ibxwxxj62h";
+  };
+
+  buildInputs = [ unittest2 nose mock ];
+  propagatedBuildInputs = [ libarchive ];
+
+  # tests are still failing
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/matejc/tarman;
+    description = "Archive manager with curses interface";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/taskw/default.nix b/pkgs/development/python-modules/taskw/default.nix
new file mode 100644
index 00000000000..b2cc48b3079
--- /dev/null
+++ b/pkgs/development/python-modules/taskw/default.nix
@@ -0,0 +1,40 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, tox
+, six
+, dateutil
+, pytz
+, pkgs
+}:
+
+buildPythonPackage rec {
+  version = "1.0.3";
+  pname = "taskw";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1fa7bv5996ppfbryv02lpnlhk5dra63lhlwrb1i4ifqbziqfqh5n";
+  };
+
+  patches = [ ./use-template-for-taskwarrior-install-path.patch ];
+  postPatch = ''
+    substituteInPlace taskw/warrior.py \
+      --replace '@@taskwarrior@@' '${pkgs.taskwarrior}'
+  '';
+
+  # https://github.com/ralphbean/taskw/issues/98
+  doCheck = false;
+
+  buildInputs = [ nose pkgs.taskwarrior tox ];
+  propagatedBuildInputs = [ six dateutil pytz ];
+
+  meta = with stdenv.lib; {
+    homepage =  https://github.com/ralphbean/taskw;
+    description = "Python bindings for your taskwarrior database";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ pierron ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/telegram/default.nix b/pkgs/development/python-modules/telegram/default.nix
new file mode 100644
index 00000000000..df45aaaee3b
--- /dev/null
+++ b/pkgs/development/python-modules/telegram/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "telegram";
+  version = "0.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1495l2ml8mg120wfvqhikqkfczhwwaby40vdmsz8v2l69jps01fl";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/liluo/telegram;
+    description = "Telegram APIs";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/termcolor/default.nix b/pkgs/development/python-modules/termcolor/default.nix
new file mode 100644
index 00000000000..2931f0e5199
--- /dev/null
+++ b/pkgs/development/python-modules/termcolor/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "termcolor";
+  version = "1.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Termcolor";
+    homepage = https://pypi.python.org/pypi/termcolor;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/terminaltables/default.nix b/pkgs/development/python-modules/terminaltables/default.nix
new file mode 100644
index 00000000000..bb6961f77ec
--- /dev/null
+++ b/pkgs/development/python-modules/terminaltables/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "terminaltables";
+  version = "3.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Display simple tables in terminals";
+    homepage = "https://github.com/Robpol86/terminaltables";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/testpath/default.nix b/pkgs/development/python-modules/testpath/default.nix
new file mode 100644
index 00000000000..cda5abda529
--- /dev/null
+++ b/pkgs/development/python-modules/testpath/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "testpath";
+  version = "0.3";
+  format = "wheel";
+
+  src = fetchPypi {
+    inherit pname version format;
+    sha256 = "f16b2cb3b03e1ada4fb0200b265a4446f92f3ba4b9d88ace34f51c54ab6d294e";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Test utilities for code working with files and commands";
+    license = licenses.mit;
+    homepage = https://github.com/jupyter/testpath;
+  };
+
+}
diff --git a/pkgs/development/python-modules/testrepository/default.nix b/pkgs/development/python-modules/testrepository/default.nix
new file mode 100644
index 00000000000..dbc342c1c4d
--- /dev/null
+++ b/pkgs/development/python-modules/testrepository/default.nix
@@ -0,0 +1,34 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, testtools
+, testresources
+, pbr
+, subunit
+, fixtures
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "testrepository";
+  version = "0.0.20";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m";
+  };
+
+  buildInputs = [ testtools testresources ];
+  propagatedBuildInputs = [ pbr subunit fixtures ];
+
+  checkPhase = ''
+    ${python.interpreter} ./testr
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A database of test results which can be used as part of developer workflow";
+    homepage = https://pypi.python.org/pypi/testrepository;
+    license = licenses.bsd2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/testscenarios/default.nix b/pkgs/development/python-modules/testscenarios/default.nix
new file mode 100644
index 00000000000..61e2ce5a81e
--- /dev/null
+++ b/pkgs/development/python-modules/testscenarios/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, testtools
+}:
+
+buildPythonPackage rec {
+  pname = "testscenarios";
+  version = "0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg";
+  };
+
+  propagatedBuildInputs = [ testtools ];
+
+  meta = with stdenv.lib; {
+    description = "A pyunit extension for dependency injection";
+    homepage = https://pypi.python.org/pypi/testscenarios;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/threadpool/default.nix b/pkgs/development/python-modules/threadpool/default.nix
new file mode 100644
index 00000000000..b3d7f58c66d
--- /dev/null
+++ b/pkgs/development/python-modules/threadpool/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "threadpool";
+  version = "1.3.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "197gzrxn9lbk0q1v079814c6s05cr4rwzyl6c1m6inkyif4yzr6c";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://chrisarndt.de/projects/threadpool/;
+    description = "Easy to use object-oriented thread pool framework";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/thrift/default.nix b/pkgs/development/python-modules/thrift/default.nix
new file mode 100644
index 00000000000..932c642e9b1
--- /dev/null
+++ b/pkgs/development/python-modules/thrift/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "thrift";
+  version = "0.9.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "dfbc3d3bd19d396718dab05abaf46d93ae8005e2df798ef02e32793cd963877e";
+  };
+
+  # No tests. Breaks when not disabling.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python bindings for the Apache Thrift RPC system";
+    homepage = http://thrift.apache.org/;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hbunke ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/thumborpexif/default.nix b/pkgs/development/python-modules/thumborpexif/default.nix
new file mode 100644
index 00000000000..c3aa0136f33
--- /dev/null
+++ b/pkgs/development/python-modules/thumborpexif/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "thumbor-pexif";
+  version = "0.14";
+  disabled = ! isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "715cd24760c7c28d6270c79c9e29b55b8d952a24e0e56833d827c2c62451bc3c";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Module to parse and edit the EXIF data tags in a JPEG image";
+    homepage = http://www.benno.id.au/code/pexif/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/tilestache/default.nix b/pkgs/development/python-modules/tilestache/default.nix
new file mode 100644
index 00000000000..0b919cb9c6d
--- /dev/null
+++ b/pkgs/development/python-modules/tilestache/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, modestmaps
+, pillow
+, pycairo
+, python-mapnik
+, simplejson
+, werkzeug
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "tilestache";
+  version = "1.50.1";
+  disabled = !isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1z1j35pz77lhhjdn69sq5rmz62b5m444507d8zjnp0in5xqaj6rj";
+  };
+
+  propagatedBuildInputs = [ modestmaps pillow pycairo python-mapnik simplejson werkzeug ];
+
+  meta = with stdenv.lib; {
+    description = "A tile server for rendered geographic data";
+    homepage = http://tilestache.org;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/timelib/default.nix b/pkgs/development/python-modules/timelib/default.nix
new file mode 100644
index 00000000000..39ff4b6de15
--- /dev/null
+++ b/pkgs/development/python-modules/timelib/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "timelib";
+  version = "0.2.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "49142233bdb5971d64a41e05a1f80a408a02be0dc7d9f8c99e7bdd0613ba81cb";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Parse english textual date descriptions";
+    homepage = "https://github.com/pediapress/timelib/";
+    license = licenses.zlib;
+  };
+
+}
diff --git a/pkgs/development/python-modules/tissue/default.nix b/pkgs/development/python-modules/tissue/default.nix
new file mode 100644
index 00000000000..5ed47bdd028
--- /dev/null
+++ b/pkgs/development/python-modules/tissue/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pep8
+}:
+
+buildPythonPackage rec {
+  pname = "tissue";
+  version = "0.9.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7e34726c3ec8fae358a7faf62de172db15716f5582e5192a109e33348bd76c2e";
+  };
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ pep8 ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/WoLpH/tissue;
+    description = "Tissue - automated pep8 checker for nose";
+    license = licenses.lgpl2;
+    maintainers = with maintainers; [ garbas domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/tkinter/default.nix b/pkgs/development/python-modules/tkinter/default.nix
new file mode 100644
index 00000000000..bd242c62ab8
--- /dev/null
+++ b/pkgs/development/python-modules/tkinter/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, python
+, py
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  name = "tkinter-${python.version}";
+  src = py;
+  format = "other";
+
+  disabled = isPyPy;
+
+  installPhase = ''
+    # Move the tkinter module
+    mkdir -p $out/${py.sitePackages}
+    mv lib/${py.libPrefix}/lib-dynload/_tkinter* $out/${py.sitePackages}/
+  '' + stdenv.lib.optionalString (!stdenv.isDarwin) ''
+    # Update the rpath to point to python without x11Support
+    old_rpath=$(patchelf --print-rpath $out/${py.sitePackages}/_tkinter*)
+    new_rpath=$(sed "s#${py}#${python}#g" <<< "$old_rpath" )
+    patchelf --set-rpath $new_rpath $out/${py.sitePackages}/_tkinter*
+  '';
+
+  meta = py.meta;
+
+}
diff --git a/pkgs/development/python-modules/tlsh/default.nix b/pkgs/development/python-modules/tlsh/default.nix
new file mode 100644
index 00000000000..893fe0240b6
--- /dev/null
+++ b/pkgs/development/python-modules/tlsh/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "tlsh";
+  version = "3.4.5";
+
+  src = fetchFromGitHub {
+    owner = "trendmicro";
+    repo = "tlsh";
+    rev = "22fa9a62068b92c63f2b5a87004a7a7ceaac1930";
+    sha256 = "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll";
+  };
+
+  buildInputs = [ pkgs.cmake ];
+
+  # no test data
+  doCheck = false;
+
+  preConfigure = ''
+    mkdir build
+    cd build
+    cmake ..
+    cd ../py_ext
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Trend Micro Locality Sensitive Hash";
+    homepage = https://github.com/trendmicro/tlsh;
+    license = licenses.asl20;
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/development/python-modules/tlslite/default.nix b/pkgs/development/python-modules/tlslite/default.nix
new file mode 100644
index 00000000000..75d622ef34f
--- /dev/null
+++ b/pkgs/development/python-modules/tlslite/default.nix
@@ -0,0 +1,21 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "tlslite";
+  version = "0.4.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1fxx6d3nw5r1hqna1h2jvqhcygn9fyshlm0gh3gp0b1ji824gd6r";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A pure Python implementation of SSL and TLS";
+    homepage = https://pypi.python.org/pypi/tlslite;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/tokenlib/default.nix b/pkgs/development/python-modules/tokenlib/default.nix
new file mode 100644
index 00000000000..24f54b98a96
--- /dev/null
+++ b/pkgs/development/python-modules/tokenlib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+, requests
+, webob
+}:
+
+buildPythonPackage rec {
+  pname = "tokenlib";
+  version = "0.3.1";
+
+  src = fetchgit {
+    url = https://github.com/mozilla-services/tokenlib.git;
+    rev = "refs/tags/${version}";
+    sha256 = "0bq6dqyfwh29pg8ngmrm4mx4q27an9lsj0p9l79p9snn4g2rxzc8";
+  };
+
+  propagatedBuildInputs = [ requests webob ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/mozilla-services/tokenlib;
+    description = "Generic support library for signed-token-based auth schemes";
+    license = licenses.mpl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/toposort/default.nix b/pkgs/development/python-modules/toposort/default.nix
new file mode 100644
index 00000000000..67b946b352f
--- /dev/null
+++ b/pkgs/development/python-modules/toposort/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "toposort";
+  version = "1.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1izmirbwmd9xrk7rq83p486cvnsslfa5ljvl7rijj1r64zkcnf3a";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A topological sort algorithm";
+    homepage = https://pypi.python.org/pypi/toposort/1.1;
+    maintainers = with maintainers; [ tstrobel ];
+    platforms = platforms.linux;
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/traceback2/default.nix b/pkgs/development/python-modules/traceback2/default.nix
new file mode 100644
index 00000000000..fe15285f065
--- /dev/null
+++ b/pkgs/development/python-modules/traceback2/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, linecache2
+}:
+
+buildPythonPackage rec {
+  version = "1.4.0";
+  pname = "traceback2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05";
+  };
+
+  propagatedBuildInputs = [ pbr linecache2 ];
+
+  # circular dependencies for tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A backport of traceback to older supported Pythons";
+    homepage = https://pypi.python.org/pypi/traceback2/;
+    license = licenses.psfl;
+  };
+
+}
diff --git a/pkgs/development/python-modules/tracing/default.nix b/pkgs/development/python-modules/tracing/default.nix
new file mode 100644
index 00000000000..843f26508ae
--- /dev/null
+++ b/pkgs/development/python-modules/tracing/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, sphinx
+}:
+
+buildPythonPackage rec {
+  pname = "tracing";
+  version = "0.8";
+
+  src = fetchurl {
+    url = "http://code.liw.fi/debian/pool/main/p/python-tracing/python-tracing_${version}.orig.tar.gz";
+    sha256 = "1l4ybj5rvrrcxf8csyq7qx52izybd502pmx70zxp46gxqm60d2l0";
+  };
+
+  buildInputs = [ sphinx ];
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://liw.fi/tracing/;
+    description = "Python debug logging helper";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ rickynils ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/traits/default.nix b/pkgs/development/python-modules/traits/default.nix
new file mode 100644
index 00000000000..380827e6488
--- /dev/null
+++ b/pkgs/development/python-modules/traits/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, pytest
+, numpy
+, isPy33
+}:
+
+buildPythonPackage rec {
+  pname = "traits";
+  version = "4.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0w43qv36wnrimlh0nzzgg81315a18yza3vk494wqxf1l19g390jx";
+  };
+
+  # Use pytest because its easier to discover tests
+  buildInputs = [ pytest ];
+  propagatedBuildInputs = [ numpy ];
+
+  checkPhase = ''
+    py.test $out/${python.sitePackages}
+  '';
+
+  # Test suite is broken for 3.x on latest release
+  # https://github.com/enthought/traits/issues/187
+  # https://github.com/enthought/traits/pull/188
+  # Furthermore, some tests fail due to being in a chroot
+  doCheck = isPy33;
+
+  meta = with stdenv.lib; {
+    description = "Explicitly typed attributes for Python";
+    homepage = https://pypi.python.org/pypi/traits;
+    license = "BSD";
+  };
+
+}
diff --git a/pkgs/development/python-modules/translationstring/default.nix b/pkgs/development/python-modules/translationstring/default.nix
new file mode 100644
index 00000000000..56640a4c067
--- /dev/null
+++ b/pkgs/development/python-modules/translationstring/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "translationstring";
+  version = "1.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4ee44cfa58c52ade8910ea0ebc3d2d84bdcad9fa0422405b1801ec9b9a65b72d";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://pylonsproject.org/;
+    description = "Utility library for i18n relied on by various Repoze and Pyramid packages";
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ garbas domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/transmissionrpc/default.nix b/pkgs/development/python-modules/transmissionrpc/default.nix
new file mode 100644
index 00000000000..932045b6502
--- /dev/null
+++ b/pkgs/development/python-modules/transmissionrpc/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+}:
+
+buildPythonPackage rec {
+  pname = "transmissionrpc";
+  version = "0.11";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ec43b460f9fde2faedbfa6d663ef495b3fd69df855a135eebe8f8a741c0dde60";
+  };
+
+  propagatedBuildInputs = [ six ];
+
+  meta = with stdenv.lib; {
+    description = "Python implementation of the Transmission bittorent client RPC protocol";
+    homepage = https://pypi.python.org/pypi/transmissionrpc/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/trezor_agent/default.nix b/pkgs/development/python-modules/trezor_agent/default.nix
new file mode 100644
index 00000000000..baca97be877
--- /dev/null
+++ b/pkgs/development/python-modules/trezor_agent/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, trezor
+, libagent
+, ecdsa
+, ed25519
+, mnemonic
+, keepkey
+, semver
+}:
+
+buildPythonPackage rec{
+  pname = "trezor_agent";
+  version = "0.9.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1i5cdamlf3c0ym600pjklij74p8ifj9cv7xrpnrfl1b8nkadswbz";
+  };
+
+  propagatedBuildInputs = [ trezor libagent ecdsa ed25519 mnemonic keepkey semver ];
+
+  meta = with stdenv.lib; {
+    description = "Using Trezor as hardware SSH agent";
+    homepage = https://github.com/romanz/trezor-agent;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ np ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/ttystatus/default.nix b/pkgs/development/python-modules/ttystatus/default.nix
new file mode 100644
index 00000000000..042b4a19642
--- /dev/null
+++ b/pkgs/development/python-modules/ttystatus/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, sphinx
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "ttystatus";
+  version = "0.23";
+  disabled = isPy3k;
+
+  src = fetchurl {
+    url = "http://code.liw.fi/debian/pool/main/p/python-ttystatus/python-ttystatus_${version}.orig.tar.gz";
+    sha256 = "0ymimviyjyh2iizqilg88g4p26f5vpq1zm3cvg7dr7q4y3gmik8y";
+  };
+
+  buildInputs = [ sphinx ];
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://liw.fi/ttystatus/;
+    description = "Progress and status updates on terminals for Python";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ rickynils ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/tvdb_api/default.nix b/pkgs/development/python-modules/tvdb_api/default.nix
new file mode 100644
index 00000000000..758c699d446
--- /dev/null
+++ b/pkgs/development/python-modules/tvdb_api/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests-cache
+}:
+
+buildPythonPackage rec {
+  pname = "tvdb_api";
+  version = "1.10";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0hq887yb3rwc0rcw32lh7xdkk9bbrqy274aspzqkd6f7dyhp73ih";
+  };
+
+  propagatedBuildInputs = [ requests-cache ];
+
+  meta = with stdenv.lib; {
+    description = "Simple to use TVDB (thetvdb.com) API in Python.";
+    homepage = "https://github.com/dbr/tvdb_api";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/tvnamer/default.nix b/pkgs/development/python-modules/tvnamer/default.nix
new file mode 100644
index 00000000000..172c4423920
--- /dev/null
+++ b/pkgs/development/python-modules/tvnamer/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, tvdb_api
+}:
+
+buildPythonPackage rec {
+  pname = "tvnamer";
+  version = "2.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "10iizmwna2xpyc2694hsrvny68y3bdq576p8kxsvg5gj2spnsxav";
+  };
+
+  buildInputs = [ pytest ];
+  propagatedBuildInputs = [ tvdb_api ];
+
+  # a ton of tests fail with: IOError: tvnamer/main.py could not be found in . or ..
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Automatic TV episode file renamer, uses data from thetvdb.com via tvdb_api.";
+    homepage = "https://github.com/dbr/tvnamer";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twiggy/default.nix b/pkgs/development/python-modules/twiggy/default.nix
new file mode 100644
index 00000000000..550ec327990
--- /dev/null
+++ b/pkgs/development/python-modules/twiggy/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "Twiggy";
+  version = "0.4.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4e8f1894e5aee522db6cb245ccbfde3c5d1aa08d31330c7e3af783b0e66eec23";
+  };
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://twiggy.wearpants.org;
+    # Taken from http://i.wearpants.org/blog/meet-twiggy/
+    description = "Twiggy is the first totally new design for a logger since log4j";
+    license     = licenses.bsd3;
+    maintainers = with maintainers; [ pierron ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twitter-common-collections/default.nix b/pkgs/development/python-modules/twitter-common-collections/default.nix
new file mode 100644
index 00000000000..b2d6054aa25
--- /dev/null
+++ b/pkgs/development/python-modules/twitter-common-collections/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-lang
+}:
+
+buildPythonPackage rec {
+  pname   = "twitter.common.collections";
+  version = "0.3.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0wf8ks6y2kalx2inzayq0w4kh3kg25daik1ac7r6y79i03fslsc5";
+  };
+
+  propagatedBuildInputs = [ twitter-common-lang ];
+
+  meta = with stdenv.lib; {
+    description = "Twitter's common collections";
+    homepage    = "https://twitter.github.io/commons/";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twitter-common-confluence/default.nix b/pkgs/development/python-modules/twitter-common-confluence/default.nix
new file mode 100644
index 00000000000..53605baa3d5
--- /dev/null
+++ b/pkgs/development/python-modules/twitter-common-confluence/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-log
+}:
+
+buildPythonPackage rec {
+  pname   = "twitter.common.confluence";
+  version = "0.3.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1i2fjn23cmms81f1fhvvkg6hgzqpw07dlqg3ydz6cqv2glw7zq26";
+  };
+
+  propagatedBuildInputs = [ twitter-common-log ];
+
+  meta = with stdenv.lib; {
+    description = "Twitter's API to the confluence wiki";
+    homepage    = "https://twitter.github.io/commons/";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twitter-common-dirutil/default.nix b/pkgs/development/python-modules/twitter-common-dirutil/default.nix
new file mode 100644
index 00000000000..0172232a750
--- /dev/null
+++ b/pkgs/development/python-modules/twitter-common-dirutil/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-lang
+}:
+
+buildPythonPackage rec {
+  pname   = "twitter.common.dirutil";
+  version = "0.3.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1wpjfmmxsdwnbx5dl13is4zkkpfcm94ksbzas9y2qhgswfa9jqha";
+  };
+
+  propagatedBuildInputs = [ twitter-common-lang ];
+
+  meta = with stdenv.lib; {
+    description = "Utilities for manipulating and finding files and directories";
+    homepage    = "https://twitter.github.io/commons/";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twitter-common-lang/default.nix b/pkgs/development/python-modules/twitter-common-lang/default.nix
new file mode 100644
index 00000000000..3541dacce4e
--- /dev/null
+++ b/pkgs/development/python-modules/twitter-common-lang/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname   = "twitter.common.lang";
+  version = "0.3.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1l8fmnsrx7hgg3ivslg588rnl9n1gfjn2w6224fr8rs7zmkd5lan";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Twitter's 2.x / 3.x compatibility swiss-army knife";
+    homepage    = "https://twitter.github.io/commons/";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twitter-common-log/default.nix b/pkgs/development/python-modules/twitter-common-log/default.nix
new file mode 100644
index 00000000000..e3e1f2859da
--- /dev/null
+++ b/pkgs/development/python-modules/twitter-common-log/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twitter-common-options
+, twitter-common-dirutil
+}:
+
+buildPythonPackage rec {
+  pname   = "twitter.common.log";
+  version = "0.3.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1bdzbxx2bxwpf57xaxfz1nblzgfvhlidz8xqd7s84c62r3prh02v";
+  };
+
+  propagatedBuildInputs = [ twitter-common-options twitter-common-dirutil ];
+
+  meta = with stdenv.lib; {
+    description = "Twitter's common logging library";
+    homepage    = "https://twitter.github.io/commons/";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twitter-common-options/default.nix b/pkgs/development/python-modules/twitter-common-options/default.nix
new file mode 100644
index 00000000000..36b18403fab
--- /dev/null
+++ b/pkgs/development/python-modules/twitter-common-options/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname   = "twitter.common.options";
+  version = "0.3.9";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0d1czag5mcxg0vcnlklspl2dvdab9kmznsycj04d3vggi158ljrd";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Twitter's optparse wrapper";
+    homepage    = "https://twitter.github.io/commons/";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/twitter/default.nix b/pkgs/development/python-modules/twitter/default.nix
new file mode 100644
index 00000000000..d8f863cab8b
--- /dev/null
+++ b/pkgs/development/python-modules/twitter/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "twitter";
+  version = "1.15.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1m6b17irb9klc345k8174pni724jzy2973z2x2jg69h83hipjw2c";
+  };
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Twitter API library";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/txaio/default.nix b/pkgs/development/python-modules/txaio/default.nix
index 2bfdbae918a..5536c68e2be 100644
--- a/pkgs/development/python-modules/txaio/default.nix
+++ b/pkgs/development/python-modules/txaio/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, buildPythonPackage, fetchPypi, pytest, mock, six, twisted }:
+{ stdenv, buildPythonPackage, fetchPypi, pytest, mock, six, twisted,isPy37 }:
 
 buildPythonPackage rec {
   pname = "txaio";
-  version = "18.7.1";
+  version = "18.8.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "701de939e90bb80f7e085357081552437526752199def5541dddfc34c0b0593f";
+    sha256 = "67e360ac73b12c52058219bb5f8b3ed4105d2636707a36a7cdafb56fe06db7fe";
   };
 
   checkInputs = [ pytest mock ];
@@ -17,6 +17,9 @@ buildPythonPackage rec {
     py.test -k "not test_sdist"
   '';
 
+  # Needs some fixing for 3.7
+  doCheck = !isPy37;
+
   meta = with stdenv.lib; {
     description = "Utilities to support code that runs unmodified on Twisted and asyncio.";
     homepage    = "https://github.com/crossbario/txaio";
diff --git a/pkgs/development/python-modules/txamqp/default.nix b/pkgs/development/python-modules/txamqp/default.nix
new file mode 100644
index 00000000000..2c3ee66663f
--- /dev/null
+++ b/pkgs/development/python-modules/txamqp/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, twisted
+}:
+
+buildPythonPackage rec {
+  pname = "txamqp";
+  version = "0.3";
+
+  src = fetchurl {
+    url = "https://launchpad.net/txamqp/trunk/${version}/+download/python-txamqp_${version}.orig.tar.gz";
+    sha256 = "1r2ha0r7g14i4b5figv2spizjrmgfpspdbl1m031lw9px2hhm463";
+  };
+
+  buildInputs = [ twisted ];
+
+  meta = with stdenv.lib; {
+    homepage = https://launchpad.net/txamqp;
+    description = "Library for communicating with AMQP peers and brokers using Twisted";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ rickynils ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/txgithub/default.nix b/pkgs/development/python-modules/txgithub/default.nix
new file mode 100644
index 00000000000..5340b202e68
--- /dev/null
+++ b/pkgs/development/python-modules/txgithub/default.nix
@@ -0,0 +1,39 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pyopenssl
+, twisted
+, service-identity
+}:
+
+buildPythonPackage rec {
+  pname = "txgithub";
+  version = "15.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "16gbizy8vkxasxylwzj4p66yw8979nvzxdj6csidgmng7gi2k8nx";
+  };
+
+  propagatedBuildInputs = [ pyopenssl twisted service-identity ];
+
+  # fix python3 issues
+  patchPhase = ''
+    sed -i 's/except usage.UsageError, errortext/except usage.UsageError as errortext/' txgithub/scripts/create_token.py
+    sed -i 's/except usage.UsageError, errortext/except usage.UsageError as errortext/' txgithub/scripts/gist.py
+    sed -i 's/print response\[\x27html_url\x27\]/print(response\[\x27html_url\x27\])/' txgithub/scripts/gist.py
+    sed -i '41d' txgithub/scripts/gist.py
+    sed -i '41d' txgithub/scripts/gist.py
+  '';
+
+  # No tests distributed
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "GitHub API client implemented using Twisted.";
+    homepage    = "https://github.com/tomprince/txgithub";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ nand0p ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/txrequests/default.nix b/pkgs/development/python-modules/txrequests/default.nix
new file mode 100644
index 00000000000..c1d98738b56
--- /dev/null
+++ b/pkgs/development/python-modules/txrequests/default.nix
@@ -0,0 +1,35 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, twisted
+, requests
+, cryptography
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "txrequests";
+  version = "0.9.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0kkxxd17ar5gyjkz9yrrdr15a64qw6ym60ndi0zbwx2s634yfafw";
+  };
+
+  propagatedBuildInputs = [ twisted requests cryptography ];
+
+  # Require network access
+  doCheck = false;
+
+  checkPhase = ''
+    ${python.interpreter} -m unittest discover
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Asynchronous Python HTTP for Humans.";
+    homepage    = "https://github.com/tardyp/txrequests";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ nand0p ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/typogrify/default.nix b/pkgs/development/python-modules/typogrify/default.nix
new file mode 100644
index 00000000000..85323cc77e7
--- /dev/null
+++ b/pkgs/development/python-modules/typogrify/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, django
+, smartypants
+, jinja2
+}:
+
+buildPythonPackage rec {
+  pname = "typogrify";
+  version = "2.0.7";
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38";
+  };
+
+  propagatedBuildInputs = [ django smartypants jinja2 ];
+
+  # Wants to set up Django
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Filters to enhance web typography, including support for Django & Jinja templates";
+    homepage = "https://github.com/mintchaos/typogrify";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ garbas ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/ujson/default.nix b/pkgs/development/python-modules/ujson/default.nix
new file mode 100644
index 00000000000..a9d68978c3b
--- /dev/null
+++ b/pkgs/development/python-modules/ujson/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "ujson";
+  version = "1.35";
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "11jz5wi7mbgqcsz52iqhpyykiaasila4lq8cmc2d54bfa3jp6q7n";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/ujson;
+    description = "Ultra fast JSON encoder and decoder for Python";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/umalqurra/default.nix b/pkgs/development/python-modules/umalqurra/default.nix
new file mode 100644
index 00000000000..a41921a9d8c
--- /dev/null
+++ b/pkgs/development/python-modules/umalqurra/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "umalqurra";
+  version = "0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "719f6a36f908ada1c29dae0d934dd0f1e1f6e3305784edbec23ad719397de678";
+  };
+
+  # No tests included
+  doCheck = false;
+
+  # See for license
+  # https://github.com/tytkal/python-hijiri-ummalqura/issues/4
+  meta = with stdenv.lib; {
+    description = "Date Api that support Hijri Umalqurra calendar";
+    homepage = https://github.com/tytkal/python-hijiri-ummalqura;
+    license = with licenses; [ publicDomain ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/unicodecsv/default.nix b/pkgs/development/python-modules/unicodecsv/default.nix
new file mode 100644
index 00000000000..d0f54a7c6b2
--- /dev/null
+++ b/pkgs/development/python-modules/unicodecsv/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  version = "0.14.1";
+  pname = "unicodecsv";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1z7pdwkr6lpsa7xbyvaly7pq3akflbnz8gq62829lr28gl1hi301";
+  };
+
+  # ImportError: No module named runtests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Drop-in replacement for Python2's stdlib csv module, with unicode support";
+    homepage = https://github.com/jdunck/python-unicodecsv;
+    maintainers = with maintainers; [ koral ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/unittest2/default.nix b/pkgs/development/python-modules/unittest2/default.nix
new file mode 100644
index 00000000000..85ca7157e12
--- /dev/null
+++ b/pkgs/development/python-modules/unittest2/default.nix
@@ -0,0 +1,38 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, traceback2
+}:
+
+buildPythonPackage rec {
+  version = "1.1.0";
+  pname = "unittest2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212";
+  };
+
+  propagatedBuildInputs = [ six traceback2 ];
+
+  # # 1.0.0 and up create a circle dependency with traceback2/pbr
+  doCheck = false;
+
+  postPatch = ''
+    # argparse is needed for python < 2.7, which we do not support anymore.
+    substituteInPlace setup.py --replace "argparse" ""
+
+    # # fixes a transient error when collecting tests, see https://bugs.launchpad.net/python-neutronclient/+bug/1508547
+    sed -i '510i\        return None, False' unittest2/loader.py
+    # https://github.com/pypa/packaging/pull/36
+    sed -i 's/version=VERSION/version=str(VERSION)/' setup.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A backport of the new features added to the unittest testing framework";
+    homepage = https://pypi.python.org/pypi/unittest2;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/unpaddedbase64/default.nix b/pkgs/development/python-modules/unpaddedbase64/default.nix
new file mode 100644
index 00000000000..b69f894cb5c
--- /dev/null
+++ b/pkgs/development/python-modules/unpaddedbase64/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchgit
+}:
+
+buildPythonPackage rec {
+  pname = "unpaddedbase64";
+  version = "1.1.0";
+
+  src = fetchgit {
+    url = "https://github.com/matrix-org/python-unpaddedbase64.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/matrix-org/python-unpaddedbase64;
+    description = "Unpadded Base64";
+    license = licenses.asl20;
+  };
+
+}
diff --git a/pkgs/development/python-modules/upass/default.nix b/pkgs/development/python-modules/upass/default.nix
new file mode 100644
index 00000000000..baf536fdbad
--- /dev/null
+++ b/pkgs/development/python-modules/upass/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchurl
+, pyperclip
+, urwid
+}:
+
+buildPythonPackage rec {
+  version = "0.1.4";
+  pname = "upass";
+
+  src = fetchurl {
+    url = "https://github.com/Kwpolska/upass/archive/v${version}.tar.gz";
+    sha256 = "0f2lyi7xhvb60pvzx82dpc13ksdj5k92ww09czclkdz8k0dxa7hb";
+  };
+
+  propagatedBuildInputs = [ pyperclip urwid ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Console UI for pass";
+    homepage = https://github.com/Kwpolska/upass;
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/uptime/default.nix b/pkgs/development/python-modules/uptime/default.nix
new file mode 100644
index 00000000000..035acbcec2b
--- /dev/null
+++ b/pkgs/development/python-modules/uptime/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "uptime";
+  version = "3.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0wr9jkixprlywz0plyn5p42a5fd31aiwvjrxdvj7r02vfxa04c3w";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/Cairnarvon/uptime;
+    description = "Cross-platform way to retrieve system uptime and boot time";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ rob ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/uritemplate_py/default.nix b/pkgs/development/python-modules/uritemplate_py/default.nix
new file mode 100644
index 00000000000..2fd76926d2d
--- /dev/null
+++ b/pkgs/development/python-modules/uritemplate_py/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "uritemplate.py";
+  version = "3.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1k5zvc5fyyrgv33mi3p86a9jn5n0pqffs9cviz92fw6q1kf7zvmr";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/uri-templates/uritemplate-py;
+    description = "Python implementation of URI Template";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ pSub ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/urwidtrees/default.nix b/pkgs/development/python-modules/urwidtrees/default.nix
new file mode 100644
index 00000000000..ac9cf73cab1
--- /dev/null
+++ b/pkgs/development/python-modules/urwidtrees/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, urwid
+}:
+
+buildPythonPackage rec {
+  name = "urwidtrees";
+  version  = "1.0";
+
+  src = fetchFromGitHub {
+    owner = "pazz";
+    repo = "urwidtrees";
+    rev = "${version}";
+    sha256 = "03gpcdi45z2idy1fd9zv8v9naivmpfx65hshm8r984k9wklv1dsa";
+  };
+
+  propagatedBuildInputs = [ urwid ];
+
+  meta = with stdenv.lib; {
+    description = "Tree widgets for urwid";
+    homepage = https://github.com/pazz/urwidtrees;
+    license = licenses.gpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/versiontools/default.nix b/pkgs/development/python-modules/versiontools/default.nix
new file mode 100644
index 00000000000..e92dbae8138
--- /dev/null
+++ b/pkgs/development/python-modules/versiontools/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "versiontools";
+  version = "1.9.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1xhl6kl7f4srgnw6zw4lr8j2z5vmrbaa83nzn2c9r2m1hwl36sd9";
+  };
+
+  doCheck = (!isPy3k);
+
+  meta = with stdenv.lib; {
+    homepage = https://launchpad.net/versiontools;
+    description = "Smart replacement for plain tuple used in __version__";
+    license = licenses.lgpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/veryprettytable/default.nix b/pkgs/development/python-modules/veryprettytable/default.nix
new file mode 100644
index 00000000000..8d71e6331f5
--- /dev/null
+++ b/pkgs/development/python-modules/veryprettytable/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, termcolor
+, colorama
+}:
+
+buildPythonPackage rec {
+  pname = "veryprettytable";
+  version = "0.8.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1k1rifz8x6qcicmx2is9vgxcj0qb2f5pvzrp7zhmvbmci3yack3f";
+  };
+
+  propagatedBuildInputs = [ termcolor colorama ];
+
+  meta = with stdenv.lib; {
+    description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
+    homepage = https://github.com/smeggingsmegger/VeryPrettyTable;
+    license = licenses.free;
+  };
+
+}
diff --git a/pkgs/development/python-modules/virtualenv-clone/default.nix b/pkgs/development/python-modules/virtualenv-clone/default.nix
new file mode 100644
index 00000000000..03a66b63165
--- /dev/null
+++ b/pkgs/development/python-modules/virtualenv-clone/default.nix
@@ -0,0 +1,29 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytest
+, virtualenv
+}:
+
+buildPythonPackage rec {
+  pname = "virtualenv-clone";
+  version = "0.2.5";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7087ba4eb48acfd5209a3fd03e15d072f28742619127c98333057e32748d91c4";
+  };
+
+  buildInputs = [ pytest ];
+  propagatedBuildInputs = [ virtualenv ];
+
+  # needs tox to run the tests
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/edwardgeorge/virtualenv-clone;
+    description = "Script to clone virtualenvs";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/virtualenvwrapper/default.nix b/pkgs/development/python-modules/virtualenvwrapper/default.nix
new file mode 100644
index 00000000000..4bf1778b9d5
--- /dev/null
+++ b/pkgs/development/python-modules/virtualenvwrapper/default.nix
@@ -0,0 +1,75 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pbr
+, pip
+, pkgs
+, stevedore
+, virtualenv
+, virtualenv-clone
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "virtualenvwrapper";
+  version = "4.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "514cbc22218347bf7b54bdbe49e1a5f550d2d53b1ad2491c10e91ddf48fb528f";
+  };
+
+  # pip depend on $HOME setting
+  preConfigure = "export HOME=$TMPDIR";
+
+  buildInputs = [ pbr pip pkgs.which ];
+  propagatedBuildInputs = [ stevedore virtualenv virtualenv-clone ];
+
+  postPatch = ''
+    for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
+      substituteInPlace "$file" --replace "which" "${pkgs.which}/bin/which"
+
+      # We can't set PYTHONPATH in a normal way (like exporting in a wrapper
+      # script) because the user has to evaluate the script and we don't want
+      # modify the global PYTHONPATH which would affect the user's
+      # environment.
+      # Furthermore it isn't possible to just use VIRTUALENVWRAPPER_PYTHON
+      # for this workaround, because this variable is well quoted inside the
+      # shell script.
+      # (the trailing " -" is required to only replace things like these one:
+      # "$VIRTUALENVWRAPPER_PYTHON" -c "import os,[...] and not in
+      # if-statements or anything like that.
+      # ...and yes, this "patch" is hacky :)
+      substituteInPlace "$file" --replace '"$VIRTUALENVWRAPPER_PYTHON" -' 'env PYTHONPATH="$VIRTUALENVWRAPPER_PYTHONPATH" "$VIRTUALENVWRAPPER_PYTHON" -'
+    done
+  '';
+
+  postInstall = ''
+    # This might look like a dirty hack but we can't use the makeWrapper function because
+    # the wrapped file were then called via "exec". The virtualenvwrapper shell scripts
+    # aren't normal executables. Instead, the user has to evaluate them.
+
+    for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
+      local wrapper="$out/bin/$file"
+      local wrapped="$out/bin/.$file-wrapped"
+      mv "$wrapper" "$wrapped"
+
+      # WARNING: Don't indent the lines below because that would break EOF
+      cat > "$wrapper" << EOF
+export PATH="${python}/bin:\$PATH"
+export VIRTUALENVWRAPPER_PYTHONPATH="$PYTHONPATH:$(toPythonPath $out)"
+source "$wrapped"
+EOF
+
+      chmod -x "$wrapped"
+      chmod +x "$wrapper"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Enhancements to virtualenv";
+    homepage = "https://pypi.python.org/pypi/virtualenvwrapper";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/vmprof/default.nix b/pkgs/development/python-modules/vmprof/default.nix
new file mode 100644
index 00000000000..9a9693d770e
--- /dev/null
+++ b/pkgs/development/python-modules/vmprof/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, requests
+, six
+}:
+
+buildPythonPackage rec {
+  version = "0.3.3";
+  pname = "vmprof";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "991bc2f1dc824c63e9b399f9e8606deded92a52378d0e449f258807d7556b039";
+  };
+
+  propagatedBuildInputs = [ requests six];
+
+  # No tests included
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A vmprof client";
+    license = licenses.mit;
+    homepage = https://vmprof.readthedocs.org/;
+  };
+
+}
diff --git a/pkgs/development/python-modules/vultr/default.nix b/pkgs/development/python-modules/vultr/default.nix
new file mode 100644
index 00000000000..e66e21f01a6
--- /dev/null
+++ b/pkgs/development/python-modules/vultr/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, requests
+}:
+
+buildPythonPackage rec {
+  version = "0.1.2";
+  pname = "vultr";
+
+  src = fetchFromGitHub {
+      owner = "spry-group";
+      repo = "python-vultr";
+      rev = "${version}";
+      sha256 = "1qjvvr2v9gfnwskdl0ayazpcmiyw9zlgnijnhgq9mcri5gq9jw5h";
+  };
+
+  propagatedBuildInputs = [ requests ];
+
+  # Tests disabled. They fail because they try to access the network
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Vultr.com API Client";
+    homepage = "https://github.com/spry-group/python-vultr";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lihop ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/w3lib/default.nix b/pkgs/development/python-modules/w3lib/default.nix
new file mode 100644
index 00000000000..3b18b488719
--- /dev/null
+++ b/pkgs/development/python-modules/w3lib/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "w3lib";
+  version = "1.17.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0vshh300ay5wn5hwl9qcb32m71pz5s6miy0if56vm4nggy159inq";
+  };
+
+  buildInputs = [ six pytest ];
+
+  meta = with stdenv.lib; {
+    description = "A library of web-related functions";
+    homepage = "https://github.com/scrapy/w3lib";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ drewkett ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/waitress/default.nix b/pkgs/development/python-modules/waitress/default.nix
new file mode 100644
index 00000000000..2c1536a7d8a
--- /dev/null
+++ b/pkgs/development/python-modules/waitress/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "waitress";
+  version = "1.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0pw6yyxi348r2xpq3ykqnf7gwi881azv2422d2ixb0xi5jws2ky7";
+  };
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+     homepage = https://github.com/Pylons/waitress;
+     description = "Waitress WSGI server";
+     license = licenses.zpl20;
+     maintainers = with maintainers; [ garbas domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/web/default.nix b/pkgs/development/python-modules/web/default.nix
new file mode 100644
index 00000000000..86c9d435f1e
--- /dev/null
+++ b/pkgs/development/python-modules/web/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  version = "0.37";
+  pname = "web.py";
+  disabled = isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "748c7e99ad9e36f62ea19f7965eb7dd7860b530e8f563ed60ce3e53e7409a550";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Makes web apps";
+    longDescription = ''
+      Think about the ideal way to write a web app.
+      Write the code to make it happen.
+    '';
+    homepage = "http://webpy.org/";
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ layus ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/webhelpers/default.nix b/pkgs/development/python-modules/webhelpers/default.nix
new file mode 100644
index 00000000000..007f32f6cc5
--- /dev/null
+++ b/pkgs/development/python-modules/webhelpers/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, routes
+, markupsafe
+, webob
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "WebHelpers";
+  version = "1.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ea86f284e929366b77424ba9a89341f43ae8dee3cbeb8702f73bcf86058aa583";
+  };
+
+  buildInputs = [ routes markupsafe webob nose ];
+
+  # TODO: failing tests https://bitbucket.org/bbangert/webhelpers/pull-request/1/fix-error-on-webob-123/diff
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://webhelpers.readthedocs.org/en/latest/;
+    description = "Web Helpers";
+    license = licenses.free;
+    maintainers = with maintainers; [ garbas domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/webob/default.nix b/pkgs/development/python-modules/webob/default.nix
new file mode 100644
index 00000000000..1271ac3483d
--- /dev/null
+++ b/pkgs/development/python-modules/webob/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "WebOb";
+  version = "1.7.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "10vjp2rvqiyvw157fk3sy7yds1gknzw97z4gk0qv1raskx5s2p76";
+  };
+
+  propagatedBuildInputs = [ nose pytest ];
+
+  meta = with stdenv.lib; {
+    description = "WSGI request and response object";
+    homepage = http://pythonpaste.org/webob/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/websockify/default.nix b/pkgs/development/python-modules/websockify/default.nix
new file mode 100644
index 00000000000..326e8faa614
--- /dev/null
+++ b/pkgs/development/python-modules/websockify/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, numpy
+}:
+
+buildPythonPackage rec {
+  version = "0.7.0";
+  pname = "websockify";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1v6pmamjprv2x55fvbdaml26ppxdw8v6xz8p0sav3368ajwwgcqc";
+  };
+
+  propagatedBuildInputs = [ numpy ];
+
+  meta = with stdenv.lib; {
+    description = "WebSockets support for any application/server";
+    homepage = https://github.com/kanaka/websockify;
+    license = licenses.lgpl3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/webtest/default.nix b/pkgs/development/python-modules/webtest/default.nix
new file mode 100644
index 00000000000..d3dd321cb03
--- /dev/null
+++ b/pkgs/development/python-modules/webtest/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+, webob
+, six
+, beautifulsoup4
+, waitress
+, mock
+, pyquery
+, wsgiproxy2
+, PasteDeploy
+, coverage
+}:
+
+buildPythonPackage rec {
+  version = "2.0.20";
+  pname = "webtest";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv";
+  };
+
+  preConfigure = ''
+    substituteInPlace setup.py --replace "nose<1.3.0" "nose"
+  '';
+
+  propagatedBuildInputs = [ nose webob six beautifulsoup4 waitress mock pyquery wsgiproxy2 PasteDeploy coverage ];
+
+  meta = with stdenv.lib; {
+    description = "Helper to test WSGI applications";
+    homepage = http://webtest.readthedocs.org/en/latest/;
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/wheel/default.nix b/pkgs/development/python-modules/wheel/default.nix
index f8868f02c2c..fee7f8f73cd 100644
--- a/pkgs/development/python-modules/wheel/default.nix
+++ b/pkgs/development/python-modules/wheel/default.nix
@@ -9,11 +9,11 @@
 
 buildPythonPackage rec {
   pname = "wheel";
-  version = "0.31.1";
+  version = "0.32.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0a2e54558a0628f2145d2fc822137e322412115173e8a2ddbe1c9024338ae83c";
+    sha256 = "196c9842d79262bb66fcf59faa4bd0deb27da911dbc7c6cdca931080eb1f0783";
   };
 
   checkInputs = [ pytest pytestcov coverage ];
diff --git a/pkgs/development/python-modules/willow/default.nix b/pkgs/development/python-modules/willow/default.nix
new file mode 100644
index 00000000000..88e6838cf93
--- /dev/null
+++ b/pkgs/development/python-modules/willow/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, six
+, pillow
+}:
+
+buildPythonPackage rec {
+  pname = "willow";
+  version = "0.2.2";
+  disabled = pythonOlder "2.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "111c82fbfcda2710ce6201b0b7e0cfa1ff3c4f2f0dc788cc8dfc8db933c39c73";
+  };
+
+  propagatedBuildInputs = [ six pillow ];
+
+  # Test data is not included
+  # https://github.com/torchbox/Willow/issues/34
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A Python image library that sits on top of Pillow, Wand and OpenCV";
+    homepage = https://github.com/torchbox/Willow/;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ desiderius ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/word2vec/default.nix b/pkgs/development/python-modules/word2vec/default.nix
new file mode 100644
index 00000000000..d3c294308c4
--- /dev/null
+++ b/pkgs/development/python-modules/word2vec/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, cython
+, numpy
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "word2vec";
+  version = "0.9.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "a811e3e98a8e6dfe7bc851ebbbc2d6e5ab5142f2a134dd3c03daac997b546faa";
+  };
+
+  propagatedBuildInputs = [ cython numpy ];
+
+  checkPhase = ''
+   cd word2vec/tests;
+    ${python.interpreter} test_word2vec.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tool for computing continuous distributed representations of words";
+    homepage = "https://github.com/danielfrg/word2vec";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ NikolaMandic ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/worldengine/default.nix b/pkgs/development/python-modules/worldengine/default.nix
new file mode 100644
index 00000000000..0a49c256640
--- /dev/null
+++ b/pkgs/development/python-modules/worldengine/default.nix
@@ -0,0 +1,63 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, nose
+, noise
+, numpy
+, pyplatec
+, protobuf
+, purepng
+, argparse
+, h5py
+, gdal
+}:
+
+buildPythonPackage rec {
+  pname = "worldengine";
+  version = "0.19.0";
+
+  src = fetchFromGitHub {
+    owner = "Mindwerks";
+    repo = "worldengine";
+    rev = "v${version}";
+    sha256 = "1xrckb0dn2841gvp32n18gib14bpi77hmjw3r9jiyhg402iip7ry";
+  };
+
+  src-data = fetchFromGitHub {
+    owner = "Mindwerks";
+    repo = "worldengine-data";
+    rev = "029051e";
+    sha256 = "06xbf8gj3ljgr11v1n8jbs2q8pdf9wz53xdgkhpm8hdnjahgdxdm";
+  };
+
+  postUnpack = ''
+    ln -s ${src-data} worldengine-data
+  '';
+
+  buildInputs = [ nose ];
+  propagatedBuildInputs = [ noise numpy pyplatec protobuf purepng argparse h5py gdal ];
+
+  prePatch = ''
+    substituteInPlace setup.py \
+      --replace pypng>=0.0.18 purepng \
+      --replace 'numpy>=1.9.2, <= 1.10.0.post2' 'numpy' \
+      --replace 'argparse==1.2.1' "" \
+      --replace 'protobuf==3.0.0a3' 'protobuf' \
+      --replace 'noise==1.2.2' 'noise' \
+      --replace 'PyPlatec==1.4.0' 'PyPlatec' \
+  '';
+
+  doCheck = true;
+
+  postCheck = ''
+    nosetests tests
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://world-engine.org;
+    description = "World generator using simulation of plates, rain shadow, erosion, etc";
+    license = licenses.mit;
+    maintainers = with maintainers; [ rardiol ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/wsgiproxy/default.nix b/pkgs/development/python-modules/wsgiproxy/default.nix
new file mode 100644
index 00000000000..8ae8b4aefa5
--- /dev/null
+++ b/pkgs/development/python-modules/wsgiproxy/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, paste
+, six
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "WSGIProxy";
+  version = "0.2.2";
+  disabled = isPy3k; # Judging from SyntaxError
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0wqz1q8cvb81a37gb4kkxxpv4w7k8192a08qzyz67rn68ln2wcig";
+  };
+
+  propagatedBuildInputs = [ paste six ];
+
+  meta = with stdenv.lib; {
+    description = "WSGIProxy gives tools to proxy arbitrary(ish) WSGI requests to other";
+    homepage = "http://pythonpaste.org/wsgiproxy/";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/wsgiproxy2/default.nix b/pkgs/development/python-modules/wsgiproxy2/default.nix
new file mode 100644
index 00000000000..5fda762b0be
--- /dev/null
+++ b/pkgs/development/python-modules/wsgiproxy2/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, six
+, webob
+}:
+
+buildPythonPackage rec {
+  pname = "WSGIProxy2";
+  version = "0.4.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4";
+  };
+
+  propagatedBuildInputs = [ six webob ];
+
+  # circular dep on webtest
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://pythonpaste.org/wsgiproxy/;
+    description = "HTTP proxying tools for WSGI apps";
+    license = licenses.mit;
+    maintainers = with maintainers; [ garbas domenkozar ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/x11_hash/default.nix b/pkgs/development/python-modules/x11_hash/default.nix
new file mode 100644
index 00000000000..060d08869b8
--- /dev/null
+++ b/pkgs/development/python-modules/x11_hash/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec{
+  version = "1.4";
+  pname = "x11_hash";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "172skm9xbbrivy1p4xabxihx9lsnzi53hvzryfw64m799k2fmp22";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Binding for X11 proof of work hashing";
+    homepage = https://github.com/mazaclub/x11_hash;
+    license = licenses.mit;
+    maintainers = with maintainers; [ np ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/xattr/default.nix b/pkgs/development/python-modules/xattr/default.nix
new file mode 100644
index 00000000000..a3da58eb9f3
--- /dev/null
+++ b/pkgs/development/python-modules/xattr/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+, cffi
+}:
+
+buildPythonPackage rec {
+  pname = "xattr";
+  version = "0.7.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0nbqfghgy26jyp5q7wl3rj78wr8s39m5042df2jlldg3fx6j0417";
+  };
+
+  propagatedBuildInputs = [ cffi ];
+
+  # https://github.com/xattr/xattr/issues/43
+  doCheck = false;
+
+  postBuild = ''
+    ${python.interpreter} -m compileall -f xattr
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/xattr/xattr;
+    description = "Python wrapper for extended filesystem attributes";
+    license = licenses.mit;
+  };
+
+}
diff --git a/pkgs/development/python-modules/xcaplib/default.nix b/pkgs/development/python-modules/xcaplib/default.nix
new file mode 100644
index 00000000000..7dc67072046
--- /dev/null
+++ b/pkgs/development/python-modules/xcaplib/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchdarcs
+, isPy3k
+, eventlib
+, application
+}:
+
+buildPythonPackage rec {
+  pname = "python-xcaplib";
+  version = "1.2.0";
+  disabled = isPy3k;
+
+  src = fetchdarcs {
+    url = "http://devel.ag-projects.com/repositories/${pname}";
+    rev = "release-${version}";
+    sha256 = "0vna5r4ihv7z1yx6r93954jqskcxky77znzy1m9dg9vna1dgwfdn";
+  };
+
+  propagatedBuildInputs = [ eventlib application ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/AGProjects/python-xcaplib;
+    description = "XCAP (RFC4825) client library";
+    license = licenses.gpl2;
+  };
+
+}
diff --git a/pkgs/development/python-modules/xkcdpass/default.nix b/pkgs/development/python-modules/xkcdpass/default.nix
new file mode 100644
index 00000000000..d191ab85928
--- /dev/null
+++ b/pkgs/development/python-modules/xkcdpass/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "xkcdpass";
+  version = "1.4.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "4c1f8bee886820c42ccc64c15c3a2275dc6d01028cf6af7c481ded87267d8269";
+  };
+
+  # No tests included
+  # https://github.com/redacted/XKCD-password-generator/issues/32
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://pypi.python.org/pypi/xkcdpass/;
+    description = "Generate secure multiword passwords/passphrases, inspired by XKCD";
+    license = licenses.bsd3;
+  };
+
+}
diff --git a/pkgs/development/python-modules/xlib/default.nix b/pkgs/development/python-modules/xlib/default.nix
new file mode 100644
index 00000000000..0fe13917db4
--- /dev/null
+++ b/pkgs/development/python-modules/xlib/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, six
+, setuptools_scm
+, pkgs
+}:
+
+buildPythonPackage rec {
+  pname = "xlib";
+  version = "0.17";
+
+  src = fetchFromGitHub {
+    owner = "python-xlib";
+    repo = "python-xlib";
+    rev = "${version}";
+    sha256 = "1iiz2nq2hq9x6laavngvfngnmxbgnwh54wdbq6ncx4va7v98liyi";
+  };
+
+  # Tests require `pyutil' so disable them to avoid circular references.
+  doCheck = false;
+
+  propagatedBuildInputs = [ six setuptools_scm pkgs.xorg.libX11 ];
+
+  meta = with stdenv.lib; {
+    description = "Fully functional X client library for Python programs";
+    homepage = http://python-xlib.sourceforge.net/;
+    license = licenses.gpl2Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/xlrd/default.nix b/pkgs/development/python-modules/xlrd/default.nix
new file mode 100644
index 00000000000..4e94078b9bf
--- /dev/null
+++ b/pkgs/development/python-modules/xlrd/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "xlrd";
+  version = "0.9.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "8e8d3359f39541a6ff937f4030db54864836a06e42988c452db5b6b86d29ea72";
+  };
+
+  buildInputs = [ nose ];
+
+  checkPhase = ''
+    nosetests -v
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.python-excel.org/;
+    description = "Library for developers to extract data from Microsoft Excel (tm) spreadsheet files";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/xlsx2csv/default.nix b/pkgs/development/python-modules/xlsx2csv/default.nix
new file mode 100644
index 00000000000..d38506f185f
--- /dev/null
+++ b/pkgs/development/python-modules/xlsx2csv/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "xlsx2csv";
+  version = "0.7.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7c6c8fa6c2774224d03a6a96049e116822484dccfa3634893397212ebcd23866";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/bitprophet/alabaster;
+    description = "Convert xlsx to csv";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ jb55 ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/yapsy/default.nix b/pkgs/development/python-modules/yapsy/default.nix
new file mode 100644
index 00000000000..1f4a28459be
--- /dev/null
+++ b/pkgs/development/python-modules/yapsy/default.nix
@@ -0,0 +1,23 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "Yapsy";
+  version = "1.11.223";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "19pjsnqizswnczhlav4lb7zlzs0n73ijrsgksy4374b14jkkkfs5";
+  };
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://yapsy.sourceforge.net/;
+    description = "Yet another plugin system";
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/zbaemon/default.nix b/pkgs/development/python-modules/zbaemon/default.nix
new file mode 100644
index 00000000000..1a7627bf5dd
--- /dev/null
+++ b/pkgs/development/python-modules/zbaemon/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zconfig
+}:
+
+buildPythonPackage rec {
+  pname = "zdaemon";
+  version = "4.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "82d7eaa4d831ff1ecdcffcb274f3457e095c0cc86e630bc72009a863c341ab9f";
+  };
+
+  propagatedBuildInputs = [ zconfig ];
+
+  # too many deps..
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A daemon process control library and tools for Unix-based systems";
+    homepage = https://pypi.python.org/pypi/zdaemon;
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zbase32/default.nix b/pkgs/development/python-modules/zbase32/default.nix
new file mode 100644
index 00000000000..aa860056fb8
--- /dev/null
+++ b/pkgs/development/python-modules/zbase32/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptoolsDarcs
+}:
+
+buildPythonPackage rec {
+  pname = "zbase32";
+  version = "1.1.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "2f44b338f750bd37b56e7887591bf2f1965bfa79f163b6afcbccf28da642ec56";
+  };
+
+  # Tests require `pyutil' so disable them to avoid circular references.
+  doCheck = false;
+
+  propagatedBuildInputs = [ setuptoolsDarcs ];
+
+  meta = with stdenv.lib; {
+    description = "zbase32, a base32 encoder/decoder";
+    homepage = https://pypi.python.org/pypi/zbase32;
+    license = licenses.bsd0;
+  };
+
+}
diff --git a/pkgs/development/python-modules/zdaemon/default.nix b/pkgs/development/python-modules/zdaemon/default.nix
new file mode 100644
index 00000000000..1a7627bf5dd
--- /dev/null
+++ b/pkgs/development/python-modules/zdaemon/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zconfig
+}:
+
+buildPythonPackage rec {
+  pname = "zdaemon";
+  version = "4.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "82d7eaa4d831ff1ecdcffcb274f3457e095c0cc86e630bc72009a863c341ab9f";
+  };
+
+  propagatedBuildInputs = [ zconfig ];
+
+  # too many deps..
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A daemon process control library and tools for Unix-based systems";
+    homepage = https://pypi.python.org/pypi/zdaemon;
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zerobin/default.nix b/pkgs/development/python-modules/zerobin/default.nix
new file mode 100644
index 00000000000..d1cab88b45b
--- /dev/null
+++ b/pkgs/development/python-modules/zerobin/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, cherrypy
+, bottle
+, lockfile
+, clize
+}:
+
+buildPythonPackage rec {
+  pname = "zerobin";
+  version = "20160108";
+
+  src = fetchFromGitHub {
+    owner = "sametmax";
+    repo = "0bin";
+    rev = "7da1615";
+    sha256 = "1pzcwy454kn5216pvwjqzz311s6jbh7viw9s6kw4xps6f5h44bid";
+  };
+
+  propagatedBuildInputs = [ cherrypy bottle lockfile clize ];
+
+  # zerobin doesn't have any tests, but includes a copy of cherrypy which
+  # can wrongly fail the check phase.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A client side encrypted pastebin";
+    homepage = https://0bin.net/;
+    license = licenses.wtfpl;
+  };
+
+}
diff --git a/pkgs/development/python-modules/zfec/default.nix b/pkgs/development/python-modules/zfec/default.nix
new file mode 100644
index 00000000000..b2e5b939f42
--- /dev/null
+++ b/pkgs/development/python-modules/zfec/default.nix
@@ -0,0 +1,37 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, setuptoolsDarcs
+, pyutil
+, argparse
+, isPyPy
+}:
+
+buildPythonPackage rec {
+  pname = "zfec";
+  version = "1.4.24";
+  disabled = isPyPy;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ks94zlpy7n8sb8380gf90gx85qy0p9073wi1wngg6mccxp9xsg3";
+  };
+
+  buildInputs = [ setuptoolsDarcs ];
+  propagatedBuildInputs = [ pyutil argparse ];
+
+  meta = with stdenv.lib; {
+    homepage = http://allmydata.org/trac/zfec;
+    description = "Zfec, a fast erasure codec which can be used with the command-line, C, Python, or Haskell";
+    longDescription = ''
+      Fast, portable, programmable erasure coding a.k.a. "forward
+      error correction": the generation of redundant blocks of
+      information such that if some blocks are lost then the
+      original data can be recovered from the remaining blocks. The
+      zfec package includes command-line tools, C API, Python API,
+      and Haskell API.
+    '';
+    license = licenses.gpl2Plus;
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_broken/default.nix b/pkgs/development/python-modules/zope_broken/default.nix
new file mode 100644
index 00000000000..df3a2053ebf
--- /dev/null
+++ b/pkgs/development/python-modules/zope_broken/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+}:
+
+buildPythonPackage rec {
+  pname = "zope.broken";
+  version = "3.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    extension = "zip";
+    sha256 = "b9b8776002da4f7b6b12dfcce77eb642ae62b39586dbf60e1d9bdc992c9f2999";
+  };
+
+  buildInputs = [ zope_interface ];
+
+  meta = with stdenv.lib; {
+    homepage = http://pypi.python.org/pypi/zope.broken;
+    description = "Zope Broken Object Interfaces";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_component/default.nix b/pkgs/development/python-modules/zope_component/default.nix
new file mode 100644
index 00000000000..8b51253fe92
--- /dev/null
+++ b/pkgs/development/python-modules/zope_component/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_configuration
+, zope_event
+, zope_i18nmessageid
+, zope_interface
+, zope_testing
+}:
+
+buildPythonPackage rec {
+  pname = "zope.component";
+  version = "4.2.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1gzbr0j6c2h0cqnpi2cjss38wrz1bcwx8xahl3vykgz5laid15l6";
+  };
+
+  propagatedBuildInputs = [ zope_configuration zope_event zope_i18nmessageid zope_interface zope_testing ];
+
+  # ignore tests because of a circular dependency on zope_security
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/zopefoundation/zope.component;
+    description = "Zope Component Architecture";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_configuration/default.nix b/pkgs/development/python-modules/zope_configuration/default.nix
new file mode 100644
index 00000000000..46ad9bd0e68
--- /dev/null
+++ b/pkgs/development/python-modules/zope_configuration/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_i18nmessageid
+, zope_schema
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "zope.configuration";
+  version = "4.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n";
+  };
+
+  propagatedBuildInputs = [ zope_i18nmessageid zope_schema ];
+
+  # Trouble with implicit namespace packages on Python3
+  # see https://github.com/pypa/setuptools/issues/912
+  doCheck = !isPy3k;
+
+  meta = with stdenv.lib; {
+    description = "Zope Configuration Markup Language (ZCML)";
+    homepage = https://github.com/zopefoundation/zope.configuration;
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_contenttype/default.nix b/pkgs/development/python-modules/zope_contenttype/default.nix
new file mode 100644
index 00000000000..67c5a986688
--- /dev/null
+++ b/pkgs/development/python-modules/zope_contenttype/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "zope.contenttype";
+  version = "4.0.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "9decc7531ad6925057f1a667ac0ef9d658577a92b0b48dafa7daa97b78a02bbb";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/zopefoundation/zope.contenttype;
+    description = "A utility module for content-type (MIME type) handling";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_dottedname/default.nix b/pkgs/development/python-modules/zope_dottedname/default.nix
new file mode 100644
index 00000000000..8d5ef91b983
--- /dev/null
+++ b/pkgs/development/python-modules/zope_dottedname/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "zope.dottedname";
+  version = "3.4.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "331d801d98e539fa6c5d50c3835ecc144c429667f483281505de53fc771e6bf5";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://pypi.python.org/pypi/zope.dottedname;
+    description = "Resolver for Python dotted names";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_event/default.nix b/pkgs/development/python-modules/zope_event/default.nix
new file mode 100644
index 00000000000..490d2e48c14
--- /dev/null
+++ b/pkgs/development/python-modules/zope_event/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "zope.event";
+  version = "4.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1w858k9kmgzfj36h65kp27m9slrmykvi5cjq6c119xqnaz5gdzgm";
+  };
+
+  meta = with stdenv.lib; {
+    description = "An event publishing system";
+    homepage = https://pypi.python.org/pypi/zope.event;
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_exceptions/default.nix b/pkgs/development/python-modules/zope_exceptions/default.nix
new file mode 100644
index 00000000000..3afb936d48f
--- /dev/null
+++ b/pkgs/development/python-modules/zope_exceptions/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+}:
+
+buildPythonPackage rec {
+  pname = "zope.exceptions";
+  version = "4.0.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl";
+  };
+
+  propagatedBuildInputs = [ zope_interface ];
+
+  # circular deps
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Exception interfaces and implementations";
+    homepage = https://pypi.python.org/pypi/zope.exceptions;
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_filerepresentation/default.nix b/pkgs/development/python-modules/zope_filerepresentation/default.nix
new file mode 100644
index 00000000000..f77a018c0e2
--- /dev/null
+++ b/pkgs/development/python-modules/zope_filerepresentation/default.nix
@@ -0,0 +1,25 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_schema
+}:
+
+buildPythonPackage rec {
+  pname = "zope.filerepresentation";
+  version = "3.6.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "d775ebba4aff7687e0381f050ebda4e48ce50900c1438f3f7e901220634ed3e0";
+  };
+
+  propagatedBuildInputs = [ zope_schema ];
+
+  meta = with stdenv.lib; {
+    homepage = http://zopefilerepresentation.readthedocs.io/;
+    description = "File-system Representation Interfaces";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_i18n/default.nix b/pkgs/development/python-modules/zope_i18n/default.nix
new file mode 100644
index 00000000000..6f61bd0f99a
--- /dev/null
+++ b/pkgs/development/python-modules/zope_i18n/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pytz
+, zope_component
+}:
+
+buildPythonPackage rec {
+  pname = "zope.i18n";
+  version = "3.8.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "045nnimmshibcq71yym2d8yrs6wzzhxq5gl7wxjnkpyjm5y0hfkm";
+  };
+
+  propagatedBuildInputs = [ pytz zope_component ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/zopefoundation/zope.i18n;
+    description = "Zope Internationalization Support";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_i18nmessageid/default.nix b/pkgs/development/python-modules/zope_i18nmessageid/default.nix
new file mode 100644
index 00000000000..70e3f3fb018
--- /dev/null
+++ b/pkgs/development/python-modules/zope_i18nmessageid/default.nix
@@ -0,0 +1,22 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "zope.i18nmessageid";
+  version = "4.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/zopefoundation/zope.i18nmessageid;
+    description = "Message Identifiers for internationalization";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_lifecycleevent/default.nix b/pkgs/development/python-modules/zope_lifecycleevent/default.nix
new file mode 100644
index 00000000000..902e6c51adb
--- /dev/null
+++ b/pkgs/development/python-modules/zope_lifecycleevent/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_event
+, zope_component
+}:
+
+buildPythonPackage rec {
+  pname = "zope.lifecycleevent";
+  version = "3.7.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0s5brphqzzz89cykg61gy7zcmz0ryq1jj2va7gh2n1b3cccllp95";
+  };
+
+  propagatedBuildInputs = [ zope_event zope_component ];
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/zopefoundation/zope.lifecycleevent;
+    description = "Object life-cycle events";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_location/default.nix b/pkgs/development/python-modules/zope_location/default.nix
new file mode 100644
index 00000000000..be7d50025d0
--- /dev/null
+++ b/pkgs/development/python-modules/zope_location/default.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_proxy
+}:
+
+buildPythonPackage rec {
+  pname = "zope.location";
+  version = "4.0.3";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74";
+  };
+
+  propagatedBuildInputs = [ zope_proxy ];
+
+  # ignore circular dependency on zope_schema
+  preBuild = ''
+    sed -i '/zope.schema/d' setup.py
+  '';
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/zopefoundation/zope.location/;
+    description = "Zope Location";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_proxy/default.nix b/pkgs/development/python-modules/zope_proxy/default.nix
new file mode 100644
index 00000000000..a0fdd70e2a9
--- /dev/null
+++ b/pkgs/development/python-modules/zope_proxy/default.nix
@@ -0,0 +1,28 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_interface
+}:
+
+buildPythonPackage rec {
+  pname = "zope.proxy";
+  version = "4.1.6";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4";
+  };
+
+  propagatedBuildInputs = [ zope_interface ];
+
+  # circular deps
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/zopefoundation/zope.proxy;
+    description = "Generic Transparent Proxies";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_schema/default.nix b/pkgs/development/python-modules/zope_schema/default.nix
new file mode 100644
index 00000000000..71e571dba33
--- /dev/null
+++ b/pkgs/development/python-modules/zope_schema/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_location
+, zope_event
+, zope_interface
+, zope_testing
+}:
+
+buildPythonPackage rec {
+  pname = "zope.schema";
+  version = "4.4.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank";
+  };
+
+  propagatedBuildInputs = [ zope_location zope_event zope_interface zope_testing ];
+
+  # ImportError: No module named 'zope.event'
+  # even though zope_event has been included.
+  # Package seems to work fine.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/zopefoundation/zope.schema;
+    description = "zope.interface extension for defining data schemas";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_size/default.nix b/pkgs/development/python-modules/zope_size/default.nix
new file mode 100644
index 00000000000..8be9a04ae3f
--- /dev/null
+++ b/pkgs/development/python-modules/zope_size/default.nix
@@ -0,0 +1,26 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, zope_i18nmessageid
+, zope_interface
+}:
+
+buildPythonPackage rec {
+  pname = "zope.size";
+  version = "3.5.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "006xfkhvmypwd3ww9gbba4zly7n9w30bpp1h74d53la7l7fiqk2f";
+  };
+
+  propagatedBuildInputs = [ zope_i18nmessageid zope_interface ];
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/zopefoundation/zope.size;
+    description = "Interfaces and simple adapter that give the size of an object";
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/zope_testing/default.nix b/pkgs/development/python-modules/zope_testing/default.nix
new file mode 100644
index 00000000000..4e28113a8a1
--- /dev/null
+++ b/pkgs/development/python-modules/zope_testing/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, isPyPy
+, zope_interface
+, zope_exceptions
+, zope_location
+}:
+
+buildPythonPackage rec {
+  pname = "zope.testing";
+  version = "4.6.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1vvxhjmzl7vw2i1akfj1xbggwn36270ym7f2ic9xwbaswfw1ap56";
+  };
+
+  doCheck = !isPyPy;
+
+  propagatedBuildInputs = [ zope_interface zope_exceptions zope_location ];
+
+  meta = with stdenv.lib; {
+    description = "Zope testing helpers";
+    homepage =  http://pypi.python.org/pypi/zope.testing;
+    license = licenses.zpl20;
+    maintainers = with maintainers; [ goibhniu ];
+  };
+
+}
diff --git a/pkgs/development/tools/analysis/valgrind/default.nix b/pkgs/development/tools/analysis/valgrind/default.nix
index ccc2cf9b4ab..a371bc2e002 100644
--- a/pkgs/development/tools/analysis/valgrind/default.nix
+++ b/pkgs/development/tools/analysis/valgrind/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, perl, gdb, llvm, cctools, xnu, bootstrap_cmds }:
 
 stdenv.mkDerivation rec {
-  name = "valgrind-3.13.0";
+  name = "valgrind-3.14.0";
 
   src = fetchurl {
     url = "https://sourceware.org/pub/valgrind/${name}.tar.bz2";
-    sha256 = "0fqc3684grrbxwsic1rc5ryxzxmigzjx9p5vf3lxa37h0gpq0rnp";
+    sha256 = "19ds42jwd89zrsjb94g7gizkkzipn8xik3xykrpcqxylxyzi2z03";
   };
 
   outputs = [ "out" "dev" "man" "doc" ];
diff --git a/pkgs/development/tools/build-managers/meson/default.nix b/pkgs/development/tools/build-managers/meson/default.nix
index 0ba44b1b17a..7eff35e224c 100644
--- a/pkgs/development/tools/build-managers/meson/default.nix
+++ b/pkgs/development/tools/build-managers/meson/default.nix
@@ -1,4 +1,4 @@
-{ lib, python3Packages, stdenv, writeTextDir, substituteAll, targetPackages }:
+{ lib, python3Packages, stdenv, writeTextDir, substituteAll, targetPackages, fetchpatch }:
 
 python3Packages.buildPythonApplication rec {
   version = "0.46.1";
@@ -41,6 +41,12 @@ python3Packages.buildPythonApplication rec {
       src = ./fix-rpath.patch;
       inherit (builtins) storeDir;
     })
+
+    # Support Python 3.7. This is part of 0.47 and 0.48.1.
+    (fetchpatch {
+      url = https://github.com/mesonbuild/meson/commit/a87496addd9160300837aa50193f4798c6f1d251.patch;
+      sha256 = "1jfn9dgib5bc8frcd65cxn3fzhp19bpbjadxjkqzbjk1v4hdbl88";
+    })
   ];
 
   setupHook = ./setup-hook.sh;
diff --git a/pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch b/pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch
deleted file mode 100644
index 9aae2be1d03..00000000000
--- a/pkgs/os-specific/darwin/cctools/ld-tbd-v2.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-diff --git a/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp b/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp
-index 09c0e12..ac6b085 100644
---- a/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp
-+++ b/cctools/ld64/src/ld/parsers/textstub_dylib_file.cpp
-@@ -187,6 +187,7 @@ struct DynamicLibrary {
- 	ld::File::ObjcConstraint _objcConstraint;
- 	Options::Platform _platform;
- 	std::vector<Token> _allowedClients;
-+	std::vector<Token> _allowableClients;
- 	std::vector<Token> _reexportedLibraries;
- 	std::vector<Token> _symbols;
- 	std::vector<Token> _classes;
-@@ -246,6 +247,14 @@ class TBDFile {
- 		});
- 	}
- 
-+	void parseAllowableClients(DynamicLibrary& lib) {
-+		if ( !hasOptionalToken("allowable-clients") )
-+			return;
-+		parseFlowSequence([&](Token name) {
-+			lib._allowableClients.emplace_back(name);
-+		});
-+	}
-+
- 	void parseReexportedDylibs(DynamicLibrary& lib) {
- 		if ( !hasOptionalToken("re-exports") )
- 			return;
-@@ -306,6 +315,21 @@ class TBDFile {
- 		return false;
- 	}
- 
-+	void skipUUIDs(DynamicLibrary& lib) {
-+		expectToken("uuids");
-+		while ( true ) {
-+			auto token = next();
-+			if ( token == "]" )
-+				break;
-+		}
-+	}
-+
-+	void skipParentUmbrella(DynamicLibrary& lib) {
-+		if (!hasOptionalToken("parent-umbrella"))
-+			return;
-+		next();
-+	}
-+
- 	void parsePlatform(DynamicLibrary& lib) {
- 		expectToken("platform");
- 
-@@ -410,6 +434,7 @@ class TBDFile {
- 			}
- 
- 			parseAllowedClients(lib);
-+			parseAllowableClients(lib);
- 			parseReexportedDylibs(lib);
- 			parseSymbols(lib);
- 			if ( !hasOptionalToken("-") )
-@@ -455,17 +480,21 @@ class TBDFile {
- 			return result.front();
- 	}
- 
--	void parseDocument(DynamicLibrary& lib, std::string &requestedArchName) {
-+	void parseDocument(DynamicLibrary& lib, std::string &requestedArchName, bool isTbdV2) {
- 		auto selectedArchName = parseAndSelectArchitecture(requestedArchName);
- 		if (selectedArchName.empty())
- 			throwf("invalid arch");
- 
-+		if(isTbdV2)
-+			skipUUIDs(lib);
- 		parsePlatform(lib);
- 		parseInstallName(lib);
- 		parseCurrentVersion(lib);
- 		parseCompatibilityVersion(lib);
- 		parseSwiftVersion(lib);
- 		parseObjCConstraint(lib);
-+		if(isTbdV2)
-+			skipParentUmbrella(lib);
- 		parseExportsBlock(lib, selectedArchName);
- 	}
- 
-@@ -476,7 +505,8 @@ public:
- 		_tokenizer.reset();
- 		DynamicLibrary lib;
- 		expectToken("---");
--		parseDocument(lib, requestedArchName);
-+		auto isTbdV2 = hasOptionalToken("!tapi-tbd-v2");
-+		parseDocument(lib, requestedArchName, isTbdV2);
- 		expectToken("...");
- 		return lib;
- 	}
-@@ -486,6 +516,7 @@ public:
- 		auto token = next();
- 		if ( token != "---" )
- 			return false;
-+		hasOptionalToken("!tapi-tbd-v2");
- 		return !parseAndSelectArchitecture(requestedArchName).empty();
- 	}
- 
diff --git a/pkgs/os-specific/darwin/cctools/port.nix b/pkgs/os-specific/darwin/cctools/port.nix
index bad17cf6de4..2bca1bcc1d7 100644
--- a/pkgs/os-specific/darwin/cctools/port.nix
+++ b/pkgs/os-specific/darwin/cctools/port.nix
@@ -1,18 +1,10 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, libtool_2, autoreconfHook
+{ stdenv, fetchFromGitHub, autoconf, automake, libtool, autoreconfHook
 , libcxxabi, libuuid, llvm
 , libobjc ? null, maloader ? null
-, enableDumpNormalizedLibArgs ? false
 }:
 
 let
 
-  # We need to use an old version of cctools-port to support linking TBD files
-  # in the iOS SDK. Note that this only provides support for SDK versions up to
-  # 10.x. For 11.0 and higher we will need to upgrade to a newer cctools than the
-  # default version here, which can support the new TBD format via Apple's
-  # libtapi.
-  useOld = stdenv.targetPlatform.isiOS;
-
   # The targetPrefix prepended to binary names to allow multiple binuntils on the
   # PATH to both be usable.
   targetPrefix = stdenv.lib.optionalString
@@ -23,51 +15,31 @@ in
 # Non-Darwin alternatives
 assert (!stdenv.hostPlatform.isDarwin) -> maloader != null;
 
-assert enableDumpNormalizedLibArgs -> (!useOld);
-
 let
   baseParams = rec {
     name = "${targetPrefix}cctools-port-${version}";
-    version = if useOld then "886" else "895";
+    version = "895";
 
-    src = fetchFromGitHub (if enableDumpNormalizedLibArgs then {
-      owner  = "tpoechtrager";
-      repo   = "cctools-port";
-      # master with https://github.com/tpoechtrager/cctools-port/pull/34
-      rev    = "8395d4b2c3350356e2fb02f5e04f4f463c7388df";
-      sha256 = "10vbf1cfzx02q8chc77s84fp2kydjpx2y682mr6mrbb7sq5rwh8f";
-    } else if useOld then {
+    src = fetchFromGitHub {
       owner  = "tpoechtrager";
       repo   = "cctools-port";
-      rev    = "02f0b8ecd87a3951653d838a321ae744815e21a5";
-      sha256 = "0bzyabzr5dvbxglr74d0kbrk2ij5x7s5qcamqi1v546q1had1wz1";
-    } else {
-      owner  = "tpoechtrager";
-      repo   = "cctools-port";
-      rev    = "2e569d765440b8cd6414a695637617521aa2375b"; # From branch 895-ld64-274.2
-      sha256 = "0l45mvyags56jfi24rawms8j2ihbc45mq7v13pkrrwppghqrdn52";
-    });
+      rev    = "07619027f8311fa61b4a549c75994b88739a82d8";
+      sha256 = "12g94hhz5v5bmy2w0zb6fb4bjlmn992gygc60h9nai15kshj2spi";
+    };
 
     outputs = [ "out" "dev" ];
 
     nativeBuildInputs = [
-      autoconf automake libtool_2
-    ] ++ stdenv.lib.optionals useOld [
-      autoreconfHook
+      autoconf automake libtool autoreconfHook
     ];
     buildInputs = [ libuuid ] ++
       stdenv.lib.optionals stdenv.isDarwin [ llvm libcxxabi libobjc ];
 
     patches = [
       ./ld-rpath-nonfinal.patch ./ld-ignore-rpath-link.patch
-    ] ++ stdenv.lib.optionals useOld [
-      # See https://github.com/tpoechtrager/cctools-port/issues/24. Remove when that's fixed.
-      ./undo-unknown-triple.patch
-      ./ld-tbd-v2.patch
-      ./support-ios.patch
     ];
 
-    __propagatedImpureHostDeps = stdenv.lib.optionals (!useOld) [
+    __propagatedImpureHostDeps = [
       # As far as I can tell, otool from cctools is the only thing that depends on these two, and we should fix them
       "/usr/lib/libobjc.A.dylib"
       "/usr/lib/libobjc.dylib"
@@ -78,7 +50,9 @@ let
     # TODO(@Ericson2314): Always pass "--target" and always targetPrefix.
     configurePlatforms = [ "build" "host" ] ++ stdenv.lib.optional (stdenv.targetPlatform != stdenv.hostPlatform) "target";
 
-    postPatch = ''
+    postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
+      substituteInPlace cctools/Makefile.am --replace libobjc2 ""
+    '' + ''
       sed -i -e 's/addStandardLibraryDirectories = true/addStandardLibraryDirectories = false/' cctools/ld64/src/ld/Options.cpp
 
       # FIXME: there are far more absolute path references that I don't want to fix right now
diff --git a/pkgs/os-specific/darwin/cctools/support-ios.patch b/pkgs/os-specific/darwin/cctools/support-ios.patch
deleted file mode 100644
index f78c6b63ac8..00000000000
--- a/pkgs/os-specific/darwin/cctools/support-ios.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/cctools/configure.ac b/cctools/configure.ac
-index 56e8f24..0b4b3ff 100644
---- a/cctools/configure.ac
-+++ b/cctools/configure.ac
-@@ -39,7 +39,7 @@ EXTRACXXFLAGS=""
- WARNINGS=""
- 
- case $host_os in
--  darwin* )
-+  darwin* | ios*)
-     isdarwin=yes
-     AM_CONDITIONAL([ISDARWIN], [true])
-   ;;
diff --git a/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch b/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch
deleted file mode 100644
index 7df9bdd16da..00000000000
--- a/pkgs/os-specific/darwin/cctools/undo-unknown-triple.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/cctools/as/driver.c b/cctools/as/driver.c
-index b06d085..c03397a 100644
---- a/cctools/as/driver.c
-+++ b/cctools/as/driver.c
-@@ -363,12 +363,6 @@ char **envp)
- 	    /* Add -c or clang will run ld(1). */
- 	    new_argv[j] = "-c";
- 	    j++;
--	    /* cctools-port start */
--	    new_argv[j] = "-target";
--	    j++;
--	    new_argv[j] = "unknown-apple-darwin";
--	    j++;
--	    /* cctools-port end */
- 	    new_argv[j] = NULL;
- 	    if(execute(new_argv, verbose))
- 		exit(0);
diff --git a/pkgs/os-specific/linux/alsa-lib/default.nix b/pkgs/os-specific/linux/alsa-lib/default.nix
index 41b43afc242..3d4e57f88dd 100644
--- a/pkgs/os-specific/linux/alsa-lib/default.nix
+++ b/pkgs/os-specific/linux/alsa-lib/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "alsa-lib-1.1.6";
+  name = "alsa-lib-1.1.7";
 
   src = fetchurl {
     url = "mirror://alsa/lib/${name}.tar.bz2";
-    sha256 = "096pwrnhj36yndldvs2pj4r871zhcgisks0is78f1jkjn9sd4b2z";
+    sha256 = "02fw7dw202mjid49w9ki3dsfcyvid5fj488561bdzcm3haw00q4x";
   };
 
   patches = [
diff --git a/pkgs/os-specific/linux/apparmor/default.nix b/pkgs/os-specific/linux/apparmor/default.nix
index 3ffaef8109f..e632be905fd 100644
--- a/pkgs/os-specific/linux/apparmor/default.nix
+++ b/pkgs/os-specific/linux/apparmor/default.nix
@@ -12,8 +12,8 @@
 }:
 
 let
-  apparmor-series = "2.12";
-  apparmor-patchver = "0";
+  apparmor-series = "2.13";
+  apparmor-patchver = "1";
   apparmor-version = apparmor-series + "." + apparmor-patchver;
 
   apparmor-meta = component: with stdenv.lib; {
@@ -25,8 +25,8 @@ let
   };
 
   apparmor-sources = fetchurl {
-    url = "https://launchpad.net/apparmor/${apparmor-series}/${apparmor-version}/+download/apparmor-${apparmor-series}.tar.gz";
-    sha256 = "0mm0mcp0w18si9wl15drndysm7v27az2942p1xjd197shg80qawa";
+    url = "https://launchpad.net/apparmor/${apparmor-series}/${apparmor-version}/+download/apparmor-${apparmor-version}.tar.gz";
+    sha256 = "7a060d94c275e59f96bacd1da150e6fee2c9152a85bf57800109d07d51ef8afb";
   };
 
   prePatchCommon = ''
diff --git a/pkgs/os-specific/linux/iproute/default.nix b/pkgs/os-specific/linux/iproute/default.nix
index 8f81ec4918e..4fd2b2a9124 100644
--- a/pkgs/os-specific/linux/iproute/default.nix
+++ b/pkgs/os-specific/linux/iproute/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "iproute2-${version}";
-  version = "4.18.0";
+  version = "4.19.0";
 
   src = fetchurl {
     url = "mirror://kernel/linux/utils/net/iproute2/${name}.tar.xz";
-    sha256 = "0ida5njr9nacg6ym3rjvl3cc9czw0hn4akhzbqf8f4zmjl6cgrm9";
+    sha256 = "114rlb3bvrf7q6yr03mn1rj6gl7mrg0psvm2dx0qb2kxyjhmrv6r";
   };
 
   preConfigure = ''
diff --git a/pkgs/os-specific/linux/kernel-headers/default.nix b/pkgs/os-specific/linux/kernel-headers/default.nix
index 011668f0c67..eb0059f55c3 100644
--- a/pkgs/os-specific/linux/kernel-headers/default.nix
+++ b/pkgs/os-specific/linux/kernel-headers/default.nix
@@ -4,7 +4,7 @@
 }:
 
 let
-  common = { version, sha256, patches ? [] }: stdenvNoCC.mkDerivation ({
+  common = { version, sha256, patches ? [] }: stdenvNoCC.mkDerivation {
     name = "linux-headers-${version}";
 
     src = fetchurl {
@@ -17,19 +17,16 @@ let
     # It may look odd that we use `stdenvNoCC`, and yet explicit depend on a cc.
     # We do this so we have a build->build, not build->host, C compiler.
     depsBuildBuild = [ buildPackages.stdenv.cc ];
-    # TODO make unconditional next mass rebuild
-    nativeBuildInputs = [ perl ] ++ lib.optional
-      (stdenvNoCC.hostPlatform != stdenvNoCC.buildPlatform)
-      elf-header;
+    # `elf-header` is null when libc provides `elf.h`.
+    nativeBuildInputs = [ perl elf-header ];
 
     extraIncludeDirs = lib.optional stdenvNoCC.hostPlatform.isPowerPC ["ppc"];
 
-    # "patches" array defaults to 'null' to avoid changing hash
-    # and causing mass rebuild
     inherit patches;
 
-    # TODO avoid native hack next rebuild
-    makeFlags = if stdenvNoCC.hostPlatform == stdenvNoCC.buildPlatform then null else [
+    hardeningDisable = lib.optional stdenvNoCC.buildPlatform.isDarwin "format";
+
+    makeFlags = [
       "SHELL=bash"
       # Avoid use of runtime build->host compilers for checks. These
       # checks only cared to work around bugs in very old compilers, so
@@ -41,11 +38,8 @@ let
       "HOSTCXX:=$(BUILD_CXX)"
     ];
 
-    # TODO avoid native hack next rebuild
     # Skip clean on darwin, case-sensitivity issues.
-    buildPhase = if stdenvNoCC.hostPlatform == stdenvNoCC.buildPlatform then ''
-      make mrproper headers_check SHELL=bash
-    '' else lib.optionalString (!stdenvNoCC.buildPlatform.isDarwin) ''
+    buildPhase = lib.optionalString (!stdenvNoCC.buildPlatform.isDarwin) ''
       make mrproper $makeFlags
     ''
     # For some reason, doing `make install_headers` twice, first without
@@ -55,21 +49,21 @@ let
       make headers_install $makeFlags
     '';
 
-    # TODO avoid native hack next rebuild
-    checkPhase = if stdenvNoCC.hostPlatform == stdenvNoCC.buildPlatform then null else ''
+    checkPhase = ''
       make headers_check $makeFlags
     '';
 
-    # TODO avoid native hack next rebuild
-    installPhase = (if stdenvNoCC.hostPlatform == stdenvNoCC.buildPlatform then ''
-      make INSTALL_HDR_PATH=$out headers_install
-    '' else ''
+    installPhase = ''
       make headers_install INSTALL_HDR_PATH=$out $makeFlags
-    '') + ''
-
-      # Some builds (e.g. KVM) want a kernel.release.
-      mkdir -p $out/include/config
+    ''
+    # Some builds (e.g. KVM) want a kernel.release.
+    + '' mkdir -p $out/include/config
       echo "${version}-default" > $out/include/config/kernel.release
+    ''
+    # These oddly named file records teh `SHELL` passed, which causes bootstrap
+    # tools run-time dependency.
+    + ''
+      find "$out" -name '..install.cmd' -print0 | xargs -0 rm
     '';
 
     meta = with lib; {
@@ -77,17 +71,13 @@ let
       license = licenses.gpl2;
       platforms = platforms.linux;
     };
-  } // lib.optionalAttrs (stdenvNoCC.hostPlatform != stdenvNoCC.buildPlatform) {
-    # TODO Make unconditional next mass rebuild
-    hardeningDisable = lib.optional stdenvNoCC.buildPlatform.isDarwin "format";
-  });
+  };
 in {
 
   linuxHeaders = common {
     version = "4.18.3";
     sha256 = "1m23hjd02bg8mqnd8dc4z4m3kxds1cyrc6j5saiwnhzbz373rvc1";
-    # TODO make unconditional next mass rebuild
-    patches = lib.optionals (stdenvNoCC.hostPlatform != stdenvNoCC.buildPlatform) [
+    patches = [
        ./no-relocs.patch # for building x86 kernel headers on non-ELF platforms
        ./no-dynamic-cc-version-check.patch # so we can use `stdenvNoCC`, see `makeFlags` above
     ];
diff --git a/pkgs/os-specific/linux/v4l-utils/default.nix b/pkgs/os-specific/linux/v4l-utils/default.nix
index 3665606e99c..f586ea50398 100644
--- a/pkgs/os-specific/linux/v4l-utils/default.nix
+++ b/pkgs/os-specific/linux/v4l-utils/default.nix
@@ -8,11 +8,11 @@
 
 stdenv.mkDerivation rec {
   name = "v4l-utils-${version}";
-  version = "1.14.2";
+  version = "1.16.0";
 
   src = fetchurl {
     url = "https://linuxtv.org/downloads/v4l-utils/${name}.tar.bz2";
-    sha256 = "14h6d2p3n4jmxhd8i0p1m5dbwz5vnpb3z88xqd9ghg15n7265fg6";
+    sha256 = "1b8bx9zfaw0crjkfh0wwyixbv4683mkw0cb3nxwc7fl489c2bd7i";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/stdenv/generic/make-derivation.nix b/pkgs/stdenv/generic/make-derivation.nix
index 6c0c94487de..a0912366312 100644
--- a/pkgs/stdenv/generic/make-derivation.nix
+++ b/pkgs/stdenv/generic/make-derivation.nix
@@ -228,6 +228,22 @@ rec {
           inherit doCheck doInstallCheck;
 
           inherit outputs;
+        } // lib.optionalAttrs strictDeps {
+          # Make sure "build" dependencies don’t leak into outputs. We
+          # want to disallow references to depsBuildBuild,
+          # nativeBuildInputs, and depsBuildTarget. But depsHostHost,
+          # buildInputs, and depsTargetTarget is okay, so we subtract
+          # those from disallowedReferences in case a dependency is
+          # listed in multiple dependency lists. We also include
+          # propagated dependencies here as well.
+          disallowedReferences = (attrs.disallowedReferences or [])
+          ++ (lib.subtractLists
+              (lib.concatLists ( (lib.elemAt propagatedDependencies 1) ++
+                                 (lib.elemAt dependencies 1) ++
+                                 (lib.elemAt propagatedDependencies 2) ++
+                                 (lib.elemAt dependencies 2) ) )
+              (lib.concatLists ( (lib.elemAt propagatedDependencies 0) ++
+                                 (lib.elemAt dependencies 0) ) ) );
         } // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
           cmakeFlags =
             (/**/ if lib.isString cmakeFlags then [cmakeFlags]
diff --git a/pkgs/tools/misc/file/default.nix b/pkgs/tools/misc/file/default.nix
index 1e8c902a050..cefddbd65ef 100644
--- a/pkgs/tools/misc/file/default.nix
+++ b/pkgs/tools/misc/file/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   name = "file-${version}";
-  version = "5.34";
+  version = "5.35";
 
   src = fetchurl {
     urls = [
       "ftp://ftp.astron.com/pub/file/${name}.tar.gz"
       "https://distfiles.macports.org/file/${name}.tar.gz"
     ];
-    sha256 = "02mj4g34l13facacsc0ff8rchbh93ccqw7hns45yqgx8pzdm0npi";
+    sha256 = "0ijm1fabm68ykr1zbx0bxnka5jr3n42sj8y5mbkrnxs0fj0mxi1h";
   };
 
   nativeBuildInputs = stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) file;
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
               else null;
 
   meta = with stdenv.lib; {
-    homepage = http://darwinsys.com/file;
+    homepage = https://darwinsys.com/file;
     description = "A program that shows the type of files";
     license = licenses.bsd2;
     platforms = platforms.all;
diff --git a/pkgs/tools/misc/parallel/default.nix b/pkgs/tools/misc/parallel/default.nix
index 9da8b1c2552..dfaca9cd88e 100644
--- a/pkgs/tools/misc/parallel/default.nix
+++ b/pkgs/tools/misc/parallel/default.nix
@@ -1,11 +1,11 @@
 { fetchurl, stdenv, perl, makeWrapper, procps }:
 
 stdenv.mkDerivation rec {
-  name = "parallel-20180922";
+  name = "parallel-20181022";
 
   src = fetchurl {
     url = "mirror://gnu/parallel/${name}.tar.bz2";
-    sha256 = "07q7lzway2qf8mx6fb4q45jmirsc8pw6rgv03ifrp32jw3q8w1za";
+    sha256 = "1v6vrfnn6acjjlp8xiizvcrb3zzs94av5xcl6xm8zfvcapixx11f";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix
index 4af8ff75e21..c362f9fcf2e 100644
--- a/pkgs/tools/networking/curl/default.nix
+++ b/pkgs/tools/networking/curl/default.nix
@@ -24,14 +24,14 @@ assert brotliSupport -> brotli != null;
 assert gssSupport -> kerberos != null;
 
 stdenv.mkDerivation rec {
-  name = "curl-7.61.1";
+  name = "curl-7.62.0";
 
   src = fetchurl {
     urls = [
       "https://curl.haxx.se/download/${name}.tar.bz2"
       "https://github.com/curl/curl/releases/download/${lib.replaceStrings ["."] ["_"] name}/${name}.tar.bz2"
     ];
-    sha256 = "1f8rljpa98g7ry7qyvv6657cmvgrwmam9mdbjklv45lspiykf253";
+    sha256 = "084niy7cin13ba65p8x38w2xcyc54n3fgzbin40fa2shfr0ca0kq";
   };
 
   outputs = [ "bin" "dev" "out" "man" "devdoc" ];
diff --git a/pkgs/tools/networking/unbound/default.nix b/pkgs/tools/networking/unbound/default.nix
index f26cef3e61d..4da6f6e177b 100644
--- a/pkgs/tools/networking/unbound/default.nix
+++ b/pkgs/tools/networking/unbound/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "unbound-${version}";
-  version = "1.8.0";
+  version = "1.8.1";
 
   src = fetchurl {
     url = "https://unbound.net/downloads/${name}.tar.gz";
-    sha256 = "0gxqc4ynd2g1a5dwaazqh9n8injh49a7dz0l9bbxqgv47dnrvxvq";
+    sha256 = "0p9w6spar5dfi7fplxjcq4394wldabaws0ns30cqq6sxqfwv6qn3";
   };
 
   outputs = [ "out" "lib" "man" ]; # "dev" would only split ~20 kB
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 331fc07af0c..4c8a689d1db 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6566,11 +6566,6 @@ with pkgs;
     name = "clang-wrapper-with-reexport-hack";
     bintools = darwin.binutils.override {
       useMacosReexportHack = true;
-      bintools = darwin.binutils.bintools.override {
-        cctools = darwin.cctools.override {
-          enableDumpNormalizedLibArgs = true;
-        };
-      };
     };
   };
 
@@ -7817,7 +7812,7 @@ with pkgs;
   # When switching these sets, please update docs at ../../doc/languages-frameworks/python.md
   python = python2;
   python2 = python27;
-  python3 = python36;
+  python3 = python37;
   pypy = pypy27;
 
   # Python interpreter that is build with all modules, including tkinter.
@@ -7861,8 +7856,8 @@ with pkgs;
   # Python package sets.
   python27Packages = lib.hiPrioSet (recurseIntoAttrs python27.pkgs);
   python35Packages = python35.pkgs;
-  python36Packages = recurseIntoAttrs python36.pkgs;
-  python37Packages = python37.pkgs;
+  python36Packages = python36.pkgs;
+  python37Packages = recurseIntoAttrs python37.pkgs;
   pypyPackages = pypy.pkgs;
 
   # Should eventually be moved inside Python interpreters.
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index e94f8945d39..2c115efbbbb 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -403,11 +403,11 @@ let
   };
 
   AppSqitch = buildPerlModule rec {
-    version = "0.9997";
+    version = "0.9998";
     name = "App-Sqitch-${version}";
     src = fetchurl {
       url = "mirror://cpan/authors/id/D/DW/DWHEELER/${name}.tar.gz";
-      sha256 = "985ade1a4181bef776016a287194711051e79c7a3c18f1ee1ec47e22ccf319d2";
+      sha256 = "5539f15c0e26ad3595e658e2c21481b0748cc89f6dca0a6ded1fdc62f88c8a5a";
     };
     buildInputs = [ CaptureTiny TestDeep TestDir TestException TestFile TestFileContents TestMockModule TestNoWarnings ];
     propagatedBuildInputs = [ Clone ConfigGitLike DBI DateTime EncodeLocale FileHomeDir HashMerge IOPager IPCRun3 IPCSystemSimple ListMoreUtils PathClass PerlIOutf8_strict StringFormatter StringShellQuote TemplateTiny Throwable TypeTiny URIdb libintl_perl ];
@@ -792,10 +792,10 @@ let
   };
 
   bignum = buildPerlPackage rec {
-    name = "bignum-0.50";
+    name = "bignum-0.51";
     src = fetchurl {
       url = "mirror://cpan/authors/id/P/PJ/PJACKLAM/${name}.tar.gz";
-      sha256 = "82f88a0acbbfa9c4c69f620316b37da8f4b3d2895208e6aad6121a8f0203a94f";
+      sha256 = "8ac0f6efe0b6f24804690e53908bdc5346613667f1c0590d8cf808ec090e9c47";
     };
     meta = {
       description = "Transparent BigNumber support for Perl";
@@ -921,10 +921,10 @@ let
   };
 
   BusinessISMN = buildPerlPackage rec {
-    name = "Business-ISMN-1.132";
+    name = "Business-ISMN-1.201";
     src = fetchurl {
       url = "mirror://cpan/authors/id/B/BD/BDFOY/${name}.tar.gz";
-      sha256 = "009dbkjx1s918qn6hm5qmc0rlqagiazhwg3m7rrfci7mw80hyb6g";
+      sha256 = "1cpcfyaz1fl6fnm076jx2jsphw147wj6aszj2yzqrgsncjhk2cja";
     };
     propagatedBuildInputs = [ TieCycle ];
     meta = {
@@ -1341,10 +1341,10 @@ let
   };
 
   CatalystRuntime = buildPerlPackage rec {
-    name = "Catalyst-Runtime-5.90119";
+    name = "Catalyst-Runtime-5.90120";
     src = fetchurl {
-      url = mirror://cpan/authors/id/E/ET/ETHER/Catalyst-Runtime-5.90119.tar.gz;
-      sha256 = "19fff77c70a4fc8df2909db82629fda7f25d3e5d01f0152a145f8f8973ea87c7";
+      url = mirror://cpan/authors/id/E/ET/ETHER/Catalyst-Runtime-5.90120.tar.gz;
+      sha256 = "e3f791b75dfec668cb52fbe1c1596c051cc44de6c16eb333c79982d5e4822584";
     };
     buildInputs = [ TestFatal TypeTiny ];
     propagatedBuildInputs = [ CGISimple CGIStruct ClassC3AdoptNEXT DataDump HTTPBody ModulePluggable MooseXEmulateClassAccessorFast MooseXGetopt MooseXMethodAttributes MooseXRoleWithOverloading PathClass PlackMiddlewareFixMissingBodyInRedirect PlackMiddlewareMethodOverride PlackMiddlewareRemoveRedundantBody PlackMiddlewareReverseProxy PlackTestExternalServer SafeIsa StringRewritePrefix TaskWeaken TextSimpleTable TreeSimpleVisitorFactory URIws ];
@@ -1853,10 +1853,10 @@ let
   };
 
   CGISimple = buildPerlModule rec {
-    name = "CGI-Simple-1.16";
+    name = "CGI-Simple-1.21";
     src = fetchurl {
-      url = mirror://cpan/authors/id/M/MA/MANWAR/CGI-Simple-1.16.tar.gz;
-      sha256 = "1j07qy22a9k4g1xasxma7yzfmwwn3iy50rkxdhz8hz9f09hiym0f";
+      url = mirror://cpan/authors/id/M/MA/MANWAR/CGI-Simple-1.21.tar.gz;
+      sha256 = "1wzc2igs4khmj7zfahvs87c24p9ks8hnqhhsyviyiix53xx2y6sg";
     };
     propagatedBuildInputs = [ IOStringy ];
     meta = {
@@ -3114,6 +3114,7 @@ let
       license = stdenv.lib.licenses.artistic2;
       maintainers = [ maintainers.thoughtpolice ];
     };
+    buildInputs = [ CanaryStability ];
   };
 
   CryptSSLeay = buildPerlPackage rec {
@@ -3871,10 +3872,10 @@ let
   };
 
   DateTimeLocale = buildPerlPackage rec {
-    name = "DateTime-Locale-1.22";
+    name = "DateTime-Locale-1.23";
     src = fetchurl {
       url = "mirror://cpan/authors/id/D/DR/DROLSKY/${name}.tar.gz";
-      sha256 = "757b3915c6b2aac89462c52fed36543f27dfb66abc98c895523d2ab95da65f94";
+      sha256 = "3a5a81e742da96d89b408e40f8bf4b21150663d8a5eb9dad7865db582193c015";
     };
     buildInputs = [ CPANMetaCheck FileShareDirInstall IPCSystemSimple TestFatal TestFileShareDir TestRequires TestWarnings ];
     propagatedBuildInputs = [ FileShareDir ParamsValidationCompiler Specio namespaceautoclean ];
@@ -3898,10 +3899,10 @@ let
   };
 
   DateTimeTimeZone = buildPerlPackage rec {
-    name = "DateTime-TimeZone-2.19";
+    name = "DateTime-TimeZone-2.20";
     src = fetchurl {
       url = "mirror://cpan/authors/id/D/DR/DROLSKY/${name}.tar.gz";
-      sha256 = "b9192efe202d71b4ff7840718807a244bfca3992afd7e7ca78da20849f5ea4f8";
+      sha256 = "6b69cb9406f7fd2f9ef452996de62686f0b8563469a7e7438fd2bf37735a2829";
     };
     buildInputs = [ TestFatal TestRequires ];
     propagatedBuildInputs = [ ClassSingleton ParamsValidationCompiler Specio namespaceautoclean ];
@@ -4324,10 +4325,10 @@ let
   };
 
   DevelFindPerl = buildPerlPackage rec {
-    name = "Devel-FindPerl-0.014";
+    name = "Devel-FindPerl-0.015";
     src = fetchurl {
       url = "mirror://cpan/authors/id/L/LE/LEONT/${name}.tar.gz";
-      sha256 = "0ns95dsgmr8s0f1dfwd1cyv32vmd22w0vs51ppnnzp5zyi499581";
+      sha256 = "1z1xfj3178w632mqddyklk355a19bsgzkilznrng3rvg4bfbfxaj";
     };
     meta = {
       description = "Find the path to your perl";
@@ -5663,13 +5664,13 @@ let
   };
 
   FileChangeNotify = buildPerlPackage {
-    name = "File-ChangeNotify-0.28";
+    name = "File-ChangeNotify-0.29";
     src = fetchurl {
-      url = mirror://cpan/authors/id/D/DR/DROLSKY/File-ChangeNotify-0.28.tar.gz;
-      sha256 = "e00fe809d481131a08dca26e851cf0ffce8d9e9d03d58c58f15aa62e28aa2f05";
+      url = mirror://cpan/authors/id/D/DR/DROLSKY/File-ChangeNotify-0.29.tar.gz;
+      sha256 = "438d4295ef5f854ace61037a11726ef65dc0bf73e296bd12fc7e2108602a444b";
     };
     buildInputs = [ TestException TestRequires TestWithoutModule ];
-    propagatedBuildInputs = [ ClassLoad ModulePluggable Moo TypeTiny namespaceautoclean ];
+    propagatedBuildInputs = [ ModulePluggable Moo TypeTiny namespaceautoclean ];
     meta = with stdenv.lib; {
       description = "Watch for changes to files, cross-platform style";
       license = licenses.artistic2;
@@ -6029,11 +6030,11 @@ let
     };
   };
 
-  FileRemove = buildPerlPackage rec {
-    name = "File-Remove-1.57";
+  FileRemove = buildPerlModule rec {
+    name = "File-Remove-1.58";
     src = fetchurl {
-      url = mirror://cpan/authors/id/S/SH/SHLOMIF/File-Remove-1.57.tar.gz;
-      sha256 = "1b814lw181kkqh6c1n4p2zlzzsq6ic5pfpr831nphf2w2rhcvgmk";
+      url = mirror://cpan/authors/id/S/SH/SHLOMIF/File-Remove-1.58.tar.gz;
+      sha256 = "1n6h5w3sp2bs4cfrifdx2z15cfpb4r536179mx1a12xbmj1yrxl1";
     };
   };
 
@@ -6108,12 +6109,12 @@ let
   };
 
   FileSlurp = buildPerlPackage {
-    name = "File-Slurp-9999.19";
+    name = "File-Slurp-9999.22";
     # WARNING: check on next update if deprecation warning is gone
     patches = [ ../development/perl-modules/File-Slurp/silence-deprecation.patch ];
     src = fetchurl {
-      url = mirror://cpan/authors/id/U/UR/URI/File-Slurp-9999.19.tar.gz;
-      sha256 = "0hrn4nipwx40d6ji8ssgr5nw986z9iqq8cn0kdpbszh9jplynaff";
+      url = mirror://cpan/authors/id/C/CA/CAPOEIRAB/File-Slurp-9999.22.tar.gz;
+      sha256 = "0sgi53jin36sqvvj8fsqxddb8vprrv99inbs2bmgjdpqhs0a0vmf";
     };
     meta = {
       description = "Simple and Efficient Reading/Writing/Modifying of Complete Files";
@@ -6299,10 +6300,10 @@ let
   };
 
   ForksSuper = buildPerlPackage {
-    name = "Forks-Super-0.96";
+    name = "Forks-Super-0.97";
     src = fetchurl {
-      url = mirror://cpan/authors/id/M/MO/MOB/Forks-Super-0.96.tar.gz;
-      sha256 = "0vzxfxdgxjk83cwg9p5dzvfydrah53xcxkickznrrd5rhp1rasqx";
+      url = mirror://cpan/authors/id/M/MO/MOB/Forks-Super-0.97.tar.gz;
+      sha256 = "0kias11b4zchxy5x9ns2wwjzvzxlzsbap8sq587z9micw5bl7nrk";
     };
     doCheck = false;
     meta = {
@@ -6487,10 +6488,10 @@ let
   };
 
   Glib = buildPerlPackage rec {
-    name = "Glib-1.327";
+    name = "Glib-1.328";
     src = fetchurl {
       url = "mirror://cpan/authors/id/X/XA/XAOC/${name}.tar.gz";
-      sha256 = "0n7hjhbh5xhagvb0qjwzg21j22ks0csah0chgk98g4wnfllxjl0k";
+      sha256 = "1mb40h76kk1wfcl0dqd1r8wfsn4ik29jln3mcsjhmadasynw5725";
     };
     buildInputs = [ pkgs.glib ];
     meta = {
@@ -7665,15 +7666,16 @@ let
     };
   };
 
-  IOHandleUtil = buildPerlPackage rec {
-     name = "IO-Handle-Util-0.01";
+  IOHandleUtil = buildPerlModule rec {
+     name = "IO-Handle-Util-0.02";
      src = fetchurl {
-       url = mirror://cpan/authors/id/N/NU/NUFFIN/IO-Handle-Util-0.01.tar.gz;
-       sha256 = "1g7746gh3y9a9df3xb3l504czgwrrzr7lp87j7jwm2mklarrig6k";
+       url = mirror://cpan/authors/id/E/ET/ETHER/IO-Handle-Util-0.02.tar.gz;
+       sha256 = "1vncvsx53iiw1yy3drlk44hzx2pk5cial0h74djf9i6s2flndfcd";
      };
      propagatedBuildInputs = [ IOString SubExporter asa ];
      meta = {
      };
+    buildInputs = [ ModuleBuildTiny TestSimple13 ];
   };
 
   IOInteractive = buildPerlPackage {
@@ -7705,11 +7707,11 @@ let
   };
 
   IOPager = buildPerlPackage rec {
-    version = "0.39";
+    version = "0.40";
     name = "IO-Pager-${version}";
     src = fetchurl {
       url = "mirror://cpan/authors/id/J/JP/JPIERCE/IO-Pager-${version}.tgz";
-      sha256 = "0ksldcw0hydfy9k70i6q6fm1wgbc54kx0lbwlkrszsbd7q72dlfg";
+      sha256 = "1vzdypsr7vkj8nnda9ccrksci6pqj5awwmi89l7x3mbpq36gad87";
     };
     propagatedBuildInputs = [ pkgs.more FileWhich ]; # `more` used in tests
   };
@@ -8436,13 +8438,12 @@ let
     };
   };
 
-  LinuxDesktopFiles = buildPerlPackage rec {
+  LinuxDesktopFiles = buildPerlModule rec {
     name = "Linux-DesktopFiles-0.25";
     src = fetchurl {
       url = "mirror://cpan/authors/id/T/TR/TRIZEN/${name}.tar.gz";
       sha256 = "60377a74fba90fa465200ee1c7430dbdde69d454d85f9ee101c039803a07e5f5";
     };
-    buildInputs = [ ModuleBuild ];
     meta = {
       homepage = https://github.com/trizen/Linux-DesktopFiles;
       description = "Fast parsing of the Linux desktop files";
@@ -8906,10 +8907,10 @@ let
   };
 
   LWP = buildPerlPackage rec {
-    name = "libwww-perl-6.35";
+    name = "libwww-perl-6.36";
     src = fetchurl {
-      url = mirror://cpan/authors/id/E/ET/ETHER/libwww-perl-6.35.tar.gz;
-      sha256 = "dda2578d7b32152c4afce834761a61d117de286c705a9f7972c7ac6032ca5953";
+      url = mirror://cpan/authors/id/E/ET/ETHER/libwww-perl-6.36.tar.gz;
+      sha256 = "75c034ab4b37f4b9506dc644300697505582cf9545bcf2e2079e7263f675290a";
     };
     propagatedBuildInputs = [ FileListing HTMLParser HTTPCookies HTTPDaemon HTTPNegotiate NetHTTP TryTiny WWWRobotRules ];
     # support cross-compilation by avoiding using `has_module` which does not work in miniperl (it requires B native module)
@@ -9102,10 +9103,10 @@ let
   };
 
   MailDKIM = buildPerlPackage rec {
-    name = "Mail-DKIM-0.53";
+    name = "Mail-DKIM-0.54";
     src = fetchurl {
-      url = mirror://cpan/authors/id/M/MB/MBRADSHAW/Mail-DKIM-0.53.tar.gz;
-      sha256 = "1aqmffkbsqcckllf6hxbdm1xcybw6674h18np2aaas8z42g0ji3w";
+      url = mirror://cpan/authors/id/M/MB/MBRADSHAW/Mail-DKIM-0.54.tar.gz;
+      sha256 = "1jix3jrqx9q2n684ar4igh5zma15j9gv91h9m2rbv8bs1z47hbxp";
     };
     propagatedBuildInputs = [ CryptOpenSSLRSA MailTools NetDNSResolverMock YAMLLibYAML ];
     doCheck = false; # tries to access the domain name system
@@ -9230,10 +9231,10 @@ let
   };
 
   MathBigInt = buildPerlPackage rec {
-    name = "Math-BigInt-1.999813";
+    name = "Math-BigInt-1.999814";
     src = fetchurl {
       url = "mirror://cpan/authors/id/P/PJ/PJACKLAM/${name}.tar.gz";
-      sha256 = "67a10a10a806bd7add463acc1557554381052426cbcb04b1ffbeccfb6775be3d";
+      sha256 = "19fbabee89e4d3a5c4775cc07006b7488ebb4f70ea79d915f1a5f0130e0d3e22";
     };
     meta = {
       description = "Arbitrary size integer/float math package";
@@ -9242,10 +9243,10 @@ let
   };
 
   MathBigIntGMP = buildPerlPackage rec {
-    name = "Math-BigInt-GMP-1.6005";
+    name = "Math-BigInt-GMP-1.6006";
     src = fetchurl {
       url    = "mirror://cpan/authors/id/P/PJ/PJACKLAM/${name}.tar.gz";
-      sha256 = "0a5qwsjrp46lkmaxpw408lv14ygivk9i3cbbcrjim1qwsk1jlmjc";
+      sha256 = "10dg3h5jgc30pb2800x8brz2ijicrpash0rwjahp82xnvysi1hhf";
     };
     buildInputs = [ pkgs.gmp ];
     doCheck = false;
@@ -9578,11 +9579,11 @@ let
   };
 
   ModernPerl = buildPerlModule {
-    name = "Modern-Perl-1.20180901";
+    name = "Modern-Perl-1.20180928";
 
     src = fetchurl {
-      url = mirror://cpan/authors/id/C/CH/CHROMATIC/Modern-Perl-1.20180901.tar.gz;
-      sha256 = "5c289bbe59cfc90abb9b8c6b9903b7625ca9ea26239d397d87f7b57517cd61a1";
+      url = mirror://cpan/authors/id/C/CH/CHROMATIC/Modern-Perl-1.20180928.tar.gz;
+      sha256 = "377b4f16b27ca3b38fdb148468111e3463eff148beb7a00826353268f240f577";
     };
     meta = {
       homepage = https://github.com/chromatic/Modern-Perl;
@@ -9726,10 +9727,10 @@ let
   };
 
   ModuleExtractUse = buildPerlModule rec {
-     name = "Module-ExtractUse-0.342";
+     name = "Module-ExtractUse-0.343";
      src = fetchurl {
-       url = mirror://cpan/authors/id/D/DO/DOMM/Module-ExtractUse-0.342.tar.gz;
-       sha256 = "06z6iz4zc1rdm3w3zkddgv832rghlpvb4r494vdz65pphr65saax";
+       url = mirror://cpan/authors/id/D/DO/DOMM/Module-ExtractUse-0.343.tar.gz;
+       sha256 = "00hcggwnqk953s4zbvkcabd5mfidg60hawlqsw6146in91dlclj8";
      };
      propagatedBuildInputs = [ ParseRecDescent PodStrip ];
      buildInputs = [ TestDeep TestNoWarnings ];
@@ -9996,10 +9997,10 @@ let
   };
 
   Mojolicious = buildPerlPackage rec {
-    name = "Mojolicious-8.02";
+    name = "Mojolicious-8.03";
     src = fetchurl {
       url = "mirror://cpan/authors/id/S/SR/SRI/${name}.tar.gz";
-      sha256 = "0m36zlh58bvww15k9ybi6khrrr6ga308y38p49hfq204k7cy02zp";
+      sha256 = "0jx1zra1c8qlljbihqv9snlr0jz77w7my1hg9qk13kns8by21cpy";
     };
     meta = {
       homepage = https://mojolicious.org;
@@ -10015,7 +10016,7 @@ let
       url = "mirror://cpan/authors/id/S/SR/SRI/${name}.tar.gz";
       sha256 = "14ypg679dk9yvgq67mp7lzs131cxhbgcmrpx5f4ddqcrs1bzq5rb";
     };
-    propagatedBuildInputs = [ Mojolicious IPCShareLite BSDResource Sereal ];
+    propagatedBuildInputs = [ BSDResource IPCShareLite Mojolicious Sereal ];
     meta = {
       homepage = https://github.com/mojolicious/mojo-status;
       description = "Mojolicious server status plugin";
@@ -11263,10 +11264,10 @@ let
   };
 
   NetIDNEncode = buildPerlModule {
-    name = "Net-IDN-Encode-2.401";
+    name = "Net-IDN-Encode-2.500";
     src = fetchurl {
-      url = mirror://cpan/authors/id/C/CF/CFAERBER/Net-IDN-Encode-2.401.tar.gz;
-      sha256 = "1b5hnlnaxnp9jzdk55dcfh4jviv9mv83y4plsr3hi7lkh06hwdyd";
+      url = mirror://cpan/authors/id/C/CF/CFAERBER/Net-IDN-Encode-2.500.tar.gz;
+      sha256 = "1aiy7adirk3wpwlczd8sldi9k1dray0jrg1lbcrcw97zwcrkciam";
     };
     buildInputs = [ TestNoWarnings ];
     meta = {
@@ -11324,10 +11325,10 @@ let
   };
 
   NetPing = buildPerlPackage {
-    name = "Net-Ping-2.70";
+    name = "Net-Ping-2.71";
     src = fetchurl {
-      url = mirror://cpan/authors/id/R/RU/RURBAN/Net-Ping-2.70.tar.gz;
-      sha256 = "41400089736f528cfa1196083905d4bbd313c4653a03fab8578cebd5b5b6aa5a";
+      url = mirror://cpan/authors/id/R/RU/RURBAN/Net-Ping-2.71.tar.gz;
+      sha256 = "0819d0aa87b173e98ecb3ccfd92272ce53c7fc9e86f962f64602a6fa477f7d4f";
     };
     meta = {
       description = "Check a remote host for reachability";
@@ -11353,7 +11354,7 @@ let
       url = "mirror://cpan/authors/id/I/IV/IVAN/${name}.tar.gz";
       sha256 = "88a9b2df69e769e5855a408b19f61915b82e8fe070ab5cf4d525dd3b8bbe31c1";
     };
-    propagatedBuildInputs = [ pkgs.openssl Carp IO NetSSH StringShellQuote ];
+    propagatedBuildInputs = [ pkgs.openssl ];
     patchPhase = ''
       sed -i 's|$scp = "scp";|$scp = "${pkgs.openssh}/bin/scp";|' SCP.pm
     '';
@@ -11446,7 +11447,7 @@ let
       url = "mirror://cpan/authors/id/I/IV/IVAN/${name}.tar.gz";
       sha256 = "7c71c7c3cbe953234dfe25bcc1ad7edb0e1f5a0578601f5523bc6070262a3817";
     };
-    propagatedBuildInputs = [ pkgs.openssl IO ];
+    propagatedBuildInputs = [ pkgs.openssl ];
     patchPhase = ''
       sed -i 's|$ssh = "ssh";|$ssh = "${pkgs.openssh}/bin/ssh";|' SSH.pm
     '';
@@ -11618,10 +11619,10 @@ let
   };
 
   ObjectSignature = buildPerlPackage {
-    name = "Object-Signature-1.07";
+    name = "Object-Signature-1.08";
     src = fetchurl {
-      url = mirror://cpan/authors/id/A/AD/ADAMK/Object-Signature-1.07.tar.gz;
-      sha256 = "0c8l7195bjvx0v6zmkgdnxvwg7yj2zq8hi7xd25a3iikd12dc4f6";
+      url = mirror://cpan/authors/id/E/ET/ETHER/Object-Signature-1.08.tar.gz;
+      sha256 = "12k90c19ly93ib1p6sm3k7sbnr2h5dbywkdmnff2ngm99p4m68c4";
     };
     meta = {
       description = "Generate cryptographic signatures for objects";
@@ -11807,10 +11808,10 @@ let
   };
 
   ParallelForkManager = buildPerlPackage rec {
-    name = "Parallel-ForkManager-1.20";
+    name = "Parallel-ForkManager-2.02";
     src = fetchurl {
       url = "mirror://cpan/authors/id/Y/YA/YANICK/${name}.tar.gz";
-      sha256 = "7cc4c1c3b0e676b61ffa90f82f4128e8057327449ca86a9beb2f39217023f289";
+      sha256 = "c1b2970a8bb666c3de7caac4a8f4dbcc043ab819bbc337692ec7bf27adae4404";
     };
     buildInputs = [ TestWarn ];
     meta = {
@@ -11818,6 +11819,7 @@ let
       description = "A simple parallel processing fork manager";
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
     };
+    propagatedBuildInputs = [ Moo ];
   };
 
   ParallelPrefork = buildPerlPackage {
@@ -12269,10 +12271,10 @@ let
   };
 
   PkgConfig = buildPerlPackage rec {
-    name = "PkgConfig-0.22026";
+    name = "PkgConfig-0.23026";
     src = fetchurl {
       url = "mirror://cpan/authors/id/P/PL/PLICEASE/${name}.tar.gz";
-      sha256 = "d01849bf88f3d56f4efe304cfe56f806867a45b716e3963dcacce17b829433ce";
+      sha256 = "56c8ad9015af3799b99a21b8790997723406acf479f35d13fe9bf632db2d5c26";
     };
     meta = {
       description = "Pure-Perl Core-Only replacement for pkg-config";
@@ -13185,10 +13187,10 @@ let
   };
 
   RegexpGrammars = buildPerlModule rec {
-    name = "Regexp-Grammars-1.048";
+    name = "Regexp-Grammars-1.049";
     src = fetchurl {
       url = "mirror://cpan/authors/id/D/DC/DCONWAY/${name}.tar.gz";
-      sha256 = "d7718d9bb0d4259eabf326838e3f841b440c4e959faf9615d9ad9c345f4a3d6f";
+      sha256 = "2e642a7051b9ea5dccd05d53e49684ca28e99c43b811bbec37d160d3f81edf68";
     };
     meta = {
       description = "Add grammatical parsing features to Perl 5.10 regexes";
@@ -13428,7 +13430,7 @@ let
       url = "mirror://cpan/authors/id/Y/YV/YVES/${name}.tar.gz";
       sha256 = "17syqbq17qw6ajg3w88q9ljdm4c2b7zadq9pwshxxgyijg8dlfh4";
     };
-    buildInputs = [ TestDeep TestDifferences TestWarn TestLongString ];
+    buildInputs = [ TestDeep TestDifferences TestLongString TestWarn ];
     preBuild = ''ls'';
     meta = {
       homepage = https://github.com/Sereal/Sereal;
@@ -13444,8 +13446,7 @@ let
       url = "mirror://cpan/authors/id/Y/YV/YVES/${name}.tar.gz";
       sha256 = "02hbk5dwq7fpnyb3vp7xxhb41ra48xhghl13p9pjq9lzsqlb6l19";
     };
-    buildInputs = [ TestDeep TestDifferences TestWarn TestLongString ];
-    propagatedBuildInputs = [ SerealDecoder ];
+    buildInputs = [ SerealDecoder TestDeep TestDifferences TestLongString TestWarn ];
     meta = {
       homepage = https://github.com/Sereal/Sereal;
       description = "Fast, compact, powerful binary deserialization";
@@ -13460,8 +13461,8 @@ let
       url = "mirror://cpan/authors/id/Y/YV/YVES/${name}.tar.gz";
       sha256 = "0lnczrf311pl9b2x75r0ffsszv5aspfb8x6jdvgr3rgqp7nbm1wr";
     };
-    buildInputs = [ TestDeep TestDifferences TestWarn TestLongString ];
-    propagatedBuildInputs = [ SerealEncoder SerealDecoder ];
+    buildInputs = [ TestLongString TestWarn ];
+    propagatedBuildInputs = [ SerealDecoder SerealEncoder ];
     meta = {
       homepage = https://github.com/Sereal/Sereal;
       description = "Fast, compact, powerful binary deserialization";
@@ -13610,10 +13611,10 @@ let
   };
 
   Socket6 = buildPerlPackage rec {
-    name = "Socket6-0.28";
+    name = "Socket6-0.29";
     src = fetchurl {
       url = "mirror://cpan/authors/id/U/UM/UMEMOTO/${name}.tar.gz";
-      sha256 = "bfd49ab99f3197c99285fed4683c4edc06277c1e4453f593e694d7bff0974586";
+      sha256 = "468915fa3a04dcf6574fc957eff495915e24569434970c91ee8e4e1459fc9114";
     };
     setOutputFlags = false;
     buildInputs = [ pkgs.which ];
@@ -14634,10 +14635,10 @@ let
   };
 
   TemplateToolkit = buildPerlPackage rec {
-    name = "Template-Toolkit-2.27";
+    name = "Template-Toolkit-2.28";
     src = fetchurl {
-      url = mirror://cpan/authors/id/A/AB/ABW/Template-Toolkit-2.27.tar.gz;
-      sha256 = "1p66y9mwj7nkc1bcwgp2xjw78l4x5bzhj0xghp2k80ad4q1s848k";
+      url = mirror://cpan/authors/id/A/AT/ATOOMIC/Template-Toolkit-2.28.tar.gz;
+      sha256 = "1msxg3j1hx5wsc7vr81x5gs9gdbn4y0x6cvyj3pq4dgi1603dbvi";
     };
     propagatedBuildInputs = [ AppConfig ];
     meta = {
@@ -14835,10 +14836,10 @@ let
   };
 
   TermVT102Boundless = buildPerlPackage {
-    name = "Term-VT102-Boundless-0.04";
+    name = "Term-VT102-Boundless-0.05";
     src = fetchurl {
-      url = mirror://cpan/authors/id/N/NU/NUFFIN/Term-VT102-Boundless-0.04.tar.gz;
-      sha256 = "5bb88b5aecb44ebf56d3ac7240be80cd26def9dcf1ebeb4e77d9983dfc7a8f19";
+      url = mirror://cpan/authors/id/F/FB/FBARRIOS/Term-VT102-Boundless-0.05.tar.gz;
+      sha256 = "e1ded85ae3d76b59c03b8697f4a6cb01ae31bd62a9354f5bb7d18f9e927b485f";
     };
     propagatedBuildInputs = [ TermVT102 ];
     meta = {
@@ -15846,10 +15847,10 @@ let
   };
 
   TestScript = buildPerlPackage rec {
-    name = "Test-Script-1.23";
+    name = "Test-Script-1.25";
     src = fetchurl {
       url = "mirror://cpan/authors/id/P/PL/PLICEASE/${name}.tar.gz";
-      sha256 = "1ca4mwcghgpdrpcg6xc0iwp3ga9c94qni9zf4hhqq8lpjwdyg89k";
+      sha256 = "199s78hh77zwwqba6pa1ngzjnzrdj2ka6qv5w0i286aafh93705n";
     };
 
     buildInputs = [ Test2Suite ];
@@ -16246,10 +16247,10 @@ let
   };
 
   TextCSV_XS = buildPerlPackage rec {
-    name = "Text-CSV_XS-1.36";
+    name = "Text-CSV_XS-1.37";
     src = fetchurl {
       url = "mirror://cpan/authors/id/H/HM/HMBRAND/${name}.tgz";
-      sha256 = "c321b09ad98a332138f25f55afb83befd7c045134085c7cb280fc325e688942c";
+      sha256 = "20e16da9c38b0938f308c01d954f49d2c6922bac0d2d979bf2ad483fe7476ba2";
     };
     meta = {
       description = "Comma-Separated Values manipulation routines";
@@ -16542,10 +16543,10 @@ let
   };
 
   TestTrap = buildPerlModule rec {
-    name = "Test-Trap-0.3.3";
+    name = "Test-Trap-0.3.4";
     src = fetchurl {
-      url = mirror://cpan/authors/id/E/EB/EBHANSSEN/Test-Trap-v0.3.3.tar.gz;
-      sha256 = "1676gqjyk0zig3yyqv053y5j1pajp2af08ffmgx94n414whbhm5c";
+      url = mirror://cpan/authors/id/E/EB/EBHANSSEN/Test-Trap-v0.3.4.tar.gz;
+      sha256 = "1qjs2080kcc66s4d7499br5lw2qmhr9gxky4xsl6vjdn6dpna10b";
     };
     propagatedBuildInputs = [ DataDump ];
     meta = {
@@ -17394,10 +17395,10 @@ let
   };
 
   WWWMechanize = buildPerlPackage {
-    name = "WWW-Mechanize-1.88";
+    name = "WWW-Mechanize-1.89";
     src = fetchurl {
-      url = mirror://cpan/authors/id/O/OA/OALDERS/WWW-Mechanize-1.88.tar.gz;
-      sha256 = "0yd8a1zsfpbv5wr79x3iqmik9gvcd10iam9dfrdan4dri9vpxn9n";
+      url = mirror://cpan/authors/id/O/OA/OALDERS/WWW-Mechanize-1.89.tar.gz;
+      sha256 = "1mxx362vqiniw8vi6k3j7v9b1s7012irhfcblcz1p6jz9cjqi7mh";
     };
     propagatedBuildInputs = [ HTMLForm HTMLTree LWP ];
     doCheck = false;
@@ -17548,10 +17549,10 @@ let
   };
 
   X11XCB = buildPerlPackage rec {
-    name = "X11-XCB-0.17";
+    name = "X11-XCB-0.18";
     src = fetchurl {
       url = "mirror://cpan/authors/id/M/MS/MSTPLBG/${name}.tar.gz";
-      sha256 = "12qyf98s5hbybmh0mblpz50c00i68srq73w5rw31m2dhclj8n96q";
+      sha256 = "1cjpghw7cnackw20lbd7yzm222kz5bnrwz52f8ay24d1f4pwrnxf";
     };
     AUTOMATED_TESTING = false;
     buildInputs = [ pkgs.xorg.libxcb pkgs.xorg.xcbproto pkgs.xorg.xcbutil pkgs.xorg.xcbutilwm ExtUtilsDepends ExtUtilsPkgConfig TestDeep TestException XSObjectMagic ];
@@ -17722,10 +17723,10 @@ let
   };
 
   XMLXPath = buildPerlPackage rec {
-    name = "XML-XPath-1.42";
+    name = "XML-XPath-1.44";
     src = fetchurl {
       url = "mirror://cpan/authors/id/M/MA/MANWAR/${name}.tar.gz";
-      sha256 = "9e6ac67c2cead5f918a060b8b9ccdbdcaa6d610be8517bba42a96cd56748b512";
+      sha256 = "1cc9110705165dc09dd09974dd7c0b6709c9351d6b6b1cef5a711055f891dd0f";
     };
     buildInputs = [ PathTiny ];
     propagatedBuildInputs = [ XMLParser ];
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 4d065d48f2b..2ec753531e4 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1319,9 +1319,9 @@ in {
 
   pyhepmc = callPackage ../development/python-modules/pyhepmc { };
 
-  pytest = self.pytest_37;
+  pytest = self.pytest_39;
 
-  pytest_37 = callPackage ../development/python-modules/pytest {
+  pytest_39 = callPackage ../development/python-modules/pytest {
     # hypothesis tests require pytest that causes dependency cycle
     hypothesis = self.hypothesis.override { doCheck = false; };
   };
@@ -3065,89 +3065,13 @@ in {
 
   ldappool = callPackage ../development/python-modules/ldappool { };
 
-  lz4 = buildPythonPackage rec {
-    name = "lz4-0.8.2";
+  lz4 = callPackage ../development/python-modules/lz4 { };
 
-    src = pkgs.fetchurl {
-      url = "https://pypi.python.org/packages/b5/f0/e1de2bb7feb54011f3c4dcf35b7cca3536e19526764db051b50ea26b58e7/lz4-0.8.2.tar.gz";
-      sha256 = "1irad4sq4hdr30fr53smvv3zzk4rddcf9b4jx19w8s9xsxhr1x3b";
-    };
-
-    buildInputs= with self; [ nose ];
-
-    meta = with stdenv.lib; {
-      description = "Compression library";
-      homepage = https://github.com/python-lz4/python-lz4;
-      license = licenses.bsd3;
-    };
-  };
-
- retrying = buildPythonPackage rec {
-    name = "retrying-${version}";
-    version = "1.3.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/retrying/retrying-1.3.3.tar.gz";
-      sha256 = "0fwp86xv0rvkncjdvy2mwcvbglw4w9k0fva25i7zx8kd19b3kh08";
-    };
-
-    propagatedBuildInputs = with self; [ six ];
-
-    # doesn't ship tests in tarball
-    doCheck = false;
-
-    meta = with stdenv.lib; {
-      homepage = https://github.com/rholder/retrying;
-    };
-  };
-
-  fasteners = buildPythonPackage rec {
-    name = "fasteners-${version}";
-    version = "0.14.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/f/fasteners/${name}.tar.gz";
-      sha256 = "063y20kx01ihbz2mziapmjxi2cd0dq48jzg587xdsdp07xvpcz22";
-    };
-
-    propagatedBuildInputs = with self; [ six monotonic testtools ];
+  retrying = callPackage ../development/python-modules/retrying { };
 
-    checkPhase = ''
-      ${python.interpreter} -m unittest discover
-    '';
-    # Tests are written for Python 3.x only (concurrent.futures)
-    doCheck = isPy3k;
-
-
-    meta = with stdenv.lib; {
-      description = "Fasteners";
-      homepage = https://github.com/harlowja/fasteners;
-    };
-  };
+  fasteners = callPackage ../development/python-modules/fasteners { };
 
-  aioeventlet = buildPythonPackage rec {
-    name = "aioeventlet-${version}";
-    version = "0.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/a/aioeventlet/aioeventlet-0.4.tar.gz";
-      sha256 = "19krvycaiximchhv1hcfhz81249m3w3jrbp2h4apn1yf4yrc4y7y";
-    };
-
-    propagatedBuildInputs = with self; [ eventlet trollius asyncio ];
-    buildInputs = with self; [ mock ];
-
-    # 2 tests error out
-    doCheck = false;
-    checkPhase = ''
-      ${python.interpreter} runtests.py
-    '';
-
-    meta = with stdenv.lib; {
-      description = "aioeventlet implements the asyncio API (PEP 3156) on top of eventlet. It makes";
-      homepage = http://aioeventlet.readthedocs.org/;
-    };
-  };
+  aioeventlet = callPackage ../development/python-modules/aioeventlet { };
 
   olefile = callPackage ../development/python-modules/olefile { };
 
@@ -3155,102 +3079,27 @@ in {
 
   mecab-python3 = callPackage ../development/python-modules/mecab-python3 { };
 
-  mox3 = buildPythonPackage rec {
-    name = "mox3-${version}";
-    version = "0.23.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/m/mox3/${name}.tar.gz";
-      sha256 = "0q26sg0jasday52a7y0cch13l0ssjvr4yqnvswqxsinj1lv5ld88";
-    };
-
-    patchPhase = ''
-      sed -i 's@python@${python.interpreter}@' .testr.conf
-    '';
-
-    #  FAIL: mox3.tests.test_mox.RegexTest.testReprWithFlags
-    #  ValueError: cannot use LOCALE flag with a str pattern
-    doCheck = !isPy36;
-
-    buildInputs = with self; [ subunit testrepository testtools six ];
-    propagatedBuildInputs = with self; [ pbr fixtures ];
-  };
+  mox3 = callPackage ../development/python-modules/mox3 { };
 
   doc8 = callPackage ../development/python-modules/doc8 { };
 
   wrapt = callPackage ../development/python-modules/wrapt { };
 
-  pagerduty = buildPythonPackage rec {
-    name = "pagerduty-${version}";
-    version = "0.2.1";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-        url = "mirror://pypi/p/pagerduty/pagerduty-${version}.tar.gz";
-        sha256 = "e8c237239d3ffb061069aa04fc5b3d8ae4fb0af16a9713fe0977f02261d323e9";
-    };
-  };
+  pagerduty = callPackage ../development/python-modules/pagerduty { };
 
   pandas = callPackage ../development/python-modules/pandas { };
 
   pandas_0_17_1 = callPackage ../development/python-modules/pandas/0.17.1.nix { };
 
-  xlrd = buildPythonPackage rec {
-    name = "xlrd-${version}";
-
-    version = "0.9.4";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/x/xlrd/xlrd-${version}.tar.gz";
-      sha256 = "8e8d3359f39541a6ff937f4030db54864836a06e42988c452db5b6b86d29ea72";
-    };
-
-    buildInputs = with self; [ nose ];
-    checkPhase = ''
-      nosetests -v
-    '';
-
-  };
+  xlrd = callPackage ../development/python-modules/xlrd { };
 
   bottleneck = callPackage ../development/python-modules/bottleneck { };
 
   paho-mqtt = callPackage ../development/python-modules/paho-mqtt { };
 
-  pamqp = buildPythonPackage rec {
-    version = "1.6.1";
-    name = "pamqp-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pamqp/${name}.tar.gz";
-      sha256 = "1vmyvynqzx5zvbipaxff4fnzy3h3dvl3zicyr15yb816j93jl2ca";
-    };
-
-    buildInputs = with self; [ mock nose pep8 pylint mccabe ];
+  pamqp = callPackage ../development/python-modules/pamqp { };
 
-    meta = {
-      description = "RabbitMQ Focused AMQP low-level library";
-      homepage = https://pypi.python.org/pypi/pamqp;
-      license = licenses.bsd3;
-    };
-  };
-
-  parsedatetime = buildPythonPackage rec {
-    name = "parsedatetime-${version}";
-    version = "2.3";
-
-    meta = {
-      description = "Parse human-readable date/time text";
-      homepage = "https://github.com/bear/parsedatetime";
-      license = licenses.asl20;
-    };
-
-    buildInputs = with self; [ pytest pytestrunner ];
-    propagatedBuildInputs = with self; [ future ];
-
-    src = pkgs.fetchurl {
-        url = "mirror://pypi/p/parsedatetime/${name}.tar.gz";
-        sha256 = "1vkrmd398s11h1zn3zaqqsiqhj9lwy1ikcg6irx2lrgjzjg3rjll";
-    };
-  };
+  parsedatetime = callPackage ../development/python-modules/parsedatetime { };
 
   paramiko = callPackage ../development/python-modules/paramiko { };
 
@@ -3258,140 +3107,23 @@ in {
 
   paramz = callPackage ../development/python-modules/paramz { };
 
-  parsel = buildPythonPackage rec {
-    name = "parsel-${version}";
-    version = "1.1.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/parsel/${name}.tar.gz";
-      sha256 = "0a34d1c0bj1fzb5dk5744m2ag6v3b8glk4xp0amqxdan9ldbcd97";
-    };
-
-    buildInputs = with self; [ pytest pytestrunner ];
-    propagatedBuildInputs = with self; [ six w3lib lxml cssselect ];
-
-    checkPhase = ''
-      py.test
-    '';
-
-    meta = {
-      homepage = "https://github.com/scrapy/parsel";
-      description = "Parsel is a library to extract data from HTML and XML using XPath and CSS selectors";
-      license = licenses.bsd3;
-    };
-  };
+  parsel = callPackage ../development/python-modules/parsel { };
 
   parso = callPackage ../development/python-modules/parso { };
 
   partd = callPackage ../development/python-modules/partd { };
 
-  patch = buildPythonPackage rec {
-    name = "${pname}-${version}";
-    version = "1.16";
-    pname = "patch";
-
-    src = pkgs.fetchzip {
-      url = "mirror://pypi/p/${pname}/${name}.zip";
-      sha256 = "1nj55hvyvzax4lxq7vkyfbw91pianzr3hp7ka7j12pgjxccac50g";
-      stripRoot = false;
-    };
-
-    # No tests included in archive
-    doCheck = false;
-
-    meta = {
-      description = "A library to parse and apply unified diffs";
-      homepage = https://github.com/techtonik/python-patch/;
-      license = licenses.mit;
-      platforms = platforms.all;
-      maintainers = [ maintainers.igsha ];
-    };
-  };
-
-  pathos = buildPythonPackage rec {
-    name = "pathos-${version}";
-    version = "0.2.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pathos/${name}.tgz";
-      sha256 = "e35418af733bf434da83746d46acca94375d6e306b3df330b2a1808db026a188";
-    };
+  patch = callPackage ../development/python-modules/patch { };
 
-    propagatedBuildInputs = with self; [ dill pox ppft multiprocess ];
-
-    # Require network
-    doCheck = false;
-
-    meta = {
-      description = "Parallel graph management and execution in heterogeneous computing";
-      homepage = http://www.cacr.caltech.edu/~mmckerns/pathos.htm;
-      license = licenses.bsd3;
-    };
-  };
+  pathos = callPackage ../development/python-modules/pathos { };
 
   patsy = callPackage ../development/python-modules/patsy { };
 
-  paste = buildPythonPackage rec {
-    name = "paste-${version}";
-    version = "2.0.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/Paste/Paste-${version}.tar.gz";
-      sha256 = "062jk0nlxf6lb2wwj6zc20rlvrwsnikpkh90y0dn8cjch93s6ii3";
-    };
-
-    checkInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ six ];
-
-    # Certain tests require network
-    checkPhase = ''
-      NOSE_EXCLUDE=test_ok,test_form,test_error,test_stderr,test_paste_website nosetests
-    '';
-
-    meta = {
-      description = "Tools for using a Web Server Gateway Interface stack";
-      homepage = http://pythonpaste.org/;
-    };
-  };
-
+  paste = callPackage ../development/python-modules/paste { };
 
-  PasteDeploy = buildPythonPackage rec {
-    version = "1.5.2";
-    name = "paste-deploy-${version}";
+  PasteDeploy = callPackage ../development/python-modules/pastedeploy { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PasteDeploy/PasteDeploy-${version}.tar.gz";
-      sha256 = "d5858f89a255e6294e63ed46b73613c56e3b9a2d82a42f1df4d06c8421a9e3cb";
-    };
-
-    buildInputs = with self; [ nose ];
-
-    meta = {
-      description = "Load, configure, and compose WSGI applications and servers";
-      homepage = http://pythonpaste.org/deploy/;
-      platforms = platforms.all;
-    };
-  };
-
-   pasteScript = buildPythonPackage rec {
-    version = "1.7.5";
-    name = "PasteScript-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PasteScript/${name}.tar.gz";
-      sha256 = "2b685be69d6ac8bc0fe6f558f119660259db26a15e16a4943c515fbee8093539";
-    };
-
-    doCheck = false;
-    buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ six paste PasteDeploy cheetah argparse ];
-
-    meta = {
-      description = "A pluggable command-line frontend, including commands to setup package file layouts";
-      homepage = http://pythonpaste.org/script/;
-      platforms = platforms.all;
-    };
-  };
+  pasteScript = callPackage ../development/python-modules/pastescript { };
 
   patator = callPackage ../development/python-modules/patator { };
 
@@ -3409,143 +3141,27 @@ in {
     inherit (pkgs) glibcLocales git;
   };
 
-  pep8 = buildPythonPackage rec {
-    name = "pep8-${version}";
-    version = "1.7.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pep8/${name}.tar.gz";
-      sha256 = "a113d5f5ad7a7abacef9df5ec3f2af23a20a28005921577b15dd584d099d5900";
-    };
-
-    meta = {
-      homepage = "http://pep8.readthedocs.org/";
-      description = "Python style guide checker";
-      license = licenses.mit;
-      maintainers = with maintainers; [ garbas ];
-    };
-  };
+  pep8 = callPackage ../development/python-modules/pep8 { };
 
   pep257 = callPackage ../development/python-modules/pep257 { };
 
-  percol = buildPythonPackage rec {
-    name = "percol-${version}";
-    version = "0.0.8";
-    disabled = isPy3k;
+  percol = callPackage ../development/python-modules/percol { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/percol/${name}.tar.gz";
-      sha256 = "169s5mhw1s60qbsd6pkf9bb2x6wfgx8hn8nw9d4qgc68qnnpp2cj";
-    };
-
-    propagatedBuildInputs = with self; [ ];
-
-    meta = {
-      homepage = https://github.com/mooz/percol;
-      description = "Adds flavor of interactive filtering to the traditional pipe concept of shell";
-      license = licenses.mit;
-      maintainers = with maintainers; [ koral ];
-    };
-  };
-
-  pexif = buildPythonPackage rec {
-    name = "pexif-${version}";
-    version = "0.15";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pexif/pexif-0.15.tar.gz";
-      sha256 = "45a3be037c7ba8b64bbfc48f3586402cc17de55bb9d7357ef2bc99954a18da3f";
-    };
-
-    meta = {
-      description = "A module for editing JPEG EXIF data";
-      homepage = http://www.benno.id.au/code/pexif/;
-      license = licenses.mit;
-    };
-  };
+  pexif = callPackage ../development/python-modules/pexif { };
 
   pexpect = callPackage ../development/python-modules/pexpect { };
 
-  pdfkit = buildPythonPackage rec {
-    name = "pdfkit-${version}";
-    version = "0.5.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pdfkit/${name}.zip";
-      sha256 = "1p1m6gp51ql3wzjs2iwds8sc3hg1i48yysii9inrky6qc3s6q5vf";
-    };
-
-    buildInputs = with self; [ ];
-    # tests are not distributed
-    doCheck = false;
-
-    meta = {
-      homepage = https://pypi.python.org/pypi/pdfkit;
-      description = "Wkhtmltopdf python wrapper to convert html to pdf using the webkit rendering engine and qt";
-      license = licenses.mit;
-    };
-  };
+  pdfkit = callPackage ../development/python-modules/pdfkit { };
 
-    periodictable = callPackage ../development/python-modules/periodictable { };
+  periodictable = callPackage ../development/python-modules/periodictable { };
 
-  pg8000 = buildPythonPackage rec {
-    name = "pg8000-1.10.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pg8000/${name}.tar.gz";
-      sha256 = "188658db63c2ca931ae1bf0167b34efaac0ecc743b707f0118cc4b87e90ce488";
-    };
-
-    propagatedBuildInputs = with self; [ pytz ];
-
-    meta = {
-      maintainers = with maintainers; [ garbas domenkozar ];
-      platforms = platforms.linux;
-    };
-  };
+  pg8000 = callPackage ../development/python-modules/pg8000 { };
 
   pgspecial = callPackage ../development/python-modules/pgspecial { };
 
-  pickleshare = buildPythonPackage rec {
-    version = "0.7.4";
-    name = "pickleshare-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pickleshare/${name}.tar.gz";
-      sha256 = "84a9257227dfdd6fe1b4be1319096c20eb85ff1e82c7932f36efccfe1b09737b";
-    };
-
-    propagatedBuildInputs = with self; [pathpy] ++ optional (pythonOlder "3.4") pathlib2;
-
-    # No proper test suite
-    doCheck = false;
-
-    meta = {
-      description = "Tiny 'shelve'-like database with concurrency support";
-      homepage = https://github.com/vivainio/pickleshare;
-      license = licenses.mit;
-    };
-  };
-
-  piep = buildPythonPackage rec {
-    version = "0.8.0";
-    name = "piep-${version}";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/piep/piep-${version}.tar.gz";
-      sha256 = "1wgkg1kc28jpya5k4zvbc9jmpa60b3d5c3gwxfbp15hw6smyqirj";
-    };
+  pickleshare = callPackage ../development/python-modules/pickleshare { };
 
-    propagatedBuildInputs = with self; [pygments];
-
-    meta = {
-      description = "Bringing the power of python to stream editing";
-      homepage = https://github.com/timbertson/piep;
-      maintainers = with maintainers; [ timbertson ];
-      license = licenses.gpl3;
-    };
-  };
+  piep = callPackage ../development/python-modules/piep { };
 
   piexif = callPackage ../development/python-modules/piexif { };
 
@@ -3556,26 +3172,7 @@ in {
     glibcLocales = pkgs.glibcLocales;
   };
 
-  pika = buildPythonPackage rec {
-    name = "pika-${version}";
-    version = "0.10.0";
-
-    src = pkgs.fetchurl {
-      url = "https://pypi.python.org/packages/source/p/pika/${name}.tar.gz";
-      sha256 = "0nb4h08di432lv7dy2v9kpwgk0w92f24sqc2hw2s9vwr5b8v8xvj";
-    };
-
-    # Tests require twisted which is only availalble for python-2.x
-    doCheck = !isPy3k;
-
-    buildInputs = with self; [ nose mock pyyaml unittest2 pyev ] ++ optionals (!isPy3k) [ twisted tornado ];
-
-    meta = {
-      description = "Pure-Python implementation of the AMQP 0-9-1 protocol";
-      homepage = https://pika.readthedocs.org;
-      license = licenses.bsd3;
-    };
-  };
+  pika = callPackage ../development/python-modules/pika { };
 
   pika-pool = callPackage ../development/python-modules/pika-pool { };
 
@@ -3595,70 +3192,13 @@ in {
 
   pymetar = callPackage ../development/python-modules/pymetar { };
 
-  pysftp = buildPythonPackage rec {
-    name = "pysftp-${version}";
-    version = "0.2.9";
-    disabled = isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pysftp/${name}.tar.gz";
-      sha256 = "0jl5qix5cxzrv4lb8rfpjkpcghbkacnxkb006ikn7mkl5s05mxgv";
-    };
-
-    propagatedBuildInputs = with self; [ paramiko ];
-
-    meta = {
-      homepage = https://bitbucket.org/dundeemt/pysftp;
-      description = "A friendly face on SFTP";
-      license = licenses.mit;
-      longDescription = ''
-        A simple interface to SFTP. The module offers high level abstractions
-        and task based routines to handle your SFTP needs. Checkout the Cook
-        Book, in the docs, to see what pysftp can do for you.
-      '';
-    };
-  };
+  pysftp = callPackage ../development/python-modules/pysftp { };
 
   pysoundfile = callPackage ../development/python-modules/pysoundfile { };
 
-  python3pika = buildPythonPackage {
-    name = "python3-pika-0.9.14";
-    disabled = !isPy3k;
-
-    # Unit tests adds dependencies on pyev, tornado and twisted (and twisted is disabled for Python 3)
-    doCheck = false;
-
-    src = pkgs.fetchurl {
-      url = mirror://pypi/p/python3-pika/python3-pika-0.9.14.tar.gz;
-      sha256 = "1c3hifwvn04kvlja88iawf0awyz726jynwnpcb6gn7376b4nfch7";
-    };
-    buildInputs = with self; [ nose mock pyyaml ];
-
-    propagatedBuildInputs = with self; [ unittest2 ];
-  };
+  python3pika = callPackage ../development/python-modules/python3pika { };
 
-
-  python-jenkins = buildPythonPackage rec {
-    name = "python-jenkins-${version}";
-    version = "0.4.14";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/python-jenkins/${name}.tar.gz";
-      sha256 = "1n8ikvd9jf4dlki7nqlwjlsn8wpsx4x7wg4h3d6bkvyvhwwf8yqf";
-    };
-    patchPhase = ''
-      sed -i 's@python@${python.interpreter}@' .testr.conf
-    '';
-
-    buildInputs = with self; [ mock ];
-    propagatedBuildInputs = with self; [ pbr pyyaml six multi_key_dict testtools
-     testscenarios testrepository kerberos ];
-
-    meta = {
-      description = "Python bindings for the remote Jenkins API";
-      homepage = https://pypi.python.org/pypi/python-jenkins;
-      license = licenses.bsd3;
-    };
-  };
+  python-jenkins = callPackage ../development/python-modules/python-jenkins { };
 
   pystringtemplate = callPackage ../development/python-modules/stringtemplate { };
 
@@ -3675,59 +3215,15 @@ in {
 
   polib = callPackage ../development/python-modules/polib {};
 
-  posix_ipc = buildPythonPackage rec {
-    name = "posix_ipc-${version}";
-    version = "1.0.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/posix_ipc/${name}.tar.gz";
-      sha256 = "1jzg66708pi5n9w07fbz6rlxx30cjds9hp2yawjjfryafh1hg4ww";
-    };
-
-    meta = {
-      description = "POSIX IPC primitives (semaphores, shared memory and message queues)";
-      license = licenses.bsd3;
-      homepage = http://semanchuk.com/philip/posix_ipc/;
-    };
-  };
+  posix_ipc = callPackage ../development/python-modules/posix_ipc { };
 
   portend = callPackage ../development/python-modules/portend { };
 
   powerline = callPackage ../development/python-modules/powerline { };
 
-  pox = buildPythonPackage rec {
-    name = "pox-${version}";
-    version = "0.2.2";
+  pox = callPackage ../development/python-modules/pox { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pox/${name}.tgz";
-      sha256 = "22e97ac6d2918c754e65a9581dbe02e9d00ae4a54ca48d05118f87c1ea92aa19";
-    };
-
-    meta = {
-      description = "Utilities for filesystem exploration and automated builds";
-      license = licenses.bsd3;
-      homepage = http://www.cacr.caltech.edu/~mmckerns/pox.htm;
-    };
-  };
-
-  ppft = buildPythonPackage rec {
-    name = "ppft-${version}";
-    version = "1.6.4.6";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/ppft/${name}.tgz";
-      sha256 = "6f99c861822884cb00badbd5f364ee32b90a157084a6768040793988c6b92bff";
-    };
-
-    propagatedBuildInputs = with self; [ six ];
-
-    meta = {
-      description = "Distributed and parallel python";
-      homepage = https://github.com/uqfoundation;
-      license = licenses.bsd3;
-    };
-  };
+  ppft = callPackage ../development/python-modules/ppft { };
 
   praw = callPackage ../development/python-modules/praw { };
 
@@ -3735,26 +3231,7 @@ in {
 
   premailer = callPackage ../development/python-modules/premailer { };
 
-  prettytable = buildPythonPackage rec {
-    name = "prettytable-0.7.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PrettyTable/${name}.tar.bz2";
-      sha256 = "599bc5b4b9602e28294cf795733c889c26dd934aa7e0ee9cff9b905d4fbad188";
-    };
-
-    buildInputs = [ pkgs.glibcLocales ];
-
-    preCheck = ''
-      export LANG="en_US.UTF-8"
-    '';
-
-    meta = {
-      description = "Simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
-      homepage = http://code.google.com/p/prettytable/;
-    };
-  };
-
+  prettytable = callPackage ../development/python-modules/prettytable { };
 
   prompt_toolkit = callPackage ../development/python-modules/prompt_toolkit { };
 
@@ -3782,183 +3259,31 @@ in {
 
   py = callPackage ../development/python-modules/py { };
 
-  pyacoustid = buildPythonPackage rec {
-    name = "pyacoustid-1.1.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyacoustid/${name}.tar.gz";
-      sha256 = "0117039cb116af245e6866e8e8bf3c9c8b2853ad087142bd0c2dfc0acc09d452";
-    };
-
-    propagatedBuildInputs = with self; [ requests audioread ];
-
-    patches = [ ../development/python-modules/pyacoustid-py3.patch ];
-
-    postPatch = ''
-      sed -i \
-          -e '/^FPCALC_COMMAND *=/s|=.*|= "${pkgs.chromaprint}/bin/fpcalc"|' \
-          acoustid.py
-    '';
-
-    meta = {
-      description = "Bindings for Chromaprint acoustic fingerprinting";
-      homepage = "https://github.com/sampsyo/pyacoustid";
-      license = licenses.mit;
-    };
-  };
-
-
-  pyalgotrade = buildPythonPackage {
-    name = "pyalgotrade-0.16";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyAlgoTrade/PyAlgoTrade-0.16.tar.gz";
-      sha256 = "a253617254194b91cfebae7bfd184cb109d4e48a8c70051b9560000a2c0f94b3";
-    };
-
-    propagatedBuildInputs = with self; [ numpy scipy pytz ];
-
-    meta = {
-      description = "Python Algorithmic Trading";
-      homepage = http://gbeced.github.io/pyalgotrade/;
-      license = licenses.asl20;
-    };
-  };
+  pyacoustid = callPackage ../development/python-modules/pyacoustid { };
 
+  pyalgotrade = callPackage ../development/python-modules/pyalgotrade { };
 
   pyasn1 = callPackage ../development/python-modules/pyasn1 { };
 
   pyasn1-modules = callPackage ../development/python-modules/pyasn1-modules { };
 
-  pyaudio = buildPythonPackage rec {
-    name = "python-pyaudio-${version}";
-    version = "0.2.9";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyAudio/PyAudio-${version}.tar.gz";
-      sha256 = "bfd694272b3d1efc51726d0c27650b3c3ba1345f7f8fdada7e86c9751ce0f2a1";
-    };
-
-    disabled = isPyPy;
-
-    buildInputs = with self; [ pkgs.portaudio ];
-
-    meta = {
-      description = "Python bindings for PortAudio";
-      homepage = "http://people.csail.mit.edu/hubert/pyaudio/";
-      license = licenses.mit;
-    };
-  };
+  pyaudio = callPackage ../development/python-modules/pyaudio { };
 
   pysam = callPackage ../development/python-modules/pysam { };
 
-  pysaml2 = buildPythonPackage rec {
-    name = "pysaml2-${version}";
-    version = "3.0.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pysaml2/${name}.tar.gz";
-      sha256 = "0y2iw1dddcvi13xjh3l52z1mvnrbc41ik9k4nn7lwj8x5kimnk9n";
-    };
-
-    patches = [
-      (pkgs.fetchpatch {
-        name = "CVE-2016-10127.patch";
-        url = "https://sources.debian.net/data/main/p/python-pysaml2/3.0.0-5/debian/patches/fix-xxe-in-xml-parsing.patch";
-        sha256 = "184lkwdayjqiahzsn4yp15parqpmphjsb1z7zwd636jvarxqgs2q";
-      })
-    ];
-
-    propagatedBuildInputs = with self; [
-      repoze_who paste cryptography pycrypto pyopenssl ipaddress six cffi idna
-      enum34 pytz setuptools zope_interface dateutil requests pyasn1 webob decorator pycparser
-      defusedxml
-    ];
-    buildInputs = with self; [
-      Mako pytest memcached pymongo mongodict pkgs.xmlsec
-    ];
-
-    preConfigure = ''
-      sed -i 's/pymongo==3.0.1/pymongo/' setup.py
-    '';
-
-    # 16 failed, 427 passed, 17 error in 88.85 seconds
-    doCheck = false;
-
-    meta = with stdenv.lib; {
-      homepage = "https://github.com/rohe/pysaml2";
-    };
-  };
+  pysaml2 = callPackage ../development/python-modules/pysaml2 { };
 
   python-pushover = callPackage ../development/python-modules/pushover {};
 
   pystemd = callPackage ../development/python-modules/pystemd { systemd = pkgs.systemd; };
 
-  mongodict = buildPythonPackage rec {
-    name = "mongodict-${version}";
-    version = "0.3.1";
+  mongodict = callPackage ../development/python-modules/mongodict { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/m/mongodict/${name}.tar.gz";
-      sha256 = "0nv5amfs337m0gbxpjb0585s20rndqfc3mfrzq1iwgnds5gxcrlw";
-    };
-
-    propagatedBuildInputs = with self; [
-      pymongo
-    ];
-
-    meta = with stdenv.lib; {
-      description = "MongoDB-backed Python dict-like interface";
-      homepage = "https://github.com/turicas/mongodict/";
-    };
-  };
-
-
-  repoze_who = buildPythonPackage rec {
-    name = "repoze.who-${version}";
-    version = "2.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/repoze.who/${name}.tar.gz";
-      sha256 = "12wsviar45nwn35w2y4i8b929dq2219vmwz8013wx7bpgkn2j9ij";
-    };
-
-    propagatedBuildInputs = with self; [
-      zope_interface webob
-    ];
-    buildInputs = with self; [
-
-    ];
-
-    meta = with stdenv.lib; {
-      description = "WSGI Authentication Middleware / API";
-      homepage = "http://www.repoze.org";
-    };
-  };
+  repoze_who = callPackage ../development/python-modules/repoze_who { };
 
   vobject = callPackage ../development/python-modules/vobject { };
 
-  pycarddav = buildPythonPackage rec {
-    version = "0.7.0";
-    name = "pycarddav-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyCardDAV/pyCardDAV-${version}.tar.gz";
-      sha256 = "0avkrcpisfvhz103v7vmq2jd83hvmpqrb4mlbx6ikkk1wcvclsx8";
-    };
-
-    disabled = isPy3k || isPyPy;
-
-    propagatedBuildInputs = with self; [ vobject lxml requests urwid pyxdg ];
-
-    meta = {
-      description = "Command-line interface carddav client";
-      homepage = http://lostpackets.de/pycarddav;
-      license = licenses.mit;
-      maintainers = with maintainers; [ ];
-    };
-  };
+  pycarddav = callPackage ../development/python-modules/pycarddav { };
 
   pygit2 = callPackage ../development/python-modules/pygit2 { };
 
@@ -3966,336 +3291,45 @@ in {
 
   pybfd = callPackage ../development/python-modules/pybfd { };
 
-  pyblock = stdenv.mkDerivation rec {
-    name = "pyblock-${version}";
-    version = "0.53";
-    md5_path = "f6d33a8362dee358517d0a9e2ebdd044";
+  pyblock = callPackage ../development/python-modules/pyblock { };
 
-    src = pkgs.fetchurl rec {
-      url = "http://src.fedoraproject.org/repo/pkgs/python-pyblock/"
-          + "${name}.tar.bz2/${md5_path}/${name}.tar.bz2";
-      sha256 = "f6cef88969300a6564498557eeea1d8da58acceae238077852ff261a2cb1d815";
-    };
+  pybcrypt = callPackage ../development/python-modules/pybcrypt { };
 
-    postPatch = ''
-      sed -i -e 's|/usr/include/python|${python}/include/python|' \
-             -e 's/-Werror *//' -e 's|/usr/|'"$out"'/|' Makefile
-    '';
-
-    buildInputs = with self; [ python pkgs.lvm2 pkgs.dmraid ];
-
-    makeFlags = [
-      "USESELINUX=0"
-      "SITELIB=$(out)/${python.sitePackages}"
-    ];
-
-    meta = {
-      description = "Interface for working with block devices";
-      license = licenses.gpl2Plus;
-      broken = isPy3k; # doesn't build on python 3, 2018-04-11
-    };
-  };
+  pyblosxom = callPackage ../development/python-modules/pyblosxom { };
 
-  pybcrypt = buildPythonPackage rec {
-    pname = "pybcrypt";
-    version = "0.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/py-bcrypt/py-bcrypt-${version}.tar.gz";
-      sha256 = "5fa13bce551468350d66c4883694850570f3da28d6866bb638ba44fe5eabda78";
-    };
-
-    meta = {
-      description = "bcrypt password hashing and key derivation";
-      homepage = https://code.google.com/p/py-bcrypt2;
-      license = "BSD";
-    };
-  };
-
-  pyblosxom = buildPythonPackage rec {
-    name = "pyblosxom-${version}";
-    disabled = isPy3k;
-    version = "1.5.3";
-    # FAIL:test_generate_entry and test_time
-    # both tests fail due to time issue that doesn't seem to matter in practice
-    doCheck = false;
-    src = pkgs.fetchurl {
-      url = "https://github.com/pyblosxom/pyblosxom/archive/v${version}.tar.gz";
-      sha256 = "0de9a7418f4e6d1c45acecf1e77f61c8f96f036ce034493ac67124626fd0d885";
-    };
-
-    propagatedBuildInputs = with self; [ pygments markdown ];
-
-    meta = {
-      homepage = "http://pyblosxom.github.io";
-      description = "File-based blogging engine";
-      license = licenses.mit;
-    };
-  };
-
-
-  pycapnp = buildPythonPackage rec {
-    name = "pycapnp-0.5.1";
-    disabled = isPyPy || isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pycapnp/${name}.tar.gz";
-      sha256 = "1kp97il34419gcrhn866n6a10lvh8qr13bnllnnh9473n4cq0cvk";
-    };
-
-    buildInputs = with pkgs; [ capnproto self.cython ];
-
-    # import setuptools as soon as possible, to minimize monkeypatching mayhem.
-    postConfigure = ''
-      sed -i '3iimport setuptools' setup.py
-    '';
-
-    meta = {
-      maintainers = with maintainers; [ cstrahan ];
-      license = licenses.bsd2;
-      platforms = platforms.all;
-      homepage = "http://jparyani.github.io/pycapnp/index.html";
-      broken = true; # 2018-04-11
-    };
-  };
+  pycapnp = callPackage ../development/python-modules/pycapnp { };
 
   pycaption = callPackage ../development/python-modules/pycaption { };
 
-  pycdio = buildPythonPackage rec {
-    name = "pycdio-2.0.0";
-    disabled = !isPy27;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pycdio/${name}.tar.gz";
-      sha256 = "1a1h0lmfl56a2a9xqhacnjclv81nv3906vdylalybxrk4bhrm3hj";
-    };
-
-    prePatch = "sed -i -e '/DRIVER_BSDI/d' pycdio.py";
-
-    preConfigure = ''
-      patchShebangs .
-    '';
-
-    nativeBuildInputs = [ pkgs.pkgconfig ];
-    buildInputs = [ self.setuptools self.nose pkgs.swig pkgs.libcdio ]
-      ++ stdenv.lib.optional stdenv.isDarwin pkgs.libiconv;
-
-    # Run tests using nosetests but first need to install the binaries
-    # to the root source directory where they can be found.
-    checkPhase = ''
-      ./setup.py install_lib -d .
-      nosetests
-    '';
-
-    meta = {
-      homepage = http://www.gnu.org/software/libcdio/;
-      description = "Wrapper around libcdio (CD Input and Control library)";
-      maintainers = with maintainers; [ rycee ];
-      license = licenses.gpl3Plus;
-    };
-  };
+  pycdio = callPackage ../development/python-modules/pycdio { };
 
   pycosat = callPackage ../development/python-modules/pycosat { };
 
-  pycryptopp = buildPythonPackage (rec {
-    name = "pycryptopp-0.6.0.1206569328141510525648634803928199668821045408958";
-    disabled = isPy3k || isPyPy;  # see https://bitbucket.org/pypy/pypy/issue/1190/
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pycryptopp/${name}.tar.gz";
-      sha256 = "0n90h1yg7bfvlbhnc54xb6dbqm286ykaksyg04kxlhyjgf8mhq8i";
-    };
-
-    # Prefer crypto++ library from the Nix store over the one that's included
-    # in the pycryptopp distribution.
-    preConfigure = "export PYCRYPTOPP_DISABLE_EMBEDDED_CRYPTOPP=1";
-
-    buildInputs = with self; [ setuptoolsDarcs darcsver pkgs.cryptopp ];
-
-    meta = {
-      homepage = http://allmydata.org/trac/pycryptopp;
-
-      description = "Python wrappers for the Crypto++ library";
-
-      license = licenses.gpl2Plus;
-
-      maintainers = [ ];
-      platforms = platforms.linux;
-    };
-  });
+  pycryptopp = callPackage ../development/python-modules/pycryptopp { };
 
   pycups = callPackage ../development/python-modules/pycups { };
 
   pycurl = callPackage ../development/python-modules/pycurl { };
 
-  pycurl2 = buildPythonPackage (rec {
-    name = "pycurl2-7.20.0";
-    disabled = isPy3k;
-
-    src = pkgs.fetchgit {
-      url = "https://github.com/Lispython/pycurl.git";
-      rev = "0f00109950b883d680bd85dc6e8a9c731a7d0d13";
-      sha256 = "1qmw3cm93kxj94s71a8db9lwv2cxmr2wjv7kp1r8zildwdzhaw7j";
-    };
-
-    # error: (6, "Couldn't resolve host 'h.wrttn.me'")
-    doCheck = false;
-
-    buildInputs = with self; [ pkgs.curl simplejson unittest2 nose ];
+  pycurl2 = callPackage ../development/python-modules/pycurl2 { };
 
-    meta = {
-      homepage = https://pypi.python.org/pypi/pycurl2;
-      description = "A fork from original PycURL library that no maintained from 7.19.0";
-      platforms = platforms.linux;
-    };
-  });
-
-  pydispatcher = buildPythonPackage (rec {
-    version = "2.0.5";
-    name = "pydispatcher-${version}";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyDispatcher/PyDispatcher-${version}.tar.gz";
-      sha256 = "1bswbmhlbqdxlgbxlb6xrlm4k253sg8nvpl1whgsys8p3fg0cw2m";
-    };
-
-    buildInputs = with self; [ pytest ];
-
-    checkPhase = ''
-      py.test
-    '';
-
-    meta = {
-      homepage = http://pydispatcher.sourceforge.net/;
-      description = "Signal-registration and routing infrastructure for use in multiple contexts";
-      license = licenses.bsd3;
-    };
-   });
+  pydispatcher = callPackage ../development/python-modules/pydispatcher { };
 
   pydot = callPackage ../development/python-modules/pydot { };
 
-  pydot_ng = buildPythonPackage rec {
-    name = "pydot_ng-1.0.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pydot-ng/${name}.tar.gz";
-      sha256 = "0h8k8wlzvnb40v4js7afgfyhp3wasmb1kg4gr6z7ck63iv8fq864";
-    };
-
-    buildInputs = [ self.pytest self.unittest2 ];
-    propagatedBuildInputs = [ pkgs.graphviz self.pyparsing ];
+  pydot_ng = callPackage ../development/python-modules/pydot_ng { };
 
-    checkPhase = ''
-      mkdir test/my_tests
-      py.test test
-    '';
+  pyelftools = callPackage ../development/python-modules/pyelftools { };
 
-    meta = {
-      homepage = "https://pypi.python.org/pypi/pydot-ng";
-      description = "Python 3-compatible update of pydot, a Python interface to Graphviz's Dot";
-      license = licenses.mit;
-      maintainers = [ maintainers.bcdarwin ];
-    };
-  };
-
-  pyelftools = buildPythonPackage rec {
-    pname = "pyelftools";
-    version = "0.24";
-    name = "${pname}-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/${pname}/${name}.tar.gz";
-      sha256 = "17259kf6hwwsmizr5myp9jv3k9g5i3dvmnl8m646pfd5hpb9gpg9";
-    };
-
-    checkPhase = ''
-      ${python.interpreter} test/all_tests.py
-    '';
-    # Tests cannot pass against system-wide readelf
-    # https://github.com/eliben/pyelftools/issues/65
-    doCheck = false;
-
-    meta = {
-      description = "A library for analyzing ELF files and DWARF debugging information";
-      homepage = https://github.com/eliben/pyelftools;
-      license = licenses.publicDomain;
-      platforms = platforms.all;
-      maintainers = [ maintainers.igsha ];
-    };
-  };
-
-  pyenchant = buildPythonPackage rec {
-    name = "pyenchant-1.6.6";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyenchant/pyenchant-1.6.6.tar.gz";
-      sha256 = "25c9d2667d512f8fc4410465fdd2e868377ca07eb3d56e2b6e534a86281d64d3";
-    };
-
-    propagatedBuildInputs = [ pkgs.enchant ];
-
-    patchPhase = let
-      path_hack_script = "s|LoadLibrary(e_path)|LoadLibrary('${pkgs.enchant}/lib/' + e_path)|";
-    in ''
-      sed -i "${path_hack_script}" enchant/_enchant.py
-
-      # They hardcode a bad path for Darwin in their library search code
-      substituteInPlace enchant/_enchant.py --replace '/opt/local/lib/' ""
-    '';
-
-    # dictionaries needed for tests
-    doCheck = false;
-
-    meta = {
-      description = "pyenchant: Python bindings for the Enchant spellchecker";
-      homepage = https://pythonhosted.org/pyenchant/;
-      license = licenses.lgpl21;
-    };
-  };
+  pyenchant = callPackage ../development/python-modules/pyenchant { };
 
   pyev = callPackage ../development/python-modules/pyev { };
 
-  pyexcelerator = buildPythonPackage rec {
-    name = "pyexcelerator-${version}";
-    version = "0.6.4.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyexcelerator/${name}.tar.bz2";
-      sha256 = "18rcnc9f71lj06h8nppnv6idzb7xfmh2rp1zfqayskcg686lilrb";
-    };
-
-    disabled = isPy3k;
-
-    # No tests are included in archive
-    doCheck = false;
-
-    meta = {
-      description = "library for generating Excel 97/2000/XP/2003 and OpenOffice Calc compatible spreadsheets.";
-      homepage = "https://sourceforge.net/projects/pyexcelerator";
-      license = licenses.bsdOriginal;
-      maintainers = with maintainers; [ womfoo ];
-    };
-  };
+  pyexcelerator = callPackage ../development/python-modules/pyexcelerator { };
 
   pyext = callPackage ../development/python-modules/pyext { };
 
-  pyfantom = buildPythonPackage rec {
-     name = "pyfantom-${version}";
-     version = "unstable-2013-12-18";
-
-     src = pkgs.fetchgit {
-       url = "http://git.ni.fr.eu.org/pyfantom.git";
-       sha256 = "1m53n8bxslq5zmvcf7i1xzsgq5bdsf1z529br5ypmj5bg0s86j4q";
-     };
-
-     # No tests included
-     doCheck = false;
-
-     meta = {
-       homepage = http://pyfantom.ni.fr.eu.org/;
-       description = "Wrapper for the LEGO Mindstorms Fantom Driver";
-       license = licenses.gpl2;
-     };
-   };
+  pyfantom = callPackage ../development/python-modules/pyfantom { };
 
   pyfftw = callPackage ../development/python-modules/pyfftw { };
 
@@ -4340,273 +3374,25 @@ in {
 
   pyspread = callPackage ../development/python-modules/pyspread { };
 
-  pyx = buildPythonPackage rec {
-    name = "pyx-${version}";
-    version = "0.14.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyX/PyX-${version}.tar.gz";
-      sha256 = "05d1b7fc813379d2c12fcb5bd0195cab522b5aabafac88f72913f1d47becd912";
-    };
-
-    disabled = !isPy3k;
-
-    # No tests in archive
-    doCheck = false;
-
-    meta = {
-      description = "Python package for the generation of PostScript, PDF, and SVG files";
-      homepage = http://pyx.sourceforge.net/;
-      license = with licenses; [ gpl2 ];
-    };
-  };
-
-  mmpython = buildPythonPackage rec {
-    version = "0.4.10";
-    name = "mmpython-${version}";
-
-    src = pkgs.fetchurl {
-      url = http://sourceforge.net/projects/mmpython/files/latest/download;
-      sha256 = "1b7qfad3shgakj37gcj1b9h78j1hxlz6wp9k7h76pb4sq4bfyihy";
-      name = "${name}.tar.gz";
-    };
-
-    disabled = isPyPy || isPy3k;
-
-    meta = {
-      description = "Media Meta Data retrieval framework";
-      homepage = https://sourceforge.net/projects/mmpython/;
-      license = licenses.gpl2;
-      maintainers = with maintainers; [ ];
-    };
-  };
-
-  kaa-base = buildPythonPackage rec {
-    version = "0.99.2dev-384-2b73caca";
-    name = "kaa-base-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/k/kaa-base/kaa-base-0.99.2dev-384-2b73caca.tar.gz";
-      sha256 = "0k3zzz84wzz9q1fl3vvqr2ys96z9pcf4viq9q6s2a63zaysmcfd2";
-    };
-
-    doCheck = false;
-
-    disabled = isPyPy || isPy3k;
-
-    # Same as in buildPythonPackage except that it does not pass --old-and-unmanageable
-    installPhase = ''
-      runHook preInstall
-
-      mkdir -p "$out/lib/${python.libPrefix}/site-packages"
-
-      export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
-
-      ${python}/bin/${python.executable} setup.py install \
-        --install-lib=$out/lib/${python.libPrefix}/site-packages \
-        --prefix="$out"
-
-      eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth
-      if [ -e "$eapth" ]; then
-          mv "$eapth" $(dirname "$eapth")/${name}.pth
-      fi
+  pyx = callPackage ../development/python-modules/pyx { };
 
-      rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+  mmpython = callPackage ../development/python-modules/mmpython { };
 
-      runHook postInstall
-    '';
-
-    meta = {
-      description = "Generic application framework, providing the foundation for other modules";
-      homepage = https://github.com/freevo/kaa-base;
-      license = licenses.lgpl21;
-      maintainers = with maintainers; [ ];
-    };
-  };
-
-  kaa-metadata = buildPythonPackage rec {
-    version = "0.7.8dev-r4569-20111003";
-    name = "kaa-metadata-${version}";
-
-    doCheck = false;
-
-    buildInputs = [ pkgs.libdvdread ];
-
-    disabled = isPyPy || isPy3k;
-
-    # Same as in buildPythonPackage except that it does not pass --old-and-unmanageable
-    installPhase = ''
-      runHook preInstall
-
-      mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+  kaa-base = callPackage ../development/python-modules/kaa-base { };
 
-      export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+  kaa-metadata = callPackage ../development/python-modules/kaa-metadata { };
 
-      ${python}/bin/${python.executable} setup.py install \
-        --install-lib=$out/lib/${python.libPrefix}/site-packages \
-        --prefix="$out"
+  PyICU = callPackage ../development/python-modules/pyicu { };
 
-      eapth="$out/lib/${python.libPrefix}"/site-packages/easy-install.pth
-      if [ -e "$eapth" ]; then
-          mv "$eapth" $(dirname "$eapth")/${name}.pth
-      fi
+  pyinputevent = callPackage ../development/python-modules/pyinputevent { };
 
-      rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+  pyinotify = callPackage ../development/python-modules/pyinotify { };
 
-      runHook postInstall
-    '';
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/k/kaa-metadata/kaa-metadata-0.7.8dev-r4569-20111003.tar.gz";
-      sha256 = "0bkbzfgxvmby8lvzkqjp86anxvv3vjd9nksv2g4l7shsk1n7y27a";
-    };
-
-    propagatedBuildInputs = with self; [ kaa-base ];
-
-    meta = {
-      description = "Python library for parsing media metadata, which can extract metadata (e.g., such as id3 tags) from a wide range of media files";
-      homepage = https://github.com/freevo/kaa-metadata;
-      license = licenses.gpl2;
-      maintainers = with maintainers; [ ];
-    };
-  };
-
-  owslib = callPackage ../development/python-modules/owslib { };
-
-  PyICU = buildPythonPackage rec {
-    name = "PyICU-2.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyICU/${name}.tar.gz";
-      sha256 = "0wq9y5fi1ighgf5aws9nr87vi1w44p7q1k83rx2y3qj5d2xyhspa";
-    };
-
-    patches = [
-      (pkgs.fetchpatch {
-        url = https://sources.debian.org/data/main/p/pyicu/2.2-1/debian/patches/icu_test.patch;
-        sha256 = "1iavdkyqixm9i753svl17barla93b7jzgkw09dn3hnggamx7zwx9";
-      })
-    ];
-
-    buildInputs = [ pkgs.icu60 self.pytest ];
-
-    propagatedBuildInputs = [ self.six ];
-
-    meta = {
-      homepage = https://pypi.python.org/pypi/PyICU/;
-      description = "Python extension wrapping the ICU C++ API";
-      license = licenses.mit;
-      platforms = platforms.linux; # Maybe other non-darwin Unix
-      maintainers = [ maintainers.rycee ];
-    };
-  };
-
-  pyinputevent = buildPythonPackage rec {
-    name = "pyinputevent-2016-10-18";
-
-    src = pkgs.fetchFromGitHub {
-      owner = "ntzrmtthihu777";
-      repo = "pyinputevent";
-      rev = "d2075fa5db5d8a402735fe788bb33cf9fe272a5b";
-      sha256 = "0rkis0xp8f9jc00x7jb9kbvhdla24z1vl30djqa6wy6fx0cr6sib";
-    };
-
-    meta = {
-      homepage = "https://github.com/ntzrmtthihu777/pyinputevent";
-      description = "Python interface to the Input Subsystem's input_event and uinput";
-      license = licenses.bsd3;
-      platforms = platforms.linux;
-    };
-  };
-
-  pyinotify = buildPythonPackage rec {
-    name = "pyinotify-${version}";
-    version = "0.9.6";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/${name}/${name}.tar.gz";
-      sha256 = "1x3i9wmzw33fpkis203alygfnrkcmq9w1aydcm887jh6frfqm6cw";
-    };
-
-    # No tests distributed
-    doCheck = false;
-
-    meta = {
-      homepage = https://github.com/seb-m/pyinotify/wiki;
-      description = "Monitor filesystems events on Linux platforms with inotify";
-      license = licenses.mit;
-      platforms = platforms.linux;
-    };
-  };
-
-  pyinsane2 = buildPythonPackage rec {
-    name = "pyinsane2-${version}";
-    version = "2.0.10";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyinsane2/${name}.tar.gz";
-      sha256 = "00d1wqb3w9bn1rxb2dwmdqbar2lr96izq855l5vzprc17dkgip3j";
-    };
-
-    postPatch = ''
-      # pyinsane2 forks itself, so we need to re-inject the PYTHONPATH.
-      sed -i -e '/os.putenv.*PYINSANE_DAEMON/ {
-        a \        os.putenv("PYTHONPATH", ":".join(sys.path))
-      }' pyinsane2/sane/abstract_proc.py
-
-      sed -i -e 's,"libsane.so.1","${pkgs.sane-backends}/lib/libsane.so",' \
-        pyinsane2/sane/rawapi.py
-    '';
-
-    # Tests require a scanner to be physically connected, so let's just do a
-    # quick check whether initialization works.
-    checkPhase = ''
-      python -c 'import pyinsane2; pyinsane2.init()'
-    '';
-
-    # This is needed by setup.py regardless of whether tests are enabled.
-    buildInputs = [ self.nose ];
-
-    propagatedBuildInputs = [ self.pillow ];
-
-    meta = {
-      homepage = "https://github.com/jflesch/pyinsane";
-      description = "Access and use image scanners";
-      license = licenses.gpl3Plus;
-      platforms = platforms.linux;
-    };
-  };
+  pyinsane2 = callPackage ../development/python-modules/pyinsane2 { };
 
   pyjwt = callPackage ../development/python-modules/pyjwt { };
 
-  pykickstart = buildPythonPackage rec {
-    name = "pykickstart-${version}";
-    version = "1.99.39";
-    md5_path = "d249f60aa89b1b4facd63f776925116d";
-
-    src = pkgs.fetchurl rec {
-      url = "http://src.fedoraproject.org/repo/pkgs/pykickstart/"
-          + "${name}.tar.gz/${md5_path}/${name}.tar.gz";
-      sha256 = "e0d0f98ac4c5607e6a48d5c1fba2d50cc804de1081043f9da68cbfc69cad957a";
-    };
-
-    postPatch = ''
-      sed -i -e "s/for tst in tstList/for tst in sorted(tstList, \
-                 key=lambda m: m.__name__)/" tests/baseclass.py
-    '';
-
-    propagatedBuildInputs = with self; [ urlgrabber ];
-
-    checkPhase = ''
-      ${python.interpreter} tests/baseclass.py -vv
-    '';
-
-    meta = {
-      homepage = "http://fedoraproject.org/wiki/Pykickstart";
-      description = "Read and write Fedora kickstart files";
-      license = licenses.gpl2Plus;
-    };
-  };
+  pykickstart = callPackage ../development/python-modules/pykickstart { };
 
   pyobjc = if stdenv.isDarwin
     then callPackage ../development/python-modules/pyobjc {}
@@ -4618,227 +3404,33 @@ in {
 
   pyparsing = callPackage ../development/python-modules/pyparsing { };
 
-  pyparted = buildPythonPackage rec {
-    name = "pyparted-${version}";
-    version = "3.10.7";
-    disabled = isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "https://github.com/rhinstaller/pyparted/archive/v${version}.tar.gz";
-      sha256 = "0c9ljrdggwawd8wdzqqqzrna9prrlpj6xs59b0vkxzip0jkf652r";
-    };
-
-    postPatch = ''
-      sed -i -e 's|mke2fs|${pkgs.e2fsprogs}/bin/mke2fs|' tests/baseclass.py
-      sed -i -e '
-        s|e\.path\.startswith("/tmp/temp-device-")|"temp-device-" in e.path|
-      ' tests/test__ped_ped.py
-    '' + optionalString stdenv.isi686 ''
-      # remove some integers in this test case which overflow on 32bit systems
-      sed -i -r -e '/class *UnitGetSizeTestCase/,/^$/{/[0-9]{11}/d}' \
-        tests/test__ped_ped.py
-    '';
-
-    preConfigure = ''
-      PATH="${pkgs.parted}/sbin:$PATH"
-    '';
-
-    nativeBuildInputs = [ pkgs.pkgconfig ];
+  pyparted = callPackage ../development/python-modules/pyparted { };
 
-    propagatedBuildInputs = with self; [ pkgs.parted ];
+  pyptlib = callPackage ../development/python-modules/pyptlib { };
 
-    checkPhase = ''
-      patchShebangs Makefile
-      make test PYTHON=${python.executable}
-    '';
-
-    meta = {
-      homepage = "https://fedorahosted.org/pyparted/";
-      description = "Python interface for libparted";
-      license = licenses.gpl2Plus;
-      platforms = platforms.linux;
-    };
-  };
-
-
-  pyptlib = buildPythonPackage (rec {
-    name = "pyptlib-${version}";
-    disabled = isPyPy || isPy3k;
-    version = "0.0.6";
-
-    doCheck = false;  # No such file or directory errors on 32bit
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyptlib/pyptlib-${version}.tar.gz";
-      sha256 = "01y6vbwncqb0hxlnin6whd9wrrm5my4qzjhk76fnix78v7ip515r";
-    };
-    meta = {
-      description = "A python implementation of the Pluggable Transports for Circumvention specification for Tor";
-      license = licenses.bsd2;
-    };
-  });
-
-  pyqtgraph = buildPythonPackage rec {
-    name = "pyqtgraph-${version}";
-    version = "0.9.10";
-
-    doCheck = false;  # "PyQtGraph requires either PyQt4 or PySide; neither package could be imported."
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyqtgraph/${name}.tar.gz";
-      sha256 = "188pcxf3sxxjf0aipjn820lx2rf9f42zzp0sibmcl90955a3ipf1";
-    };
-
-    propagatedBuildInputs = with self; [ scipy numpy pyqt4 pyopengl ];
-
-    meta = {
-      description = "Scientific Graphics and GUI Library for Python";
-      homepage = http://www.pyqtgraph.org/;
-      license = licenses.mit;
-      platforms = platforms.unix;
-      maintainers = with maintainers; [ koral ];
-    };
-  };
+  pyqtgraph = callPackage ../development/python-modules/pyqtgraph { };
 
   PyStemmer = callPackage ../development/python-modules/pystemmer {};
 
-  serpent = callPackage ../development/python-modules/serpent { };
-
-  selectors34 = callPackage ../development/python-modules/selectors34 { };
+  # Missing expression?
+  # Pyro = callPackage ../development/python-modules/pyro { };
 
-  Pyro4 = callPackage ../development/python-modules/pyro4 { };
+  pyrsistent = callPackage ../development/python-modules/pyrsistent { };
 
-  pyrsistent = buildPythonPackage (rec {
-    name = "pyrsistent-0.11.12";
+  PyRSS2Gen = callPackage ../development/python-modules/pyrss2gen { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyrsistent/${name}.tar.gz";
-      sha256 = "0jgyhkkq36wn36rymn4jiyqh2vdslmradq4a2mjkxfbk2cz6wpi5";
-    };
+  pysmi = callPackage ../development/python-modules/pysmi { };
 
-    propagatedBuildInputs = with self; [ six ];
-    buildInputs = with self; [ pytest hypothesis ];
-
-    checkPhase = ''
-      py.test
-    '';
-
-    meta = {
-      homepage = https://github.com/tobgu/pyrsistent/;
-      description = "Persistent/Functional/Immutable data structures";
-      license = licenses.mit;
-      maintainers = with maintainers; [ desiderius ];
-    };
-  });
-
-  PyRSS2Gen = buildPythonPackage (rec {
-    pname = "PyRSS2Gen";
-    version = "1.1";
-    name = "${pname}-${version}";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "1rvf5jw9hknqz02rp1vg8abgb1lpa0bc65l7ylmlillqx7bswq3r";
-    };
-
-    # No tests in archive
-    doCheck = false;
-
-    meta = {
-      homepage = http://www.dalkescientific.om/Python/PyRSS2Gen.html;
-      description = "Library for generating RSS 2.0 feeds";
-      license = licenses.bsd2;
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  });
-
-  pysmi = buildPythonPackage rec {
-    version = "0.0.7";
-    name = "pysmi-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pysmi/${name}.tar.gz";
-      sha256 = "05h1lv2a687b9qjc399w6728ildx7majbn338a0c4k3gw6wnv7wr";
-    };
-
-    # Tests require pysnmp, which in turn requires pysmi => infinite recursion
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ ply ];
-
-    meta = {
-      homepage = http://pysmi.sf.net;
-      description = "SNMP SMI/MIB Parser";
-      license = licenses.bsd2;
-      platforms = platforms.all;
-      maintainers = with maintainers; [ koral ];
-    };
-  };
-
-  pysnmp = buildPythonPackage rec {
-    version = "4.3.2";
-    name = "pysnmp-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pysnmp/${name}.tar.gz";
-      sha256 = "0xw925f3p02vdpb3f0ls60qj59w44aiyfs3s0nhdr9vsy4fxhavw";
-    };
-
-    # NameError: name 'mibBuilder' is not defined
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ pyasn1 pycrypto pysmi ];
-
-    meta = {
-      homepage = http://pysnmp.sf.net;
-      description = "A pure-Python SNMPv1/v2c/v3 library";
-      license = licenses.bsd2;
-      platforms = platforms.all;
-      maintainers = with maintainers; [ koral ];
-    };
-  };
+  pysnmp = callPackage ../development/python-modules/pysnmp { };
 
-  pysocks = buildPythonPackage rec {
-    name = "pysocks-${version}";
-    version = "1.6.6";
-
-    src = pkgs.fetchurl {
-      url    = "mirror://pypi/P/PySocks/PySocks-${version}.tar.gz";
-      sha256 = "0h9zwr8z9j6l313ns335irjrkk6qnk4qzvwmjqygrp7mbwi9lh82";
-    };
-
-    doCheck = false;
-
-    meta = {
-      description = "SOCKS module for Python";
-      license     = licenses.bsd3;
-      maintainers = with maintainers; [ thoughtpolice ];
-    };
-  };
+  pysocks = callPackage ../development/python-modules/pysocks { };
 
   python_fedora = callPackage ../development/python-modules/python_fedora {};
 
   python-simple-hipchat = callPackage ../development/python-modules/python-simple-hipchat {};
   python_simple_hipchat = self.python-simple-hipchat;
 
-  python_keyczar = buildPythonPackage rec {
-    name = "python-keyczar-0.71c";
-
-    src = pkgs.fetchurl {
-      url    = "mirror://pypi/p/python-keyczar/${name}.tar.gz";
-      sha256 = "18mhiwqq6vp65ykmi8x3i5l3gvrvrrr8z2kv11z1rpixmyr7sw1p";
-    };
-
-    meta = {
-      description = "Toolkit for safe and simple cryptography";
-      homepage    = https://pypi.python.org/pypi/python-keyczar;
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ lovek323 ];
-      platforms   = platforms.unix;
-    };
-
-    buildInputs = with self; [ pyasn1 pycrypto ];
-  };
+  python_keyczar = callPackage ../development/python-modules/python_keyczar { };
 
   python-language-server = callPackage ../development/python-modules/python-language-server {};
 
@@ -4856,47 +3448,9 @@ in {
 
   pynmea2 = callPackage ../development/python-modules/pynmea2 {};
 
-  pynzb = buildPythonPackage (rec {
-    name = "pynzb-0.1.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pynzb/${name}.tar.gz";
-      sha256 = "0735b3889a1174bbb65418ee503629d3f5e4a63f04b16f46ffba18253ec3ef17";
-    };
+  pynzb = callPackage ../development/python-modules/pynzb { };
 
-    # Can't get them working
-    doCheck = false;
-    checkPhase = ''
-      ${python.interpreter} -m unittest -s pynzb -t .
-    '';
-
-    meta = {
-      homepage = https://github.com/ericflo/pynzb;
-      description = "Unified API for parsing NZB files";
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  });
-
-  process-tests = buildPythonPackage rec {
-    pname = "process-tests";
-    name = "${pname}-${version}";
-    version = "1.2.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/${pname}/${name}.tar.gz";
-      sha256 = "65c9d7a0260f31c15b4a22a851757e61f7072d0557db5f8a976112fbe81ff7e9";
-    };
-
-    # No tests
-    doCheck = false;
-
-    meta = {
-      description = "Tools for testing processes";
-      license = licenses.bsd2;
-      homepage = https://github.com/ionelmc/python-process-tests;
-    };
-  };
+  process-tests = callPackage ../development/python-modules/process-tests { };
 
   progressbar = callPackage ../development/python-modules/progressbar {};
 
@@ -4912,22 +3466,7 @@ in {
 
   ldap3 = callPackage ../development/python-modules/ldap3 {};
 
-  ptest = buildPythonPackage rec {
-    name = pname + "-" + version;
-    pname = "ptest";
-    version =  "1.5.3";
-    src = pkgs.fetchFromGitHub {
-      owner = "KarlGong";
-      repo = pname;
-      rev = version + "-release";
-      sha256 = "1r50lm6n59jzdwpp53n0c0hp3aj1jxn304bk5gh830226gsaf2hn";
-    };
-    meta = {
-      description = "Test classes and test cases using decorators, execute test cases by command line, and get clear reports";
-      homepage = https://pypi.python.org/pypi/ptest;
-      license = licenses.asl20;
-    };
-  };
+  ptest = callPackage ../development/python-modules/ptest { };
 
   ptyprocess = callPackage ../development/python-modules/ptyprocess { };
 
@@ -4935,422 +3474,51 @@ in {
 
   pylibgen = callPackage ../development/python-modules/pylibgen { };
 
-  pyliblo = buildPythonPackage rec {
-    name = "pyliblo-${version}";
-    version = "0.9.2";
-
-    disabled = isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "http://das.nasophon.de/download/${name}.tar.gz";
-      sha256 = "382ee7360aa00aeebf1b955eef65f8491366657a626254574c647521b36e0eb0";
-    };
-
-    propagatedBuildInputs = with self ; [ pkgs.liblo ];
-
-    meta = {
-      homepage = http://das.nasophon.de/pyliblo/;
-      description = "Python wrapper for the liblo OSC library";
-      license = licenses.lgpl21;
-    };
-  };
+  pyliblo = callPackage ../development/python-modules/pyliblo { };
 
   pypcap = callPackage ../development/python-modules/pypcap {};
 
-  pyplatec = buildPythonPackage rec {
-    name = "PyPlatec-${version}";
-    version = "1.4.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyPlatec/${name}.tar.gz";
-      sha256 = "0kqx33flcrrlipccmqs78d14pj5749bp85b6k5fgaq2c7yzz02jg";
-    };
-
-    meta = {
-      description = "Library to simulate plate tectonics with Python bindings";
-      homepage    = https://github.com/Mindwerks/plate-tectonics;
-      license     = licenses.lgpl3;
-    };
-  };
-
-  purepng = buildPythonPackage rec {
-    name = "purepng-${version}";
-    version = "0.2.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/purepng/${name}.tar.gz";
-      sha256 = "1kcl7a6d7d59360fbz2jwfk6ha6pmqgn396962p4s62j893d2r0d";
-    };
-
-    meta = {
-      description = "Pure Python library for PNG image encoding/decoding";
-      homepage    = https://github.com/scondo/purepng;
-      license     = licenses.mit;
-    };
-  };
-
-  pymaging = buildPythonPackage rec {
-    name = "pymaging-unstable-2016-11-16";
-
-    src = pkgs.fetchFromGitHub {
-      owner = "ojii";
-      repo = "pymaging";
-      rev = "596a08fce5664e58d6e8c96847393fbe987783f2";
-      sha256 = "18g3n7kfrark30l4vzykh0gdbnfv5wb1zvvjbs17sj6yampypn38";
-    };
-
-    meta = {
-      description = "Pure Python imaging library with Python 2.6, 2.7, 3.1+ support";
-      homepage    = http://pymaging.rtfd.org;
-      license     = licenses.mit;
-      maintainers = with maintainers; [ mic92 ];
-    };
-  };
-
-  pymaging_png = buildPythonPackage rec {
-    name = "pymaging-png-unstable-2016-11-16";
-
-    src = pkgs.fetchFromGitHub {
-      owner = "ojii";
-      repo = "pymaging-png";
-      rev = "83d85c44e4b2342818e6c068065e031a9f81bb9f";
-      sha256 = "1mknxvsq0lr1ffm8amzm3w2prn043c6ghqgpxlkw83r988p5fn57";
-    };
-
-    propagatedBuildInputs = with self; [ pymaging ];
-
-    meta = {
-      description = "Pure Python imaging library with Python 2.6, 2.7, 3.1+ support";
-      homepage    = https://github.com/ojii/pymaging-png/;
-      license     = licenses.mit;
-      maintainers = with maintainers; [ mic92 ];
-    };
-  };
-
-  pyPdf = buildPythonPackage rec {
-    name = "pyPdf-1.13";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyPdf/${name}.tar.gz";
-      sha256 = "3aede4c3c9c6ad07c98f059f90db0b09ed383f7c791c46100f649e1cabda0e3b";
-    };
-
-    buildInputs = with self; [ ];
-
-    # Not supported. Package is no longer maintained.
-    disabled = isPy3k;
-
-    meta = {
-      description = "Pure-Python PDF toolkit";
-      homepage = "http://pybrary.net/pyPdf/";
-      license = licenses.bsd3;
-    };
-  };
-
-  pypdf2 = buildPythonPackage rec {
-    name = "PyPDF2-${version}";
-    version = "1.26.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyPDF2/${name}.tar.gz";
-      sha256 = "11a3aqljg4sawjijkvzhs3irpw0y67zivqpbjpm065ha5wpr13z2";
-    };
-
-    LC_ALL = "en_US.UTF-8";
-    buildInputs = [ pkgs.glibcLocales ];
+  pyplatec = callPackage ../development/python-modules/pyplatec { };
 
-    checkPhase = ''
-      ${python.interpreter} -m unittest discover -s Tests
-    '';
+  purepng = callPackage ../development/python-modules/purepng { };
 
-    # Tests broken on Python 3.x
-    doCheck = !(isPy3k);
+  pymaging = callPackage ../development/python-modules/pymaging { };
 
-    meta = {
-      description = "A Pure-Python library built as a PDF toolkit";
-      homepage = "http://mstamy2.github.com/PyPDF2/";
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ desiderius vrthra ];
-    };
-  };
+  pymaging_png = callPackage ../development/python-modules/pymaging_png { };
 
-  pyopengl = buildPythonPackage rec {
-    name = "pyopengl-${version}";
-    version = "3.1.0";
+  pyPdf = callPackage ../development/python-modules/pypdf { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/P/PyOpenGL/PyOpenGL-${version}.tar.gz";
-      sha256 = "9b47c5c3a094fa518ca88aeed35ae75834d53e4285512c61879f67a48c94ddaf";
-    };
-    propagatedBuildInputs = [ pkgs.libGLU_combined pkgs.freeglut self.pillow ];
-    patchPhase = let
-      ext = stdenv.hostPlatform.extensions.sharedLibrary; in ''
-      substituteInPlace OpenGL/platform/glx.py \
-        --replace "'GL'" "'${pkgs.libGL}/lib/libGL${ext}'" \
-        --replace "'GLU'" "'${pkgs.libGLU}/lib/libGLU${ext}'" \
-        --replace "'glut'" "'${pkgs.freeglut}/lib/libglut${ext}'"
-      substituteInPlace OpenGL/platform/darwin.py \
-        --replace "'OpenGL'" "'${pkgs.libGL}/lib/libGL${ext}'" \
-        --replace "'GLUT'" "'${pkgs.freeglut}/lib/libglut${ext}'"
-    '';
-    meta = {
-      homepage = http://pyopengl.sourceforge.net/;
-      description = "PyOpenGL, the Python OpenGL bindings";
-      longDescription = ''
-        PyOpenGL is the cross platform Python binding to OpenGL and
-        related APIs.  The binding is created using the standard (in
-        Python 2.5) ctypes library, and is provided under an extremely
-        liberal BSD-style Open-Source license.
-      '';
-      license = "BSD-style";
-      platforms = platforms.mesaPlatforms;
-    };
+  pypdf2 = callPackage ../development/python-modules/pypdf2 { };
 
-    # Need to fix test runner
-    # Tests have many dependencies
-    # Extension types could not be found.
-    # Should run test suite from $out/${python.sitePackages}
-    doCheck = false;
-  };
+  pyopengl = callPackage ../development/python-modules/pyopengl { };
 
   pyopenssl = callPackage ../development/python-modules/pyopenssl { };
 
-  pyquery = buildPythonPackage rec {
-    name = "pyquery-${version}";
-    version = "1.2.9";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyquery/${name}.zip";
-      sha256 = "00p6f1dfma65192hc72dxd506491lsq3g5wgxqafi1xpg2w1xia6";
-    };
-
-    propagatedBuildInputs = with self; [ cssselect lxml webob ];
-    # circular dependency on webtest
-    doCheck = false;
-  };
-
-  pyreport = buildPythonPackage (rec {
-    name = "pyreport-0.3.4c";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyreport/${name}.tar.gz";
-      sha256 = "1584607596b7b310bf0b6ce79f424bd44238a017fd870aede11cd6732dbe0d4d";
-    };
-
-    # error: invalid command 'test'
-    doCheck = false;
+  pyquery = callPackage ../development/python-modules/pyquery { };
 
-    meta = {
-      homepage = https://pypi.python.org/pypi/pyreport;
-      license = "BSD";
-      description = "Pyreport makes notes out of a python script";
-    };
-  });
+  pyreport = callPackage ../development/python-modules/pyreport { };
 
   pyreadability = callPackage ../development/python-modules/pyreadability { };
 
-  pyscss = buildPythonPackage rec {
-    name = "pyScss-${version}";
-    version = "1.3.5";
-
-    src = pkgs.fetchFromGitHub {
-      sha256 = "0lfsan74vcw6dypb196gmbprvlbran8p7w6czy8hyl2b1l728mhz";
-      rev = "v1.3.5";
-      repo = "pyScss";
-      owner = "Kronuz";
-    };
-
-    checkInputs = with self; [ pytest ];
-
-    propagatedBuildInputs = with self; [ six ]
-      ++ (optionals (pythonOlder "3.4") [ enum34 pathlib ])
-      ++ (optionals (pythonOlder "2.7") [ ordereddict ]);
-
-    checkPhase = ''
-      py.test
-    '';
-
-    meta = {
-      description = "A Scss compiler for Python";
-      homepage = http://pyscss.readthedocs.org/en/latest/;
-      license = licenses.mit;
-    };
-  };
+  pyscss = callPackage ../development/python-modules/pyscss { };
 
   pyserial = callPackage ../development/python-modules/pyserial {};
 
   pymongo = callPackage ../development/python-modules/pymongo {};
 
-  pymongo_2_9_1 = buildPythonPackage rec {
-    name = "pymongo-2.9.1";
-    version = "2.9.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pymongo/${name}.tar.gz";
-      sha256 = "1nrr1fxyrlxd69bgxl7bvaj2j4z7v3zaciij5sbhxg0vqiz6ny50";
-    };
-
-    # Tests call a running mongodb instance
-    doCheck = false;
-
-    meta = {
-      homepage = https://github.com/mongodb/mongo-python-driver;
-      license = licenses.asl20;
-      description = "Python driver for MongoDB ";
-    };
-  };
+  pymongo_2_9_1 = callPackage ../development/python-modules/pymongo/2_9_1.nix { };
 
   pyperclip = callPackage ../development/python-modules/pyperclip { };
 
-  pysqlite = buildPythonPackage rec {
-    name = "pysqlite-2.8.3";
+  pysqlite = callPackage ../development/python-modules/pysqlite { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pysqlite/${name}.tar.gz";
-      sha256 = "17d3335863e8cf8392eea71add33dab3f96d060666fe68ab7382469d307f4490";
-    };
-
-    # Need to use the builtin sqlite3 on Python 3
-    disabled = isPy3k;
-
-    # Since the `.egg' file is zipped, the `NEEDED' of the `.so' files
-    # it contains is not taken into account.  Thus, we must explicitly make
-    # it a propagated input.
-    propagatedBuildInputs = with self; [ pkgs.sqlite ];
-
-    patchPhase = ''
-      substituteInPlace "setup.cfg"                                     \
-              --replace "/usr/local/include" "${pkgs.sqlite.dev}/include"   \
-              --replace "/usr/local/lib" "${pkgs.sqlite.out}/lib"
-      ${stdenv.lib.optionalString (!stdenv.isDarwin) ''export LDSHARED="$CC -pthread -shared"''}
-    '';
-
-    meta = {
-      homepage = http://pysqlite.org/;
-      description = "Python bindings for the SQLite embedded relational database engine";
-      longDescription = ''
-        pysqlite is a DB-API 2.0-compliant database interface for SQLite.
-
-        SQLite is a relational database management system contained in
-        a relatively small C library.  It is a public domain project
-        created by D. Richard Hipp.  Unlike the usual client-server
-        paradigm, the SQLite engine is not a standalone process with
-        which the program communicates, but is linked in and thus
-        becomes an integral part of the program.  The library
-        implements most of SQL-92 standard, including transactions,
-        triggers and most of complex queries.
-
-        pysqlite makes this powerful embedded SQL engine available to
-        Python programmers.  It stays compatible with the Python
-        database API specification 2.0 as much as possible, but also
-        exposes most of SQLite's native API, so that it is for example
-        possible to create user-defined SQL functions and aggregates
-        in Python.
-      '';
-      license = licenses.bsd3;
-      maintainers = [ ];
-    };
-  };
-
-
-  pysvn = buildPythonPackage rec {
-    name = "pysvn-1.8.0";
-    format = "other";
-
-    src = pkgs.fetchurl {
-      url = "http://pysvn.barrys-emacs.org/source_kits/${name}.tar.gz";
-      sha256 = "0srjr2qgxfs69p65d9vvdib2lc142x10w8afbbdrqs7dhi46yn9r";
-    };
-
-    buildInputs = with self; [ pkgs.subversion pkgs.apr pkgs.aprutil pkgs.expat pkgs.neon pkgs.openssl ]
-      ++ (if stdenv.isLinux then [pkgs.e2fsprogs] else []);
-
-    # There seems to be no way to pass that path to configure.
-    NIX_CFLAGS_COMPILE="-I${pkgs.aprutil.dev}/include/apr-1";
-
-    preConfigure = ''
-      cd Source
-      ${python.interpreter} setup.py backport
-      ${python.interpreter} setup.py configure \
-        --apr-inc-dir=${pkgs.apr.dev}/include \
-        --apu-inc-dir=${pkgs.aprutil.dev}/include \
-        --apr-lib-dir=${pkgs.apr.out}/lib \
-        --svn-lib-dir=${pkgs.subversion.out}/lib \
-        --svn-bin-dir=${pkgs.subversion.out}/bin \
-        --svn-root-dir=${pkgs.subversion.dev}
-    '' + (if !stdenv.isDarwin then "" else ''
-      sed -i -e 's|libpython2.7.dylib|lib/libpython2.7.dylib|' Makefile
-    '');
-
-    checkPhase = "make -C ../Tests";
-
-    disabled = isPy3k;
-
-    installPhase = ''
-      dest=$(toPythonPath $out)/pysvn
-      mkdir -p $dest
-      cp pysvn/__init__.py $dest/
-      cp pysvn/_pysvn*.so $dest/
-      mkdir -p $out/share/doc
-      mv -v ../Docs $out/share/doc/pysvn-1.7.2
-      rm -v $out/share/doc/pysvn-1.7.2/generate_cpp_docs_from_html_docs.py
-    '';
-
-    meta = {
-      description = "Python bindings for Subversion";
-      homepage = "http://pysvn.tigris.org/";
-    };
-  };
+  pysvn = callPackage ../development/python-modules/pysvn { };
 
   python-ptrace = callPackage ../development/python-modules/python-ptrace { };
 
-  python-wifi = buildPythonPackage rec {
-    name = "python-wifi-${version}";
-    version = "0.6.1";
-    disabled = !isPy27;
+  python-wifi = callPackage ../development/python-modules/python-wifi { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/python-wifi/${name}.tar.bz2";
-      sha256 = "149c3dznb63d82143cz5hqdim0mqjysz6p3yk0zv271vq3xnmzvv";
-    };
-
-    meta = {
-      inherit version;
-      description = "Read & write wireless card capabilities using the Linux Wireless Extensions";
-      homepage = http://pythonwifi.tuxfamily.org/;
-      # From the README: "pythonwifi is licensed under LGPLv2+, however, the
-      # examples (e.g. iwconfig.py and iwlist.py) are licensed under GPLv2+."
-      license = with licenses; [ lgpl2Plus gpl2Plus ];
-    };
-  };
-
-  python-etcd = buildPythonPackage rec {
-    name = "python-etcd-${version}";
-    version = "0.4.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/python-etcd/${name}.tar.gz";
-      sha256 = "cf53262b3890d185fe637eed15fe39c8d7a8261864ddcd7037b22c961456d7fc";
-    };
-
-    buildInputs = with self; [ nose mock pyopenssl ];
-
-    propagatedBuildInputs = with self; [ urllib3 dnspython ];
-
-    postPatch = ''
-      sed -i '19s/dns/"dnspython"/' setup.py
-    '';
-
-    # Some issues with etcd not in path even though most tests passed
-    doCheck = false;
-
-    meta = {
-      description = "A python client for Etcd";
-      homepage = https://github.com/jplana/python-etcd;
-      license = licenses.mit;
-    };
-  };
+  python-etcd = callPackage ../development/python-modules/python-etcd { };
 
   pythonnet = callPackage ../development/python-modules/pythonnet {
     # `mono >= 4.6` required to prevent crashes encountered with earlier versions.
@@ -5361,66 +3529,9 @@ in {
 
   pytzdata = callPackage ../development/python-modules/pytzdata { };
 
-  pyutil = buildPythonPackage (rec {
-    name = "pyutil-2.0.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyutil/${name}.tar.gz";
-      sha256 = "1fsg9yz5mi2sb0h6c1vvcqchx56i89nbvdb5gfgv1ia3b2w5ra8c";
-    };
-
-    buildInputs = with self; [ setuptoolsDarcs setuptoolsTrial ] ++ (if doCheck then [ simplejson ] else []);
-    propagatedBuildInputs = with self; [ zbase32 argparse twisted ];
-    # Tests fail because they try to write new code into the twisted
-    # package, apparently some kind of plugin.
-    doCheck = false;
-
-    prePatch = optionalString isPyPy ''
-      grep -rl 'utf-8-with-signature-unix' ./ | xargs sed -i -e "s|utf-8-with-signature-unix|utf-8|g"
-    '';
+  pyutil = callPackage ../development/python-modules/pyutil { };
 
-    meta = {
-      description = "Pyutil, a collection of mature utilities for Python programmers";
-
-      longDescription = ''
-        These are a few data structures, classes and functions which
-        we've needed over many years of Python programming and which
-        seem to be of general use to other Python programmers. Many of
-        the modules that have existed in pyutil over the years have
-        subsequently been obsoleted by new features added to the
-        Python language or its standard library, thus showing that
-        we're not alone in wanting tools like these.
-      '';
-
-      homepage = http://allmydata.org/trac/pyutil;
-
-      license = licenses.gpl2Plus;
-    };
-  });
-
-
-  pywebkitgtk = buildPythonPackage rec {
-    name = "pywebkitgtk-${version}";
-    version = "1.1.8";
-    format = "other";
-
-    src = pkgs.fetchurl {
-      url = "http://pywebkitgtk.googlecode.com/files/${name}.tar.bz2";
-      sha256 = "1svlwyl61rvbqbcbalkg6pbf38yjyv7qkq9sx4x35yk69lscaac2";
-    };
-
-    nativeBuildInputs = [ pkgs.pkgconfig ];
-    buildInputs = [
-      pkgs.gtk2 self.pygtk pkgs.libxml2
-      pkgs.libxslt pkgs.libsoup pkgs.webkitgtk24x-gtk2 pkgs.icu
-    ];
-
-    meta = {
-      homepage = "https://code.google.com/p/pywebkitgtk/";
-      description = "Python bindings for the WebKit GTK+ port";
-      license = licenses.lgpl2Plus;
-    };
-  };
+  pywebkitgtk = callPackage ../development/python-modules/pywebkitgtk { };
 
   pywinrm = callPackage ../development/python-modules/pywinrm { };
 
@@ -5430,83 +3541,15 @@ in {
 
   pyyaml = callPackage ../development/python-modules/pyyaml { };
 
-  rabbitpy = buildPythonPackage rec {
-    version = "0.26.2";
-    name = "rabbitpy-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/rabbitpy/${name}.tar.gz";
-      sha256 = "0pgijv7mgxc4sm7p9s716dhl600l8isisxzyg4hz7ng1sk09p1w3";
-    };
-
-    buildInputs = with self; [ mock nose ];
-
-    propagatedBuildInputs = with self; [ pamqp ];
-
-    meta = {
-      description = "A pure python, thread-safe, minimalistic and pythonic RabbitMQ client library";
-      homepage = https://pypi.python.org/pypi/rabbitpy;
-      license = licenses.bsd3;
-    };
-  };
+  rabbitpy = callPackage ../development/python-modules/rabbitpy { };
 
   radicale_infcloud = callPackage ../development/python-modules/radicale_infcloud {};
 
-  recaptcha_client = buildPythonPackage rec {
-    name = "recaptcha-client-1.0.6";
+  recaptcha_client = callPackage ../development/python-modules/recaptcha_client { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/recaptcha-client/${name}.tar.gz";
-      sha256 = "28c6853c1d13d365b7dc71a6b05e5ffb56471f70a850de318af50d3d7c0dea2f";
-    };
+  rbtools = callPackage ../development/python-modules/rbtools { };
 
-    disabled = isPy35 || isPy36;
-
-    meta = {
-      description = "A CAPTCHA for Python using the reCAPTCHA service";
-      homepage = http://recaptcha.net/;
-    };
-  };
-
-  rbtools = buildPythonPackage rec {
-    name = "rbtools-0.7.2";
-
-    src = pkgs.fetchurl {
-      url = "http://downloads.reviewboard.org/releases/RBTools/0.7/RBTools-0.7.2.tar.gz";
-      sha256 = "1ng8l8cx81cz23ls7fq9wz4ijs0zbbaqh4kj0mj6plzcqcf8na4i";
-    };
-
-    buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ six ];
-
-    checkPhase = "nosetests";
-
-    disabled = isPy3k;
-
-    meta = {
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  };
-
-  rencode = buildPythonPackage rec {
-    name = "rencode-${version}";
-    version = "git20150810";
-    disabled = isPy33;
-
-    src = pkgs.fetchgit {
-      url = https://github.com/aresch/rencode;
-      rev = "b45e04abdca0dea36e383a8199783269f186c99e";
-      sha256 = "b4bd82852d4220e8a9493d3cfaecbc57b1325708a2d48c0f8acf262edb10dc40";
-    };
-
-    buildInputs = with self; [ cython ];
-
-    meta = {
-      homepage = https://github.com/aresch/rencode;
-      description = "Fast (basic) object serialization similar to bencode";
-      license = licenses.gpl3;
-    };
-  };
+  rencode = callPackage ../development/python-modules/rencode { };
 
   reportlab = callPackage ../development/python-modules/reportlab { };
 
@@ -5526,72 +3569,15 @@ in {
   requests-toolbelt = callPackage ../development/python-modules/requests-toolbelt { };
   requests_toolbelt = self.requests-toolbelt; # Old attr, 2017-09-26
 
-  retry_decorator = buildPythonPackage rec {
-    name = "retry_decorator-1.0.0";
-    src = pkgs.fetchurl {
-      url = mirror://pypi/r/retry_decorator/retry_decorator-1.0.0.tar.gz;
-      sha256 = "086zahyb6yn7ggpc58909c5r5h3jz321i1694l1c28bbpaxnlk88";
-    };
-    meta = {
-      homepage = https://github.com/pnpnpn/retry-decorator;
-      license = licenses.mit;
-    };
-  };
+  retry_decorator = callPackage ../development/python-modules/retry_decorator { };
 
   quandl = callPackage ../development/python-modules/quandl { };
   # alias for an older package which did not support Python 3
   Quandl = callPackage ../development/python-modules/quandl { };
 
-  qscintilla = disabledIf (isPy3k || isPyPy)
-    (buildPythonPackage rec {
-      # TODO: Qt5 support
-      name = "qscintilla-${version}";
-      version = pkgs.qscintilla.version;
-      format = "other";
-
-      src = pkgs.qscintilla.src;
-
-      buildInputs = with self; [ pkgs.xorg.lndir pyqt4.qt pyqt4 ];
-
-      preConfigure = ''
-        mkdir -p $out
-        lndir ${self.pyqt4} $out
-        rm -rf "$out/nix-support"
-        cd Python
-        ${python.executable} ./configure-old.py \
-            --destdir $out/lib/${python.libPrefix}/site-packages/PyQt4 \
-            --apidir $out/api/${python.libPrefix} \
-            -n ${pkgs.qscintilla}/include \
-            -o ${pkgs.qscintilla}/lib \
-            --sipdir $out/share/sip
-      '';
-
-      meta = with stdenv.lib; {
-        description = "A Python binding to QScintilla, Qt based text editing control";
-        license = licenses.lgpl21Plus;
-        maintainers = with maintainers; [ danbst ];
-        platforms = platforms.unix;
-      };
-    });
-
-
-  qserve = buildPythonPackage rec {
-    name = "qserve-0.2.8";
-    disabled = isPy3k;
+  qscintilla = callPackage ../development/python-modules/qscintilla { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/q/qserve/${name}.zip";
-      sha256 = "0b04b2d4d11b464ff1efd42a9ea9f8136187d59f4076f57c9ba95361d41cd7ed";
-    };
-
-    buildInputs = with self; [ ];
-
-    meta = {
-      description = "Job queue server";
-      homepage = "https://github.com/pediapress/qserve";
-      license = licenses.bsd3;
-    };
-  };
+  qserve = callPackage ../development/python-modules/qserve { };
 
   qtawesome = callPackage ../development/python-modules/qtawesome { };
 
@@ -5601,36 +3587,7 @@ in {
 
   quantities = callPackage ../development/python-modules/quantities { };
 
-  qutip = buildPythonPackage rec {
-    name = "qutip-2.2.0";
-
-    src = pkgs.fetchurl {
-      url = "https://qutip.googlecode.com/files/QuTiP-2.2.0.tar.gz";
-      sha256 = "a26a639d74b2754b3a1e329d91300e587e8c399d8a81d8f18a4a74c6d6f02ba3";
-    };
-
-    propagatedBuildInputs = with self; [ numpy scipy matplotlib pyqt4
-      cython ];
-
-    buildInputs = [ pkgs.gcc pkgs.qt4 pkgs.blas self.nose ];
-
-    meta = {
-      description = "QuTiP - Quantum Toolbox in Python";
-      longDescription = ''
-        QuTiP is open-source software for simulating the dynamics of
-        open quantum systems. The QuTiP library depends on the
-        excellent Numpy and Scipy numerical packages. In addition,
-        graphical output is provided by Matplotlib. QuTiP aims to
-        provide user-friendly and efficient numerical simulations of a
-        wide variety of Hamiltonians, including those with arbitrary
-        time-dependence, commonly found in a wide range of physics
-        applications such as quantum optics, trapped ions,
-        superconducting circuits, and quantum nanomechanical
-        resonators.
-      '';
-      homepage = http://qutip.org/;
-    };
-  };
+  qutip = callPackage ../development/python-modules/qutip { };
 
   rcssmin = callPackage ../development/python-modules/rcssmin { };
 
@@ -5642,51 +3599,11 @@ in {
 
   reikna = callPackage ../development/python-modules/reikna { };
 
-  repocheck = buildPythonPackage rec {
-    name = "repocheck-2015-08-05";
-
-    src = pkgs.fetchFromGitHub {
-      sha256 = "1jc4v5zy7z7xlfmbfzvyzkyz893f5x2k6kvb3ni3rn2df7jqhc81";
-      rev = "ee48d0e88d3f5814d24a8d1f22d5d83732824688";
-      repo = "repocheck";
-      owner = "kynikos";
-    };
-
-    meta = {
-      inherit (src.meta) homepage;
-      description = "Check the status of code repositories under a root directory";
-      license = licenses.gpl3Plus;
-    };
-  };
+  repocheck = callPackage ../development/python-modules/repocheck { };
 
   restview = callPackage ../development/python-modules/restview { };
 
-  readme = buildPythonPackage rec {
-    name = "readme-${version}";
-    version = "0.6.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/readme/readme-${version}.tar.gz";
-      sha256 = "08j2w67nilczn1i5r7h22vag9673i6vnfhyq2rv27r1bdmi5a30m";
-    };
-
-    buildInputs = with self; [ pytest ];
-    propagatedBuildInputs = with self; [
-      six docutils pygments bleach html5lib
-    ];
-
-    checkPhase = ''
-      py.test
-    '';
-
-    # Tests fail, possibly broken.
-    doCheck = false;
-
-    meta = with stdenv.lib; {
-      description = "Readme";
-      homepage = "https://github.com/pypa/readme";
-    };
-  };
+  readme = callPackage ../development/python-modules/readme { };
 
   readme_renderer = callPackage ../development/python-modules/readme_renderer { };
 
@@ -5698,91 +3615,21 @@ in {
 
   pysolr = callPackage ../development/python-modules/pysolr { };
 
-  django-haystack = callPackage ../development/python-modules/django-haystack { };
-
-  geoalchemy2 = buildPythonPackage rec {
-    name = "GeoAlchemy2-${version}";
-    version = "0.3.0";
+  geoalchemy2 = callPackage ../development/python-modules/geoalchemy2 { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/G/GeoAlchemy2/${name}.tar.gz";
-      sha256 = "0p2h1kgl5b0jz8wadx485vjh1mmm5s67p71yxh9lhp1441hkfswf";
-    };
-
-    propagatedBuildInputs = with self ; [ sqlalchemy shapely ];
-
-    meta = {
-      homepage =  http://geoalchemy.org/;
-      license = licenses.mit;
-      description = "Toolkit for working with spatial databases";
-    };
-  };
+  geopy = callPackage ../development/python-modules/geopy { };
 
-  geopy = buildPythonPackage rec {
-    name = "geopy-${version}";
-    version = "1.11.0";
-    disabled = !isPy27;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/g/geopy/geopy-${version}.tar.gz";
-      sha256 = "04j1lxcsfyv03h0n0q7p2ig7a4n13x4x20fzxn8bkazpx6lyal22";
-    };
-
-    doCheck = false;  # too much
-
-    buildInputs = with self; [ mock tox pylint ];
-    meta = with stdenv.lib; {
-      homepage = "https://github.com/geopy/geopy";
-    };
-  };
+  django-haystack = callPackage ../development/python-modules/django-haystack { };
 
   django-multiselectfield = callPackage ../development/python-modules/django-multiselectfield { };
 
   rdflib = callPackage ../development/python-modules/rdflib { };
 
-  isodate = buildPythonPackage rec {
-    name = "isodate-${version}";
-    version = "0.5.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/i/isodate/${name}.tar.gz";
-      sha256 = "42105c41d037246dc1987e36d96f3752ffd5c0c24834dd12e4fdbe1e79544e31";
-    };
-
-    # Judging from SyntaxError
-    doCheck = !(isPy3k);
+  isodate = callPackage ../development/python-modules/isodate { };
 
-    checkPhase = ''
-      ${python.interpreter} -m unittest discover -s src/isodate/tests
-    '';
-
-    meta = {
-      description = "ISO 8601 date/time parser";
-      homepage = http://cheeseshop.python.org/pypi/isodate;
-    };
-  };
-
-  resampy = buildPythonPackage rec {
-    pname = "resampy";
-    version = "0.1.4";
-    name = "${pname}-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${name}.tar.gz";
-      sha256 = "cf4f149d8699af70a1b4b0769fa16fab21835d936ea7ff25e98446aa49e743d4";
-    };
-
-    checkInputs = with self; [ pytest pytestcov ];
-    # No tests included
-    doCheck = false;
-    propagatedBuildInputs = with self; [ numpy scipy cython six ];
+  owslib = callPackage ../development/python-modules/owslib { };
 
-    meta = {
-      homepage = https://github.com/bmcfee/resampy;
-      description = "Efficient signal resampling";
-      license = licenses.isc;
-    };
-  };
+  resampy = callPackage ../development/python-modules/resampy { };
 
   restructuredtext_lint = callPackage ../development/python-modules/restructuredtext_lint { };
 
@@ -5790,68 +3637,21 @@ in {
 
   robotframework = callPackage ../development/python-modules/robotframework { };
 
-  robotframework-selenium2library = buildPythonPackage rec {
-    version = "1.6.0";
-    name = "robotframework-selenium2library-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/robotframework-selenium2library/${name}.tar.gz";
-      sha256 = "1asdwrpb4s7q08bx641yrh3yicgba14n3hxmsqs58mqf86ignwly";
-    };
-
-    # error: invalid command 'test'
-    #doCheck = false;
-
-    propagatedBuildInputs = with self; [ robotframework selenium docutils decorator ];
+  robotframework-requests = callPackage ../development/python-modules/robotframework-requests { };
 
-    meta = {
-      description = "";
-      homepage = http://robotframework.org/;
-      license = licenses.asl20;
-    };
-  };
-
-
-  robotframework-tools = buildPythonPackage rec {
-    version = "0.1a115";
-    name = "robotframework-tools-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/robotframework-tools/${name}.tar.gz";
-      sha256 = "04gkn1zpf3rsvbqdxrrjqqi8sa0md9gqwh6n5w2m03fdwjg4lc7q";
-    };
+  robotframework-ride = callPackage ../development/python-modules/robotframework-ride { };
 
-    propagatedBuildInputs = with self; [ robotframework moretools pathpy six setuptools ];
+  robotframework-selenium2library = callPackage ../development/python-modules/robotframework-selenium2library { };
 
-    meta = {
-      description = "Python Tools for Robot Framework and Test Libraries";
-      homepage = https://bitbucket.org/userzimmermann/robotframework-tools;
-      license = licenses.gpl3;
-      platforms = platforms.linux;
-    };
-  };
+  robotframework-tools = callPackage ../development/python-modules/robotframework-tools { };
 
   robotsuite = callPackage ../development/python-modules/robotsuite { };
 
-  robotframework-ride = callPackage ../development/python-modules/robotframework-ride { };
-
-  robotframework-requests = buildPythonPackage rec {
-    version = "0.4.6";
-    name = "robotframework-requests-${version}";
-
-    src = pkgs.fetchurl {
-      url = "https://pypi.python.org/packages/ad/da/51359b11d2005ff425984205677890fafaf270a71b03df22c255501bc99d/robotframework-requests-0.4.6.tar.gz";
-      sha256 = "0416rxg7g0pfg77akljnkass0xz0id26v4saag2q2h1fgwrm7n4q";
-    };
+  serpent = callPackage ../development/python-modules/serpent { };
 
-    buildInputs = with self; [ unittest2 ];
-    propagatedBuildInputs = with self; [ robotframework lxml requests ];
+  selectors34 = callPackage ../development/python-modules/selectors34 { };
 
-    meta = {
-      description = "Robot Framework keyword library wrapper around the HTTP client library requests";
-      homepage = https://github.com/bulkan/robotframework-requests;
-    };
-  };
+  Pyro4 = callPackage ../development/python-modules/pyro4 { };
 
   root_numpy = callPackage ../development/python-modules/root_numpy { };
 
@@ -5861,25 +3661,6 @@ in {
 
   ropper = callPackage ../development/python-modules/ropper { };
 
-  routes = buildPythonPackage rec {
-    pname = "Routes";
-    version = "2.4.1";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "1zamff3m0kc4vyfniyhxpkkcqv1rrgnmh37ykxv34nna1ws47vi6";
-    };
-
-    propagatedBuildInputs = with self; [ repoze_lru six webob ];
-
-    checkInputs = with self; [ coverage webtest ];
-
-    meta = {
-      description = "A Python re-implementation of the Rails routes system for mapping URLs to application actions";
-      homepage = http://routes.groovie.org/;
-    };
-  };
-
   rpkg = callPackage ../development/python-modules/rpkg {};
 
   rply = callPackage ../development/python-modules/rply {};
@@ -5890,196 +3671,18 @@ in {
 
   rpy2 = callPackage ../development/python-modules/rpy2 {};
 
-  rpyc = buildPythonPackage rec {
-    name = "rpyc-${version}";
-    version = "3.3.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/rpyc/${name}.tar.gz";
-      sha256 = "43fa845314f0bf442f5f5fab15bb1d1b5fe2011a8fc603f92d8022575cef8b4b";
-    };
-
-    propagatedBuildInputs = with self; [ nose plumbum ];
-
-    meta = {
-      description = "Remote Python Call (RPyC), a transparent and symmetric RPC library";
-      homepage = http://rpyc.readthedocs.org;
-      license = licenses.mit;
-    };
-  };
-
-  rsa = buildPythonPackage rec {
-    name = "rsa-${version}";
-    version = "3.4.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/rsa/${name}.tar.gz";
-      sha256 = "1dcxvszbikgzh99ybdc7jq0zb9wspy2ds8z9mjsqiyv3q884xpr5";
-    };
-
-    nativeBuildInputs = with self; [ unittest2 ];
-    propagatedBuildInputs = with self; [ pyasn1 ];
-
-    meta = {
-      homepage = https://stuvel.eu/rsa;
-      license = licenses.asl20;
-      description = "A pure-Python RSA implementation";
-    };
-  };
-
   Rtree = callPackage ../development/python-modules/Rtree { inherit (pkgs) libspatialindex; };
 
-  squaremap = buildPythonPackage rec {
-    name = "squaremap-1.0.4";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/S/SquareMap/SquareMap-1.0.4.tar.gz";
-      sha256 = "feab6cb3b222993df68440e34825d8a16de2c74fdb290ae3974c86b1d5f3eef8";
-    };
-
-    meta = {
-      description = "Hierarchic visualization control for wxPython";
-      homepage = https://launchpad.net/squaremap;
-      license = licenses.bsd3;
-    };
-  };
-
-  ruamel_base = buildPythonPackage rec {
-    name = "ruamel.base-${version}";
-    version = "1.0.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/ruamel.base/${name}.tar.gz";
-      sha256 = "1wswxrn4givsm917mfl39rafgadimf1sldpbjdjws00g1wx36hf0";
-    };
-
-    meta = {
-      description = "Common routines for ruamel packages";
-      homepage = https://bitbucket.org/ruamel/base;
-      license = licenses.mit;
-    };
-  };
-
-  ruamel_ordereddict = buildPythonPackage rec {
-    name = "ruamel.ordereddict-${version}";
-    version = "0.4.9";
-    disabled = isPy3k || isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/ruamel.ordereddict/${name}.tar.gz";
-      sha256 = "1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h";
-    };
-
-    meta = {
-      description = "A version of dict that keeps keys in insertion resp. sorted order";
-      homepage = https://bitbucket.org/ruamel/ordereddict;
-      license = licenses.mit;
-    };
-  };
-
   typing = callPackage ../development/python-modules/typing { };
 
   typing-extensions = callPackage ../development/python-modules/typing-extensions { };
 
   typeguard = callPackage ../development/python-modules/typeguard { };
 
-  ruamel_yaml = buildPythonPackage rec {
-    name = "ruamel.yaml-${version}";
-    version = "0.15.35";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/ruamel.yaml/${name}.tar.gz";
-      sha256 = "0xggyfaj6vprggahf7cq8kp9j79rb7hn8ndk3bxj2sxvwhhliiwd";
-    };
-
-    # Tests cannot load the module to test
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ ruamel_base typing ] ++
-    (optional (!isPy3k) self.ruamel_ordereddict);
-
-    meta = {
-      description = "YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order";
-      homepage = https://bitbucket.org/ruamel/yaml;
-      license = licenses.mit;
-    };
-  };
-
-  runsnakerun = buildPythonPackage rec {
-    name = "runsnakerun-2.0.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/R/RunSnakeRun/RunSnakeRun-2.0.4.tar.gz";
-      sha256 = "61d03a13f1dcb3c1829f5a146da1fe0cc0e27947558a51e848b6d469902815ef";
-    };
-
-    propagatedBuildInputs = with self; [ squaremap wxPython ];
-
-    meta = {
-      description = "GUI Viewer for Python profiling runs";
-      homepage = http://www.vrplumber.com/programming/runsnakerun/;
-      license = licenses.bsd3;
-    };
-  };
-
   s3transfer = callPackage ../development/python-modules/s3transfer { };
 
   seqdiag = callPackage ../development/python-modules/seqdiag { };
 
-  pysendfile = buildPythonPackage rec {
-    name = "pysendfile-${version}";
-    version = "2.0.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pysendfile/pysendfile-${version}.tar.gz";
-      sha256 = "05qf0m32isflln1zjgxlpw0wf469lj86vdwwqyizp1h94x5l22ji";
-    };
-
-    checkPhase = ''
-      # this test takes too long
-      sed -i 's/test_big_file/noop/' test/test_sendfile.py
-      ${self.python.executable} test/test_sendfile.py
-    '';
-
-    meta = with stdenv.lib; {
-      homepage = "https://github.com/giampaolo/pysendfile";
-    };
-  };
-
-  qpid-python = buildPythonPackage rec {
-    name = "qpid-python-${version}";
-    version = "0.32";
-    disabled = isPy3k;  # not supported
-
-    src = pkgs.fetchurl {
-      url = "http://www.us.apache.org/dist/qpid/${version}/${name}.tar.gz";
-      sha256 = "09hdfjgk8z4s3dr8ym2r6xn97j1f9mkb2743pr6zd0bnj01vhsv4";
-    };
-
-    # needs a broker running and then ./qpid-python-test
-    doCheck = false;
-
-  };
-
-  xattr = buildPythonPackage rec {
-    name = "xattr-0.7.8";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/x/xattr/${name}.tar.gz";
-      sha256 = "0nbqfghgy26jyp5q7wl3rj78wr8s39m5042df2jlldg3fx6j0417";
-    };
-
-    # https://github.com/xattr/xattr/issues/43
-    doCheck = false;
-
-    postBuild = ''
-      ${python.interpreter} -m compileall -f xattr
-    '';
-
-    propagatedBuildInputs = [ self.cffi ];
-  };
-
   safe = callPackage ../development/python-modules/safe { };
 
   sampledata = callPackage ../development/python-modules/sampledata { };
@@ -6100,26 +3703,6 @@ in {
 
   scp = callPackage ../development/python-modules/scp {};
 
-  scripttest = buildPythonPackage rec {
-    version = "1.3";
-    name = "scripttest-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/scripttest/scripttest-${version}.tar.gz";
-      sha256 = "951cfc25219b0cd003493a565f2e621fd791beaae9f9a3bdd7024d8626419c38";
-    };
-
-    buildInputs = with self; [ pytest ];
-
-    # Tests are not included. See https://github.com/pypa/scripttest/issues/11
-    doCheck = false;
-
-    meta = {
-      description = "A library for testing interactive command-line applications";
-      homepage = https://pypi.python.org/pypi/ScriptTest/;
-    };
-  };
-
   seaborn = callPackage ../development/python-modules/seaborn { };
 
   selenium = callPackage ../development/python-modules/selenium { };
@@ -6128,729 +3711,22 @@ in {
 
   setuptools_scm = callPackage ../development/python-modules/setuptools_scm { };
 
-  setuptoolsDarcs = buildPythonPackage rec {
-    name = "setuptools_darcs-${version}";
-    version = "1.2.11";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/setuptools_darcs/${name}.tar.gz";
-      sha256 = "1wsh0g1fn10msqk87l5jrvzs0yj5mp6q9ld3gghz6zrhl9kqzdn1";
-    };
-
-    # In order to break the dependency on darcs -> ghc, we don't add
-    # darcs as a propagated build input.
-    propagatedBuildInputs = with self; [ darcsver ];
-
-    # ugly hack to specify version that should otherwise come from darcs
-    patchPhase = ''
-      substituteInPlace setup.py --replace "name=PKG" "name=PKG, version='${version}'"
-    '';
-
-    meta = {
-      description = "Setuptools plugin for the Darcs version control system";
-      homepage = http://allmydata.org/trac/setuptools_darcs;
-      license = "BSD";
-    };
-  };
-
-  setuptoolsTrial = buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "setuptools_trial";
-    version = "0.6.0";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/${pname}/${name}.tar.gz";
-      sha256 = "14220f8f761c48ba1e2526f087195077cf54fad7098b382ce220422f0ff59b12";
-    };
-    buildInputs = with self; [ pytest virtualenv pytestrunner pytest-virtualenv ];
-    propagatedBuildInputs = with self; [ twisted pathlib2 ];
-    postPatch = ''
-      sed -i '12,$d' tests/test_main.py
-    '';
-
-    # Couldn't get tests working
-    doCheck = false;
-
-    meta = {
-      description = "Setuptools plugin that makes unit tests execute with trial instead of pyunit.";
-      homepage = "https://github.com/rutsky/setuptools-trial";
-      license = licenses.bsd2;
-      maintainers = with maintainers; [ ryansydnor nand0p ];
-      platforms   = platforms.all;
-    };
-  };
-
   shippai = callPackage ../development/python-modules/shippai {};
 
   simanneal = callPackage ../development/python-modules/simanneal { };
 
-  simplebayes = buildPythonPackage rec {
-    name = "simplebayes-${version}";
-    version = "1.5.8";
-
-    # Use GitHub instead of pypi, because it contains tests.
-    src = pkgs.fetchFromGitHub {
-      repo = "simplebayes";
-      owner = "hickeroar";
-      # NOTE: This is actually 1.5.8 but the tag is wrong!
-      rev = "1.5.7";
-      sha256 = "0mp7rvfdmpfxnka4czw3lv5kkh6gdxh6dm4r6hcln1zzfg9lxp4h";
-    };
-
-    checkInputs = [ self.nose self.mock ];
-
-    postPatch = optionalString isPy3k ''
-      sed -i -e 's/open *(\([^)]*\))/open(\1, encoding="utf-8")/' setup.py
-    '';
-
-    checkPhase = "nosetests tests/test.py";
-
-    meta = {
-      description = "Memory-based naive bayesian text classifier";
-      homepage = "https://github.com/hickeroar/simplebayes";
-      license = licenses.mit;
-      platforms = platforms.all;
-    };
-  };
-
   simplegeneric = callPackage ../development/python-modules/simplegeneric { };
 
-  shortuuid = buildPythonPackage rec {
-    name = "shortuuid-${version}";
-    version = "0.4.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/shortuuid/${name}.tar.gz";
-      sha256 = "4606dbb19124d98109c00e2cafae2df8117aec02115623e18fb2abe3f766d293";
-    };
-
-    buildInputs = with self; [pep8];
-
-    meta = {
-      description = "A generator library for concise, unambiguous and URL-safe UUIDs";
-      homepage = https://github.com/stochastic-technologies/shortuuid/;
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ zagy ];
-    };
-  };
-
-  shouldbe = buildPythonPackage rec {
-    version = "0.1.0";
-    name = "shouldbe-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/shouldbe/${name}.tar.gz";
-      sha256 = "07pchxpv1xvjbck0xy44k3a1jrvklg0wbyccn14w0i7d135d4174";
-    };
-
-    buildInputs = with self; [ nose ];
-
-    propagatedBuildInputs = with self; [ forbiddenfruit ];
-
-    doCheck = false;  # Segmentation fault on py 3.5
-
-    meta = {
-      description = "Python Assertion Helpers inspired by Shouldly";
-      homepage =  https://pypi.python.org/pypi/shouldbe/;
-      license = licenses.mit;
-    };
-  };
-
   simplejson = callPackage ../development/python-modules/simplejson { };
 
-  simpleparse = buildPythonPackage rec {
-    version = "2.1.1";
-    name = "simpleparse-${version}";
-
-    disabled = isPy3k || isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/S/SimpleParse/SimpleParse-${version}.tar.gz";
-      sha256 = "1n8msk71lpl3kv086xr2sv68ppgz6228575xfnbszc6p1mwr64rg";
-    };
-
-    doCheck = false;  # weird error
-
-    meta = {
-      description = "A Parser Generator for Python";
-      homepage = https://pypi.python.org/pypi/SimpleParse;
-      platforms = platforms.all;
-      maintainers = with maintainers; [ ];
-    };
-  };
-
   slimit = callPackage ../development/python-modules/slimit { };
 
-  slob = buildPythonPackage rec {
-    name = "slob-unstable-2016-11-03";
-
-    disabled = !isPy3k;
-
-    src = pkgs.fetchFromGitHub {
-      owner = "itkach";
-      repo = "slob";
-      rev = "d1ed71e4778729ecdfc2fe27ed783689a220a6cd";
-      sha256 = "1r510s4r124s121wwdm9qgap6zivlqqxrhxljz8nx0kv0cdyypi5";
-    };
-
-    propagatedBuildInputs = [ self.PyICU ];
-
-    checkPhase = "python3 -m unittest slob";
-
-    meta = {
-      homepage = https://github.com/itkach/slob/;
-      description = "Reference implementation of the slob (sorted list of blobs) format";
-      license = licenses.gpl3;
-      platforms = platforms.all;
-      maintainers = [ maintainers.rycee ];
-    };
-  };
-
-  slowaes = buildPythonPackage rec {
-    name = "slowaes-${version}";
-    version = "0.1a1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/slowaes/${name}.tar.gz";
-      sha256 = "83658ae54cc116b96f7fdb12fdd0efac3a4e8c7c7064e3fac3f4a881aa54bf09";
-    };
-
-    disabled = isPy3k;
-
-    meta = {
-      homepage = "http://code.google.com/p/slowaes/";
-      description = "AES implemented in pure python";
-      license = with licenses; [ asl20 ];
-    };
-  };
-
   snowballstemmer = callPackage ../development/python-modules/snowballstemmer { };
 
   spake2 = callPackage ../development/python-modules/spake2 { };
 
   sphfile = callPackage ../development/python-modules/sphfile { };
 
-  sqlite3dbm = buildPythonPackage rec {
-    name = "sqlite3dbm-0.1.4";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sqlite3dbm/${name}.tar.gz";
-      sha256 = "4721607e0b817b89efdba7e79cab881a03164b94777f4cf796ad5dd59a7612c5";
-    };
-
-    meta = {
-      description = "sqlite-backed dictionary";
-      homepage = https://github.com/Yelp/sqlite3dbm;
-      license = licenses.asl20;
-    };
-  };
-
-  sqlobject = buildPythonPackage rec {
-    pname = "SQLObject";
-    version = "3.3.0";
-    name = "${pname}-${version}";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "0p2dxrxh7xrv5yys09v5z95d0z40w22aq3xc01ghdidd7hr79xy9";
-    };
-
-    checkInputs = with self; [ pytest ];
-
-    propagatedBuildInputs = with self; [
-      FormEncode
-      PasteDeploy
-      paste
-      pydispatcher
-    ];
-
-    meta = {
-      description = "Object Relational Manager for providing an object interface to your database";
-      homepage = "http://www.sqlobject.org/";
-      license = licenses.lgpl21;
-    };
-  };
-
-  sqlmap = callPackage ../development/python-modules/sqlmap { };
-  pgpdump = self.buildPythonPackage rec {
-    pname = "pgpdump";
-    version = "1.5";
-    name = "${pname}-${version}";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw";
-    };
-
-    # Disabling check because of: https://github.com/toofishes/python-pgpdump/issues/18
-    doCheck = false;
-
-    meta = {
-      description = "Python library for parsing PGP packets";
-      homepage = https://github.com/toofishes/python-pgpdump;
-      license = licenses.bsd3;
-    };
-  };
-
-  spambayes = callPackage ../development/python-modules/spambayes { };
-
-  shapely = callPackage ../development/python-modules/shapely { };
-
-  sharedmem = callPackage ../development/python-modules/sharedmem { };
-
-  soco = callPackage ../development/python-modules/soco { };
-
-  sopel = buildPythonPackage rec {
-    name = "sopel-6.3.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sopel/${name}.tar.gz";
-      sha256 = "1swvw7xw8n5anb8ah8jilk4vk1y30y62fkibfd9vm9fbk45d1q48";
-    };
-
-    buildInputs = with self; [ pytest ];
-    propagatedBuildInputs = with self; [ praw xmltodict pytz pyenchant pygeoip ];
-
-    disabled = isPyPy || isPy27;
-
-    checkPhase = ''
-    ${python.interpreter} test/*.py                                         #*/
-    '';
-    meta = {
-      description = "Simple and extensible IRC bot";
-      homepage = "http://sopel.chat";
-      license = licenses.efl20;
-      maintainers = with maintainers; [ mog ];
-    };
-  };
-
-  sounddevice = callPackage ../development/python-modules/sounddevice { };
-
-  stevedore = callPackage ../development/python-modules/stevedore {};
-
-  text-unidecode = callPackage ../development/python-modules/text-unidecode { };
-
-  Theano = callPackage ../development/python-modules/Theano rec {
-    cudaSupport = pkgs.config.cudaSupport or false;
-    cudnnSupport = cudaSupport;
-    inherit (pkgs.linuxPackages) nvidia_x11;
-  };
-
-  TheanoWithoutCuda = self.Theano.override {
-    cudaSupport = false;
-    cudnnSupport = false;
-  };
-
-  TheanoWithCuda = self.Theano.override {
-    cudaSupport = true;
-    cudnnSupport = true;
-  };
-
-  thespian = callPackage ../development/python-modules/thespian { };
-
-  tidylib = callPackage ../development/python-modules/pytidylib { };
-
-  tilestache = self.buildPythonPackage rec {
-    name = "tilestache-${version}";
-    version = "1.50.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/T/TileStache/TileStache-${version}.tar.gz";
-      sha256 = "1z1j35pz77lhhjdn69sq5rmz62b5m444507d8zjnp0in5xqaj6rj";
-    };
-
-    disabled = !isPy27;
-
-    propagatedBuildInputs = with self;
-      [ modestmaps pillow pycairo python-mapnik simplejson werkzeug ];
-
-    meta = {
-      description = "A tile server for rendered geographic data";
-      homepage = http://tilestache.org;
-      license = licenses.bsd3;
-    };
-  };
-
-  timelib = buildPythonPackage rec {
-    name = "timelib-0.2.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/timelib/${name}.zip";
-      sha256 = "49142233bdb5971d64a41e05a1f80a408a02be0dc7d9f8c99e7bdd0613ba81cb";
-    };
-
-    buildInputs = with self; [ ];
-
-    meta = {
-      description = "Parse english textual date descriptions";
-      homepage = "https://github.com/pediapress/timelib/";
-      license = licenses.zlib;
-    };
-  };
-
-  timeout-decorator = callPackage ../development/python-modules/timeout-decorator { };
-
-  pid = buildPythonPackage rec {
-    name = "pid-${version}";
-    version = "2.0.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pid/${name}.tar.gz";
-      sha256 = "0cylj8p25nwkdfgy4pzai21wyzmrxdqlwwbzqag9gb5qcjfdwk05";
-    };
-
-    buildInputs = with self; [ nose ];
-
-    # No tests included
-    doCheck = false;
-
-    meta = {
-      description = "Pidfile featuring stale detection and file-locking";
-      homepage = https://github.com/trbs/pid/;
-      license = licenses.asl20;
-    };
-  };
-
-  pip2nix = buildPythonPackage rec {
-    name = "pip2nix-${version}";
-    version = "0.3.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pip2nix/${name}.tar.gz";
-      sha256 = "1s76i8r4khq8y5r6g4218jg2c6qldmw5xhzymxad51ii8hafpwq6";
-    };
-
-    propagatedBuildInputs = with self; [ click configobj contexter jinja2 pytest ];
-
-    meta.broken = true;
-  };
-
-  pychef = buildPythonPackage rec {
-    name    = "PyChef-${version}";
-    version = "0.3.0";
-
-    src = pkgs.fetchurl {
-      url    = "https://pypi.python.org/packages/f9/31/17cde137e3b8ada4d7c80fd4504264f2abed329a9a8100c3622a044c485e/PyChef-0.3.0.tar.gz";
-      sha256 = "0zdz8lw545cd3a34cpib7mdwnad83gr2mrrxyj3v74h4zhwabhmg";
-    };
-
-    propagatedBuildInputs = with self; [ six requests mock unittest2 ];
-
-    # FIXME
-    doCheck = false;
-  };
-
-  pydns =
-    let
-      py3 = buildPythonPackage rec {
-        name = "${pname}-${version}";
-        pname = "py3dns";
-        version = "3.1.1a";
-
-        src = fetchPypi {
-          inherit pname version;
-          sha256 = "0z0qmx9j1ivpgg54gqqmh42ljnzxaychc5inz2gbgv0vls765smz";
-        };
-
-        preConfigure = ''
-          sed -i \
-            -e '/import DNS/d' \
-            -e 's/DNS.__version__/"${version}"/g' \
-            setup.py
-        '';
-
-        doCheck = false;
-      };
-
-      py2 = buildPythonPackage rec {
-        name = "${pname}-${version}";
-        pname = "pydns";
-        version = "2.3.6";
-
-        src = fetchPypi {
-          inherit pname version;
-          sha256 = "0qnv7i9824nb5h9psj0rwzjyprwgfiwh5s5raa9avbqazy5hv5pi";
-        };
-
-        doCheck = false;
-      };
-    in if isPy3k then py3 else py2;
-
-  python-daemon = callPackage ../development/python-modules/python-daemon { };
-
-  sympy = callPackage ../development/python-modules/sympy { };
-
-  pilkit = buildPythonPackage rec {
-    name = "pilkit-1.1.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pilkit/${name}.tar.gz";
-      sha256 = "e00585f5466654ea2cdbf7decef9862cb00e16fd363017fa7ef6623a16b0d2c7";
-    };
-
-    preConfigure = ''
-      substituteInPlace setup.py --replace 'nose==1.2.1' 'nose'
-    '';
-
-    # tests fail, see https://github.com/matthewwithanm/pilkit/issues/9
-    doCheck = false;
-
-    buildInputs = with self; [ pillow nose_progressive nose mock blessings ];
-
-    meta = {
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  };
-
-  clint = buildPythonPackage rec {
-    name = "clint-0.5.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/c/clint/${name}.tar.gz";
-      sha256 = "1an5lkkqk1zha47198p42ji3m94xmzx1a03dn7866m87n4r4q8h5";
-    };
-
-
-    LC_ALL="en_US.UTF-8";
-
-    checkPhase = ''
-      ${python.interpreter} test_clint.py
-    '';
-
-    buildInputs = with self; [ mock blessings nose nose_progressive pkgs.glibcLocales ];
-    propagatedBuildInputs = with self; [ pillow blessings args ];
-
-    meta = {
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  };
-
-  argh = buildPythonPackage rec {
-    name = "argh-0.26.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/a/argh/${name}.tar.gz";
-      sha256 = "1nqham81ihffc9xmw85dz3rg3v90rw7h0dp3dy0bh3qkp4n499q6";
-    };
-
-    checkPhase = ''
-      export LANG="en_US.UTF-8"
-      py.test
-    '';
-
-    buildInputs = with self; [ pytest py mock pkgs.glibcLocales ];
-
-    meta = {
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  };
-
-  nose_progressive = buildPythonPackage rec {
-    name = "nose-progressive-1.5.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/n/nose-progressive/${name}.tar.gz";
-      sha256 = "0mfbjv3dcg23q0a130670g7xpfyvgza4wxkj991xxh8w9hs43ga4";
-    };
-
-    buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ pillow blessings ];
-
-    # fails with obscure error
-    doCheck = !isPy3k;
-
-    meta = {
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  };
-
-  blessings = buildPythonPackage rec {
-    name = "blessings-1.6";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/b/blessings/${name}.tar.gz";
-      sha256 = "01rhgn2c3xjf9h1lxij9m05iwf2ba6d0vd7nic26c2gic4q73igd";
-    };
-
-    # 4 failing tests, 2to3
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ ];
-
-    meta = {
-      maintainers = with maintainers; [ domenkozar ];
-    };
-  };
-
-  secretstorage = callPackage ../development/python-modules/secretstorage { };
-
-  semantic = buildPythonPackage rec {
-    name = "semantic-1.0.3";
-
-    disabled = isPy3k;
-
-    propagatedBuildInputs = with self; [ quantities numpy ];
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/semantic/semantic-1.0.3.tar.gz";
-      sha256 = "bbc47dad03dddb1ba5895612fdfa1e43cfb3c497534976cebacd4f3684b505b4";
-    };
-
-    # strange setuptools error (can not import semantic.test)
-    doCheck = false;
-
-    meta = with pkgs.stdenv.lib; {
-      description = "Common Natural Language Processing Tasks for Python";
-      homepage = https://github.com/crm416/semantic;
-      license = licenses.mit;
-    };
-  };
-
-  sandboxlib = buildPythonPackage rec {
-    name = "sandboxlib-${version}";
-    version = "0.31";
-
-    disabled = isPy3k;
-
-    buildInputs = [ self.pbr ];
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sandboxlib/sandboxlib-0.3.1.tar.gz";
-      sha256 = "0csj8hbpylqdkxcpqkcfs73dfvdqkyj23axi8m9drqdi4dhxb41h";
-    };
-
-    meta = {
-      description = "Sandboxing Library for Python";
-      homepage = https://pypi.python.org/pypi/sandboxlib/0.3.1;
-      license = licenses.gpl2;
-    };
-  };
-
-  scales = buildPythonPackage rec {
-    name = "scales-${version}";
-    version = "1.0.9";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/scales/${name}.tar.gz";
-      sha256 = "8b6930f7d4bf115192290b44c757af5e254e3fcfcb75ff9a51f5c96a404e2753";
-    };
-
-    buildInputs = with self; optionals doCheck [ nose ];
-    # No tests included
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ six ];
-
-    meta = {
-      description = "Stats for Python processes";
-      homepage = https://www.github.com/Cue/scales;
-      license = licenses.asl20;
-    };
-  };
-
-  secp256k1 = callPackage ../development/python-modules/secp256k1 {
-    inherit (pkgs) secp256k1 pkgconfig;
-  };
-
-  semantic-version = callPackage ../development/python-modules/semantic-version { };
-
-  sexpdata = buildPythonPackage rec {
-    name = "sexpdata-0.0.2";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sexpdata/${name}.tar.gz";
-      sha256 = "eb696bc66b35def5fb356de09481447dff4e9a3ed926823134e1d0f35eade428";
-    };
-
-    doCheck = false;
-
-    meta = {
-      description = "S-expression parser for Python";
-      homepage = "https://github.com/tkf/sexpdata";
-    };
-  };
-
-  sh = callPackage ../development/python-modules/sh { };
-
-  sipsimple = buildPythonPackage rec {
-    name = "sipsimple-${version}";
-    version = "3.1.1";
-    disabled = isPy3k;
-
-    src = pkgs.fetchdarcs {
-      url = http://devel.ag-projects.com/repositories/python-sipsimple;
-      rev = "release-${version}";
-      sha256 = "0jdilm11f5aahxrzrkxrfx9sgjgkbla1r0wayc5dzd2wmjrdjyrg";
-    };
-
-    preConfigure = ''
-      chmod +x ./deps/pjsip/configure ./deps/pjsip/aconfigure
-    '';
-
-    nativeBuildInputs = [ pkgs.pkgconfig ];
-    buildInputs = with pkgs; [ alsaLib ffmpeg libv4l sqlite libvpx ];
-    propagatedBuildInputs = with self; [ cython pkgs.openssl dnspython dateutil xcaplib msrplib lxml python-otr ];
-
-    meta = {
-      description = "SIP SIMPLE implementation for Python";
-      homepage = http://sipsimpleclient.org/;
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ pSub ];
-    };
-  };
-
-
-  six = callPackage ../development/python-modules/six { };
-
-  smartdc = buildPythonPackage rec {
-    name = "smartdc-0.1.12";
-
-    src = pkgs.fetchurl {
-      url = mirror://pypi/s/smartdc/smartdc-0.1.12.tar.gz;
-      sha256 = "36206f4fddecae080c66faf756712537e650936b879abb23a8c428731d2415fe";
-    };
-
-    propagatedBuildInputs = with self; [ requests http_signature ];
-
-    meta = {
-      description = "Joyent SmartDataCenter CloudAPI connector using http-signature authentication via Requests";
-      homepage = https://github.com/atl/py-smartdc;
-      license = licenses.mit;
-    };
-  };
-
-  socksipy-branch = buildPythonPackage rec {
-    name = "SocksiPy-branch-1.01";
-    src = pkgs.fetchurl {
-      url = mirror://pypi/S/SocksiPy-branch/SocksiPy-branch-1.01.tar.gz;
-      sha256 = "01l41v4g7fy9fzvinmjxy6zcbhgqaif8dhdqm4w90fwcw9h51a8p";
-    };
-    meta = {
-      homepage = http://code.google.com/p/socksipy-branch/;
-      description = "This Python module allows you to create TCP connections through a SOCKS proxy without any special effort";
-      license = licenses.bsd3;
-    };
-  };
-
-  sockjs-tornado = callPackage ../development/python-modules/sockjs-tornado { };
-
-  sorl_thumbnail = buildPythonPackage rec {
-    name = "sorl-thumbnail-11.12";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sorl-thumbnail/${name}.tar.gz";
-      sha256 = "050b9kzbx7jvs3qwfxxshhis090hk128maasy8pi5wss6nx5kyw4";
-    };
-
-    # Disabled due to an improper configuration error when tested against django. This looks like something broken in the test cases for sorl.
-    doCheck = false;
-
-    meta = {
-      homepage = http://sorl-thumbnail.readthedocs.org/en/latest/;
-      description = "Thumbnails for Django";
-      license = licenses.bsd3;
-    };
-  };
-
   supervisor = callPackage ../development/python-modules/supervisor {};
 
   subprocess32 = callPackage ../development/python-modules/subprocess32 { };
@@ -6874,440 +3750,28 @@ in {
 
   hieroglyph = callPackage ../development/python-modules/hieroglyph { };
 
-  sphinx_rtd_theme = buildPythonPackage (rec {
-    name = "sphinx_rtd_theme-0.2.5b2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sphinx_rtd_theme/${name}.tar.gz";
-      sha256 = "0grf16fi4g0p3dfh11b1624ic34iqkjhf5i1g6hvsh4nlm0ll00q";
-    };
-
-    meta = {
-      description = "ReadTheDocs.org theme for Sphinx";
-      homepage = https://github.com/snide/sphinx_rtd_theme/;
-      license = licenses.bsd3;
-      platforms = platforms.unix;
-    };
-  });
-
   guzzle_sphinx_theme = callPackage ../development/python-modules/guzzle_sphinx_theme { };
 
   sphinx-testing = callPackage ../development/python-modules/sphinx-testing { };
 
   sphinxcontrib-bibtex = callPackage ../development/python-modules/sphinxcontrib-bibtex {};
 
-  sphinxcontrib-blockdiag = buildPythonPackage (rec {
-    name = "${pname}-${version}";
-    pname = "sphinxcontrib-blockdiag";
-    version = "1.5.5";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/${pname}/${name}.tar.gz";
-      sha256 = "1w7q2hhpzk159wd35hlbwkh80hnglqa475blcd9vjwpkv1kgkpvw";
-    };
-
-    buildInputs = with self; [ mock sphinx-testing ];
-    propagatedBuildInputs = with self; [ sphinx blockdiag ];
-
-    # Seems to look for files in the wrong dir
-    doCheck = false;
-    checkPhase = ''
-      ${python.interpreter} -m unittest discover -s tests
-    '';
-
-    meta = {
-      description = "Sphinx blockdiag extension";
-      homepage = "https://github.com/blockdiag/sphinxcontrib-blockdiag";
-      maintainers = with maintainers; [ nand0p ];
-      license = licenses.bsd2;
-    };
-  });
-
-  sphinxcontrib-openapi = buildPythonPackage (rec {
-    name = "sphinxcontrib-openapi-0.3.0";
-
-    doCheck = false;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sphinxcontrib-openapi/${name}.tar.gz";
-      sha256 = "0fyniq37nnmhrk4j7mzvg6vfcpb624hb9x70g6mccyw4xrnhadv6";
-    };
-
-    propagatedBuildInputs = with self; [setuptools_scm pyyaml jsonschema sphinxcontrib_httpdomain];
-  });
-
-  sphinxcontrib_httpdomain = buildPythonPackage (rec {
-    name = "sphinxcontrib-httpdomain-1.5.0";
-
-    # Check is disabled due to this issue:
-    # https://bitbucket.org/pypa/setuptools/issue/137/typeerror-unorderable-types-str-nonetype
-    doCheck = false;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sphinxcontrib-httpdomain/${name}.tar.gz";
-      sha256 = "0srg8lwf4m1hyhz942fcdfxh689xphndngiidb575qmfbi89gc7a";
-    };
-
-    propagatedBuildInputs = with self; [sphinx];
-
-    meta = {
-      description = "Provides a Sphinx domain for describing RESTful HTTP APIs";
-
-      homepage = https://bitbucket.org/birkenfeld/sphinx-contrib;
-
-      license = "BSD";
-    };
-  });
-
   sphinx-navtree = callPackage ../development/python-modules/sphinx-navtree {};
 
-  sphinxcontrib_newsfeed = buildPythonPackage (rec {
-    name = "sphinxcontrib-newsfeed-${version}";
-    version = "0.1.4";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sphinxcontrib-newsfeed/${name}.tar.gz";
-      sha256 = "1d7gam3mn8v4in4p16yn3v10vps7nnaz6ilw99j4klij39dqd37p";
-    };
-
-    propagatedBuildInputs = with self; [sphinx];
-
-    meta = {
-      description = "Extension for adding a simple Blog, News or Announcements section to a Sphinx website";
-      homepage = https://bitbucket.org/prometheus/sphinxcontrib-newsfeed;
-      license = licenses.bsd2;
-    };
-  });
-
-  sphinxcontrib_plantuml = buildPythonPackage (rec {
-    name = "sphinxcontrib-plantuml-0.7";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sphinxcontrib-plantuml/${name}.tar.gz";
-      sha256 = "011yprqf41dcm1824zgk2w8vi9115286pmli6apwhlrsxc6b6cwv";
-    };
-
-    # No tests included.
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [sphinx plantuml];
-
-    meta = {
-      description = "Provides a Sphinx domain for embedding UML diagram with PlantUML";
-      homepage = https://bitbucket.org/birkenfeld/sphinx-contrib;
-      license = with licenses; [ bsd2 ];
-    };
-  });
-
-  sphinxcontrib-spelling = buildPythonPackage (rec {
-    name = "${pname}-${version}";
-    pname = "sphinxcontrib-spelling";
-    version = "2.2.0";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/${pname}/${name}.tar.gz";
-      sha256 = "1f0fymrk4kvhqs0vj9gay4lhacxkfrlrpj4gvg0p4wjdczplxd3z";
-    };
-    propagatedBuildInputs = with self; [ sphinx pyenchant pbr ];
-    # No tests included
-    doCheck = false;
-    meta = {
-      description = "Sphinx spelling extension";
-      homepage = https://bitbucket.org/dhellmann/sphinxcontrib-spelling;
-      maintainers = with maintainers; [ nand0p ];
-      license = licenses.bsd2;
-    };
-  });
-
   sphinx-jinja = callPackage ../development/python-modules/sphinx-jinja { };
 
-  sphinx_pypi_upload = buildPythonPackage (rec {
-    name = "Sphinx-PyPI-upload-0.2.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/S/Sphinx-PyPI-upload/${name}.tar.gz";
-      sha256 = "5f919a47ce7a7e6028dba809de81ae1297ac192347cf6fc54efca919d4865159";
-    };
-
-    meta = {
-      description = "Setuptools command for uploading Sphinx documentation to PyPI";
-
-      homepage = https://bitbucket.org/jezdez/sphinx-pypi-upload/;
-
-      license = "BSD";
-    };
-  });
-
   splinter = callPackage ../development/python-modules/splinter { };
 
   spotipy = callPackage ../development/python-modules/spotipy { };
 
-  Pweave = buildPythonPackage (rec {
-    name = "Pweave-0.25";
-
-    src = pkgs.fetchurl {
-      url = "https://pypi.python.org/packages/f6/2f/e9735b04747ae5ef29d64e0b215fb0e11f1c89826097ac17342efebbbb84/Pweave-0.25.tar.gz";
-      sha256 = "1isqjz66c7vxdaqfwpkspki9p4054dsfx7pznwz28ik634hnj3qw";
-    };
-
-    buildInputs = with self; [ mock pkgs.glibcLocales ];
-
-    propagatedBuildInputs = with self; [
-      matplotlib
-    ];
-
-    # fails due to trying to run CSS as test
-    doCheck = false;
-
-    meta = {
-      description = "Scientific reports with embedded python computations with reST, LaTeX or markdown";
-      homepage = http://mpastell.com/pweave/ ;
-      license = licenses.bsd3;
-    };
-  });
-
   sqlalchemy = callPackage ../development/python-modules/sqlalchemy { };
 
-  SQLAlchemy-ImageAttach = buildPythonPackage rec {
-    pname = "SQLAlchemy-ImageAttach";
-    version = "1.0.0";
-    name = "${pname}-${version}";
-
-    src = pkgs.fetchFromGitHub {
-      repo = "sqlalchemy-imageattach";
-      owner = "dahlia";
-      rev = "${version}";
-      sha256 = "0ba97pn5dh00qvxyjbr0mr3pilxqw5kb3a6jd4wwbsfcv6nngqig";
-    };
-
-    checkInputs = with self; [ pytest Wand.imagemagick webob ];
-    propagatedBuildInputs = with self; [ sqlalchemy Wand ];
-
-    checkPhase = ''
-      cd tests
-      export MAGICK_HOME="${pkgs.imagemagick.dev}"
-      export PYTHONPATH=$PYTHONPATH:../
-      py.test
-      cd ..
-    '';
-    doCheck = !isPyPy;  # failures due to sqla version mismatch
-
-    meta = {
-      homepage = https://github.com/dahlia/sqlalchemy-imageattach;
-      description = "SQLAlchemy extension for attaching images to entity objects";
-      license = licenses.mit;
-    };
-  };
-
   sqlalchemy_migrate = callPackage ../development/python-modules/sqlalchemy-migrate { };
 
-  sqlparse = buildPythonPackage rec {
-    name = "sqlparse-${version}";
-    version = "0.2.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sqlparse/${name}.tar.gz";
-      sha256 = "08dszglfhf1c4rwqinkbp4x55v0b90rgm1fxc1l4dy965imjjinl";
-    };
-
-    buildInputs = with self; [ pytest ];
-    checkPhase = ''
-      py.test
-    '';
-
-    # Package supports 3.x, but tests are clearly 2.x only.
-    doCheck = !isPy3k;
-
-    meta = {
-      description = "Non-validating SQL parser for Python";
-      longDescription = ''
-        Provides support for parsing, splitting and formatting SQL statements.
-      '';
-      homepage = https://github.com/andialbrecht/sqlparse;
-      license = licenses.bsd3;
-    };
-  };
-
   statsmodels = callPackage ../development/python-modules/statsmodels { };
 
-  python_statsd = buildPythonPackage rec {
-    name = "python-statsd-${version}";
-    version = "1.6.0";
-    disabled = isPy3k;  # next release will be py3k compatible
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/python-statsd/${name}.tar.gz";
-      sha256 = "3d2fc153e0d894aa9983531ef47d20d75bd4ee9fd0e46a9d82f452dde58a0a71";
-    };
-
-    buildInputs = with self; [ mock nose coverage ];
-
-    meta = {
-      description = "A client for Etsy's node-js statsd server";
-      homepage = https://github.com/WoLpH/python-statsd;
-      license = licenses.bsd3;
-    };
-  };
-
-
-  stompclient = buildPythonPackage (rec {
-    name = "stompclient-0.3.2";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/stompclient/${name}.tar.gz";
-      sha256 = "95a4e98dd0bba348714439ea11a25ee8a74acb8953f95a683924b5bf2a527e4e";
-    };
-
-    buildInputs = with self; [ mock nose ];
-
-    # XXX: Ran 0 tests in 0.217s
-
-    meta = {
-      description = "Lightweight and extensible STOMP messaging client";
-      homepage = https://bitbucket.org/hozn/stompclient;
-      license = licenses.asl20;
-    };
-  });
-
-  subdownloader = buildPythonPackage rec {
-    version = "2.0.18";
-    name = "subdownloader-${version}";
-
-    src = pkgs.fetchurl {
-      url = "https://launchpad.net/subdownloader/trunk/2.0.18/+download/subdownloader_2.0.18.orig.tar.gz";
-      sha256 = "0manlfdpb585niw23ibb8n21mindd1bazp0pnxvmdjrp2mnw97ig";
-    };
-
-    propagatedBuildInputs = with self; [ mmpython pyqt4 ];
-
-    setup = ''
-      import os
-      import sys
-
-      try:
-          if os.environ.get("NO_SETUPTOOLS"):
-              raise ImportError()
-          from setuptools import setup, Extension
-          SETUPTOOLS = True
-      except ImportError:
-          SETUPTOOLS = False
-          # Use distutils.core as a fallback.
-          # We won t be able to build the Wheel file on Windows.
-          from distutils.core import setup, Extension
-
-      with open("README") as fp:
-          long_description = fp.read()
-
-      requirements = [ ]
-
-      install_options = {
-          "name": "subdownloader",
-          "version": "2.0.18",
-          "description": "Tool for automatic download/upload subtitles for videofiles using fast hashing",
-          "long_description": long_description,
-          "url": "http://www.subdownloader.net",
-
-          "scripts": ["run.py"],
-          "packages": ["cli", "FileManagement", "gui", "languages", "modules"],
-
-      }
-      if SETUPTOOLS:
-          install_options["install_requires"] = requirements
-
-      setup(**install_options)
-    '';
-
-    postUnpack = ''
-      echo '${setup}' > $sourceRoot/setup.py
-    '';
-
-    meta = {
-      description = "Tool for automatic download/upload subtitles for videofiles using fast hashing";
-      homepage = http://www.subdownloader.net;
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ ];
-    };
-  };
-
-  subunit = buildPythonPackage rec {
-    name = pkgs.subunit.name;
-    src = pkgs.subunit.src;
-
-    propagatedBuildInputs = with self; [ testtools testscenarios ];
-    nativeBuildInputs = [ pkgs.pkgconfig ];
-    buildInputs = [ pkgs.check pkgs.cppunit ];
-
-    patchPhase = ''
-      sed -i 's/version=VERSION/version="${pkgs.subunit.version}"/' setup.py
-    '';
-
-    meta = pkgs.subunit.meta;
-  };
-
-  sure = buildPythonPackage rec {
-    name = "sure-${version}";
-    version = "1.2.24";
-
-    LC_ALL="en_US.UTF-8";
-
-    disabled = isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sure/${name}.tar.gz";
-      sha256 = "1lyjq0rvkbv585dppjdq90lbkm6gyvag3wgrggjzyh7cpyh5c12w";
-    };
-
-    buildInputs = with self; [ nose pkgs.glibcLocales ];
-
-    propagatedBuildInputs = with self; [ six mock ];
-
-    meta = {
-      description = "Utility belt for automated testing";
-      homepage = https://falcao.it/sure/;
-      license = licenses.gpl3Plus;
-    };
-  };
-
   structlog = callPackage ../development/python-modules/structlog { };
 
-  svgwrite = buildPythonPackage rec {
-    name = "svgwrite-${version}";
-    version = "1.1.6";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/svgwrite/${name}.tar.gz";
-      sha256 = "1f018813072aa4d7e95e58f133acb3f68fa7de0a0d89ec9402cc38406a0ec5b8";
-    };
-
-    buildInputs = with self; [ setuptools ];
-    propagatedBuildInputs = with self; [ pyparsing ];
-
-    meta = {
-      description = "A Python library to create SVG drawings";
-      homepage = https://bitbucket.org/mozman/svgwrite;
-      license = licenses.mit;
-    };
-  };
-
-  freezegun = buildPythonPackage rec {
-    name = "freezegun-${version}";
-    version = "0.3.8";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/f/freezegun/freezegun-${version}.tar.gz";
-      sha256 = "1sf38d3ibv1jhhvr52x7dhrsiyqk1hm165dfv8w8wh0fhmgxg151";
-    };
-
-    propagatedBuildInputs = with self; [
-      dateutil six
-    ];
-    buildInputs = [ self.mock self.nose ];
-
-    meta = with stdenv.lib; {
-      description = "FreezeGun: Let your Python tests travel through time";
-      homepage = "https://github.com/spulec/freezegun";
-      license = licenses.asl20;
-    };
-  };
-
   sybil = callPackage ../development/python-modules/sybil { };
 
   # legacy alias
@@ -7319,126 +3783,10 @@ in {
 
   tabulate = callPackage ../development/python-modules/tabulate { };
 
-  taskw = buildPythonPackage rec {
-    version = "1.0.3";
-    name = "taskw-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/taskw/${name}.tar.gz";
-      sha256 = "1fa7bv5996ppfbryv02lpnlhk5dra63lhlwrb1i4ifqbziqfqh5n";
-    };
-
-    patches = [ ../development/python-modules/taskw/use-template-for-taskwarrior-install-path.patch ];
-    postPatch = ''
-      substituteInPlace taskw/warrior.py \
-        --replace '@@taskwarrior@@' '${pkgs.taskwarrior}'
-    '';
-
-    # https://github.com/ralphbean/taskw/issues/98
-    doCheck = false;
-
-    buildInputs = with self; [ nose pkgs.taskwarrior tox ];
-    propagatedBuildInputs = with self; [ six dateutil pytz ];
-
-    meta = {
-      homepage =  https://github.com/ralphbean/taskw;
-      description = "Python bindings for your taskwarrior database";
-      license = licenses.gpl3Plus;
-      platforms = platforms.all;
-      maintainers = with maintainers; [ pierron ];
-    };
-  };
-
   tempita = callPackage ../development/python-modules/tempita { };
 
   terminado = callPackage ../development/python-modules/terminado { };
 
-  terminaltables = buildPythonPackage rec {
-    name = "terminaltables-${version}";
-    version = "3.1.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/terminaltables/${name}.tar.gz";
-      sha256 = "f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81";
-    };
-
-    meta = {
-      description = "Display simple tables in terminals";
-      homepage = "https://github.com/Robpol86/terminaltables";
-      license = licenses.mit;
-    };
-  };
-
-  testscenarios = buildPythonPackage rec {
-    name = "testscenarios-${version}";
-    version = "0.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/testscenarios/${name}.tar.gz";
-      sha256 = "1671jvrvqlmbnc42j7pc5y6vc37q44aiwrq0zic652pxyy2fxvjg";
-    };
-
-    propagatedBuildInputs = with self; [ testtools ];
-
-    meta = {
-      description = "A pyunit extension for dependency injection";
-      homepage = https://pypi.python.org/pypi/testscenarios;
-      license = licenses.asl20;
-    };
-  };
-
-  testpath = buildPythonPackage rec {
-    pname = "testpath";
-    version = "0.3";
-    name = "${pname}-${version}";
-
-    #format = "flit";
-    #src = pkgs.fetchFromGitHub {
-    #  owner = "jupyter";
-    #  repo = pname;
-    #  rev = "${version}";
-    #  sha256 = "1ghzmkrsrk9xrj42pjsq5gl7v3g2v0ji0xy0xzzxp5aizd3wrvl9";
-    #};
-    #doCheck = true;
-    #checkPhase = ''
-    #  ${python.interpreter} -m unittest discover
-    #'';
-    format = "wheel";
-    src = fetchPypi {
-      inherit pname version format;
-      sha256 = "f16b2cb3b03e1ada4fb0200b265a4446f92f3ba4b9d88ace34f51c54ab6d294e";
-    };
-
-    meta = {
-      description = "Test utilities for code working with files and commands";
-      license = licenses.mit;
-      homepage = https://github.com/jupyter/testpath;
-    };
-  };
-
-  testrepository = buildPythonPackage rec {
-    name = "testrepository-${version}";
-    version = "0.0.20";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/testrepository/${name}.tar.gz";
-      sha256 = "1ssqb07c277010i6gzzkbdd46gd9mrj0bi0i8vn560n2k2y4j93m";
-    };
-
-    buildInputs = with self; [ testtools testresources ];
-    propagatedBuildInputs = with self; [ pbr subunit fixtures ];
-
-    checkPhase = ''
-      ${python.interpreter} ./testr
-    '';
-
-    meta = {
-      description = "A database of test results which can be used as part of developer workflow";
-      homepage = https://pypi.python.org/pypi/testrepository;
-      license = licenses.bsd2;
-    };
-  };
-
   testresources = callPackage ../development/python-modules/testresources { };
 
   testtools = callPackage ../development/python-modules/testtools { };
@@ -7447,26 +3795,6 @@ in {
 
   transitions = callPackage ../development/python-modules/transitions { };
 
-  python_mimeparse = buildPythonPackage rec {
-    name = "python-mimeparse-${version}";
-    version = "0.1.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/python-mimeparse/${name}.tar.gz";
-      sha256 = "1hyxg09kaj02ri0rmwjqi86wk4nd1akvv7n0dx77azz76wga4s9w";
-    };
-
-    # error: invalid command 'test'
-    doCheck = false;
-
-    meta = {
-      description = "A module provides basic functions for parsing mime-type names and matching them against a list of media-ranges";
-      homepage = https://code.google.com/p/mimeparse/;
-      license = licenses.mit;
-    };
-  };
-
-
   extras = callPackage ../development/python-modules/extras { };
 
   texttable = callPackage ../development/python-modules/texttable { };
@@ -7475,68 +3803,6 @@ in {
 
   tifffile = callPackage ../development/python-modules/tifffile { };
 
-  # Tkinter/tkinter is part of the Python standard library.
-  # The Python interpreters in Nixpkgs come without tkinter by default.
-  # To make the module available, we make it available as any other
-  # Python package.
-  tkinter = let
-    py = python.override{x11Support=true;};
-  in buildPythonPackage rec {
-    name = "tkinter-${python.version}";
-    src = py;
-    format = "other";
-
-    disabled = isPyPy;
-
-    installPhase = ''
-      # Move the tkinter module
-      mkdir -p $out/${py.sitePackages}
-      mv lib/${py.libPrefix}/lib-dynload/_tkinter* $out/${py.sitePackages}/
-    '' + stdenv.lib.optionalString (!stdenv.isDarwin) ''
-      # Update the rpath to point to python without x11Support
-      old_rpath=$(patchelf --print-rpath $out/${py.sitePackages}/_tkinter*)
-      new_rpath=$(sed "s#${py}#${python}#g" <<< "$old_rpath" )
-      patchelf --set-rpath $new_rpath $out/${py.sitePackages}/_tkinter*
-    '';
-
-    meta = py.meta;
-  };
-
-  tlslite = buildPythonPackage rec {
-    name = "tlslite-${version}";
-    version = "0.4.8";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/tlslite/${name}.tar.gz";
-      sha256 = "1fxx6d3nw5r1hqna1h2jvqhcygn9fyshlm0gh3gp0b1ji824gd6r";
-    };
-
-    meta = {
-      description = "A pure Python implementation of SSL and TLS";
-      homepage = https://pypi.python.org/pypi/tlslite;
-      license = licenses.bsd3;
-    };
-  };
-
-  qrcode = buildPythonPackage rec {
-    name = "qrcode-${version}";
-    version = "5.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/q/qrcode/${name}.tar.gz";
-      sha256 = "0kljfrfq0c2rmxf8am57333ia41kd0snbm2rnqbdy816hgpcq5a1";
-    };
-
-    propagatedBuildInputs = with self; [ six pillow pymaging_png ];
-    checkInputs = [ self.mock ];
-
-    meta = {
-      description = "Quick Response code generation for Python";
-      homepage = "https://pypi.python.org/pypi/qrcode";
-      license = licenses.bsd3;
-    };
-  };
-
   tmdb3 = callPackage ../development/python-modules/tmdb3 { };
 
   toolz = callPackage ../development/python-modules/toolz { };
@@ -7549,239 +3815,14 @@ in {
 
   smmap2 = callPackage ../development/python-modules/smmap2 { };
 
-  traits = buildPythonPackage rec {
-    name = "traits-${version}";
-    version = "4.6.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/traits/${name}.tar.gz";
-      sha256 = "0w43qv36wnrimlh0nzzgg81315a18yza3vk494wqxf1l19g390jx";
-    };
-
-    # Use pytest because its easier to discover tests
-    buildInputs = with self; [ pytest ];
-    checkPhase = ''
-      py.test $out/${python.sitePackages}
-    '';
-
-    # Test suite is broken for 3.x on latest release
-    # https://github.com/enthought/traits/issues/187
-    # https://github.com/enthought/traits/pull/188
-    # Furthermore, some tests fail due to being in a chroot
-    doCheck = isPy33;
-
-    propagatedBuildInputs = with self; [ numpy ];
-
-    meta = {
-      description = "Explicitly typed attributes for Python";
-      homepage = https://pypi.python.org/pypi/traits;
-      license = "BSD";
-    };
-  };
-
-
   transaction = callPackage ../development/python-modules/transaction { };
 
-
-  transmissionrpc = buildPythonPackage rec {
-    name = "transmissionrpc-${version}";
-    version = "0.11";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/transmissionrpc/${name}.tar.gz";
-      sha256 = "ec43b460f9fde2faedbfa6d663ef495b3fd69df855a135eebe8f8a741c0dde60";
-    };
-
-    propagatedBuildInputs = with self; [ six ];
-
-    meta = {
-      description = "Python implementation of the Transmission bittorent client RPC protocol";
-      homepage = https://pypi.python.org/pypi/transmissionrpc/;
-      license = licenses.mit;
-    };
-  };
-
-  eggdeps  = buildPythonPackage rec {
-     name = "eggdeps-${version}";
-     version = "0.4";
-
-     src = pkgs.fetchurl {
-       url = "mirror://pypi/t/tl.eggdeps/tl.${name}.tar.gz";
-       sha256 = "a99de5e4652865224daab09b2e2574a4f7c1d0d9a267048f9836aa914a2caf3a";
-     };
-
-     # tests fail, see http://hydra.nixos.org/build/4316603/log/raw
-     doCheck = false;
-
-     propagatedBuildInputs = with self; [ zope_interface zope_testing ];
-     meta = {
-       description = "A tool which computes a dependency graph between active Python eggs";
-       homepage = http://thomas-lotze.de/en/software/eggdeps/;
-       license = licenses.zpl20;
-     };
-   };
-
   TurboCheetah = callPackage ../development/python-modules/TurboCheetah { };
 
   tweepy = callPackage ../development/python-modules/tweepy { };
 
-  twiggy = buildPythonPackage rec {
-    name = "Twiggy-${version}";
-    version = "0.4.5";
-
-    src = pkgs.fetchurl {
-      url    = "mirror://pypi/T/Twiggy/Twiggy-0.4.5.tar.gz";
-      sha256 = "4e8f1894e5aee522db6cb245ccbfde3c5d1aa08d31330c7e3af783b0e66eec23";
-    };
-
-    doCheck = false;
-
-    meta = {
-      homepage = http://twiggy.wearpants.org;
-      # Taken from http://i.wearpants.org/blog/meet-twiggy/
-      description = "Twiggy is the first totally new design for a logger since log4j";
-      license     = licenses.bsd3;
-      platforms = platforms.all;
-      maintainers = with maintainers; [ pierron ];
-    };
-  };
-
   twill = callPackage ../development/python-modules/twill { };
 
-  twitter = buildPythonPackage rec {
-    name = "twitter-${version}";
-    version = "1.15.0";
-
-    src = pkgs.fetchurl {
-      url    = "mirror://pypi/t/twitter/${name}.tar.gz";
-      sha256 = "1m6b17irb9klc345k8174pni724jzy2973z2x2jg69h83hipjw2c";
-    };
-
-    doCheck = false;
-
-    meta = {
-      description = "Twitter API library";
-      license     = licenses.mit;
-      maintainers = with maintainers; [ thoughtpolice ];
-    };
-  };
-
-  twitter-common-collections = buildPythonPackage rec {
-    pname   = "twitter.common.collections";
-    version = "0.3.9";
-    name    = "${pname}-${version}";
-
-    src = self.fetchPypi {
-      inherit pname version;
-      sha256 = "0wf8ks6y2kalx2inzayq0w4kh3kg25daik1ac7r6y79i03fslsc5";
-    };
-
-    propagatedBuildInputs = with self; [ twitter-common-lang ];
-
-    meta = {
-      description = "Twitter's common collections";
-      homepage    = "https://twitter.github.io/commons/";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ copumpkin ];
-    };
-  };
-
-  twitter-common-confluence = buildPythonPackage rec {
-    pname   = "twitter.common.confluence";
-    version = "0.3.9";
-    name    = "${pname}-${version}";
-
-    src = self.fetchPypi {
-      inherit pname version;
-      sha256 = "1i2fjn23cmms81f1fhvvkg6hgzqpw07dlqg3ydz6cqv2glw7zq26";
-    };
-
-    propagatedBuildInputs = with self; [ twitter-common-log ];
-
-    meta = {
-      description = "Twitter's API to the confluence wiki";
-      homepage    = "https://twitter.github.io/commons/";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ copumpkin ];
-    };
-  };
-
-  twitter-common-dirutil = buildPythonPackage rec {
-    pname   = "twitter.common.dirutil";
-    version = "0.3.9";
-    name    = "${pname}-${version}";
-
-    src = self.fetchPypi {
-      inherit pname version;
-      sha256 = "1wpjfmmxsdwnbx5dl13is4zkkpfcm94ksbzas9y2qhgswfa9jqha";
-    };
-
-    propagatedBuildInputs = with self; [ twitter-common-lang ];
-
-    meta = {
-      description = "Utilities for manipulating and finding files and directories";
-      homepage    = "https://twitter.github.io/commons/";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ copumpkin ];
-    };
-  };
-
-  twitter-common-lang = buildPythonPackage rec {
-    pname   = "twitter.common.lang";
-    version = "0.3.9";
-    name    = "${pname}-${version}";
-
-    src = self.fetchPypi {
-      inherit pname version;
-      sha256 = "1l8fmnsrx7hgg3ivslg588rnl9n1gfjn2w6224fr8rs7zmkd5lan";
-    };
-
-    meta = {
-      description = "Twitter's 2.x / 3.x compatibility swiss-army knife";
-      homepage    = "https://twitter.github.io/commons/";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ copumpkin ];
-    };
-  };
-
-  twitter-common-log = buildPythonPackage rec {
-    pname   = "twitter.common.log";
-    version = "0.3.9";
-    name    = "${pname}-${version}";
-
-    src = self.fetchPypi {
-      inherit pname version;
-      sha256 = "1bdzbxx2bxwpf57xaxfz1nblzgfvhlidz8xqd7s84c62r3prh02v";
-    };
-
-    propagatedBuildInputs = with self; [ twitter-common-options twitter-common-dirutil ];
-
-    meta = {
-      description = "Twitter's common logging library";
-      homepage    = "https://twitter.github.io/commons/";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ copumpkin ];
-    };
-  };
-
-  twitter-common-options = buildPythonPackage rec {
-    pname   = "twitter.common.options";
-    version = "0.3.9";
-    name    = "${pname}-${version}";
-
-    src = self.fetchPypi {
-      inherit pname version;
-      sha256 = "0d1czag5mcxg0vcnlklspl2dvdab9kmznsycj04d3vggi158ljrd";
-    };
-
-    meta = {
-      description = "Twitter's optparse wrapper";
-      homepage    = "https://twitter.github.io/commons/";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ copumpkin ];
-    };
-  };
-
   twine = callPackage ../development/python-modules/twine { };
 
   twisted = callPackage ../development/python-modules/twisted { };
@@ -7796,161 +3837,10 @@ in {
 
   ukpostcodeparser = callPackage ../development/python-modules/ukpostcodeparser { };
 
-  umalqurra = buildPythonPackage rec {
-    name = "umalqurra-${version}";
-    version = "0.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/u/umalqurra/umalqurra-0.2.tar.gz";
-      sha256 = "719f6a36f908ada1c29dae0d934dd0f1e1f6e3305784edbec23ad719397de678";
-    };
-
-    # No tests included
-    doCheck = false;
-
-    # See for license
-    # https://github.com/tytkal/python-hijiri-ummalqura/issues/4
-    meta = {
-      description = "Date Api that support Hijri Umalqurra calendar";
-      homepage = https://github.com/tytkal/python-hijiri-ummalqura;
-      license = with licenses; [ publicDomain ];
-    };
-
-  };
-
   umemcache = callPackage ../development/python-modules/umemcache {};
 
-  unicodecsv = buildPythonPackage rec {
-    version = "0.14.1";
-    name = "unicodecsv-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/u/unicodecsv/${name}.tar.gz";
-      sha256 = "1z7pdwkr6lpsa7xbyvaly7pq3akflbnz8gq62829lr28gl1hi301";
-    };
-
-    # ImportError: No module named runtests
-    doCheck = false;
-
-    meta = {
-      description = "Drop-in replacement for Python2's stdlib csv module, with unicode support";
-      homepage = https://github.com/jdunck/python-unicodecsv;
-      maintainers = with maintainers; [ koral ];
-    };
-  };
-
-  unittest2 = buildPythonPackage rec {
-    version = "1.1.0";
-    name = "unittest2-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/u/unittest2/unittest2-${version}.tar.gz";
-      sha256 = "0y855kmx7a8rnf81d3lh5lyxai1908xjp0laf4glwa4c8472m212";
-    };
-
-    # # 1.0.0 and up create a circle dependency with traceback2/pbr
-    doCheck = false;
-
-    postPatch = ''
-      # argparse is needed for python < 2.7, which we do not support anymore.
-      substituteInPlace setup.py --replace "argparse" ""
-
-      # # fixes a transient error when collecting tests, see https://bugs.launchpad.net/python-neutronclient/+bug/1508547
-      sed -i '510i\        return None, False' unittest2/loader.py
-      # https://github.com/pypa/packaging/pull/36
-      sed -i 's/version=VERSION/version=str(VERSION)/' setup.py
-    '';
-
-    propagatedBuildInputs = with self; [ six traceback2 ];
-
-    meta = {
-      description = "A backport of the new features added to the unittest testing framework";
-      homepage = https://pypi.python.org/pypi/unittest2;
-    };
-  };
-
-    unittest-xml-reporting = callPackage ../development/python-modules/unittest-xml-reporting { };
-
-    uritemplate_py = buildPythonPackage rec {
-    name = "uritemplate.py-${version}";
-    version = "3.0.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/u/uritemplate.py/${name}.tar.gz";
-      sha256 = "1k5zvc5fyyrgv33mi3p86a9jn5n0pqffs9cviz92fw6q1kf7zvmr";
-    };
-
-    meta = with stdenv.lib; {
-      homepage = https://github.com/uri-templates/uritemplate-py;
-      description = "Python implementation of URI Template";
-      license = licenses.asl20;
-      maintainers = with maintainers; [ pSub ];
-    };
-  };
-
   uritools = callPackage ../development/python-modules/uritools { };
 
-  traceback2 = buildPythonPackage rec {
-    version = "1.4.0";
-    name = "traceback2-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/traceback2/traceback2-${version}.tar.gz";
-      sha256 = "0c1h3jas1jp1fdbn9z2mrgn3jj0hw1x3yhnkxp7jw34q15xcdb05";
-    };
-
-    propagatedBuildInputs = with self; [ pbr linecache2 ];
-    # circular dependencies for tests
-    doCheck = false;
-
-    meta = {
-      description = "A backport of traceback to older supported Pythons";
-      homepage = https://pypi.python.org/pypi/traceback2/;
-    };
-  };
-
-  linecache2 = buildPythonPackage rec {
-    name = "linecache2-${version}";
-    version = "1.0.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/l/linecache2/${name}.tar.gz";
-      sha256 = "0z79g3ds5wk2lvnqw0y2jpakjf32h95bd9zmnvp7dnqhf57gy9jb";
-    };
-
-    buildInputs = with self; [ pbr ];
-    # circular dependencies for tests
-    doCheck = false;
-
-    meta = with stdenv.lib; {
-      description = "A backport of linecache to older supported Pythons";
-      homepage = "https://github.com/testing-cabal/linecache2";
-    };
-  };
-
-  upass = buildPythonPackage rec {
-    version = "0.1.4";
-    name = "upass-${version}";
-
-    src = pkgs.fetchurl {
-      url = "https://github.com/Kwpolska/upass/archive/v${version}.tar.gz";
-      sha256 = "0f2lyi7xhvb60pvzx82dpc13ksdj5k92ww09czclkdz8k0dxa7hb";
-    };
-
-    propagatedBuildInputs = with self; [
-      pyperclip
-      urwid
-    ];
-
-    doCheck = false;
-
-    meta = {
-      description = "Console UI for pass";
-      homepage = https://github.com/Kwpolska/upass;
-      license = licenses.bsd3;
-    };
-  };
-
   update_checker = callPackage ../development/python-modules/update_checker {};
 
   uritemplate = callPackage ../development/python-modules/uritemplate { };
@@ -7959,70 +3849,12 @@ in {
 
   uproot-methods = callPackage ../development/python-modules/uproot-methods { };
 
-  uptime = buildPythonPackage rec {
-    name = "uptime-${version}";
-    version = "3.0.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/u/uptime/${name}.tar.gz";
-      sha256 = "0wr9jkixprlywz0plyn5p42a5fd31aiwvjrxdvj7r02vfxa04c3w";
-    };
-
-    meta = with stdenv.lib; {
-      homepage = https://github.com/Cairnarvon/uptime;
-      description = "Cross-platform way to retrieve system uptime and boot time";
-      license = licenses.bsd2;
-      maintainers = with maintainers; [ rob ];
-    };
-  };
-
   urlgrabber = callPackage ../development/python-modules/urlgrabber {};
 
   urwid = callPackage ../development/python-modules/urwid {};
 
-  urwidtrees = buildPythonPackage rec {
-    name = "urwidtrees-${rev}";
-    rev = "1.0";
-
-    src = pkgs.fetchFromGitHub {
-      owner = "pazz";
-      repo = "urwidtrees";
-      inherit rev;
-      sha256 = "03gpcdi45z2idy1fd9zv8v9naivmpfx65hshm8r984k9wklv1dsa";
-    };
-
-    propagatedBuildInputs = with self; [ urwid ];
-
-    meta = {
-      description = "Tree widgets for urwid";
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ ];
-    };
-  };
-
   user-agents = callPackage ../development/python-modules/user-agents { };
 
-  pyuv = buildPythonPackage rec {
-    name = "pyuv-1.2.0";
-    disabled = isPyPy;  # see https://github.com/saghul/pyuv/issues/49
-
-    src = pkgs.fetchurl {
-      url = "https://github.com/saghul/pyuv/archive/${name}.tar.gz";
-      sha256 = "19yl1l5l6dq1xr8xcv6dhx1avm350nr4v2358iggcx4ma631rycx";
-    };
-
-    patches = [ ../development/python-modules/pyuv-external-libuv.patch ];
-
-    buildInputs = with self; [ pkgs.libuv ];
-
-    meta = {
-      description = "Python interface for libuv";
-      homepage = https://github.com/saghul/pyuv;
-      repositories.git = git://github.com/saghul/pyuv.git;
-      license = licenses.mit;
-    };
-  };
-
   vega_datasets = callPackage ../development/python-modules/vega_datasets { };
 
   virtkey = callPackage ../development/python-modules/virtkey { };
@@ -8031,159 +3863,6 @@ in {
 
   virtualenv = callPackage ../development/python-modules/virtualenv { };
 
-  virtualenv-clone = buildPythonPackage rec {
-    name = "virtualenv-clone-0.2.5";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/v/virtualenv-clone/${name}.tar.gz";
-      sha256 = "7087ba4eb48acfd5209a3fd03e15d072f28742619127c98333057e32748d91c4";
-    };
-
-    buildInputs = with self; [pytest];
-    propagatedBuildInputs = with self; [virtualenv];
-
-    # needs tox to run the tests
-    doCheck = false;
-
-    meta = {
-      description = "Script to clone virtualenvs";
-      license = licenses.mit;
-      platforms = platforms.all;
-    };
-  };
-
-  virtualenvwrapper = buildPythonPackage (rec {
-    name = "virtualenvwrapper-4.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/v/virtualenvwrapper/${name}.tar.gz";
-      sha256 = "514cbc22218347bf7b54bdbe49e1a5f550d2d53b1ad2491c10e91ddf48fb528f";
-    };
-
-    # pip depend on $HOME setting
-    preConfigure = "export HOME=$TMPDIR";
-
-    buildInputs = with self; [ pbr pip pkgs.which ];
-    propagatedBuildInputs = with self; [
-      stevedore
-      virtualenv
-      virtualenv-clone
-    ];
-
-    postPatch = ''
-      for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
-        substituteInPlace "$file" --replace "which" "${pkgs.which}/bin/which"
-
-        # We can't set PYTHONPATH in a normal way (like exporting in a wrapper
-        # script) because the user has to evaluate the script and we don't want
-        # modify the global PYTHONPATH which would affect the user's
-        # environment.
-        # Furthermore it isn't possible to just use VIRTUALENVWRAPPER_PYTHON
-        # for this workaround, because this variable is well quoted inside the
-        # shell script.
-        # (the trailing " -" is required to only replace things like these one:
-        # "$VIRTUALENVWRAPPER_PYTHON" -c "import os,[...] and not in
-        # if-statements or anything like that.
-        # ...and yes, this "patch" is hacky :)
-        substituteInPlace "$file" --replace '"$VIRTUALENVWRAPPER_PYTHON" -' 'env PYTHONPATH="$VIRTUALENVWRAPPER_PYTHONPATH" "$VIRTUALENVWRAPPER_PYTHON" -'
-      done
-    '';
-
-    postInstall = ''
-      # This might look like a dirty hack but we can't use the makeWrapper function because
-      # the wrapped file were then called via "exec". The virtualenvwrapper shell scripts
-      # aren't normal executables. Instead, the user has to evaluate them.
-
-      for file in "virtualenvwrapper.sh" "virtualenvwrapper_lazy.sh"; do
-        local wrapper="$out/bin/$file"
-        local wrapped="$out/bin/.$file-wrapped"
-        mv "$wrapper" "$wrapped"
-
-        # WARNING: Don't indent the lines below because that would break EOF
-        cat > "$wrapper" << EOF
-export PATH="${python}/bin:\$PATH"
-export VIRTUALENVWRAPPER_PYTHONPATH="$PYTHONPATH:$(toPythonPath $out)"
-source "$wrapped"
-EOF
-
-        chmod -x "$wrapped"
-        chmod +x "$wrapper"
-      done
-    '';
-
-    meta = {
-      description = "Enhancements to virtualenv";
-      homepage = "https://pypi.python.org/pypi/virtualenvwrapper";
-      license = licenses.mit;
-    };
-  });
-
-  vmprof = buildPythonPackage rec {
-    version = "0.3.3";
-    name = "vmprof-${version}";
-
-    # Url using old scheme doesn't seem to work
-    src = pkgs.fetchurl {
-      url = "https://files.pythonhosted.org/packages/c3/f3/f039ca77e727c5c2d3e61967a2a5c9ecc0ef6ca235012fd5559febb77cd0/vmprof-0.3.3.tar.gz";
-      sha256 = "991bc2f1dc824c63e9b399f9e8606deded92a52378d0e449f258807d7556b039";
-    };
-
-    propagatedBuildInputs = with self; [ requests six];
-
-    # No tests included
-    doCheck = false;
-
-    meta = {
-      description = "A vmprof client";
-      license = licenses.mit;
-      homepage = https://vmprof.readthedocs.org/;
-    };
-
-  };
-
-  vultr = buildPythonPackage rec {
-    version = "0.1.2";
-    name = "vultr-${version}";
-
-    src = pkgs.fetchFromGitHub {
-        owner = "spry-group";
-        repo = "python-vultr";
-        rev = "${version}";
-        sha256 = "1qjvvr2v9gfnwskdl0ayazpcmiyw9zlgnijnhgq9mcri5gq9jw5h";
-    };
-
-    propagatedBuildInputs = with self; [ requests ];
-
-    # Tests disabled. They fail because they try to access the network
-    doCheck = false;
-
-    meta = {
-      description = "Vultr.com API Client";
-      homepage = "https://github.com/spry-group/python-vultr";
-      license = licenses.mit;
-      maintainers = with maintainers; [ lihop ];
-      platforms = platforms.all;
-    };
-  };
-
-  waitress = buildPythonPackage rec {
-    name = "waitress-1.0.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/w/waitress/${name}.tar.gz";
-      sha256 = "0pw6yyxi348r2xpq3ykqnf7gwi881azv2422d2ixb0xi5jws2ky7";
-    };
-
-    doCheck = false;
-
-    meta = {
-       maintainers = with maintainers; [ garbas domenkozar ];
-       platforms = platforms.all;
-    };
-  };
-
-  waitress-django = callPackage ../development/python-modules/waitress-django { };
-
   webassets = callPackage ../development/python-modules/webassets { };
 
   webcolors = callPackage ../development/python-modules/webcolors { };
@@ -8198,99 +3877,6 @@ EOF
 
   wcwidth = callPackage ../development/python-modules/wcwidth { };
 
-  web = buildPythonPackage rec {
-    version = "0.37";
-    name = "web.py-${version}";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/w/web.py/web.py-${version}.tar.gz";
-      sha256 = "748c7e99ad9e36f62ea19f7965eb7dd7860b530e8f563ed60ce3e53e7409a550";
-    };
-
-    meta = {
-      description = "Makes web apps";
-      longDescription = ''
-        Think about the ideal way to write a web app.
-        Write the code to make it happen.
-      '';
-      homepage = "http://webpy.org/";
-      license = licenses.publicDomain;
-      maintainers = with maintainers; [ layus ];
-    };
-  };
-
-  webob = buildPythonPackage rec {
-    pname = "WebOb";
-    version = "1.7.3";
-    name = "${pname}-${version}";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "10vjp2rvqiyvw157fk3sy7yds1gknzw97z4gk0qv1raskx5s2p76";
-    };
-
-    propagatedBuildInputs = with self; [ nose pytest ];
-
-    meta = {
-      description = "WSGI request and response object";
-      homepage = http://pythonpaste.org/webob/;
-      platforms = platforms.all;
-    };
-  };
-
-
-  websockify = buildPythonPackage rec {
-    version = "0.7.0";
-    name = "websockify-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/w/websockify/websockify-${version}.tar.gz";
-      sha256 = "1v6pmamjprv2x55fvbdaml26ppxdw8v6xz8p0sav3368ajwwgcqc";
-    };
-
-    propagatedBuildInputs = with self; [ numpy ];
-
-    meta = {
-      description = "WebSockets support for any application/server";
-      homepage = https://github.com/kanaka/websockify;
-    };
-  };
-
-
-  webtest = buildPythonPackage rec {
-    version = "2.0.20";
-    name = "webtest-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/W/WebTest/WebTest-${version}.tar.gz";
-      sha256 = "0bv0qhdjakdsdgj4sk21gnpp8xp8bga4x03p6gjb83ihrsb7n4xv";
-    };
-
-    preConfigure = ''
-      substituteInPlace setup.py --replace "nose<1.3.0" "nose"
-    '';
-
-    propagatedBuildInputs = with self; [
-      nose
-      webob
-      six
-      beautifulsoup4
-      waitress
-      mock
-      pyquery
-      wsgiproxy2
-      PasteDeploy
-      coverage
-    ];
-
-    meta = {
-      description = "Helper to test WSGI applications";
-      homepage = http://webtest.readthedocs.org/en/latest/;
-      platforms = platforms.all;
-    };
-  };
-
   werkzeug = callPackage ../development/python-modules/werkzeug { };
 
   wheel = callPackage ../development/python-modules/wheel { };
@@ -8303,69 +3889,12 @@ EOF
 
   magic-wormhole-transit-relay = callPackage ../development/python-modules/magic-wormhole-transit-relay { };
 
-  wsgiproxy2 = buildPythonPackage rec {
-    name = "WSGIProxy2-0.4.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/W/WSGIProxy2/${name}.zip";
-      sha256 = "13kf9bdxrc95y9vriaz0viry3ah11nz4rlrykcfvb8nlqpx3dcm4";
-    };
-
-    # circular dep on webtest
-    doCheck = false;
-    propagatedBuildInputs = with self; [ six webob ];
-
-    meta = {
-      maintainers = with maintainers; [ garbas domenkozar ];
-    };
-  };
-
   wxPython = self.wxPython30;
 
   wxPython30 = callPackage ../development/python-modules/wxPython/3.0.nix {
     wxGTK = pkgs.wxGTK30;
   };
 
-  xcaplib = buildPythonPackage rec {
-    pname = "python-xcaplib";
-    name = "${pname}-${version}";
-    version = "1.2.0";
-    disabled = isPy3k;
-
-    src = pkgs.fetchdarcs {
-      url = "http://devel.ag-projects.com/repositories/${pname}";
-      rev = "release-${version}";
-      sha256 = "0vna5r4ihv7z1yx6r93954jqskcxky77znzy1m9dg9vna1dgwfdn";
-    };
-
-    propagatedBuildInputs = with self; [ eventlib application ];
-  };
-
-  xlib = buildPythonPackage (rec {
-    name = "xlib-${version}";
-    version = "0.17";
-
-    src = pkgs.fetchFromGitHub {
-      owner = "python-xlib";
-      repo = "python-xlib";
-      rev = "${version}";
-      sha256 = "1iiz2nq2hq9x6laavngvfngnmxbgnwh54wdbq6ncx4va7v98liyi";
-    };
-
-    # Tests require `pyutil' so disable them to avoid circular references.
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ six setuptools_scm pkgs.xorg.libX11 ];
-
-    meta = {
-      description = "Fully functional X client library for Python programs";
-
-      homepage = http://python-xlib.sourceforge.net/;
-
-      license = licenses.gpl2Plus;
-    };
-  });
-
   xml2rfc = callPackage ../development/python-modules/xml2rfc { };
 
   xmltodict = callPackage ../development/python-modules/xmltodict { };
@@ -8381,85 +3910,10 @@ EOF
     phantomjsSupport = false;
   };
 
-  zbase32 = buildPythonPackage (rec {
-    name = "zbase32-1.1.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zbase32/${name}.tar.gz";
-      sha256 = "2f44b338f750bd37b56e7887591bf2f1965bfa79f163b6afcbccf28da642ec56";
-    };
-
-    # Tests require `pyutil' so disable them to avoid circular references.
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ setuptoolsDarcs ];
-
-    meta = {
-      description = "zbase32, a base32 encoder/decoder";
-      homepage = https://pypi.python.org/pypi/zbase32;
-      license = "BSD";
-    };
-  });
-
-
   zconfig = callPackage ../development/python-modules/zconfig { };
 
-
   zc_lockfile = callPackage ../development/python-modules/zc_lockfile { };
 
-  zdaemon = buildPythonPackage rec {
-    name = "zdaemon-${version}";
-    version = "4.0.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zdaemon/${name}.tar.gz";
-      sha256 = "82d7eaa4d831ff1ecdcffcb274f3457e095c0cc86e630bc72009a863c341ab9f";
-    };
-
-    propagatedBuildInputs = [ self.zconfig ];
-
-    # too many deps..
-    doCheck = false;
-
-    meta = {
-      description = "A daemon process control library and tools for Unix-based systems";
-      homepage = https://pypi.python.org/pypi/zdaemon;
-      license = licenses.zpl20;
-      maintainers = with maintainers; [ goibhniu ];
-    };
-  };
-
-
-  zfec = buildPythonPackage (rec {
-    name = "zfec-1.4.24";
-    disabled = isPyPy;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zfec/${name}.tar.gz";
-      sha256 = "1ks94zlpy7n8sb8380gf90gx85qy0p9073wi1wngg6mccxp9xsg3";
-    };
-
-    buildInputs = with self; [ setuptoolsDarcs ];
-    propagatedBuildInputs = with self; [ pyutil argparse ];
-
-    meta = {
-      homepage = http://allmydata.org/trac/zfec;
-
-      description = "Zfec, a fast erasure codec which can be used with the command-line, C, Python, or Haskell";
-
-      longDescription = ''
-        Fast, portable, programmable erasure coding a.k.a. "forward
-        error correction": the generation of redundant blocks of
-        information such that if some blocks are lost then the
-        original data can be recovered from the remaining blocks. The
-        zfec package includes command-line tools, C API, Python API,
-        and Haskell API.
-      '';
-
-      license = licenses.gpl2Plus;
-    };
-  });
-
   zipstream = callPackage ../development/python-modules/zipstream { };
 
   zodb = callPackage ../development/python-modules/zodb {};
@@ -8474,747 +3928,401 @@ EOF
 
   zetup = callPackage ../development/python-modules/zetup { };
 
-  zope_broken = buildPythonPackage rec {
-    name = "zope.broken-3.6.0";
+  routes = callPackage ../development/python-modules/routes { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.broken/${name}.zip";
-      sha256 = "b9b8776002da4f7b6b12dfcce77eb642ae62b39586dbf60e1d9bdc992c9f2999";
-    };
+  rpyc = callPackage ../development/python-modules/rpyc { };
 
-    buildInputs = with self; [ zope_interface ];
+  rsa = callPackage ../development/python-modules/rsa { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  squaremap = callPackage ../development/python-modules/squaremap { };
 
+  ruamel_base = callPackage ../development/python-modules/ruamel_base { };
 
-  zope_component = buildPythonPackage rec {
-    name = "zope.component-4.2.1";
+  ruamel_ordereddict = callPackage ../development/python-modules/ruamel_ordereddict { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.component/zope.component-4.2.1.tar.gz";
-      sha256 = "1gzbr0j6c2h0cqnpi2cjss38wrz1bcwx8xahl3vykgz5laid15l6";
-    };
+  ruamel_yaml = callPackage ../development/python-modules/ruamel_yaml { };
 
-    propagatedBuildInputs = with self; [
-      zope_configuration zope_event zope_i18nmessageid zope_interface
-      zope_testing
-    ];
+  runsnakerun = callPackage ../development/python-modules/runsnakerun { };
 
-    # ignore tests because of a circular dependency on zope_security
-    doCheck = false;
+  pysendfile = callPackage ../development/python-modules/pysendfile { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
-
-
-  zope_configuration = buildPythonPackage rec {
-    name = "zope.configuration-4.0.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.configuration/zope.configuration-4.0.3.tar.gz";
-      sha256 = "1x9dfqypgympnlm25p9m43xh4qv3p7d75vksv9pzqibrb4cggw5n";
-    };
+  qpid-python = callPackage ../development/python-modules/qpid-python { };
 
-    propagatedBuildInputs = with self; [ zope_i18nmessageid zope_schema ];
+  xattr = callPackage ../development/python-modules/xattr { };
 
-    # Trouble with implicit namespace packages on Python3
-    # see https://github.com/pypa/setuptools/issues/912
-    doCheck = !isPy3k;
+  scripttest = callPackage ../development/python-modules/scripttest { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  setuptoolsDarcs = callPackage ../development/python-modules/setuptoolsdarcs { };
 
+  setuptoolsTrial = callPackage ../development/python-modules/setuptoolstrial { };
 
-  zope_contenttype = buildPythonPackage rec {
-    name = "zope.contenttype-4.0.1";
+  simplebayes = callPackage ../development/python-modules/simplebayes { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.contenttype/${name}.tar.gz";
-      sha256 = "9decc7531ad6925057f1a667ac0ef9d658577a92b0b48dafa7daa97b78a02bbb";
-    };
+  shortuuid = callPackage ../development/python-modules/shortuuid { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  shouldbe = callPackage ../development/python-modules/shouldbe { };
 
+  simpleparse = callPackage ../development/python-modules/simpleparse { };
 
-  zope_dottedname = buildPythonPackage rec {
-    name = "zope.dottedname-3.4.6";
+  slob = callPackage ../development/python-modules/slob { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.dottedname/${name}.tar.gz";
-      sha256 = "331d801d98e539fa6c5d50c3835ecc144c429667f483281505de53fc771e6bf5";
-    };
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  slowaes = callPackage ../development/python-modules/slowaes { };
 
+  sqlite3dbm = callPackage ../development/python-modules/sqlite3dbm { };
 
-  zope_event = buildPythonPackage rec {
-    name = "zope.event-${version}";
-    version = "4.0.3";
+  sqlobject = callPackage ../development/python-modules/sqlobject { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.event/${name}.tar.gz";
-      sha256 = "1w858k9kmgzfj36h65kp27m9slrmykvi5cjq6c119xqnaz5gdzgm";
-    };
+  sqlmap = callPackage ../development/python-modules/sqlmap { };
 
-    meta = {
-      description = "An event publishing system";
-      homepage = https://pypi.python.org/pypi/zope.event;
-      license = licenses.zpl20;
-      maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  pgpdump = callPackage ../development/python-modules/pgpdump { };
 
+  spambayes = callPackage ../development/python-modules/spambayes { };
 
-  zope_exceptions = buildPythonPackage rec {
-     name = "zope.exceptions-${version}";
-     version = "4.0.8";
+  shapely = callPackage ../development/python-modules/shapely { };
 
-     src = pkgs.fetchurl {
-       url = "mirror://pypi/z/zope.exceptions/${name}.tar.gz";
-       sha256 = "0zwxaaa66sqxg5k7zcrvs0fbg9ym1njnxnr28dfmchzhwjvwnfzl";
-     };
+  sharedmem = callPackage ../development/python-modules/sharedmem { };
 
-     propagatedBuildInputs = with self; [ zope_interface ];
+  soco = callPackage ../development/python-modules/soco { };
 
-     # circular deps
-     doCheck = false;
+  sopel = callPackage ../development/python-modules/sopel { };
 
-     meta = {
-       description = "Exception interfaces and implementations";
-       homepage = https://pypi.python.org/pypi/zope.exceptions;
-       license = licenses.zpl20;
-       maintainers = with maintainers; [ goibhniu ];
-     };
-   };
+  sounddevice = callPackage ../development/python-modules/sounddevice { };
 
+  stevedore = callPackage ../development/python-modules/stevedore {};
 
-  zope_filerepresentation = buildPythonPackage rec {
-    name = "zope.filerepresentation-3.6.1";
+  text-unidecode = callPackage ../development/python-modules/text-unidecode { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.filerepresentation/${name}.tar.gz";
-      sha256 = "d775ebba4aff7687e0381f050ebda4e48ce50900c1438f3f7e901220634ed3e0";
-    };
+  Theano = callPackage ../development/python-modules/Theano rec {
+    cudaSupport = pkgs.config.cudaSupport or false;
+    cudnnSupport = cudaSupport;
+    inherit (pkgs.linuxPackages) nvidia_x11;
+  };
 
-    propagatedBuildInputs = with self; [ zope_schema ];
+  TheanoWithoutCuda = self.Theano.override {
+    cudaSupport = false;
+    cudnnSupport = false;
+  };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
+  TheanoWithCuda = self.Theano.override {
+    cudaSupport = true;
+    cudnnSupport = true;
   };
 
+  thespian = callPackage ../development/python-modules/thespian { };
 
-  zope_i18n = buildPythonPackage rec {
-    name = "zope.i18n-3.8.0";
+  tidylib = callPackage ../development/python-modules/pytidylib { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.i18n/${name}.tar.gz";
-      sha256 = "045nnimmshibcq71yym2d8yrs6wzzhxq5gl7wxjnkpyjm5y0hfkm";
-    };
+  tilestache = callPackage ../development/python-modules/tilestache { };
 
-    propagatedBuildInputs = with self; [ pytz zope_component ];
+  timelib = callPackage ../development/python-modules/timelib { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  timeout-decorator = callPackage ../development/python-modules/timeout-decorator { };
 
+  pid = callPackage ../development/python-modules/pid { };
 
-  zope_i18nmessageid = buildPythonPackage rec {
-    name = "zope.i18nmessageid-4.0.3";
+  pip2nix = callPackage ../development/python-modules/pip2nix { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.i18nmessageid/zope.i18nmessageid-4.0.3.tar.gz";
-      sha256 = "1rslyph0klk58dmjjy4j0jxy21k03azksixc3x2xhqbkv97cmzml";
-    };
+  pychef = callPackage ../development/python-modules/pychef { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  pydns =
+    let
+      py3 = callPackage ../development/python-modules/py3dns { };
 
+      py2 = callPackage ../development/python-modules/pydns { };
+    in if isPy3k then py3 else py2;
 
-  zope_lifecycleevent = buildPythonPackage rec {
-    name = "zope.lifecycleevent-3.7.0";
+  python-daemon = callPackage ../development/python-modules/python-daemon { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.lifecycleevent/${name}.tar.gz";
-      sha256 = "0s5brphqzzz89cykg61gy7zcmz0ryq1jj2va7gh2n1b3cccllp95";
-    };
+  sympy = callPackage ../development/python-modules/sympy { };
 
-    propagatedBuildInputs = with self; [ zope_event zope_component ];
+  pilkit = callPackage ../development/python-modules/pilkit { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  clint = callPackage ../development/python-modules/clint { };
 
+  argh = callPackage ../development/python-modules/argh { };
 
-  zope_location = buildPythonPackage rec {
-    name = "zope.location-4.0.3";
+  nose_progressive = callPackage ../development/python-modules/nose_progressive { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.location/zope.location-4.0.3.tar.gz";
-      sha256 = "1nj9da4ksiyv3h8n2vpzwd0pb03mdsh7zy87hfpx72b6p2zcwg74";
-    };
+  blessings = callPackage ../development/python-modules/blessings { };
 
-    propagatedBuildInputs = with self; [ zope_proxy ];
+  secretstorage = callPackage ../development/python-modules/secretstorage { };
 
-    # ignore circular dependency on zope_schema
-    preBuild = ''
-      sed -i '/zope.schema/d' setup.py
-    '';
+  semantic = callPackage ../development/python-modules/semantic { };
 
-    doCheck = false;
+  sandboxlib = callPackage ../development/python-modules/sandboxlib { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  scales = callPackage ../development/python-modules/scales { };
 
+  secp256k1 = callPackage ../development/python-modules/secp256k1 {
+    inherit (pkgs) secp256k1 pkgconfig;
+  };
 
-  zope_proxy = buildPythonPackage rec {
-    name = "zope.proxy-4.1.6";
+  semantic-version = callPackage ../development/python-modules/semantic-version { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.proxy/${name}.tar.gz";
-      sha256 = "0pqwwmvm1prhwv1ziv9lp8iirz7xkwb6n2kyj36p2h0ppyyhjnm4";
-    };
+  sexpdata = callPackage ../development/python-modules/sexpdata { };
 
-    propagatedBuildInputs = with self; [ zope_interface ];
+  sh = callPackage ../development/python-modules/sh { };
 
-    # circular deps
-    doCheck = false;
+  sipsimple = callPackage ../development/python-modules/sipsimple { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  six = callPackage ../development/python-modules/six { };
 
+  smartdc = callPackage ../development/python-modules/smartdc { };
 
-  zope_schema = buildPythonPackage rec {
-    name = "zope.schema-4.4.2";
+  socksipy-branch = callPackage ../development/python-modules/socksipy-branch { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.schema/${name}.tar.gz";
-      sha256 = "1p943jdxb587dh7php4vx04qvn7b2877hr4qs5zyckvp5afhhank";
-    };
+  sockjs-tornado = callPackage ../development/python-modules/sockjs-tornado { };
 
-    propagatedBuildInputs = with self; [ zope_location zope_event zope_interface zope_testing ];
+  sorl_thumbnail = callPackage ../development/python-modules/sorl_thumbnail { };
 
-    # ImportError: No module named 'zope.event'
-    # even though zope_event has been included.
-    # Package seems to work fine.
-    doCheck = false;
+  sphinx_rtd_theme = callPackage ../development/python-modules/sphinx_rtd_theme { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  sphinxcontrib-blockdiag = callPackage ../development/python-modules/sphinxcontrib-blockdiag { };
 
+  sphinxcontrib-openapi = callPackage ../development/python-modules/sphinxcontrib-openapi { };
 
-  zope_size = buildPythonPackage rec {
-    name = "zope.size-3.5.0";
+  sphinxcontrib_httpdomain = callPackage ../development/python-modules/sphinxcontrib_httpdomain { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.size/${name}.tar.gz";
-      sha256 = "006xfkhvmypwd3ww9gbba4zly7n9w30bpp1h74d53la7l7fiqk2f";
-    };
+  sphinxcontrib_newsfeed = callPackage ../development/python-modules/sphinxcontrib_newsfeed { };
 
-    propagatedBuildInputs = with self; [ zope_i18nmessageid zope_interface ];
+  sphinxcontrib_plantuml = callPackage ../development/python-modules/sphinxcontrib_plantuml { };
 
-    meta = {
-        maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  sphinxcontrib-spelling = callPackage ../development/python-modules/sphinxcontrib-spelling { };
 
+  sphinx_pypi_upload = callPackage ../development/python-modules/sphinx_pypi_upload { };
 
-  zope_testing = buildPythonPackage rec {
-    name = "zope.testing-${version}";
-    version = "4.6.1";
+  Pweave = callPackage ../development/python-modules/pweave { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/z/zope.testing/${name}.tar.gz";
-      sha256 = "1vvxhjmzl7vw2i1akfj1xbggwn36270ym7f2ic9xwbaswfw1ap56";
-    };
+  SQLAlchemy-ImageAttach = callPackage ../development/python-modules/sqlalchemy-imageattach { };
 
-    doCheck = !isPyPy;
+  sqlparse = callPackage ../development/python-modules/sqlparse { };
 
-    propagatedBuildInputs = with self; [ zope_interface zope_exceptions zope_location ];
+  python_statsd = callPackage ../development/python-modules/python_statsd { };
 
-    meta = {
-      description = "Zope testing helpers";
-      homepage =  http://pypi.python.org/pypi/zope.testing;
-      license = licenses.zpl20;
-      maintainers = with maintainers; [ goibhniu ];
-    };
-  };
+  stompclient = callPackage ../development/python-modules/stompclient { };
 
+  subdownloader = callPackage ../development/python-modules/subdownloader { };
 
-  zope_testrunner = callPackage ../development/python-modules/zope_testrunner { };
+  subunit = callPackage ../development/python-modules/subunit { };
 
+  sure = callPackage ../development/python-modules/sure { };
 
-  zope_interface = callPackage ../development/python-modules/zope_interface { };
+  svgwrite = callPackage ../development/python-modules/svgwrite { };
 
+  freezegun = callPackage ../development/python-modules/freezegun { };
 
-  hgsvn = buildPythonPackage rec {
-    name = "hgsvn-0.3.11";
-    src = pkgs.fetchurl rec {
-      url = "mirror://pypi/h/hgsvn/${name}-hotfix.zip";
-      sha256 = "0yvhwdh8xx8rvaqd3pnnyb99hfa0zjdciadlc933p27hp9rf880p";
-    };
-    disabled = isPy3k || isPyPy;
-    doCheck = false;  # too many assumptions
+  taskw = callPackage ../development/python-modules/taskw { };
 
-    buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ hglib ];
+  terminaltables = callPackage ../development/python-modules/terminaltables { };
 
-    meta = {
-      homepage = https://pypi.python.org/pypi/hgsvn;
-    };
-  };
+  testpath = callPackage ../development/python-modules/testpath { };
 
-  cliapp = buildPythonPackage rec {
-    name = "cliapp-${version}";
-    version = "1.20150305";
-    disabled = isPy3k;
+  testrepository = callPackage ../development/python-modules/testrepository { };
 
-    src = pkgs.fetchgit {
-        url = "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp";
-        rev = "569df8a5959cd8ef46f78c9497461240a5aa1123";
-        sha256 = "882c5daf933e4cf089842995efc721e54361d98f64e0a075e7373b734cd899f3";
-    };
+  testscenarios = callPackage ../development/python-modules/testscenarios { };
 
-    buildInputs = with self; [ sphinx ];
+  python_mimeparse = callPackage ../development/python-modules/python_mimeparse { };
 
-    # error: invalid command 'test'
-    doCheck = false;
+  # Tkinter/tkinter is part of the Python standard library.
+  # The Python interpreters in Nixpkgs come without tkinter by default.
+  # To make the module available, we make it available as any other
+  # Python package.
+  tkinter = let
+    py = python.override{x11Support=true;};
+  in callPackage ../development/python-modules/tkinter { py = py; };
 
-    meta = {
-      homepage = http://liw.fi/cliapp/;
-      description = "Python framework for Unix command line programs";
-      maintainers = with maintainers; [ rickynils ];
-    };
-  };
+  tlslite = callPackage ../development/python-modules/tlslite { };
 
-  cmdtest = buildPythonPackage rec {
-    name = "cmdtest-${version}";
-    version = "0.18";
-    disabled = isPy3k || isPyPy;
+  qrcode = callPackage ../development/python-modules/qrcode { };
 
-    propagatedBuildInputs = with self; [ cliapp ttystatus markdown ];
+  traits = callPackage ../development/python-modules/traits { };
 
-    # TODO: cmdtest tests must be run before the buildPhase
-    doCheck = false;
+  transmissionrpc = callPackage ../development/python-modules/transmissionrpc { };
 
-    src = pkgs.fetchurl {
-      url = "http://code.liw.fi/debian/pool/main/c/cmdtest/cmdtest_0.18.orig.tar.xz";
-      sha256 = "068f24k8ad520hcf8g3gj7wvq1wspyd46ay0k9xa360jlb4dv2mn";
-    };
+  eggdeps = callPackage ../development/python-modules/eggdeps { };
 
-    meta = {
-      homepage = http://liw.fi/cmdtest/;
-      description = "Black box tests Unix command line tools";
-    };
-  };
+  twiggy = callPackage ../development/python-modules/twiggy { };
 
-  tornado = callPackage ../development/python-modules/tornado { };
-  tornado_4 = callPackage ../development/python-modules/tornado { version = "4.5.3"; };
+  twitter = callPackage ../development/python-modules/twitter { };
 
-  tokenlib = buildPythonPackage rec {
-    name = "tokenlib-${version}";
-    version = "0.3.1";
-    src = pkgs.fetchgit {
-      url = https://github.com/mozilla-services/tokenlib.git;
-      rev = "refs/tags/${version}";
-      sha256 = "0bq6dqyfwh29pg8ngmrm4mx4q27an9lsj0p9l79p9snn4g2rxzc8";
-    };
+  twitter-common-collections = callPackage ../development/python-modules/twitter-common-collections { };
 
-    propagatedBuildInputs = with self; [ requests webob ];
-  };
+  twitter-common-confluence = callPackage ../development/python-modules/twitter-common-confluence { };
 
-  tunigo = callPackage ../development/python-modules/tunigo { };
+  twitter-common-dirutil = callPackage ../development/python-modules/twitter-common-dirutil { };
 
-  tarman = buildPythonPackage rec {
-    version = "0.1.3";
-    name = "tarman-${version}";
+  twitter-common-lang = callPackage ../development/python-modules/twitter-common-lang { };
 
-    disabled = isPy3k;
+  twitter-common-log = callPackage ../development/python-modules/twitter-common-log { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/tarman/tarman-${version}.zip";
-      sha256 = "0ri6gj883k042xaxa2d5ymmhbw2bfcxdzhh4bz7700ibxwxxj62h";
-    };
+  twitter-common-options = callPackage ../development/python-modules/twitter-common-options { };
 
-    buildInputs = with self; [ unittest2 nose mock ];
-    propagatedBuildInputs = with self; [ libarchive ];
+  umalqurra = callPackage ../development/python-modules/umalqurra { };
 
-    # tests are still failing
-    doCheck = false;
-  };
+  unicodecsv = callPackage ../development/python-modules/unicodecsv { };
 
+  unittest2 = callPackage ../development/python-modules/unittest2 { };
 
-  libarchive = self.python-libarchive; # The latter is the name upstream uses
-  python-libarchive = buildPythonPackage rec {
-    version = "3.1.2-1";
-    name = "libarchive-${version}";
-    disabled = isPy3k;
+  unittest-xml-reporting = callPackage ../development/python-modules/unittest-xml-reporting { };
 
-    src = pkgs.fetchurl {
-      url = "http://python-libarchive.googlecode.com/files/python-libarchive-${version}.tar.gz";
-      sha256 = "0j4ibc4mvq64ljya9max8832jafi04jciff9ia9qy0xhhlwkcx8x";
-    };
+  uritemplate_py = callPackage ../development/python-modules/uritemplate_py { };
 
-    propagatedBuildInputs = with self; [ pkgs.libarchive.lib ];
-    meta.broken = true;
-  };
+  traceback2 = callPackage ../development/python-modules/traceback2 { };
 
-  libarchive-c = buildPythonPackage rec {
-    name = "libarchive-c-${version}";
-    version = "2.7";
+  linecache2 = callPackage ../development/python-modules/linecache2 { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/l/libarchive-c/${name}.tar.gz";
-      sha256 = "011bfsmqpcwd6920kckllh7zhw2y4rrasgmddb7wjzn2hg1xpsjn";
-    };
+  upass = callPackage ../development/python-modules/upass { };
 
-    LC_ALL="en_US.UTF-8";
+  uptime = callPackage ../development/python-modules/uptime { };
 
-    postPatch = ''
-      substituteInPlace libarchive/ffi.py --replace \
-        "find_library('archive')" "'${pkgs.libarchive.lib}/lib/libarchive.so'"
-    '';
-    checkPhase = ''
-      py.test tests -k 'not test_check_archiveentry_with_unicode_entries_and_name_zip and not test_check_archiveentry_using_python_testtar'
-    '';
+  urwidtrees = callPackage ../development/python-modules/urwidtrees { };
 
-    buildInputs = with self; [ pytest pkgs.glibcLocales ];
-  };
+  pyuv = callPackage ../development/python-modules/pyuv { };
 
-  libasyncns = callPackage ../development/python-modules/libasyncns {
-    inherit (pkgs) libasyncns pkgconfig;
-  };
+  virtualenv-clone = callPackage ../development/python-modules/virtualenv-clone { };
 
-  libarcus = callPackage ../development/python-modules/libarcus { };
+  virtualenvwrapper = callPackage ../development/python-modules/virtualenvwrapper { };
 
-  pybrowserid = callPackage ../development/python-modules/pybrowserid { };
+  vmprof = callPackage ../development/python-modules/vmprof { };
 
-  pyzmq = callPackage ../development/python-modules/pyzmq { };
+  vultr = callPackage ../development/python-modules/vultr { };
 
-  testfixtures = callPackage ../development/python-modules/testfixtures {};
+  waitress = callPackage ../development/python-modules/waitress { };
 
-  tissue = buildPythonPackage rec {
-    name = "tissue-0.9.2";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/tissue/${name}.tar.gz";
-      sha256 = "7e34726c3ec8fae358a7faf62de172db15716f5582e5192a109e33348bd76c2e";
-    };
+  waitress-django = callPackage ../development/python-modules/waitress-django { };
 
-    buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ pep8 ];
+  web = callPackage ../development/python-modules/web { };
 
-    meta = {
-      maintainers = with maintainers; [ garbas domenkozar ];
-      platforms = platforms.all;
-    };
-  };
+  webob = callPackage ../development/python-modules/webob { };
 
-  titlecase = callPackage ../development/python-modules/titlecase { };
+  websockify = callPackage ../development/python-modules/websockify { };
 
-  tracing = buildPythonPackage rec {
-    name = "tracing-${version}";
-    version = "0.8";
+  webtest = callPackage ../development/python-modules/webtest { };
 
-    src = pkgs.fetchurl rec {
-      url = "http://code.liw.fi/debian/pool/main/p/python-tracing/python-tracing_${version}.orig.tar.gz";
-      sha256 = "1l4ybj5rvrrcxf8csyq7qx52izybd502pmx70zxp46gxqm60d2l0";
-    };
+  wsgiproxy2 = callPackage ../development/python-modules/wsgiproxy2 { };
 
-    buildInputs = with self; [ sphinx ];
+  xcaplib = callPackage ../development/python-modules/xcaplib { };
 
-    # error: invalid command 'test'
-    doCheck = false;
+  xlib = callPackage ../development/python-modules/xlib { };
 
-    meta = {
-      homepage = http://liw.fi/tracing/;
-      description = "Python debug logging helper";
-      maintainers = with maintainers; [ rickynils ];
-    };
-  };
+  zbase32 = callPackage ../development/python-modules/zbase32 { };
 
-  translationstring = buildPythonPackage rec {
-    name = "translationstring-1.3";
+  zdaemon = callPackage ../development/python-modules/zdaemon { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/translationstring/${name}.tar.gz";
-      sha256 = "4ee44cfa58c52ade8910ea0ebc3d2d84bdcad9fa0422405b1801ec9b9a65b72d";
-    };
+  zfec = callPackage ../development/python-modules/zfec { };
 
-    meta = {
-      maintainers = with maintainers; [ garbas domenkozar ];
-      platforms = platforms.all;
-    };
-  };
+  zope_broken = callPackage ../development/python-modules/zope_broken { };
 
+  zope_component = callPackage ../development/python-modules/zope_component { };
 
-  ttystatus = buildPythonPackage rec {
-    name = "ttystatus-${version}";
-    version = "0.23";
-    disabled = isPy3k;
+  zope_configuration = callPackage ../development/python-modules/zope_configuration { };
 
-    src = pkgs.fetchurl rec {
-      url = "http://code.liw.fi/debian/pool/main/p/python-ttystatus/python-ttystatus_${version}.orig.tar.gz";
-      sha256 = "0ymimviyjyh2iizqilg88g4p26f5vpq1zm3cvg7dr7q4y3gmik8y";
-    };
+  zope_contenttype = callPackage ../development/python-modules/zope_contenttype { };
 
-    buildInputs = with self; [ sphinx ];
+  zope_dottedname = callPackage ../development/python-modules/zope_dottedname { };
 
-    # error: invalid command 'test'
-    doCheck = false;
+  zope_event = callPackage ../development/python-modules/zope_event { };
 
-    meta = {
-      homepage = http://liw.fi/ttystatus/;
-      description = "Progress and status updates on terminals for Python";
-      maintainers = with maintainers; [ rickynils ];
-    };
-  };
+  zope_exceptions = callPackage ../development/python-modules/zope_exceptions { };
 
-  larch = buildPythonPackage rec {
-    name = "larch-${version}";
-    version = "1.20131130";
+  zope_filerepresentation = callPackage ../development/python-modules/zope_filerepresentation { };
 
-    src = pkgs.fetchurl rec {
-      url = "http://code.liw.fi/debian/pool/main/p/python-larch/python-larch_${version}.orig.tar.gz";
-      sha256 = "1hfanp9l6yc5348i3f5sb8c5s4r43y382hflnbl6cnz4pm8yh5r7";
-    };
+  zope_i18n = callPackage ../development/python-modules/zope_i18n { };
 
-    buildInputs = with self; [ sphinx ];
-    propagatedBuildInputs = with self; [ tracing ttystatus cliapp ];
+  zope_i18nmessageid = callPackage ../development/python-modules/zope_i18nmessageid { };
 
-    # error: invalid command 'test'
-    doCheck = false;
+  zope_lifecycleevent = callPackage ../development/python-modules/zope_lifecycleevent { };
 
-    meta = {
-      homepage = http://liw.fi/larch/;
-      description = "Python B-tree library";
-      maintainers = with maintainers; [ rickynils ];
-    };
-  };
+  zope_location = callPackage ../development/python-modules/zope_location { };
 
+  zope_proxy = callPackage ../development/python-modules/zope_proxy { };
 
-  websocket_client = callPackage ../development/python-modules/websockets_client { };
+  zope_schema = callPackage ../development/python-modules/zope_schema { };
 
+  zope_size = callPackage ../development/python-modules/zope_size { };
 
-  webhelpers = buildPythonPackage rec {
-    name = "WebHelpers-1.3";
+  zope_testing = callPackage ../development/python-modules/zope_testing { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/W/WebHelpers/${name}.tar.gz";
-      sha256 = "ea86f284e929366b77424ba9a89341f43ae8dee3cbeb8702f73bcf86058aa583";
-    };
+  zope_testrunner = callPackage ../development/python-modules/zope_testrunner { };
 
-    buildInputs = with self; [ routes markupsafe webob nose ];
+  zope_interface = callPackage ../development/python-modules/zope_interface { };
 
-    # TODO: failing tests https://bitbucket.org/bbangert/webhelpers/pull-request/1/fix-error-on-webob-123/diff
-    doCheck = false;
+  hgsvn = callPackage ../development/python-modules/hgsvn { };
 
-    meta = {
-      maintainers = with maintainers; [ garbas domenkozar ];
-      platforms = platforms.all;
-    };
-  };
+  cliapp = callPackage ../development/python-modules/cliapp { };
 
-  whichcraft = callPackage ../development/python-modules/whichcraft { };
+  cmdtest = callPackage ../development/python-modules/cmdtest { };
 
-  whisper = callPackage ../development/python-modules/whisper { };
+  tornado = callPackage ../development/python-modules/tornado { };
+  tornado_4 = callPackage ../development/python-modules/tornado { version = "4.5.3"; };
 
-  worldengine = buildPythonPackage rec {
-    name = "worldengine-${version}";
-    version = "0.19.0";
+  tokenlib = callPackage ../development/python-modules/tokenlib { };
 
-    src = pkgs.fetchFromGitHub {
-      owner = "Mindwerks";
-      repo = "worldengine";
-      rev = "v${version}";
-      sha256 = "1xrckb0dn2841gvp32n18gib14bpi77hmjw3r9jiyhg402iip7ry";
-    };
+  tunigo = callPackage ../development/python-modules/tunigo { };
 
-    src-data = pkgs.fetchFromGitHub {
-      owner = "Mindwerks";
-      repo = "worldengine-data";
-      rev = "029051e";
-      sha256 = "06xbf8gj3ljgr11v1n8jbs2q8pdf9wz53xdgkhpm8hdnjahgdxdm";
-    };
+  tarman = callPackage ../development/python-modules/tarman { };
 
-    postUnpack = ''
-      ln -s ${src-data} worldengine-data
-    '';
+  libarchive = self.python-libarchive; # The latter is the name upstream uses
 
-    buildInputs = with self; [ nose ];
-    propagatedBuildInputs = with self; [ noise numpy pyplatec protobuf purepng argparse h5py gdal ];
-
-    prePatch = ''
-      substituteInPlace setup.py \
-        --replace pypng>=0.0.18 purepng \
-        --replace 'numpy>=1.9.2, <= 1.10.0.post2' 'numpy' \
-        --replace 'argparse==1.2.1' "" \
-        --replace 'protobuf==3.0.0a3' 'protobuf' \
-        --replace 'noise==1.2.2' 'noise' \
-        --replace 'PyPlatec==1.4.0' 'PyPlatec' \
-    '';
+  python-libarchive = callPackage ../development/python-modules/python-libarchive { };
 
-    doCheck = true;
-    postCheck = ''
-      nosetests tests
-    '';
+  libarchive-c = callPackage ../development/python-modules/libarchive-c { };
 
-    meta = {
-      homepage = http://world-engine.org;
-      description = "World generator using simulation of plates, rain shadow, erosion, etc";
-      platforms = platforms.all;
-      maintainers = with maintainers; [ rardiol ];
-    };
+  libasyncns = callPackage ../development/python-modules/libasyncns {
+    inherit (pkgs) libasyncns pkgconfig;
   };
 
-  carbon = callPackage ../development/python-modules/carbon { };
+  libarcus = callPackage ../development/python-modules/libarcus { };
 
-  ujson = buildPythonPackage rec {
-    name = "ujson-1.35";
+  pybrowserid = callPackage ../development/python-modules/pybrowserid { };
 
-    disabled = isPyPy;
+  pyzmq = callPackage ../development/python-modules/pyzmq { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/u/ujson/${name}.tar.gz";
-      sha256 = "11jz5wi7mbgqcsz52iqhpyykiaasila4lq8cmc2d54bfa3jp6q7n";
-    };
+  testfixtures = callPackage ../development/python-modules/testfixtures {};
 
-    meta = {
-      homepage = https://pypi.python.org/pypi/ujson;
-      description = "Ultra fast JSON encoder and decoder for Python";
-      license = licenses.bsd3;
-    };
-  };
+  tissue = callPackage ../development/python-modules/tissue { };
 
+  titlecase = callPackage ../development/python-modules/titlecase { };
 
-  unidecode = callPackage ../development/python-modules/unidecode {};
+  tracing = callPackage ../development/python-modules/tracing { };
 
-  pyusb = callPackage ../development/python-modules/pyusb { libusb1 = pkgs.libusb1; };
+  translationstring = callPackage ../development/python-modules/translationstring { };
 
-  BlinkStick = callPackage ../development/python-modules/blinkstick { };
+  ttystatus = callPackage ../development/python-modules/ttystatus { };
 
-  usbtmc = callPackage ../development/python-modules/usbtmc {};
+  larch = callPackage ../development/python-modules/larch { };
 
-  txgithub = buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "txgithub";
-    version = "15.0.0";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/${pname}/${name}.tar.gz";
-      sha256 = "16gbizy8vkxasxylwzj4p66yw8979nvzxdj6csidgmng7gi2k8nx";
-    };
-    propagatedBuildInputs = with self; [ pyopenssl twisted service-identity ];
-    # fix python3 issues
-    patchPhase = ''
-      sed -i 's/except usage.UsageError, errortext/except usage.UsageError as errortext/' txgithub/scripts/create_token.py
-      sed -i 's/except usage.UsageError, errortext/except usage.UsageError as errortext/' txgithub/scripts/gist.py
-      sed -i 's/print response\[\x27html_url\x27\]/print(response\[\x27html_url\x27\])/' txgithub/scripts/gist.py
-      sed -i '41d' txgithub/scripts/gist.py
-      sed -i '41d' txgithub/scripts/gist.py
-    '';
+  websocket_client = callPackage ../development/python-modules/websockets_client { };
 
-    # No tests distributed
-    doCheck = false;
-    meta = {
-      description = "GitHub API client implemented using Twisted.";
-      homepage    = "https://github.com/tomprince/txgithub";
-      license     = licenses.mit;
-      maintainers = with maintainers; [ nand0p ];
-      platforms   = platforms.all;
-    };
-  };
+  webhelpers = callPackage ../development/python-modules/webhelpers { };
 
-  txrequests = buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "txrequests";
-    version = "0.9.2";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/${pname}/${name}.tar.gz";
-      sha256 = "0kkxxd17ar5gyjkz9yrrdr15a64qw6ym60ndi0zbwx2s634yfafw";
-    };
-    propagatedBuildInputs = with self; [ twisted requests cryptography ];
+  whichcraft = callPackage ../development/python-modules/whichcraft { };
 
-    # Require network access
-    doCheck = false;
-    checkPhase = ''
-      ${python.interpreter} -m unittest discover
-    '';
-    meta = {
-      description = "Asynchronous Python HTTP for Humans.";
-      homepage    = "https://github.com/tardyp/txrequests";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ nand0p ];
-      platforms   = platforms.all;
-    };
-  };
+  whisper = callPackage ../development/python-modules/whisper { };
 
-  txamqp = buildPythonPackage rec {
-    name = "txamqp-${version}";
-    version = "0.3";
+  worldengine = callPackage ../development/python-modules/worldengine { };
 
-    src = pkgs.fetchurl rec {
-      url = "https://launchpad.net/txamqp/trunk/${version}/+download/python-txamqp_${version}.orig.tar.gz";
-      sha256 = "1r2ha0r7g14i4b5figv2spizjrmgfpspdbl1m031lw9px2hhm463";
-    };
+  carbon = callPackage ../development/python-modules/carbon { };
 
-    buildInputs = with self; [ twisted ];
+  ujson = callPackage ../development/python-modules/ujson { };
 
-    meta = {
-      homepage = https://launchpad.net/txamqp;
-      description = "Library for communicating with AMQP peers and brokers using Twisted";
-      maintainers = with maintainers; [ rickynils ];
-    };
-  };
+  unidecode = callPackage ../development/python-modules/unidecode {};
 
-  versiontools = buildPythonPackage rec {
-    name = "versiontools-1.9.1";
-    doCheck = (!isPy3k);
+  pyusb = callPackage ../development/python-modules/pyusb { libusb1 = pkgs.libusb1; };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/v/versiontools/${name}.tar.gz";
-      sha256 = "1xhl6kl7f4srgnw6zw4lr8j2z5vmrbaa83nzn2c9r2m1hwl36sd9";
-    };
+  BlinkStick = callPackage ../development/python-modules/blinkstick { };
 
-  };
+  usbtmc = callPackage ../development/python-modules/usbtmc {};
 
-  veryprettytable = buildPythonPackage rec {
-    name = "veryprettytable-${version}";
-    version = "0.8.1";
+  txgithub = callPackage ../development/python-modules/txgithub { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/v/veryprettytable/${name}.tar.gz";
-      sha256 = "1k1rifz8x6qcicmx2is9vgxcj0qb2f5pvzrp7zhmvbmci3yack3f";
-    };
+  txrequests = callPackage ../development/python-modules/txrequests { };
 
-    propagatedBuildInputs = [ self.termcolor self.colorama ];
+  txamqp = callPackage ../development/python-modules/txamqp { };
 
-    meta = {
-      description = "A simple Python library for easily displaying tabular data in a visually appealing ASCII table format";
-      homepage = https://github.com/smeggingsmegger/VeryPrettyTable;
-      license = licenses.free;
-    };
-  };
+  versiontools = callPackage ../development/python-modules/versiontools { };
+
+  veryprettytable = callPackage ../development/python-modules/veryprettytable { };
 
   graphite-web = callPackage ../development/python-modules/graphite-web { };
 
@@ -9226,109 +4334,15 @@ EOF
 
   graphitepager = callPackage ../development/python-modules/graphitepager { };
 
-  pyspotify = buildPythonPackage rec {
-    name = "pyspotify-${version}";
-
-    version = "2.0.5";
-
-    src = pkgs.fetchurl {
-      url = "https://github.com/mopidy/pyspotify/archive/v${version}.tar.gz";
-      sha256 = "1ilbz2w1gw3f1bpapfa09p84dwh08bf7qcrkmd3aj0psz57p2rls";
-    };
-
-    propagatedBuildInputs = with self; [ cffi ];
-    buildInputs = [ pkgs.libspotify ];
-
-    # python zip complains about old timestamps
-    preConfigure = ''
-      find -print0 | xargs -0 touch
-    '';
-
-    postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
-      find "$out" -name _spotify.so -exec \
-          install_name_tool -change \
-          @loader_path/../Frameworks/libspotify.framework/libspotify \
-          ${pkgs.libspotify}/lib/libspotify.dylib \
-          {} \;
-    '';
-
-    # There are no tests
-    doCheck = false;
-
-    meta = {
-      homepage    = http://pyspotify.mopidy.com;
-      description = "A Python interface to Spotify’s online music streaming service";
-      license     = licenses.unfree;
-      maintainers = with maintainers; [ lovek323 rickynils ];
-      platforms   = platforms.unix;
-    };
-  };
-
-  pykka = buildPythonPackage rec {
-    name = "pykka-${version}";
+  pyspotify = callPackage ../development/python-modules/pyspotify { };
 
-    version = "1.2.0";
-
-    src = pkgs.fetchgit {
-      url = "https://github.com/jodal/pykka.git";
-      rev = "refs/tags/v${version}";
-      sha256 = "0qlfw1054ap0cha1m6dbnq51kjxqxaf338g7jwnwy33b3gr8x0hg";
-    };
-
-    # There are no tests
-    doCheck = false;
-
-    meta = {
-      homepage = http://www.pykka.org;
-      description = "A Python implementation of the actor model";
-      maintainers = with maintainers; [ rickynils ];
-    };
-  };
+  pykka = callPackage ../development/python-modules/pykka { };
 
   ws4py = callPackage ../development/python-modules/ws4py {};
 
-  gdata = buildPythonPackage rec {
-    name = "gdata-${version}";
-    version = "2.0.18";
+  gdata = callPackage ../development/python-modules/gdata { };
 
-    src = pkgs.fetchurl {
-      url = "https://gdata-python-client.googlecode.com/files/${name}.tar.gz";
-      sha256 = "1dpxl5hwyyqd71avpm5vkvw8fhlvf9liizmhrq9jphhrx0nx5rsn";
-    };
-
-    # Fails with "error: invalid command 'test'"
-    doCheck = false;
-
-    meta = {
-      homepage = https://code.google.com/p/gdata-python-client/;
-      description = "Python client library for Google data APIs";
-      license = licenses.asl20;
-    };
-  };
-
-  IMAPClient = buildPythonPackage rec {
-    name = "IMAPClient-${version}";
-    version = "0.13";
-    disabled = isPy34 || isPy35;
-
-    src = pkgs.fetchurl {
-      url = "http://freshfoo.com/projects/IMAPClient/${name}.tar.gz";
-      sha256 = "0v7kd1crdbff0rmh4ddm5qszkis6hpk9084qh94al8h7g4y9l3is";
-    };
-
-    buildInputs = with self; [ mock ];
-
-    preConfigure = ''
-      sed -i '/distribute_setup/d' setup.py
-      substituteInPlace setup.py --replace "mock==0.8.0" "mock"
-    '';
-
-    meta = {
-      homepage = http://imapclient.freshfoo.com/;
-      description = "Easy-to-use, Pythonic and complete IMAP client library";
-      license = licenses.bsd3;
-    };
-  };
+  IMAPClient = callPackage ../development/python-modules/imapclient { };
 
   Logbook = callPackage ../development/python-modules/Logbook { };
 
@@ -9340,282 +4354,52 @@ EOF
     inherit (pkgs) libvirt;
   };
 
-  rpdb = buildPythonPackage rec {
-    name = "rpdb-0.1.5";
+  rpdb = callPackage ../development/python-modules/rpdb { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/rpdb/${name}.tar.gz";
-      sha256 = "0rql1hq3lziwcql0h3dy05w074cn866p397ng9bv6qbz85ifw1bk";
-    };
-
-    meta = {
-      description = "pdb wrapper with remote access via tcp socket";
-      homepage = https://github.com/tamentis/rpdb;
-      license = licenses.bsd2;
-    };
-  };
-
-
-  grequests = buildPythonPackage rec {
-    pname = "grequests";
-    version = "0.3.0";
-    name = "${pname}-${version}";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "0lafzax5igbh8y4x0krizr573wjsxz7bhvwygiah6qwrzv83kv5c";
-    };
-
-    # No tests in archive
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ requests gevent ];
-
-    meta = {
-      description = "Asynchronous HTTP requests";
-      homepage = https://github.com/kennethreitz/grequests;
-      license = with licenses; [ bsd2 ];
-      maintainers = with maintainers; [ matejc ];
-    };
-  };
+  grequests = callPackage ../development/python-modules/grequests { };
 
   first = callPackage ../development/python-modules/first {};
 
-  flaskbabel = buildPythonPackage rec {
-    name = "Flask-Babel-0.11.1";
+  flaskbabel = callPackage ../development/python-modules/flaskbabel { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/F/Flask-Babel/${name}.tar.gz";
-      sha256 = "16b80cipdba9xj3jlaiaq6wgrgpjb70w3j01jjy9hbp4k71kd6yj";
-    };
-
-    propagatedBuildInputs = with self; [ flask jinja2 speaklater Babel pytz ];
-
-    meta = {
-      description = "Adds i18n/l10n support to Flask applications";
-      homepage = https://github.com/mitsuhiko/flask-babel;
-      license = "bsd";
-      maintainers = with maintainers; [ matejc ];
-    };
-  };
-
-  speaklater = buildPythonPackage rec {
-    name = "speaklater-1.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/speaklater/${name}.tar.gz";
-      sha256 = "1ab5dbfzzgz6cnz4xlwx79gz83id4bhiw67k1cgqrlzfs0va7zjr";
-    };
-
-    meta = {
-      description = "Implements a lazy string for python useful for use with gettext";
-      homepage = https://github.com/mitsuhiko/speaklater;
-      license = "bsd";
-      maintainers = with maintainers; [ matejc ];
-    };
-  };
+  speaklater = callPackage ../development/python-modules/speaklater { };
 
   speedtest-cli = callPackage ../development/python-modules/speedtest-cli { };
 
   pushbullet = callPackage ../development/python-modules/pushbullet { };
 
-  power = buildPythonPackage rec {
-    name = "power-1.4";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/power/${name}.tar.gz";
-      sha256 = "7d7d60ec332acbe3a7d00379b45e39abf650bf7ee311d61da5ab921f52f060f0";
-    };
-
-    # Tests can't work because there is no power information available.
-    doCheck = false;
-
-    meta = {
-      description = "Cross-platform system power status information";
-      homepage = https://github.com/Kentzo/Power;
-      license = licenses.mit;
-    };
-  };
+  power = callPackage ../development/python-modules/power { };
 
   # added 2018-05-23, can be removed once 18.09 is branched off
   udiskie = throw "pythonPackages.udiskie has been replaced by udiskie";
 
   pythonefl = callPackage ../development/python-modules/python-efl { };
 
-  tlsh = buildPythonPackage rec {
-    name = "tlsh-3.4.5";
-    src = pkgs.fetchFromGitHub {
-      owner = "trendmicro";
-      repo = "tlsh";
-      rev = "22fa9a62068b92c63f2b5a87004a7a7ceaac1930";
-      sha256 = "1ydliir308xn4ywy705mmsh7863ldlixdvpqwdhbipzq9vfpmvll";
-    };
-    buildInputs = with pkgs; [ cmake ];
-    # no test data
-    doCheck = false;
-    preConfigure = ''
-      mkdir build
-      cd build
-      cmake ..
-      cd ../py_ext
-    '';
-    meta = with stdenv.lib; {
-      description = "Trend Micro Locality Sensitive Hash";
-      homepage = https://github.com/trendmicro/tlsh;
-      license = licenses.asl20;
-      platforms = platforms.linux;
-    };
-  };
+  tlsh = callPackage ../development/python-modules/tlsh { };
 
-  toposort = buildPythonPackage rec {
-    name = "toposort-${version}";
-    version = "1.1";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/toposort/toposort-1.1.tar.gz";
-      sha256 = "1izmirbwmd9xrk7rq83p486cvnsslfa5ljvl7rijj1r64zkcnf3a";
-    };
-    meta = {
-      description = "A topological sort algorithm";
-      homepage = https://pypi.python.org/pypi/toposort/1.1;
-      maintainers = with maintainers; [ tstrobel ];
-      platforms = platforms.linux;
-      #license = licenses.apache;
-    };
-  };
+  toposort = callPackage ../development/python-modules/toposort { };
 
-  snapperGUI = buildPythonPackage rec {
-    name = "Snapper-GUI";
-
-    src = pkgs.fetchgit {
-      url = "https://github.com/ricardomv/snapper-gui";
-      rev = "11d98586b122180c75a86fccda45c4d7e3137591";
-      sha256 = "7a9f86fc17dbf130526e70c3e925eac30e2c74d6b932efbf7e7cd9fbba6dc4b1";
-    };
-
-    # no tests available
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ pygobject3 dbus-python ];
-
-    meta = {
-      homepage = https://github.com/ricardomv/snapper-gui;
-      description = "Graphical frontend for snapper";
-      license = licenses.gpl2;
-      maintainers = with maintainers; [ tstrobel ];
-    };
-  };
+  snapperGUI = callPackage ../development/python-modules/snappergui { };
 
   uncertainties = callPackage ../development/python-modules/uncertainties { };
 
-  funcy = buildPythonPackage rec {
-    name = "funcy-1.6";
-
-    src = pkgs.fetchurl {
-        url = "mirror://pypi/f/funcy/${name}.tar.gz";
-        sha256 = "511495db0c5660af18d3151b008c6ce698ae7fbf60887278e79675e35eed1f01";
-    };
-
-    # No tests
-    doCheck = false;
-
-    meta = {
-      description = "Collection of fancy functional tools focused on practicality";
-      homepage = "http://funcy.readthedocs.org/";
-      license = licenses.bsd3;
-
-    };
-  };
+  funcy = callPackage ../development/python-modules/funcy { };
 
   vxi11 = callPackage ../development/python-modules/vxi11 { };
 
-  svg2tikz = self.buildPythonPackage {
-    name = "svg2tikz-1.0.0";
-    disabled = ! isPy27;
-
-    propagatedBuildInputs = with self; [lxml];
-
-    src = pkgs.fetchgit {
-      url = "https://github.com/kjellmf/svg2tikz";
-      sha256 = "429428ec435e53672b85cdfbb89bb8af0ff9f8238f5d05970729e5177d252d5f";
-      rev = "ad36f2c3818da13c4136d70a0fd8153acf8daef4";
-    };
-
-    meta = {
-      homepage = https://github.com/kjellmf/svg2tikz;
-      description = "An SVG to TikZ converter";
-      license = licenses.gpl2Plus;
-      maintainers =  with maintainers; [ gal_bolle ];
-    };
-  };
-
-  WSGIProxy = buildPythonPackage rec {
-    name = "WSGIProxy-${version}";
-    version = "0.2.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/W/WSGIProxy/WSGIProxy-${version}.tar.gz";
-      sha256 = "0wqz1q8cvb81a37gb4kkxxpv4w7k8192a08qzyz67rn68ln2wcig";
-    };
-
-    propagatedBuildInputs = with self; [
-      paste six
-    ];
-
-    disabled = isPy3k; # Judging from SyntaxError
-
-    meta = with stdenv.lib; {
-      description = "WSGIProxy gives tools to proxy arbitrary(ish) WSGI requests to other";
-      homepage = "http://pythonpaste.org/wsgiproxy/";
-    };
-  };
+  svg2tikz = callPackage ../development/python-modules/svg2tikz { };
 
-  blist = buildPythonPackage rec {
-    name = "blist-${version}";
-    version = "1.3.6";
-    disabled = isPyPy;
+  WSGIProxy = callPackage ../development/python-modules/wsgiproxy { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/b/blist/blist-${version}.tar.gz";
-      sha256 = "1hqz9pqbwx0czvq9bjdqjqh5bwfksva1is0anfazig81n18c84is";
-    };
-  };
+  blist = callPackage ../development/python-modules/blist { };
 
   canonicaljson = callPackage ../development/python-modules/canonicaljson { };
 
-  daemonize = buildPythonPackage rec {
-    name = "daemonize-${version}";
-    version = "2.4.2";
+  daemonize = callPackage ../development/python-modules/daemonize { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/d/daemonize/daemonize-${version}.tar.gz";
-      sha256 = "0y139sq657bpzfv6k0aqm4071z4s40i6ybpni9qvngvdcz6r86n2";
-    };
-  };
-
-  pydenticon = buildPythonPackage rec {
-    name = "pydenticon-${version}";
-    version = "0.2";
+  pydenticon = callPackage ../development/python-modules/pydenticon { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pydenticon/pydenticon-0.2.tar.gz";
-      sha256 = "035dawcspgjw2rksbnn863s7b0i9ac8cc1nshshvd1l837ir1czp";
-    };
-    propagatedBuildInputs = with self; [
-      pillow mock
-    ];
-  };
-
-  pynac = buildPythonPackage rec {
-    name = "pynac-${version}";
-    version = "0.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://sourceforge/project/pynac/pynac/pynac-0.2/pynac-0.2.tar.gz";
-      sha256 = "0avzqqcxl54karjmla9jbsyid98mva36lxahwmrsx5h40ys2ggxp";
-    };
-
-    propagatedBuildInputs = with self; [];
-  };
+  pynac = callPackage ../development/python-modules/pynac { };
 
   pybindgen = callPackage ../development/python-modules/pybindgen {};
 
@@ -9627,148 +4411,27 @@ EOF
 
   service-identity = callPackage ../development/python-modules/service_identity { };
 
-  signedjson = buildPythonPackage rec {
-    name = "signedjson-${version}";
-    version = "1.0.0";
-
-    src = pkgs.fetchgit {
-      url = "https://github.com/matrix-org/python-signedjson.git";
-      rev = "refs/tags/v${version}";
-      sha256 = "0b8xxhc3npd4567kqapfp4gs7m0h057xam3an7424az262ind82n";
-    };
-
-    propagatedBuildInputs = with self; [
-      canonicaljson unpaddedbase64 pynacl
-    ];
-  };
-
-  unpaddedbase64 = buildPythonPackage rec {
-    name = "unpaddedbase64-${version}";
-    version = "1.1.0";
-
-    src = pkgs.fetchgit {
-      url = "https://github.com/matrix-org/python-unpaddedbase64.git";
-      rev = "refs/tags/v${version}";
-      sha256 = "0if3fjfxga0bwdq47v77fs9hrcqpmwdxry2i2a7pdqsp95258nxd";
-    };
-  };
+  signedjson = callPackage ../development/python-modules/signedjson { };
 
+  unpaddedbase64 = callPackage ../development/python-modules/unpaddedbase64 { };
 
   thumbor = callPackage ../development/python-modules/thumbor { };
 
-  thumborPexif = self.buildPythonPackage rec {
-    name = "thumbor-pexif-0.14";
-    disabled = ! isPy27;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/thumbor-pexif/${name}.tar.gz";
-      sha256 = "715cd24760c7c28d6270c79c9e29b55b8d952a24e0e56833d827c2c62451bc3c";
-    };
-
-    meta = {
-      description = "Module to parse and edit the EXIF data tags in a JPEG image";
-      homepage = http://www.benno.id.au/code/pexif/;
-      license = licenses.mit;
-    };
-  };
-
-  pync = buildPythonPackage rec {
-    version  = "1.4";
-    baseName = "pync";
-    name     = "${baseName}-${version}";
-    disabled = ! isPy27;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/${baseName}/${name}.tar.gz";
-      sha256 = "0lc1x0pai85avm1r452xnvxc12wijnhz87xv20yp3is9fs6rnkrh";
-    };
-
-    buildInputs = with self; [ pkgs.coreutils ];
+  thumborPexif = callPackage ../development/python-modules/thumborpexif { };
 
-    propagatedBuildInputs = with self; [ dateutil ];
-
-    preInstall = stdenv.lib.optionalString stdenv.isDarwin ''
-      sed -i 's|^\([ ]*\)self.bin_path.*$|\1self.bin_path = "${pkgs.terminal-notifier}/bin/terminal-notifier"|' build/lib/pync/TerminalNotifier.py
-    '';
-
-    meta = {
-      description = "Python Wrapper for Mac OS 10.8 Notification Center";
-      homepage    = https://pypi.python.org/pypi/pync/1.4;
-      license     = licenses.mit;
-      platforms   = platforms.darwin;
-      maintainers = with maintainers; [ lovek323 ];
-    };
-  };
+  pync = callPackage ../development/python-modules/pync { };
 
   weboob = callPackage ../development/python-modules/weboob { };
 
-  datadiff = buildPythonPackage rec {
-    name = "datadiff-1.1.6";
+  datadiff = callPackage ../development/python-modules/datadiff { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/d/datadiff/datadiff-1.1.6.zip";
-      sha256 = "f1402701063998f6a70609789aae8dc05703f3ad0a34882f6199653654c55543";
-    };
-
-    buildInputs = with self; [ nose ];
-
-    meta = {
-      description = "DataDiff";
-      homepage = https://sourceforge.net/projects/datadiff/;
-      license = licenses.asl20;
-    };
-  };
+  termcolor = callPackage ../development/python-modules/termcolor { };
 
-  termcolor = buildPythonPackage rec {
-    name = "termcolor-1.1.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/termcolor/termcolor-1.1.0.tar.gz";
-      sha256 = "1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b";
-    };
-
-    meta = {
-      description = "Termcolor";
-      homepage = https://pypi.python.org/pypi/termcolor;
-      license = licenses.mit;
-    };
-  };
-
-  html2text = buildPythonPackage rec {
-    name = "html2text-2016.9.19";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/h/html2text/${name}.tar.gz";
-      sha256 = "554ef5fd6c6cf6e3e4f725a62a3e9ec86a0e4d33cd0928136d1c79dbeb7b2d55";
-    };
-
-    meta = {
-      description = "Turn HTML into equivalent Markdown-structured text";
-      homepage = https://github.com/Alir3z4/html2text/;
-      license = licenses.gpl3;
-    };
-  };
+  html2text = callPackage ../development/python-modules/html2text { };
 
   pychart = callPackage ../development/python-modules/pychart {};
 
-  parsimonious = buildPythonPackage rec {
-    version = "0.7.0";
-    name = "parsimonious-${version}";
-    src = pkgs.fetchFromGitHub {
-      repo = "parsimonious";
-      owner = "erikrose";
-      rev = version;
-      sha256 = "087npc8ccryrxabmqifcz56w4wd0hzmv0mc91wrbhc1sil196j0a";
-    };
-
-    propagatedBuildInputs = with self; [ nose six ];
-
-    meta = {
-      homepage = "https://github.com/erikrose/parsimonious";
-      description = "Fast arbitrary-lookahead parser written in pure Python";
-      license = licenses.mit;
-    };
-  };
+  parsimonious = callPackage ../development/python-modules/parsimonious { };
 
   networkx = callPackage ../development/python-modules/networkx { };
 
@@ -9776,345 +4439,43 @@ EOF
 
   ofxhome = callPackage ../development/python-modules/ofxhome { };
 
-  ofxparse = buildPythonPackage rec {
-    name = "ofxparse-0.14";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/o/ofxparse/${name}.tar.gz";
-      sha256 = "d8c486126a94d912442d040121db44fbc4a646ea70fa935df33b5b4dbfbbe42a";
-    };
-
-    propagatedBuildInputs = with self; [ six beautifulsoup4 ];
+  ofxparse = callPackage ../development/python-modules/ofxparse { };
 
-    meta = {
-      homepage = "http://sites.google.com/site/ofxparse";
-      description = "Tools for working with the OFX (Open Financial Exchange) file format";
-      license = licenses.mit;
-    };
-  };
-
-  ofxtools = buildPythonPackage rec {
-    name = "ofxtools-0.3.8";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/o/ofxtools/${name}.tar.gz";
-      sha256 = "88f289a60f4312a1599c38a8fb3216e2b46d10cc34476f9a16a33ac8aac7ec35";
-    };
-
-    checkPhase = ''
-      ${python.interpreter} -m unittest discover -s ofxtools
-    '';
-
-    buildInputs = with self; [ sqlalchemy ];
-
-    meta = {
-      homepage = "https://github.com/csingley/ofxtools";
-      description = "Library for working with Open Financial Exchange (OFX) formatted data used by financial institutions";
-      license = licenses.mit;
-      broken = true;
-    };
-  };
-
-  basemap = buildPythonPackage rec {
-    name = "basemap-1.0.7";
-
-    src = pkgs.fetchurl {
-      url = "mirror://sourceforge/project/matplotlib/matplotlib-toolkits/basemap-1.0.7/basemap-1.0.7.tar.gz";
-      sha256 = "0ca522zirj5sj10vg3fshlmgi615zy5gw2assapcj91vsvhc4zp0";
-    };
+  ofxtools = callPackage ../development/python-modules/ofxtools { };
 
-    propagatedBuildInputs = with self; [ numpy matplotlib pillow ];
-    buildInputs = with self; with pkgs ; [ setuptools geos proj ];
-
-    # Standard configurePhase from `buildPythonPackage` seems to break the setup.py script
-    configurePhase = ''
-      export GEOS_DIR=${pkgs.geos}
-    '';
-
-    # The 'check' target is not supported by the `setup.py` script.
-    # TODO : do the post install checks (`cd examples && ${python.interpreter} run_all.py`)
-    doCheck = false;
-
-    meta = {
-      homepage = "https://matplotlib.org/basemap/";
-      description = "Plot data on map projections with matplotlib";
-      longDescription = ''
-        An add-on toolkit for matplotlib that lets you plot data on map projections with
-        coastlines, lakes, rivers and political boundaries. See
-        http://matplotlib.github.com/basemap/users/examples.html for examples of what it can do.
-      '';
-      license = with licenses; [ mit gpl2 ];
-    };
-  };
+  basemap = callPackage ../development/python-modules/basemap { };
 
   dicttoxml = callPackage ../development/python-modules/dicttoxml { };
 
   markdown2 = callPackage ../development/python-modules/markdown2 { };
 
-  evernote = buildPythonPackage rec {
-    name = "evernote-${version}";
-    version = "1.25.0";
-    disabled = ! isPy27; #some dependencies do not work with py3
+  evernote = callPackage ../development/python-modules/evernote { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/e/evernote/${name}.tar.gz";
-      sha256 = "1lwlg6fpi3530245jzham1400a5b855bm4sbdyck229h9kg1v02d";
-    };
+  setproctitle = callPackage ../development/python-modules/setproctitle { };
 
-     propagatedBuildInputs = with self; [ oauth2 ];
-
-     meta = {
-      description = "Evernote SDK for Python";
-      homepage = http://dev.evernote.com;
-      license = licenses.asl20;
-      maintainers = with maintainers; [ hbunke ];
-     };
-  };
+  thrift = callPackage ../development/python-modules/thrift { };
 
-  setproctitle = buildPythonPackage rec {
-    name = "python-setproctitle-${version}";
-    version = "1.1.9";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/setproctitle/setproctitle-${version}.tar.gz";
-      sha256 = "1mqadassxcm0m9r1l02m5vr4bbandn48xz8gifvxmb4wiz8i8d0w";
-    };
-
-    meta = {
-      description = "Allows a process to change its title (as displayed by system tools such as ps and top)";
-      homepage =  https://github.com/dvarrazzo/py-setproctitle;
-      license = licenses.bsdOriginal;
-      maintainers = with maintainers; [ exi ];
-    };
-  };
-
-  thrift = buildPythonPackage rec {
-    name = "thrift-${version}";
-    version = "0.9.3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/thrift/${name}.tar.gz";
-      sha256 = "dfbc3d3bd19d396718dab05abaf46d93ae8005e2df798ef02e32793cd963877e";
-    };
-
-    # No tests. Breaks when not disabling.
-    doCheck = false;
-
-    meta = {
-      description = "Python bindings for the Apache Thrift RPC system";
-      homepage = http://thrift.apache.org/;
-      license = licenses.asl20;
-      maintainers = with maintainers; [ hbunke ];
-
-    };
-  };
-
-  geeknote = buildPythonPackage rec {
-    version = "2015-05-11";
-    name = "geeknote-${version}";
-    disabled = ! isPy27;
-
-    src = pkgs.fetchFromGitHub {
-      owner = "VitaliyRodnenko";
-      repo = "geeknote";
-      rev = "8489a87d044e164edb321ba9acca8d4631de3dca";
-      sha256 = "0l16v4xnyqnsf84b1pma0jmdyxvmfwcv3sm8slrv3zv7zpmcm3lf";
-    };
-
-    /* build with tests fails with "Can not create application dirictory :
-     /homeless-shelter/.geeknotebuilder". */
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [
-        thrift
-        beautifulsoup4
-        markdown2
-        sqlalchemy
-        html2text
-        evernote
-    ];
-
-    meta = {
-      description = "Work with Evernote from command line";
-      homepage = http://www.geeknote.me;
-      license = licenses.gpl1;
-      maintainers = with maintainers; [ hbunke ];
-
-    };
-  };
+  geeknote = callPackage ../development/python-modules/geeknote { };
 
   trollius = callPackage ../development/python-modules/trollius {};
 
   neovim = callPackage ../development/python-modules/neovim {};
 
-  neovim_gui = buildPythonPackage rec {
-    name = "neovim-pygui-${self.neovim.version}";
-    version = "0.1.3";
-    disabled = !isPy27;
-
-    src = pkgs.fetchFromGitHub {
-      owner = "neovim";
-      repo = "python-gui";
-      rev = version;
-      sha256 = "1vpvr3zm3f9sxg1z1cl7f7gi8v1xksjdvxj62qnw65aqj3zqxnkz";
-    };
-
-    propagatedBuildInputs = [
-      self.neovim
-      self.click
-      self.pygobject3
-      pkgs.gobjectIntrospection
-      pkgs.makeWrapper
-      pkgs.gtk3
-    ];
-
-    patchPhase = ''
-      sed -i -e "s|entry_points=entry_points,|entry_points=dict(console_scripts=['pynvim=neovim.ui.cli:main [GUI]']),|" setup.py
-    '';
-
-    postInstall = ''
-      wrapProgram $out/bin/pynvim \
-        --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
-        --prefix PYTHONPATH : "${self.pygobject3}/lib/python2.7/site-packages:$PYTHONPATH"
-    '';
-  };
+  neovim_gui = callPackage ../development/python-modules/neovim_gui { };
 
-  typogrify = buildPythonPackage rec {
-    name = "typogrify-2.0.7";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/typogrify/${name}.tar.gz";
-      sha256 = "8be4668cda434163ce229d87ca273a11922cb1614cb359970b7dc96eed13cb38";
-    };
-    disabled = isPyPy;
-    # Wants to set up Django
-    doCheck = false;
-    propagatedBuildInputs = with self; [ django smartypants jinja2 ];
-    meta = {
-      description = "Filters to enhance web typography, including support for Django & Jinja templates";
-      homepage = "https://github.com/mintchaos/typogrify";
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ garbas ];
-    };
-  };
+  typogrify = callPackage ../development/python-modules/typogrify { };
 
-  smartypants = buildPythonPackage rec {
-    version = "1.8.6";
-    name = "smartypants-${version}";
-    src = pkgs.fetchhg {
-      url = "https://bitbucket.org/livibetter/smartypants.py";
-      rev = "v${version}";
-      sha256 = "1cmzz44d2hm6y8jj2xcq1wfr26760gi7iq92ha8xbhb1axzd7nq6";
-    };
-    disabled = isPyPy;
-    buildInputs = with self; [ ]; #docutils pygments ];
-    meta = {
-      description = "Python with the SmartyPants";
-      homepage = "https://bitbucket.org/livibetter/smartypants.py";
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ garbas ];
-    };
-  };
-
-  pypeg2 = buildPythonPackage rec {
-    version = "2.15.2";
-    name = "pypeg2-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pyPEG2/pyPEG2-${version}.tar.gz";
-      sha256 = "0v8ziaam2r637v94ra4dbjw6jzxz99gs5x4i585kgag1v204yb9b";
-    };
+  smartypants = callPackage ../development/python-modules/smartypants { };
 
-    checkPhase = ''
-      # The tests assume that test_xmlast does not run before test_pyPEG2.
-      python -m unittest pypeg2.test.test_pyPEG2 pypeg2.test.test_xmlast
-    '';
-
-    #https://bitbucket.org/fdik/pypeg/issues/36/test-failures-on-py35
-    doCheck = !isPy3k;
-
-    meta = {
-      description = "PEG parser interpreter in Python";
-      homepage = http://fdik.org/pyPEG;
-      license = licenses.gpl2;
-    };
-  };
+  pypeg2 = callPackage ../development/python-modules/pypeg2 { };
 
   torchvision = callPackage ../development/python-modules/torchvision { };
 
-  jenkinsapi = buildPythonPackage rec {
-    name = "jenkinsapi-${version}";
-    version = "0.2.32";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/j/jenkinsapi/${name}.tar.gz";
-      sha256 = "0fcc78b8dfc87237942aad2a8be54dbc08bc4afceaa7f6897f3d894e7d4bfd22";
-    };
-
-    propagatedBuildInputs = with self; [ pytz requests ];
-
-    buildInputs = with self; [ coverage mock nose unittest2 ];
+  jenkinsapi = callPackage ../development/python-modules/jenkinsapi { };
 
-    meta = {
-      description = "A Python API for accessing resources on a Jenkins continuous-integration server";
-      homepage = https://github.com/salimfadhley/jenkinsapi;
-      maintainers = with maintainers; [ drets ];
-      license = licenses.mit;
-    };
-  };
-
-  jenkins-job-builder = buildPythonPackage rec {
-    name = "jenkins-job-builder-2.0.0.0b2";
-    disabled = !isPy27;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/j/jenkins-job-builder/${name}.tar.gz";
-      sha256 = "1y0yl2w6c9c91f9xbjkvff1ag8p72r24nzparrzrw9sl8kn9632x";
-    };
-
-    patchPhase = ''
-      export HOME=$TMPDIR
-    '';
-
-    buildInputs = with self; [
-      pip
-    ];
-
-    propagatedBuildInputs = with self; [
-      pbr
-      mock
-      python-jenkins
-      pyyaml
-      six
-      stevedore
-    ];
-
-    meta = {
-      description = "Jenkins Job Builder is a system for configuring Jenkins jobs using simple YAML files stored in Git";
-      homepage = "https://docs.openstack.org/infra/system-config/jjb.html";
-      license = licenses.asl20;
-      maintainers = with maintainers; [ garbas ];
-    };
-  };
-
-  dot2tex = buildPythonPackage rec {
-    name = "dot2tex-2.9.0";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/d/dot2tex/dot2tex-2.9.0.tar.gz";
-      sha256 = "7d3e54add7dccdaeb6cc9e61ceaf7b587914cf8ebd6821cfea008acdc1e50d4a";
-    };
+  jenkins-job-builder = callPackage ../development/python-modules/jenkins-job-builder { };
 
-    # Tests fail with 3.x. Furthermore, package is no longer maintained.
-    disabled = isPy3k;
-
-    propagatedBuildInputs = with self; [
-      pyparsing
-    ];
-
-    meta = {
-      description = "Convert graphs generated by Graphviz to LaTeX friendly formats";
-      homepage = "https://github.com/kjellmf/dot2tex";
-      license = licenses.mit;
-    };
-  };
+  dot2tex = callPackage ../development/python-modules/dot2tex { };
 
   poezio = callPackage ../applications/networking/instant-messengers/poezio { };
 
@@ -10128,210 +4489,31 @@ EOF
 
   pafy = callPackage ../development/python-modules/pafy { };
 
-  suds = buildPythonPackage rec {
-    name = "suds-0.4";
-    disabled = isPy3k;
+  suds = callPackage ../development/python-modules/suds { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/suds/suds-0.4.tar.gz";
-      sha256 = "1w4s9051iv90c0gs73k80c3d51y2wbx1xgfdgg2hk7mv4gjlllnm";
-    };
+  suds-jurko = callPackage ../development/python-modules/suds-jurko { };
 
-    patches = [ ../development/python-modules/suds-0.4-CVE-2013-2217.patch ];
+  mailcap-fix = callPackage ../development/python-modules/mailcap-fix { };
 
-    meta = with stdenv.lib; {
-      # Broken for security issues:
-      # - https://github.com/NixOS/nixpkgs/issues/19678
-      # - https://lwn.net/Vulnerabilities/559200/
-      broken = true;
-      description = "Lightweight SOAP client";
-      homepage = https://fedorahosted.org/suds;
-      license = licenses.lgpl3Plus;
-    };
-  };
-
-  suds-jurko = buildPythonPackage rec {
-    name = "suds-jurko-${version}";
-    version = "0.6";
-    disabled = isPyPy;  # lots of failures
+  maildir-deduplicate = callPackage ../development/python-modules/maildir-deduplicate { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/suds-jurko/${name}.zip";
-      sha256 = "1s4radwf38kdh3jrn5acbidqlr66sx786fkwi0rgq61hn4n2bdqw";
-    };
-
-    buildInputs = [ self.pytest ];
-
-    preBuild = ''
-      # fails
-      substituteInPlace tests/test_transport_http.py \
-        --replace "test_sending_unicode_data" "noop"
-    '';
-
-    meta = with stdenv.lib; {
-      description = "Lightweight SOAP client (Jurko's fork)";
-      homepage = https://bitbucket.org/jurko/suds;
-    };
-  };
-
-  mailcap-fix = buildPythonPackage rec {
-    name = "mailcap-fix-${version}";
-    version = "1.0.1";
-
-    disabled = isPy36; # this fix is merged into python 3.6
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/m/mailcap-fix/${name}.tar.gz";
-      sha256 = "02lijkq6v379r8zkqg9q2srin3i80m4wvwik3hcbih0s14v0ng0i";
-    };
-
-    meta = with stdenv.lib; {
-      description = "A patched mailcap module that conforms to RFC 1524";
-      homepage = "https://github.com/michael-lazar/mailcap_fix";
-      license = licenses.unlicense;
-    };
-  };
-
-  maildir-deduplicate = buildPythonPackage rec {
-    name = "maildir-deduplicate-${version}";
-    version = "1.0.2";
-
-    disabled = !isPy27;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/m/maildir-deduplicate/${name}.tar.gz";
-      sha256 = "1xy5z756alrjgpl9qx2gdx898rw1mryrqkwmipbh39mgrvkl3fz9";
-    };
-
-    propagatedBuildInputs = with self; [ click ];
-
-    meta = with stdenv.lib; {
-      description = "Command-line tool to deduplicate mails from a set of maildir folders";
-      homepage = "https://github.com/kdeldycke/maildir-deduplicate";
-      license = licenses.gpl2;
-    };
-  };
-
-
-  mps-youtube = buildPythonPackage rec {
-    name = "mps-youtube-${version}";
-    version = "0.2.7.1";
-
-    disabled = (!isPy3k);
-
-    # disabled due to error in loading unittest
-    # don't know how to make test from: <mps_youtube. ...>
-    doCheck = false;
-
-    # before check create a directory and redirect XDG_CONFIG_HOME to it
-    preCheck = ''
-      mkdir -p check-phase
-      export XDG_CONFIG_HOME=$(pwd)/check-phase
-    '';
-
-    src = pkgs.fetchFromGitHub {
-      owner = "mps-youtube";
-      repo = "mps-youtube";
-      rev = "v${version}";
-      sha256 = "16zn5gwb3568w95lr21b88zkqlay61p1541sa9c3x69zpi8v0pys";
-    };
-
-    propagatedBuildInputs = with self; [ pafy ];
-
-    meta = with stdenv.lib; {
-      description = "Terminal based YouTube player and downloader";
-      homepage = https://github.com/np1/mps-youtube;
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ odi ];
-    };
-  };
+  mps-youtube = callPackage ../development/python-modules/mps-youtube { };
 
   d2to1 = callPackage ../development/python-modules/d2to1 { };
 
   ovh = callPackage ../development/python-modules/ovh { };
 
-  willow = buildPythonPackage rec {
-    name = "willow-${version}";
-    version = "0.2.2";
-    disabled = pythonOlder "2.7";
+  willow = callPackage ../development/python-modules/willow { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/W/Willow/Willow-${version}.tar.gz";
-      sha256 = "111c82fbfcda2710ce6201b0b7e0cfa1ff3c4f2f0dc788cc8dfc8db933c39c73";
-    };
-
-    propagatedBuildInputs = with self; [ six pillow ];
-
-    # Test data is not included
-    # https://github.com/torchbox/Willow/issues/34
-    doCheck = false;
-
-    meta = {
-      description = "A Python image library that sits on top of Pillow, Wand and OpenCV";
-      homepage = https://github.com/torchbox/Willow/;
-      license = licenses.bsd2;
-      maintainers = with maintainers; [ desiderius ];
-    };
-  };
-
-  importmagic = buildPythonPackage rec {
-    simpleName = "importmagic";
-    name = "${simpleName}-${version}";
-    version = "0.1.3";
-    doCheck = false;  # missing json file from tarball
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/i/${simpleName}/${name}.tar.gz";
-      sha256 = "194bl8l8sc2ibwi6g5kz6xydkbngdqpaj6r2gcsaw1fc73iswwrj";
-    };
-
-    propagatedBuildInputs = with self; [ six ];
-
-    meta = {
-      description = "Python Import Magic - automagically add, remove and manage imports";
-      homepage = https://github.com/alecthomas/importmagic;
-      license = "bsd";
-    };
-  };
+  importmagic = callPackage ../development/python-modules/importmagic { };
 
   xgboost = callPackage ../development/python-modules/xgboost {
     xgboost = pkgs.xgboost;
   };
 
-  xkcdpass = buildPythonPackage rec {
-    name = "xkcdpass-${version}";
-    version = "1.4.2";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/x/xkcdpass/xkcdpass-1.4.2.tar.gz";
-      sha256 = "4c1f8bee886820c42ccc64c15c3a2275dc6d01028cf6af7c481ded87267d8269";
-    };
+  xkcdpass = callPackage ../development/python-modules/xkcdpass { };
 
-    # No tests included
-    # https://github.com/redacted/XKCD-password-generator/issues/32
-    doCheck = false;
-
-    meta = {
-      homepage = https://pypi.python.org/pypi/xkcdpass/;
-      description = "Generate secure multiword passwords/passphrases, inspired by XKCD";
-      license = licenses.bsd3;
-      maintainers = [ ];
-    };
-  };
-
-  xlsx2csv = buildPythonPackage rec {
-    name = "xlsx2csv-${version}";
-    version = "0.7.2";
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/x/xlsx2csv/${name}.tar.gz";
-      sha256 = "7c6c8fa6c2774224d03a6a96049e116822484dccfa3634893397212ebcd23866";
-    };
-    meta = {
-      homepage = https://github.com/bitprophet/alabaster;
-      description = "Convert xlsx to csv";
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ jb55 ];
-    };
-  };
+  xlsx2csv = callPackage ../development/python-modules/xlsx2csv { };
 
   xmpppy = callPackage ../development/python-modules/xmpppy {};
 
@@ -10373,45 +4555,9 @@ EOF
 
   trezor = callPackage ../development/python-modules/trezor { };
 
-  trezor_agent = buildPythonPackage rec{
-    name = "${pname}-${version}";
-    pname = "trezor_agent";
-    version = "0.9.0";
-
-    src = fetchPypi {
-      inherit pname version;
-      sha256 = "1i5cdamlf3c0ym600pjklij74p8ifj9cv7xrpnrfl1b8nkadswbz";
-    };
-
-    propagatedBuildInputs = with self; [
-      trezor libagent ecdsa ed25519
-      mnemonic keepkey semver
-    ];
+  trezor_agent = callPackage ../development/python-modules/trezor_agent { };
 
-    meta = {
-      description = "Using Trezor as hardware SSH agent";
-      homepage = https://github.com/romanz/trezor-agent;
-      license = licenses.gpl3;
-      maintainers = with maintainers; [ np ];
-    };
-  };
-
-  x11_hash = buildPythonPackage rec{
-    version = "1.4";
-    name = "x11_hash-${version}";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/x/x11_hash/${name}.tar.gz";
-      sha256 = "172skm9xbbrivy1p4xabxihx9lsnzi53hvzryfw64m799k2fmp22";
-    };
-
-    meta = {
-      description = "Binding for X11 proof of work hashing";
-      homepage = https://github.com/mazaclub/x11_hash;
-      license = licenses.mit;
-      maintainers = with maintainers; [ np ];
-    };
-  };
+  x11_hash = callPackage ../development/python-modules/x11_hash { };
 
   termstyle = callPackage ../development/python-modules/termstyle { };
 
@@ -10419,90 +4565,17 @@ EOF
 
   topydo = throw "python3Packages.topydo was moved to topydo"; # 2017-09-22
 
-  w3lib = buildPythonPackage rec {
-    name = "w3lib-${version}";
-    version = "1.17.0";
-
-    buildInputs = with self ; [ six pytest ];
+  w3lib = callPackage ../development/python-modules/w3lib { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/w/w3lib/${name}.tar.gz";
-      sha256 = "0vshh300ay5wn5hwl9qcb32m71pz5s6miy0if56vm4nggy159inq";
-    };
-
-    meta = {
-      description = "A library of web-related functions";
-      homepage = "https://github.com/scrapy/w3lib";
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ drewkett ];
-    };
-  };
-
-  queuelib = buildPythonPackage rec {
-    name = "queuelib-${version}";
-    version = "1.4.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/q/queuelib/${name}.tar.gz";
-      sha256 = "a6829918157ed433fafa87b0bb1e93e3e63c885270166db5884a02c34c86f914";
-    };
-
-    buildInputs = with self ; [ pytest ];
-
-    meta = {
-      description = "A collection of persistent (disk-based) queues for Python";
-      homepage = "https://github.com/scrapy/queuelib";
-      license = licenses.bsd3;
-      maintainers = with maintainers; [ drewkett ];
-    };
-  };
+  queuelib = callPackage ../development/python-modules/queuelib { };
 
   scrapy = callPackage ../development/python-modules/scrapy { };
 
-  pandocfilters = buildPythonPackage rec{
-    version = "1.4.1";
-    pname = "pandocfilters";
-    name = pname + "-${version}";
-
-    src = fetchPypi{
-      inherit pname version;
-      sha256 = "ec8bcd100d081db092c57f93462b1861bcfa1286ef126f34da5cb1d969538acd";
-    };
-    # No tests available
-    doCheck = false;
-
-    meta = {
-      description = "A python module for writing pandoc filters, with a collection of examples";
-      homepage = https://github.com/jgm/pandocfilters;
-      license = licenses.mit;
-      maintainers = with maintainers; [];
-    };
-  };
+  pandocfilters = callPackage ../development/python-modules/pandocfilters { };
 
   htmltreediff = callPackage ../development/python-modules/htmltreediff { };
 
-  repeated_test = buildPythonPackage rec {
-    name = "repeated_test-${version}";
-    version = "0.1a3";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/r/repeated-test/${name}.tar.gz";
-      sha256 = "062syp7kl2g0x6qx3z8zb5sdycpi7qcpxp9iml2v8dqzqnij9bpg";
-    };
-
-    buildInputs = with self; [
-      unittest2
-    ];
-    propagatedBuildInputs = with self; [
-      six
-    ];
-
-    meta = {
-      description = "A quick unittest-compatible framework for repeating a test function over many fixtures";
-      homepage = "https://github.com/epsy/repeated_test";
-      license = licenses.mit;
-    };
-  };
+  repeated_test = callPackage ../development/python-modules/repeated_test { };
 
   Keras = callPackage ../development/python-modules/keras { };
 
@@ -10510,117 +4583,19 @@ EOF
 
   keras-preprocessing = callPackage ../development/python-modules/keras-preprocessing { };
 
-  Lasagne = buildPythonPackage rec {
-    name = "Lasagne-${version}";
-    version = "0.1";
-    disabled = isPy3k;
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/l/lasagne/${name}.tar.gz";
-      sha256 = "0cqj86rdm6c7y5vq3i13qy76fg5xi3yjp4r0hpqy8hvynv54wqrw";
-    };
-
-    propagatedBuildInputs = with self; [
-      numpy
-      Theano
-    ];
-
-    # there are no tests
-    doCheck = false;
-
-    meta = {
-      description = "Lightweight library to build and train neural networks in Theano";
-      homepage = "https://github.com/Lasagne/Lasagne";
-      maintainers = with maintainers; [ NikolaMandic ];
-      license = licenses.mit;
-    };
-  };
+  Lasagne = callPackage ../development/python-modules/lasagne { };
 
   send2trash = callPackage ../development/python-modules/send2trash { };
 
-  sigtools = buildPythonPackage rec {
-    name = "sigtools-${version}";
-    version = "1.1a3";
+  sigtools = callPackage ../development/python-modules/sigtools { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sigtools/${name}.tar.gz";
-      sha256 = "190w14vzbiyvxcl9jmyyimpahar5b0bq69v9iv7chi852yi71w6w";
-    };
-
-    buildInputs = with self; [
-      repeated_test
-      sphinx
-      mock
-      coverage
-      unittest2
-    ];
-    propagatedBuildInputs = with self; [
-      funcsigs
-      six
-    ];
-
-    patchPhase = ''sed -i s/test_suite="'"sigtools.tests"'"/test_suite="'"unittest2.collector"'"/ setup.py'';
-
-    meta = {
-      description = "Utilities for working with 3.3's inspect.Signature objects.";
-      homepage = "https://pypi.python.org/pypi/sigtools";
-      license = licenses.mit;
-    };
-  };
-
-  clize = buildPythonPackage rec {
-    name = "clize-${version}";
-    version = "3.0";
+  clize = callPackage ../development/python-modules/clize { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/c/clize/${name}.tar.gz";
-      sha256 = "1xkr3h404d7pgj5gdpg6bddv3v3yq2hgx8qlwkgw5abg218k53hm";
-    };
-
-    buildInputs = with self; [
-      dateutil
-    ];
-    propagatedBuildInputs = with self; [
-      sigtools
-    ];
-
-    meta = {
-      description = "Command-line argument parsing for Python";
-      homepage = "https://github.com/epsy/clize";
-      license = licenses.mit;
-    };
-  };
-
-  zerobin = buildPythonPackage rec {
-    name = "zerobin-${version}";
-    version = "20160108";
-
-    src = pkgs.fetchFromGitHub {
-      owner = "sametmax";
-      repo = "0bin";
-      rev = "7da1615";
-      sha256 = "1pzcwy454kn5216pvwjqzz311s6jbh7viw9s6kw4xps6f5h44bid";
-    };
-
-    propagatedBuildInputs = with self; [
-      cherrypy
-      bottle
-      lockfile
-      clize
-    ];
-    # zerobin doesn't have any tests, but includes a copy of cherrypy which
-    # can wrongly fail the check phase.
-    doCheck = false;
-    meta = {
-      description = "A client side encrypted pastebin";
-      homepage = https://0bin.net/;
-      license = licenses.wtfpl;
-    };
-  };
+  zerobin = callPackage ../development/python-modules/zerobin { };
 
   tensorflow-tensorboard = callPackage ../development/python-modules/tensorflow-tensorboard { };
 
-  tensorflow =
+  tensorflow = disabledIf isPy37 (
     if stdenv.isDarwin
     then callPackage ../development/python-modules/tensorflow/bin.nix { }
     else callPackage ../development/python-modules/tensorflow/bin.nix rec {
@@ -10628,7 +4603,7 @@ EOF
       inherit (pkgs.linuxPackages) nvidia_x11;
       cudatoolkit = pkgs.cudatoolkit_9_0;
       cudnn = pkgs.cudnn_cudatoolkit_9_0;
-    };
+    });
 
   tensorflowWithoutCuda = self.tensorflow.override {
     cudaSupport = false;
@@ -10640,144 +4615,25 @@ EOF
 
   tflearn = callPackage ../development/python-modules/tflearn { };
 
-  simpleai = buildPythonPackage rec {
-     version = "0.7.11";
-     name = "simpleai-${version}";
-
-     src = pkgs.fetchurl {
-       url= "https://pypi.python.org/packages/source/s/simpleai/${name}.tar.gz";
-       sha256 = "03frjc5jxsz9xm24jz7qa4hcp0dicgazrxkdsa2rsnir672lwkwz";
-     };
-
-     propagatedBuildInputs = with self; [ numpy ];
-
-     disabled = isPy3k;
-
-     #No tests in archive
-     doCheck = false;
-
-     meta = {
-       homepage = https://github.com/simpleai-team/simpleai;
-       description = "This lib implements many of the artificial intelligence algorithms described on the book 'Artificial Intelligence, a Modern Approach'";
-       maintainers = with maintainers; [ NikolaMandic ];
-     };
-  };
-
-  word2vec = buildPythonPackage rec {
-    name = "word2vec-${version}";
-    version = "0.9.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/w/word2vec/${name}.tar.gz";
-      sha256 = "a811e3e98a8e6dfe7bc851ebbbc2d6e5ab5142f2a134dd3c03daac997b546faa";
-    };
-
-    propagatedBuildInputs = with self; [ cython numpy ];
-
-    checkPhase = ''
-     cd word2vec/tests;
-      ${python.interpreter} test_word2vec.py
-    '';
-
-    meta = {
-      description = "Tool for computing continuous distributed representations of words";
-      homepage = "https://github.com/danielfrg/word2vec";
-      license     = licenses.asl20;
-      maintainers = with maintainers; [ NikolaMandic ];
-    };
-  };
-
-  tvdb_api = buildPythonPackage rec {
-    name = "tvdb_api-${version}";
-    version = "1.10";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/tvdb_api/${name}.tar.gz";
-      sha256 = "0hq887yb3rwc0rcw32lh7xdkk9bbrqy274aspzqkd6f7dyhp73ih";
-    };
-
-    propagatedBuildInputs = with self; [ requests-cache ];
+  simpleai = callPackage ../development/python-modules/simpleai { };
 
-    meta = {
-      description = "Simple to use TVDB (thetvdb.com) API in Python.";
-      homepage = "https://github.com/dbr/tvdb_api";
-      license = licenses.unlicense;
-      maintainers = with maintainers; [ peterhoeg ];
-    };
-  };
-
-  tvnamer = buildPythonPackage rec {
-    name = "tvnamer-${version}";
-    version = "2.4";
+  word2vec = callPackage ../development/python-modules/word2vec { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/tvnamer/${name}.tar.gz";
-      sha256 = "10iizmwna2xpyc2694hsrvny68y3bdq576p8kxsvg5gj2spnsxav";
-    };
+  tvdb_api = callPackage ../development/python-modules/tvdb_api { };
 
-    buildInputs = with self; [ pytest ];
-    propagatedBuildInputs = with self; [ tvdb_api ];
+  tvnamer = callPackage ../development/python-modules/tvnamer { };
 
-    # a ton of tests fail with: IOError: tvnamer/main.py could not be found in . or ..
-    doCheck = false;
-
-    meta = {
-      description = "Automatic TV episode file renamer, uses data from thetvdb.com via tvdb_api.";
-      homepage = "https://github.com/dbr/tvnamer";
-      license = licenses.unlicense;
-      maintainers = with maintainers; [ peterhoeg ];
-    };
-  };
-
-  threadpool = buildPythonPackage rec {
-    name = "threadpool-${version}";
-    version = "1.3.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/threadpool/${name}.tar.bz2";
-      sha256 = "197gzrxn9lbk0q1v079814c6s05cr4rwzyl6c1m6inkyif4yzr6c";
-    };
-  };
+  threadpool = callPackage ../development/python-modules/threadpool { };
 
   rocket-errbot = callPackage ../development/python-modules/rocket-errbot {  };
 
-  Yapsy = buildPythonPackage rec {
-    name = "Yapsy-${version}";
-    version = "1.11.223";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/y/yapsy/${name}.tar.gz";
-      sha256 = "19pjsnqizswnczhlav4lb7zlzs0n73ijrsgksy4374b14jkkkfs5";
-    };
-
-    doCheck = false;
-  };
+  Yapsy = callPackage ../development/python-modules/yapsy { };
 
   ansi = callPackage ../development/python-modules/ansi { };
 
-  pygments-markdown-lexer = buildPythonPackage rec {
-    name = "pygments-markdown-lexer-${version}";
-    version = "0.1.0.dev39";
+  pygments-markdown-lexer = callPackage ../development/python-modules/pygments-markdown-lexer { };
 
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/p/pygments-markdown-lexer/${name}.zip";
-      sha256 = "1pzb5wy23q3fhs0rqzasjnw6hdzwjngpakb73i98cn0b8lk8q4jc";
-    };
-
-    doCheck = false;
-
-    propagatedBuildInputs = with self; [ pygments ];
-  };
-
-  telegram = buildPythonPackage rec {
-    name = "telegram-${version}";
-    version = "0.0.1";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/telegram/${name}.tar.gz";
-      sha256 = "1495l2ml8mg120wfvqhikqkfczhwwaby40vdmsz8v2l69jps01fl";
-    };
-  };
+  telegram = callPackage ../development/python-modules/telegram { };
 
   python-telegram-bot = callPackage ../development/python-modules/python-telegram-bot { };
 
@@ -10805,46 +4661,11 @@ EOF
 
   hypchat = callPackage ../development/python-modules/hypchat { };
 
-  pivy = buildPythonPackage rec {
-    version = "20101207";
-    name = "pivy-${version}";
-    src = pkgs.fetchhg {
-      url = "https://bitbucket.org/Coin3D/pivy";
-      rev = "8eab90908f2a3adcc414347566f4434636202344";
-      sha256 = "18n14ha2d3j3ghg2f2aqnf2mks94nn7ma9ii7vkiwcay93zm82cf";
-    };
-    disabled = isPy3k; # Judging from SyntaxError
-    buildInputs = with self; [ pkgs.swig1 pkgs.coin3d pkgs.soqt pkgs.libGLU_combined pkgs.xorg.libXi ];
-  };
+  pivy = callPackage ../development/python-modules/pivy { };
 
   smugpy = callPackage ../development/python-modules/smugpy { };
 
-  smugline = stdenv.mkDerivation rec {
-    name    = pname + "-" + version;
-    pname   = "smugline";
-    version = "20160106";
-
-    src = pkgs.fetchFromGitHub {
-      owner  = "gingerlime";
-      repo   = pname;
-      rev    = "134554c574c2d282112ba60165a8c5ffe0f16fd4";
-      sha256 = "00n012ijkdrx8wsl8x3ghdcxcdp29s4kwr3yxvlyj79g5yhfvaj6";
-    };
-
-    phases = [ "unpackPhase" "installPhase" ];
-
-    buildInputs = [ python pkgs.makeWrapper ];
-
-    propagatedBuildInputs = with self; [ docopt requests smugpy ];
-
-    installPhase = ''
-      mkdir -p $out/bin $out/libexec
-      cp smugline.py $out/libexec
-      makeWrapper ${python.interpreter} $out/bin/smugline \
-        --add-flags "$out/libexec/smugline.py" \
-        --prefix PYTHONPATH : "$PYTHONPATH"
-    '';
-  };
+  smugline = callPackage ../development/python-modules/smugline { };
 
   txaio = callPackage ../development/python-modules/txaio { };