1 { makeWrapper, stdenv, writeScript, fetchurl, buildBowerComponents, mylibs, which, python36, gst_all_1, automake, autoconf, nodejs, nodePackages, lib, callPackage, fetchgit }:
4 packageOverrides = self: super: {
5 pybcrypt = super.buildPythonPackage rec {
10 inherit pname version;
11 sha256 = "5fa13bce551468350d66c4883694850570f3da28d6866bb638ba44fe5eabda78";
14 celery = super.celery.overridePythonAttrs(old: rec {
15 version = "3.1.26.post2";
16 src = self.fetchPypi {
19 sha256 = "5493e172ae817b81ba7d09443ada114886765a8ce02f16a56e6fac68d953a9b2";
24 billiard = super.billiard.overridePythonAttrs(old: rec {
26 src = self.fetchPypi {
29 sha256 = "02wxsc6bhqvzh8j6w758kvgqbnj14l796mvmrcms8fgfamd2lak9";
32 doInstallCheck = false;
34 amqp = super.amqp.overridePythonAttrs(old: rec {
36 src = self.fetchPypi {
39 sha256 = "2dea4d16d073c902c3b89d9b96620fb6729ac0f7a923bbc777cb4ad827c0c61a";
43 kombu = super.kombu.overridePythonAttrs(old: rec {
45 src = self.fetchPypi {
48 sha256 = "e064a00c66b4d1058cd2b0523fb8d98c82c18450244177b6c0f7913016642650";
50 propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.anyjson ];
53 markdown = super.markdown.overridePythonAttrs(old: rec {
55 src = self.fetchPypi {
58 sha256 = "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a";
61 sqlalchemy = super.sqlalchemy.overridePythonAttrs(old: rec {
63 src = self.fetchPypi {
66 sha256 = "8b0ec71af9291191ba83a91c03d157b19ab3e7119e27da97932a4773a3f664a9";
70 tempita_5_3_dev = super.buildPythonPackage (mylibs.fetchedGithub ./tempita.json // rec {
71 buildInputs = with self; [ nose ];
74 sqlalchemy_migrate = super.sqlalchemy_migrate.overridePythonAttrs(old: rec {
75 propagatedBuildInputs = with self; [ pbr tempita_5_3_dev decorator sqlalchemy six sqlparse ];
77 pasteScript = super.pasteScript.overridePythonAttrs(old: rec {
79 name = "PasteScript-${version}";
81 url = "mirror://pypi/P/PasteScript/${name}.tar.gz";
82 sha256 = "1h3nnhn45kf4pbcv669ik4faw04j58k8vbj1hwrc532k0nc28gy0";
84 propagatedBuildInputs = with self; [ six paste PasteDeploy ];
86 werkzeug = super.werkzeug.overridePythonAttrs(old: rec {
88 src = self.fetchPypi {
91 sha256 = "b353856d37dec59d6511359f97f6a4b2468442e454bd1c98298ddce53cac1f04";
96 python36.override { inherit packageOverrides; };
97 pythonEnv = python-pkgs: with python-pkgs; [
98 waitress alembic dateutil wtforms pybcrypt
99 pytest pytest_xdist werkzeug celery
100 kombu jinja2 Babel webtest configobj markdown
101 sqlalchemy itsdangerous pytz sphinx six
102 oauthlib unidecode jsonschema PasteDeploy
103 requests PyLD exifread
104 typing pasteScript lxml
116 python = overridePython.withPackages pythonEnv;
117 gmg = writeScript "gmg" ''
118 #!${python}/bin/python
119 __requires__ = 'mediagoblin'
121 from pkg_resources import load_entry_point
123 if __name__ == '__main__':
125 load_entry_point('mediagoblin', 'console_scripts', 'gmg')()
128 mediagoblinSrc = fetchgit {
129 name = "mediagoblin";
130 url = "git://git.savannah.gnu.org/mediagoblin.git";
131 rev = "cd465ebfec837a75a44c4ebd727dffe2fff6d850";
132 sha256 = "1yz4i4i97z3rxl534a6psaybyjbyp5nnc52v3nvbpzc4pd2s69mx";
133 fetchSubmodules = true; # important!
135 bowerComponents = buildBowerComponents {
136 name = "mediagoblin-bower-components";
137 generated = ./bower-packages.nix;
138 src = mediagoblinSrc;
140 pluginNames = [ "basicsearch" ];
141 allPlugins = lib.attrsets.genAttrs pluginNames
142 (name: callPackage (./plugins + "/${name}") {});
145 withPlugins = withPlugins pkg;
147 withPlugins = pkg: toPlugins:
149 plugins = toPlugins allPlugins;
150 toBuildPlugin = n: "ln -s ${n} mediagoblin/plugins/${n.pluginName}";
151 newMediagoblin = pkg.overrideAttrs(old: {
152 postBuild = old.postBuild + "\n" + builtins.concatStringsSep "\n" (map toBuildPlugin plugins);
153 passthru = toPassthru newMediagoblin;
156 package = stdenv.mkDerivation rec {
157 pname = "mediagoblin";
158 name = "${pname}-${version}";
159 version = "cd465eb-stable";
160 src = mediagoblinSrc;
163 aclocal -I m4 --install
168 configureFlags = [ "--with-python3" "--without-virtualenv" ];
170 cp -a ${bowerComponents}/bower_components/* extlib
175 libpaths = with gst_all_1; [
184 plugin_paths = builtins.concatStringsSep ":" (map (x: "${x}/lib") libpaths);
185 typelib_paths = with gst_all_1; "${gstreamer}/lib/girepository-1.0:${gst-plugins-base}/lib/girepository-1.0";
187 sed -i "s/registry.has_key(current_theme_name)/current_theme_name in registry/" mediagoblin/tools/theme.py
188 sed -i -e "s@\[DEFAULT\]@[DEFAULT]\nhere = $out@" mediagoblin/config_spec.ini
189 sed -i -e "/from gi.repository import GstPbutils/s/^/gi.require_version('GstPbutils', '1.0')\n/" mediagoblin/media_types/video/transcoders.py
190 cp ${./ldap_fix.py} mediagoblin/plugins/ldap/tools.py
191 find . -name '*.pyc' -delete
192 find . -type f -exec sed -i "s|$PWD|$out|g" {} \;
193 python setup.py build
196 makeWrapper ${gmg} $out/bin/gmg --prefix PYTHONPATH : "$out:$PYTHONPATH" \
197 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
198 --prefix GI_TYPELIB_PATH : ${typelib_paths}
199 makeWrapper ${python}/bin/paster $out/bin/paster --prefix PYTHONPATH : "$out:$PYTHONPATH" \
200 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
201 --prefix GI_TYPELIB_PATH : ${typelib_paths}
202 makeWrapper ${python}/bin/celery $out/bin/celery --prefix PYTHONPATH : "$out:$PYTHONPATH" \
203 --prefix GST_PLUGIN_SYSTEM_PATH : ${plugin_paths} \
204 --prefix GI_TYPELIB_PATH : ${typelib_paths}
206 buildInputs = [ makeWrapper automake autoconf which nodePackages.bower nodejs python ];
207 propagatedBuildInputs = with gst_all_1; [ python gst-libav gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer ];
208 passthru = toPassthru package;