mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-29 09:04:17 +00:00
157 lines
3.9 KiB
Nix
157 lines
3.9 KiB
Nix
{
|
|
lib,
|
|
buildBowerComponents,
|
|
fetchFromSourcehut,
|
|
gobject-introspection,
|
|
gst_all_1,
|
|
poppler_utils,
|
|
python3,
|
|
xorg,
|
|
}:
|
|
|
|
let
|
|
python = python3.override {
|
|
packageOverrides = final: prev: {
|
|
celery = prev.celery.overridePythonAttrs {
|
|
doCheck = false;
|
|
};
|
|
sqlalchemy = prev.sqlalchemy_1_4;
|
|
};
|
|
};
|
|
|
|
version = "0.14.0";
|
|
src = fetchFromSourcehut {
|
|
owner = "~mediagoblin";
|
|
repo = "mediagoblin";
|
|
rev = "v${version}";
|
|
fetchSubmodules = true;
|
|
hash = "sha256-Y1VnXLHEl6TR8nt+vKSfoCwleQ+oA2WPMN9q4fW9R3s=";
|
|
};
|
|
|
|
extlib = buildBowerComponents {
|
|
name = "mediagoblin-extlib";
|
|
generated = ./bower-packages.nix;
|
|
inherit src;
|
|
};
|
|
in
|
|
python.pkgs.buildPythonApplication rec {
|
|
pname = "mediagoblin";
|
|
inherit version src;
|
|
|
|
postPatch = ''
|
|
# https://git.sr.ht/~mediagoblin/mediagoblin/tree/bf61d38df21748aadb480c53fdd928647285e35f/item/.guix/modules/mediagoblin-package.scm#L60-62
|
|
cp mediagoblin/_version.py.in mediagoblin/_version.py
|
|
substituteInPlace mediagoblin/_version.py \
|
|
--replace-fail "@PACKAGE_VERSION@" "${version}"
|
|
|
|
# https://git.sr.ht/~mediagoblin/mediagoblin/tree/bf61d38df21748aadb480c53fdd928647285e35f/item/.guix/modules/mediagoblin-package.scm#L66-67
|
|
substituteInPlace mediagoblin/gmg_commands/__init__.py \
|
|
--replace-fail "ArgumentParser(" "ArgumentParser(prog=\"gmg\","
|
|
'';
|
|
|
|
nativeBuildInputs = [
|
|
gobject-introspection
|
|
python3.pkgs.babel
|
|
xorg.lndir
|
|
];
|
|
|
|
build-system = with python.pkgs; [
|
|
setuptools
|
|
];
|
|
|
|
dependencies = with python.pkgs; [
|
|
alembic
|
|
babel
|
|
bcrypt
|
|
celery
|
|
certifi
|
|
configobj
|
|
email-validator
|
|
exifread
|
|
feedgenerator
|
|
itsdangerous
|
|
jinja2
|
|
jsonschema
|
|
lxml-html-clean
|
|
markdown
|
|
oauthlib
|
|
pastescript
|
|
pillow
|
|
pyld
|
|
python-dateutil
|
|
requests
|
|
soundfile
|
|
sqlalchemy
|
|
unidecode
|
|
waitress
|
|
werkzeug
|
|
wtforms
|
|
wtforms-sqlalchemy
|
|
|
|
# undocumented and fails to start without
|
|
gst-python
|
|
pygobject3
|
|
];
|
|
|
|
optional-dependencies =
|
|
with python.pkgs;
|
|
let
|
|
# not really documented in python build system
|
|
gst = with gst_all_1; [
|
|
# https://git.sr.ht/~mediagoblin/mediagoblin/tree/bf61d38df21748aadb480c53fdd928647285e35f/item/.guix/modules/mediagoblin-package.scm#L122-127
|
|
gst-libav
|
|
gst-plugins-bad
|
|
gst-plugins-base
|
|
gst-plugins-good
|
|
gst-plugins-ugly
|
|
gstreamer
|
|
];
|
|
in
|
|
{
|
|
ascii = [ chardet ];
|
|
audio = [ numpy ] ++ gst;
|
|
ldap = [ python-ldap ];
|
|
openid = [ python3-openid ];
|
|
raw_image = [ py3exiv2 ];
|
|
video = [ pygobject3 ] ++ gst;
|
|
};
|
|
|
|
postBuild = ''
|
|
./devtools/compile_translations.sh
|
|
'';
|
|
|
|
postInstall = ''
|
|
lndir -silent ${extlib}/bower_components/ $out/${python.sitePackages}/mediagoblin/static/extlib/
|
|
|
|
ln -rs $out/${python.sitePackages}/mediagoblin/static/extlib/jquery/dist/jquery.js $out/${python.sitePackages}/mediagoblin/static/js/extlib/jquery.js
|
|
ln -rs $out/${python.sitePackages}/mediagoblin/static/extlib/leaflet/dist/leaflet.css $out/${python.sitePackages}/mediagoblin/static/extlib/leaflet/leaflet.css
|
|
ln -rs $out/${python.sitePackages}/mediagoblin/static/extlib/leaflet/dist/leaflet.js $out/${python.sitePackages}/mediagoblin/static/extlib/leaflet/leaflet.js
|
|
ln -rs $out/${python.sitePackages}/mediagoblin/static/extlib/leaflet/dist/images/ $out/${python.sitePackages}/mediagoblin/static/extlib/leaflet/
|
|
'';
|
|
|
|
nativeCheckInputs =
|
|
with python.pkgs;
|
|
[
|
|
pytest-forked
|
|
pytest-xdist
|
|
pytestCheckHook
|
|
webtest
|
|
|
|
poppler_utils
|
|
]
|
|
++ lib.flatten (lib.attrValues optional-dependencies);
|
|
|
|
pythonImportsCheck = [ "mediagoblin" ];
|
|
|
|
passthru = {
|
|
inherit python;
|
|
};
|
|
|
|
meta = {
|
|
description = "Free software media publishing platform that anyone can run";
|
|
homepage = "https://mediagoblin.org/";
|
|
license = lib.licenses.agpl3Plus;
|
|
maintainers = lib.teams.c3d2.members;
|
|
};
|
|
}
|