-{ varDir ? "/var/lib/etherpad-lite" # if you override this change the StateDirectory in service file too!
-, stdenv, callPackage, mylibs, lib }:
-let
- nodeEnv = callPackage mylibs.nodeEnv {};
- moduleNames = [
- "ep_aa_file_menu_toolbar" "ep_adminpads" "ep_align" "ep_bookmark"
- "ep_clear_formatting" "ep_colors" "ep_comments_page"
- "ep_copy_paste_select_all" "ep_cursortrace" "ep_delete_empty_pads"
- "ep_embedmedia" "ep_font_family" "ep_font_size" "ep_headings2"
- "ep_immae_buttons" "ep_ldapauth" "ep_line_height" "ep_markdown"
- "ep_mypads" "ep_page_view" "ep_previewimages" "ep_ruler"
- "ep_scrollto" "ep_set_title_on_pad" "ep_subscript_and_superscript"
- "ep_timesliderdiff"
- ];
- # nix files are built using node2nix -i node-packages.json
- allModules = lib.attrsets.genAttrs moduleNames
- (name: (callPackage (./modules + "/${name}/node-packages.nix") { inherit nodeEnv; }).${name});
- toPassthru = pkg: {
- inherit varDir allModules;
- withModules = withModules pkg;
- };
- withModules = pkg: toModules:
- let
- modules = toModules allModules;
- toInstallModule = n: ''
- cp -a ${n}/lib/node_modules/${n.packageName} $out/node_modules
- if [ ! -f $out/node_modules/${n.packageName}/.ep_initialized ]; then
- chmod u+w $out/node_modules/${n.packageName}/
- ln -s ${varDir}/ep_initialized/${n.packageName} $out/node_modules/${n.packageName}/.ep_initialized
- fi
- '';
- newEtherpad = pkg.overrideAttrs(old: {
- installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallModule modules);
- passthru = toPassthru newEtherpad;
- });
- in newEtherpad;
- # built using node2nix -l package-lock.json
- # and changing "./." to "src"
- node-environment = (callPackage ./node-packages.nix {
- inherit nodeEnv;
- src = stdenv.mkDerivation (mylibs.fetchedGithub ./etherpad-lite.json // rec {
- patches = [ ./libreoffice_patch.diff ];
- buildPhase = ''
- touch src/.ep_initialized
- '';
- installPhase = ''
- cp -a src/ $out
- '';
- });
- }).package;
- package = stdenv.mkDerivation rec {
- name = (mylibs.fetchedGithub ./etherpad-lite.json).name;
- src = node-environment;
- installPhase = ''
- mkdir -p $out
- mkdir $out/node_modules
- cp -a lib/node_modules/ep_etherpad-lite $out/src
- chmod u+w $out/src/static/js/
- ln -s ../src $out/node_modules/ep_etherpad-lite
- '';
- passthru = toPassthru package;
- };
-in package