X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=pkgs%2Fwebapps%2Fetherpad-lite%2Fdefault.nix;h=4327384840be37ad7dc8ec812c368bcf2a5e9e27;hp=5cd1cfb008f1adc7cb4ce8a25222a83b6ebdf0e5;hb=4b0a82cc2f4597a11b9275cf156ae9cceffaf44f;hpb=e9c91c19475ed679676829bfd716e41009b560c8 diff --git a/pkgs/webapps/etherpad-lite/default.nix b/pkgs/webapps/etherpad-lite/default.nix index 5cd1cfb..4327384 100644 --- a/pkgs/webapps/etherpad-lite/default.nix +++ b/pkgs/webapps/etherpad-lite/default.nix @@ -1,31 +1,43 @@ { varDir ? "/var/lib/etherpad-lite" # if you override this change the StateDirectory in service file too! -, stdenv, callPackage, mylibs, fetchurl }: +, stdenv, callPackage, mylibs, lib }: let - jquery = fetchurl { - url = https://code.jquery.com/jquery-1.9.1.js; - sha256 = "0h4dk67yc9d0kadqxb6b33585f3x3559p6qmp70l00qwq030vn3v"; + 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 = modules: package.overrideAttrs(old: { - installPhase = let - modInst = n: - let n' = n.override { - postInstall = '' - if [ ! -f $out/lib/node_modules/${n.moduleName}/.ep_initialized ]; then - ln -s ${varDir}/ep_initialized/${n.moduleName} $out/lib/node_modules/${n.moduleName}/.ep_initialized - fi - ''; - }; - in "cp -a ${n'}/lib/node_modules/${n.moduleName} $out/node_modules"; - in old.installPhase + builtins.concatStringsSep "\n" (map modInst modules); - passthru = old.passthru // { - inherit modules; - withModules = moreModules: old.withModules (moreModules ++ modules); - }; - }); + 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 { - nodeEnv = callPackage mylibs.nodeEnv {}; + inherit nodeEnv; src = stdenv.mkDerivation (mylibs.fetchedGithub ./etherpad-lite.json // rec { patches = [ ./libreoffice_patch.diff ]; buildPhase = '' @@ -44,12 +56,8 @@ let mkdir $out/node_modules cp -a lib/node_modules/ep_etherpad-lite $out/src chmod u+w $out/src/static/js/ - #cp ${jquery} $out/src/static/js/jquery.js ln -s ../src $out/node_modules/ep_etherpad-lite ''; - passthru = { - modules = []; - inherit varDir withModules; - }; + passthru = toPassthru package; }; in package