+{ session_key ? "/etc/etherpad-lite/SESSIONKEY.txt"
+, api_key ? "/etc/etherpad-lite/APIKEY.txt"
+, stdenv, mylibs, cacert, nodejs, python, fetchurl }:
+let
+ jquery = fetchurl {
+ url = https://code.jquery.com/jquery-1.9.1.js;
+ sha256 = "0h4dk67yc9d0kadqxb6b33585f3x3559p6qmp70l00qwq030vn3v";
+ };
+ withModules = modules: package.overrideAttrs(old: {
+ buildPhase = old.buildPhase +
+ builtins.concatStringsSep "\n"
+ (map (n: "npm install ${n}; touch node_modules/${n}/.ep_initialized") modules);
+ # FIXME: ln -s don’t seem to work, etherpad seems
+ # unable to "touch" them after initialization
+ passthru = old.passthru // {
+ inherit modules;
+ withModules = moreModules: old.withModules (moreModules ++ modules);
+ };
+ });
+ package = stdenv.mkDerivation (mylibs.fetchedGithub ./etherpad-lite.json // rec {
+ __noChroot = true;
+ patches = [ ./libreoffice_patch.diff ];
+ buildPhase = ''
+ export GIT_SSL_CAINFO=${cacert}/etc/ssl/certs/ca-bundle.crt
+ export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
+ export HOME=$PWD
+
+ touch src/.ep_initialized
+ cp -v src/static/custom/js.template src/static/custom/index.js
+ cp -v src/static/custom/js.template src/static/custom/pad.js
+ cp -v src/static/custom/js.template src/static/custom/timeslider.js
+ cp -v src/static/custom/css.template src/static/custom/index.css
+ cp -v src/static/custom/css.template src/static/custom/pad.css
+ cp -v src/static/custom/css.template src/static/custom/timeslider.css
+
+ sed -i 's/var\/dirty.db/\/var\/lib\/etherpad-lite\/dirty.db/g' \
+ settings.json.template
+
+ mkdir -v node_modules
+ ln -s ../src node_modules/ep_etherpad-lite
+
+ node bin/doc/generate doc/index.md --format=html \
+ --template=doc/template.html > documentation.html
+
+ cd src
+ npm install
+ cd ..
+ '';
+ installPhase = ''
+ mkdir -p $out
+ install -t $out/src/ -vDm 644 src/.ep_initialized
+ cp -a node_modules $out/
+ cp -a src/* $out/src/
+ ln -sf ${session_key} $out/SESSIONKEY.txt
+ ln -sf ${api_key} $out/APIKEY.txt
+ cp ${jquery} $out/src/static/js/jquery.js
+
+ mkdir $out/doc
+ install -t "$out/doc/" \
+ -vDm 644 {CHANGELOG,CONTRIBUTING,README}.md \
+ -vDm 644 documentation.html
+ '';
+ buildInputs = [ nodejs python ];
+ passthru = {
+ modules = [];
+ inherit withModules;
+ };
+ });
+in package