2019-10-09 00:53:54 +02:00
|
|
|
{ stdenv, lib, fetchFromGitHub,
|
2019-10-09 00:54:44 +02:00
|
|
|
autoconf, automake, autoreconfHook, pkgconfig, curl, libevent, glib, libuuid, intltool, sqlite, withMysql ? true, libmysql, libarchive, libtool, jansson, vala, fuse, openssl, libevhtp, ccnet, libsearpc, which,
|
2019-10-09 00:53:54 +02:00
|
|
|
# for SeaHub
|
|
|
|
python27, python27Packages }:
|
|
|
|
|
|
|
|
let
|
|
|
|
version = "7.1.0";
|
|
|
|
seafile-server-core = stdenv.mkDerivation rec {
|
|
|
|
name = "seafile-server-core";
|
|
|
|
inherit version;
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "haiwen";
|
|
|
|
repo = "seafile-server";
|
|
|
|
rev = "v${version}-server";
|
|
|
|
sha256 = "sha256:0r3vw145vzhbipwk4cyj1h7sb3szy5hcp36n3pf2jxpwy365ir92";
|
|
|
|
};
|
2019-10-09 00:54:44 +02:00
|
|
|
# patch to work with latest, non-vulnerable libevhtp
|
|
|
|
patches = [
|
|
|
|
./recent_libevhtp.patch
|
|
|
|
];
|
|
|
|
# `which` is called directly from python during buildPhase, so we need the binary
|
|
|
|
nativeBuildInputs = [ autoconf automake libtool pkgconfig vala autoreconfHook which ];
|
|
|
|
buildInputs = [ sqlite glib python27 libuuid openssl fuse libarchive ccnet-server libevent libsearpc libevhtp ];
|
2019-10-09 00:53:54 +02:00
|
|
|
checkPhase = "bash ./run_tests.sh";
|
2019-10-12 22:45:05 +02:00
|
|
|
|
|
|
|
meta = with lib; {
|
|
|
|
license = licenses.agpl3; # with additional OpenSSL linking exception
|
|
|
|
maintainers = with maintainers; [ schmittlauch ];
|
|
|
|
};
|
2019-10-09 00:53:54 +02:00
|
|
|
};
|
|
|
|
seahub = python27Packages.buildPythonApplication rec {
|
|
|
|
name = "seahub";
|
|
|
|
inherit version;
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "haiwen";
|
|
|
|
repo = "seahub";
|
|
|
|
rev = "v${version}-server";
|
2019-10-09 00:56:46 +02:00
|
|
|
#sha256 = "sha256:1aypbqrv30x9mmhiwcmkmzmac0mw0gx7cb1n4x90h46iqlbanhnq";
|
|
|
|
sha256 = "sha256:19f9279zqkfy39gs1qfaj0m8asva5jgadh8f0yln8ln4khsrcnk8";
|
2019-10-09 00:53:54 +02:00
|
|
|
};
|
2019-10-12 23:21:29 +02:00
|
|
|
phases = [ "unpackPhase" "installPhase" "fixupPhase" "distPhase" ];
|
|
|
|
installPhase = ''
|
|
|
|
cp -r ./ $out
|
|
|
|
'';
|
2019-10-12 22:45:05 +02:00
|
|
|
propagatedBuildInputs = with python27Packages; [
|
|
|
|
django pytz django-statici18n djangorestframework django_compressor
|
|
|
|
django-post_office django-constance gunicorn flup chardet dateutil six
|
|
|
|
openpyxl
|
2019-10-09 00:53:54 +02:00
|
|
|
];
|
2019-10-12 22:45:05 +02:00
|
|
|
meta = with lib; {
|
|
|
|
license = licenses.asl20;
|
|
|
|
maintainers = with maintainers; [ schmittlauch ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
django-constance = python27Packages.buildPythonPackage rec {
|
2019-10-09 00:53:54 +02:00
|
|
|
pname = "django-constance";
|
|
|
|
version = "1.0.1";
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "haiwen";
|
|
|
|
repo = pname;
|
|
|
|
rev = "bde7f7c";
|
2019-10-12 22:45:05 +02:00
|
|
|
sha256 = "sha256:0m5hhylsrs6bn7ma04615r1n7jwykyw8kmbw1xqrkgxs259lm77h";
|
2019-10-09 00:53:54 +02:00
|
|
|
};
|
2019-10-12 22:45:05 +02:00
|
|
|
propagatedBuildInputs = with python27Packages; [ django ];
|
|
|
|
checkInputs = [ python27Packages.redis python27Packages.coverage python27Packages.django-picklefield ];
|
|
|
|
doCheck = false; # figure that out later
|
2019-10-09 00:53:54 +02:00
|
|
|
meta = {
|
|
|
|
license = lib.licenses.bsd3;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
ccnet-server = stdenv.mkDerivation rec {
|
|
|
|
name = "ccnet-server";
|
|
|
|
inherit version;
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "haiwen";
|
|
|
|
repo = "ccnet-server";
|
|
|
|
rev = "v${version}-server";
|
2019-10-09 00:54:44 +02:00
|
|
|
sha256 = "sha256:1iazjy013gjz4kg5xxzs9gsyyva9pyjlmslmrkcbkcj1a94g3pwc";
|
2019-10-09 00:53:54 +02:00
|
|
|
};
|
|
|
|
|
2019-10-09 00:54:28 +02:00
|
|
|
buildInputs = [ vala libsearpc libuuid sqlite openssl libevent glib python27 ]
|
2019-10-09 00:53:54 +02:00
|
|
|
++ lib.optional (!withMysql) "--without-mysql";
|
2019-10-09 00:54:44 +02:00
|
|
|
# `which` is called directly from python during buildPhase, so we need the binary
|
|
|
|
nativeBuildInputs = [ autoconf automake libtool pkgconfig autoreconfHook which ];
|
2019-10-09 00:54:28 +02:00
|
|
|
configureFlags = [ "--disable-static" ];
|
2019-10-09 00:53:54 +02:00
|
|
|
|
|
|
|
meta = {
|
|
|
|
description = "Internal communication framework and user/group management for Seafile server";
|
|
|
|
license = lib.licenses.agpl3; # with additional OpenSSL linking exception
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
in stdenv.mkDerivation {
|
|
|
|
name = "seafile-server";
|
|
|
|
inherit version;
|
|
|
|
|
|
|
|
buildInputs = [ seahub seafile-server-core ccnet-server libsearpc ]
|
|
|
|
++ lib.optional withMysql libmysql;
|
|
|
|
phases = [ "installPhase" "fixupPhase" "distPhase" ];
|
|
|
|
# todo: create data directory in /srv in activation script
|
2019-10-09 00:56:46 +02:00
|
|
|
installPhase = ''
|
|
|
|
mkdir "$out"
|
|
|
|
cd "$out"
|
|
|
|
ln -s ${seahub} seahub
|
2019-10-16 17:31:52 +02:00
|
|
|
ln -s ${seafile-server-core} seafile-server-latest
|
2019-10-09 00:56:46 +02:00
|
|
|
'';
|
2019-10-12 22:45:05 +02:00
|
|
|
meta = with lib; {
|
|
|
|
maintainers = with maintainers; [ schmittlauch ];
|
|
|
|
license = licenses.free; # components with different free software licenses are combined
|
|
|
|
};
|
2019-10-16 17:31:52 +02:00
|
|
|
inherit ccnet-server seafile-server-core; # for using the path in the NixOS module
|
2019-10-12 22:45:05 +02:00
|
|
|
}
|