Skip to content

Instantly share code, notes, and snippets.

@benley
Last active August 29, 2015 14:14
Show Gist options
  • Save benley/4d7f01805e60b39c2556 to your computer and use it in GitHub Desktop.
Save benley/4d7f01805e60b39c2556 to your computer and use it in GitHub Desktop.
Nix private packages example
{ system ? builtins.currentSystem, github_token ? "" }:
let
pkgs = import <nixpkgs> { inherit system; };
python27Packages = pkgs.recurseIntoAttrs (
callPackage ./third_party/python_packages.nix {
python = pkgs.python27;
self = combinedPython27Packages;
});
combinedPython27Packages = pkgs.python27Packages // python27Packages;
callPackage = pkgs.lib.callPackageWith (pkgs // self);
# cribbed from nixos/modules/services/databases/postgresql.nix
postgresqlAndPlugins = pg: plugins:
pkgs.buildEnv {
name = "postgresql-and-plugins-${(builtins.parseDrvName pg.name).version}";
paths = [ pg ] ++ plugins;
postBuild =
''
mkdir -p $out/bin
rm $out/bin/{pg_config,postgres,pg_ctl}
cp --target-directory=$out/bin ${pg}/bin/{postgres,pg_config,pg_ctl}
'';
};
self = rec {
helioscope = callPackage ./helioscope {
pythonPackages = python27Packages;
inherit github_token;
};
mesos-dns = callPackage ./third_party/mesos-dns {};
postgresWithPostgis =
postgresqlAndPlugins pkgs.postgresql94 [postgis.v_2_1_4];
postgis = callPackage ./third_party/postgis {};
python27Packages = combinedPython27Packages;
synapse-aurora = callPackage ./synapse {};
};
in
# This lets us "publish" just the python packages defined in this repo, while
# making the combined set available at build time in "self".
self // { inherit python27Packages; }
{ pkgs, stdenv, python, python27Packages, self }:
with pkgs.lib;
with {
inherit (python27Packages) isPyPy isPy33;
};
let
buildPythonPackage = python27Packages.buildPythonPackage;
in
rec {
modules = python.modules;
cython = cython_21_1;
cython_21_1 = buildPythonPackage rec {
name = "Cython-0.21.1";
srcs = pkgs.fetchurl {
url = "http://www.cython.org/release/${name}.tar.gz";
sha256 = "0ddz2l2dvcy5hdkxx4xlfiwpccvwia7ixgcy4h0pdv46a4i4vxj3";
};
setupPyBaseBuildFlags = ["--build-base=$out"];
buildInputs = [ pkgs.pkgconfig ];
meta = {
description = "An interpreter to help writing C extensions for Python 2";
platforms = stdenv.lib.platforms.all;
};
};
dateutil = dateutil_2_3;
dateutil_2_3 = buildPythonPackage rec {
name = "dateutil-2.3";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/p/python-dateutil/python-${name}.tar.gz";
sha256 = "1r1hazllgqwk423408bh35whhd7dbj3495jbif8354zi6a47vdid";
};
propagatedBuildInputs = with self; [ six ];
meta = {
description = "Powerful extensions to the standard datetime module";
homepage = http://pypi.python.org/pypi/python-dateutil;
license = "BSD-style";
};
};
flower = flower_0_7_3;
flower_0_7_3 = pkgs.buildPythonPackage rec {
name = "flower-0.7.3";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/f/flower/${name}.tar.gz";
md5 = "7c095228ee375fdbbeb5f3d37e033d49";
};
buildInputs = with self; [ mock ];
propagatedBuildInputs = with self; [ tornado celery redis ];
};
guppy = guppy_0_1_10;
guppy_0_1_10 = buildPythonPackage rec {
name = "guppy-0.1.10";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/g/guppy/${name}.tar.gz";
md5 = "08942f467160a3559f76ea622256d699";
};
};
levenshtein = levenshtein_0_11_2;
levenshtein_0_11_2 = buildPythonPackage rec {
name = "python-Levenshtein-0.11.2";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/p/python-Levenshtein/${name}.tar.gz";
sha256 = "01d398ygw6xs8yz4hx1m21qzc7ik4sk018mvlk7fxdmmprqiqcf1";
};
};
pillow = Pillow_2_4_0;
Pillow_2_4_0 = buildPythonPackage rec {
name = "Pillow-2.4.0";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/P/Pillow/Pillow-2.4.0.zip";
md5 = "b46ac9f00580920ffafe518bc765e43c";
};
buildInputs = [ pkgs.freetype pkgs.libjpeg pkgs.zlib pkgs.libtiff pkgs.libwebp pkgs.unzip ];
configurePhase = ''
sed -i "setup.py" \
-e 's|^FREETYPE_ROOT =.*$|FREETYPE_ROOT = _lib_include("${pkgs.freetype}")|g ;
s|^JPEG_ROOT =.*$|JPEG_ROOT = _lib_include("${pkgs.libjpeg}")|g ;
s|^ZLIB_ROOT =.*$|ZLIB_ROOT = _lib_include("${pkgs.zlib}")|g ;
s|^LCMS_ROOT =.*$|LCMS_ROOT = _lib_include("${pkgs.libwebp}")|g ;
s|^TIFF_ROOT =.*$|TIFF_ROOT = _lib_include("${pkgs.libtiff}")|g ;'
'';
installCommand = ''easy_install --always-unzip --no-deps --prefix="$out" .'';
};
stripe = stripe_1_19_1;
stripe_1_19_1 = buildPythonPackage rec {
name = "stripe-1.19.1";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/s/stripe/${name}.tar.gz";
md5 = "f3a7b18b27db94aa25bd994c2b6b4648";
};
buildInputs = [ requests2 ];
# Tests require these:
# [ mock pycurl ]
doCheck = false;
};
requests2 = requests_2_2_1;
requests_2_2_1 = buildPythonPackage rec {
name = "requests-2.2.1";
srcs = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/r/requests/${name}.tar.gz";
md5 = "ac27081135f58d1a43e4fb38258d6f4e";
};
meta = {
description = "An Apache2 licensed HTTP library, written in Python, for human beings";
homepage = http://docs.python-requests.org/en/latest/;
};
};
cssmin = cssmin_0_2_0;
cssmin_0_2_0 = buildPythonPackage rec {
name = "cssmin-0.2.0";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/c/cssmin/${name}.tar.gz";
md5 = "c2798658a4f69663365a3e70c3b8250b";
};
};
closure = closure_20140110;
closure_20140110 = buildPythonPackage rec {
name = "closure-20140110";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/c/closure/${name}.tar.gz";
md5 = "e7782b22c09d997d33b350863c83708c";
};
};
geoalchemy2 = geoalchemy2_0_2_4;
geoalchemy2_0_2_4 = buildPythonPackage rec {
name = "GeoAlchemy2-0.2.4";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/G/GeoAlchemy2/${name}.tar.gz";
md5 = "2a7203f3ac614bc8758afa8f43a99154";
};
buildInputs = with self; [ sqlalchemy9 ];
};
sqlalchemy9 = sqlalchemy_0_9_8;
sqlalchemy_0_9_8 = buildPythonPackage rec {
name = "SQLAlchemy-0.9.8";
srcs = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/S/SQLAlchemy/${name}.tar.gz";
md5 = "470ca4da4a0081efc830f0d90dd91682";
};
buildInputs = with self; [ nose mock ];
propagatedBuildInputs = with self; [ modules.sqlite3 ];
checkPhase = ''
${python.executable} sqla_nose.py
'';
meta = {
homepage = http://www.sqlalchemy.org/;
description = "A Python SQL toolkit and Object Relational Mapper";
};
};
psycopg2 = psycopg2_2_5_2;
psycopg2_2_5_2 = buildPythonPackage rec {
name = "psycopg2-2.5.2";
disabled = (python.executable == "pypy");
# error: invalid command 'test'
doCheck = false;
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/p/psycopg2/${name}.tar.gz";
sha256 = "0bmxlmi9k995n6pz16awjaap0y02y1v2d31jbxhkqv510f3jsf2h";
};
propagatedBuildInputs = with self; [ pkgs.postgresql ];
meta = {
description = "PostgreSQL database adapter for the Python programming language";
license = with stdenv.lib.licenses; [ gpl2 zpt20 ];
};
};
alembic = alembic_0_6_4;
alembic_0_6_4 = buildPythonPackage rec {
name = "alembic-0.6.4";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/a/alembic/${name}.tar.gz";
md5 = "4d18cf648b360283d807715db28065c9";
};
buildInputs = with self; [ nose mock ];
propagatedBuildInputs = with self; [ Mako sqlalchemy9 ];
meta = {
homepage = http://bitbucket.org/zzzeek/alembic;
description = "A database migration tool for SQLAlchemy";
license = stdenv.lib.licenses.mit;
};
};
newrelic = newrelic_2_40_0_34;
newrelic_2_40_0_34 = buildPythonPackage rec {
name = "newrelic-2.40.0.34";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/n/newrelic/${name}.tar.gz";
md5 = "e529e48719adb628655d89b0332cdb48";
};
};
flask_classy = flask_classy_0_6_10;
flask_classy_0_6_10 = buildPythonPackage rec {
name = "Flask-Classy-0.6.10";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-Classy/${name}.tar.gz";
md5 = "12d01eca775061d214101e73cb2e1b2a";
};
# Dunno.
doCheck = false;
buildInputs = with self; [ flask ];
meta = {
homepage = https://github.com/apiguy/flask-classy;
description = "Class based views for Flask";
license = stdenv.lib.licenses.bsd3;
};
};
jinja2 = jinja2_2_7_2;
jinja2_2_7_2 = buildPythonPackage rec {
name = "Jinja2-2.7.2";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/J/Jinja2/${name}.tar.gz";
md5 = "df1581455564e97010e38bc792012aa5";
};
propagatedBuildInputs = with self; [ markupsafe ];
meta = {
homepage = http://jinja.pocoo.org/;
description = "Stand-alone template engine";
license = stdenv.lib.licenses.bsd3;
longDescription = ''
Jinja2 is a template engine written in pure Python. It provides a
Django inspired non-XML syntax but supports inline expressions and
an optional sandboxed environment.
'';
platforms = stdenv.lib.platforms.all;
maintainers = [ stdenv.lib.maintainers.pierron ];
};
};
wtforms = wtforms_1_0_5;
wtforms_1_0_5 = buildPythonPackage rec {
name = "WTForms-1.0.5";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/W/WTForms/${name}.zip";
md5 = "a7ba0af8ed65267e5b421d34940d0151";
};
meta = {
homepage = http://wtforms.simplecodes.com/;
description = ''
A flexible forms validation and rendering library for python web development.
'';
license = stdenv.lib.licenses.bsd3;
};
};
pusher = pusher_0_8;
pusher_0_8 = buildPythonPackage rec {
name = "pusher-0.8";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/p/pusher/${name}.tar.gz";
md5 = "6c010d1366c3bf843c387921e657fe73";
};
meta = {
homepage = http://pusher.com;
description = "A Python library for sending messages to Pusher";
license = stdenv.lib.licenses.mit;
};
};
gunicorn = gunicorn_0_19_1_1;
gunicorn_0_19_1_1 = buildPythonPackage rec {
name = "gunicorn-19.1.1";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/g/gunicorn/${name}.tar.gz";
md5 = "eaa72bff5341c05169b76ce3dcbb8140";
};
buildInputs = with self; [ pytest pytest_cov sphinx sphinx_rtd_theme ];
doCheck = false; #grumble
meta = {
homepage = http://pypi.python.org/pypi/gunicorn;
description = "WSGI HTTP Server for UNIX";
license = stdenv.lib.licenses.mit;
};
};
sphinx_rtd_theme = buildPythonPackage rec {
name = "sphinx_rtd_theme-0.1.6";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/s/sphinx_rtd_theme/${name}.tar.gz";
md5 = "8df56a300c8c69f17e1ffbee194b2a26";
};
buildInputs = with self; [ sphinx ];
};
pytest_cov = buildPythonPackage rec {
name = "pytest-cov-1.7.0";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/p/pytest-cov/${name}.tar.gz";
md5 = "c1432814f2e19ed86b563efa374b23a1";
};
buildInputs = with self; [ covCore pytest ];
};
covCore = buildPythonPackage rec {
name = "cov-core-1.15.0";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/c/cov-core/${name}.tar.gz";
md5 = "f519d4cb4c4e52856afb14af52919fe6";
};
meta = {
description = "plugin core for use by pytest-cov, nose-cov and nose2-cov";
};
propagatedBuildInputs = with self; [ coverage ];
};
celery = buildPythonPackage rec {
name = "celery-3.1.11";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/c/celery/${name}.tar.gz";
md5 = "f7ae17cd1e21e391d970368f1fb6427e";
};
buildInputs = with self; [ mock nose unittest2 redis sqlalchemy9 ];
propagatedBuildInputs = with self; [
kombu
billiard
pytz
modules.curses
setproctitle
#FIXME: add this. It currently makes tests fail.
# pyopenssl
];
};
celeryWithFlower = celery.overrideDerivation (oldAttrs: {
propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [ self.flower ];
});
setproctitle = buildPythonPackage rec {
name = "setproctitle-${version}";
version = "1.1.8";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/s/setproctitle/${name}.tar.gz";
md5 = "728f4c8c6031bbe56083a48594027edd";
};
meta = {
description = "A library to allow customization of the process title.";
homepage = http://code.google.com/p/py-setproctitle/;
license = "BSD";
};
};
kombu = buildPythonPackage rec {
name = "kombu-3.0.24";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/k/kombu/${name}.tar.gz";
md5 = "37c8b5084ac83b8a6f5ff9f157cac0e9";
};
buildInputs = with self; [ mock unittest2 nose ];
propagatedBuildInputs = with self; [ amqp anyjson ];
};
amqp = buildPythonPackage rec {
name = "amqp-1.4.6";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/a/amqp/${name}.tar.gz";
md5 = "a061581b6864f838bffd62b6a3d0fb9f";
};
buildInputs = with self; [ mock coverage ];
doCheck = false; # needs nose-cover3
};
billiard = buildPythonPackage rec {
name = "billiard-3.3.0.19";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/b/billiard/${name}.tar.gz";
md5 = "7e473b9da01956ce91a650f99fe8d4ad";
};
buildInputs = with self; [ mock nose unittest2 ];
};
flask_script = buildPythonPackage rec {
name = "Flask-Script-0.5.3";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-Script/${name}.tar.gz";
md5 = "d5a11584345ed72ec7ee1df5f4f9dc37";
};
buildInputs = with self; [ flask nose ];
};
flask_bcrypt = buildPythonPackage rec {
name = "Flask-Bcrypt-0.5.2";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-Bcrypt/${name}.tar.gz";
md5 = "0ab56e917cb0cd8e073018038ac9945c";
};
buildInputs = with self; [ flask ];
propagatedBuildInputs = with self; [ py_bcrypt ];
doCheck = false;
};
py_bcrypt = buildPythonPackage rec {
name = "py-bcrypt-0.4";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/p/py-bcrypt/${name}.tar.gz";
md5 = "dd8b367d6b716a2ea2e72392525f4e36";
};
};
markupsafe = markupsafe_0_18;
markupsafe_0_18 = buildPythonPackage rec {
name = "markupsafe-0.18";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/M/MarkupSafe/${name}.tar.gz";
md5 = "f8d252fd05371e51dec2fe9a36890687";
};
meta = {
description = "Implements a XML/HTML/XHTML Markup safe string";
homepage = http://dev.pocoo.org;
license = "BSD";
maintainers = [ stdenv.lib.maintainers.iElectric ];
};
};
webassets = buildPythonPackage rec {
name = "webassets-0.9";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/w/webassets/${name}.tar.gz";
md5 = "e9fb6a746c1166dda48d5c2cfc8bc1b5";
};
};
flask_assets = buildPythonPackage rec {
name = "Flask-Assets-0.9";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-Assets/${name}.tar.gz";
md5 = "fa50220eb0a7c4530b7098d04d736ca5";
};
buildInputs = with self; [ webassets flask flask_script nose pyyaml ];
};
boto = buildPythonPackage rec {
name = "boto-${version}";
version = "2.27.0";
src = pkgs.fetchurl {
url = "https://github.com/boto/boto/archive/${version}.tar.gz";
sha256 = "022ip2wlmpqdzb381pz8wflfrpv8fmx722d66wzpbxrd080840xr";
};
# The tests seem to require AWS credentials.
doCheck = false;
meta = {
homepage = https://github.com/boto/boto;
license = "bsd";
description = "Python interface to Amazon Web Services";
longDescription = ''
The boto module is an integrated interface to current and
future infrastructural services offered by Amazon Web
Services. This includes S3, SQS, EC2, among others.
'';
};
};
flask_sqlalchemy = buildPythonPackage rec {
name = "Flask-SQLAlchemy-1.0";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-SQLAlchemy/${name}.tar.gz";
md5 = "dca034849ffcbaef7b848e8728d3668f";
};
buildInputs = with self; [ sqlalchemy9 flask ];
};
flask_exceptional = buildPythonPackage rec {
name = "Flask-Exceptional-0.5.4";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-Exceptional/${name}.tar.gz";
md5 = "57316ff7b48e218c157c36cb1589067e";
};
buildInputs = with self; [ flask ];
doCheck = false;
};
flask_wtf = buildPythonPackage rec {
name = "Flask-WTF-0.9.5";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-WTF/${name}.tar.gz";
md5 = "cd04d1855317d7d6ee235e3d70dde80d";
};
buildInputs = with self; [ wtforms flask flaskbabel nose speaklater Babel ];
};
flask_login = buildPythonPackage rec {
name = "Flask-Login-0.2.10";
src = pkgs.fetchurl {
url =
"https://pypi.python.org/packages/source/F/Flask-Login/${name}.tar.gz";
md5 = "b51b010931035d6ab4c893dcdbfd9383";
};
buildInputs = with self; [ flask werkzeug ];
doCheck = false;
};
werkzeug = buildPythonPackage rec {
name = "Werkzeug-0.9.4";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/W/Werkzeug/${name}.tar.gz";
md5 = "670fad41f57c13b71a6816765765a3dd";
};
propagatedBuildInputs = with self; [ itsdangerous ];
doCheck = false; # tests fail, not sure why
meta = {
homepage = http://werkzeug.pocoo.org/;
description = "A WSGI utility library for Python";
license = "BSD";
};
};
setuptools_git = buildPythonPackage rec {
name = "setuptools-git-1.1";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/s/setuptools-git/${name}.tar.gz";
md5 = "7b5967e9527c789c3113b07a1f196f6e";
};
doCheck = false; # Looks like it needs to be in a git repo?
};
six = buildPythonPackage rec {
name = "six-1.8.0";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/s/six/${name}.tar.gz";
md5 = "1626eb24cc889110c38f7e786ec69885";
};
# error: invalid command 'test'
doCheck = false;
meta = {
description = "A Python 2 and 3 compatibility library";
homepage = http://pypi.python.org/pypi/six/;
};
};
flask = buildPythonPackage {
name = "flask-0.10.1";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/F/Flask/Flask-0.10.1.tar.gz";
md5 = "378670fe456957eb3c27ddaef60b2b24";
};
propagatedBuildInputs = with self; [ werkzeug jinja2 ];
meta = {
homepage = http://flask.pocoo.org/;
description = "A microframework based on Werkzeug, Jinja 2, and good intentions";
license = "BSD";
};
};
itsdangerous = buildPythonPackage rec {
name = "itsdangerous-0.24";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/i/itsdangerous/${name}.tar.gz";
sha256 = "06856q6x675ly542ig0plbqcyab6ksfzijlyf1hzhgg3sgwgrcyb";
};
meta = with stdenv.lib; {
description = "helpers to pass trusted data to untrusted environments and back";
homepage = "https://pypi.python.org/pypi/itsdangerous/";
};
};
flask_cache = buildPythonPackage rec {
name = "Flask-Cache-0.13.1";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-Cache/${name}.tar.gz";
md5 = "ab82a9cd0844891ccdb54fbb93fd6c59";
};
propagatedBuildInputs = with self; [ werkzeug flask ];
meta = {
homepage = https://github.com/thadeusb/flask-cache;
description = "Adds cache support to your Flask application";
license = "BSD";
};
};
shapely = buildPythonPackage rec {
name = "Shapely-1.3.1";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/S/Shapely/${name}.tar.gz";
sha256 = "099sc7ajpp6hbgrx3c0bl6hhkz1mhnr0ahvc7s4i3f3b7q1zfn7l";
};
buildInputs = with self; [ pkgs.geos ];
preConfigure = ''
export LANG="en_US.UTF-8";
export LOCALE_ARCHIVE=${localePath}
'';
patchPhase = ''
sed -i "s|_lgeos = load_dll('geos_c', fallbacks=.*)|_lgeos = load_dll('geos_c', fallbacks=['${pkgs.geos}/lib/libgeos_c.so'])|" shapely/geos.py
'';
doCheck = false; # won't suceed for unknown reasons that look harmless, though
meta = with stdenv.lib; {
description = "Geometric objects, predicates, and operations";
homepage = "https://pypi.python.org/pypi/Shapely/";
};
};
localePath = optionalString (! stdenv.isDarwin) "${pkgs.glibcLocales}/lib/locale/locale-archive";
fabric = buildPythonPackage rec {
name = "Fabric-1.8.3";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Fabric/${name}.tar.gz";
md5 = "02ce0ad4657f2d0ab6497a8fd3a09c2c";
};
propagatedBuildInputs = with self; [ paramiko fudge nose ];
};
paramiko = paramiko_1_12_4;
paramiko_1_12_4 = buildPythonPackage rec {
name = "paramiko-1.12.4";
src = pkgs.fetchurl {
url = "http://pypi.python.org/packages/source/p/paramiko/${name}.tar.gz";
md5 = "166e6a9ffad23a1140fea55fbdfb8847";
};
propagatedBuildInputs = with self; [ pycrypto ecdsa ];
# https://github.com/paramiko/paramiko/issues/449
doCheck = !(isPyPy || isPy33);
checkPhase = ''
# test_util needs to resolve an hostname, thus failing when the fw blocks it
sed '/UtilTest/d' -i test.py
${python}/bin/${python.executable} test.py --no-sftp --no-big-file
'';
meta = {
homepage = "https://github.com/paramiko/paramiko/";
description = "Native Python SSHv2 protocol library";
license = stdenv.lib.licenses.lgpl21Plus;
maintainers = [ stdenv.lib.maintainers.aszlig ];
longDescription = ''
This is a library for making SSH2 connections (client or server).
Emphasis is on using SSH2 as an alternative to SSL for making secure
connections between python scripts. All major ciphers and hash methods
are supported. SFTP client and server mode are both supported too.
'';
};
};
testrepository = buildPythonPackage rec {
name = "testrepository-0.0.20";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/t/testrepository/${name}.tar.gz";
md5 = "f648b0aceeca4fcd5f8a62eeedea289b";
};
buildInputs = with self; [ testtools subunit ];
propagatedBuildInputs = with self; [ fixtures ];
};
subunit = buildPythonPackage rec {
name = "subunit-${version}";
version = "1.0.0";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/p/python-subunit/python-${name}.tar.gz";
md5 = "86b58eb2059980271b092f9f4b2f1f84";
};
buildInputs = with self; [ testscenarios ];
propagatedBuildInputs = with self; [ testtools ];
meta = {
description = "A streaming protocol for test results";
homepage = https://launchpad.net/subunit;
license = licenses.asl20;
};
};
testscenarios = buildPythonPackage rec {
name = "testscenarios-0.4";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/t/testscenarios/${name}.tar.gz";
md5 = "433cb8cd4d444b0deded3787240ee586";
};
buildInputs = with self; [ testtools ];
};
fixtures = buildPythonPackage rec {
name = "fixtures-1.0.0";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/f/fixtures/${name}.tar.gz";
md5 = "4f3225a80397796be85729b659241610";
};
buildInputs = with self; [ pbr pip testtools ];
};
flask_testing = buildPythonPackage rec {
name = "Flask-Testing-0.4.2";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/F/Flask-Testing/${name}.tar.gz";
md5 = "f47d9b859bae7ac43728cf61ca3eaa88";
};
buildInputs = with self; [ flask twill blinker ];
};
twill = buildPythonPackage rec {
name = "twill-0.9";
src = pkgs.fetchurl {
url = "http://darcs.idyll.org/~t/projects/twill-0.9.tar.gz";
sha256 = "11ianjz7mkzmi80mn5wh3zglgn9snbkj8cjqwzsxvxpdsrgw4lw0";
};
buildInputs = with self; [ nose quixote pkgs.html-tidy ];
};
quixote = buildPythonPackage rec {
name = "Quixote-2.4";
src = pkgs.fetchurl {
url = "http://quixote.ca/releases/${name}.tar.gz";
sha256 = "08aan2nir5mihhj4g7b1cs8l2z96n2126vr1gc2hyqf6gsgcqjm4";
};
doCheck = false;
};
certifi = certifi_1_0_1;
certifi_1_0_1 = buildPythonPackage rec {
name = "certifi-${version}";
version = "1.0.1";
src = pkgs.fetchurl {
url = "https://pypi.python.org/packages/source/c/certifi/${name}.tar.gz";
md5 = "45f5cb94b8af9e1df0f9450a8f61b790";
};
meta = with stdenv.lib; {
homepage = http://certifi.io/;
description = "Python package for providing Mozilla's CA Bundle";
license = licenses.isc;
maintainers = [ maintainers.koral ];
};
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment