]>
Commit | Line | Data |
---|---|---|
bc0f9fcf IB |
1 | { varDir ? "/var/lib/etherpad-lite" # if you override this change the StateDirectory in service file too! |
2 | , stdenv, callPackage, src, lib, nodejs }: | |
3 | let | |
4 | nodeEnv = callPackage ../../lib/node-env.nix {}; | |
5 | moduleNames = [ | |
6 | "ep_aa_file_menu_toolbar" "ep_adminpads" "ep_align" "ep_bookmark" | |
7 | "ep_clear_formatting" "ep_colors" "ep_comments_page" | |
8 | "ep_copy_paste_select_all" "ep_cursortrace" "ep_delete_empty_pads" | |
9 | "ep_embedmedia" "ep_font_family" "ep_font_size" "ep_headings2" | |
10 | "ep_immae_buttons" "ep_ldapauth" "ep_line_height" "ep_markdown" | |
11 | "ep_mypads" "ep_page_view" "ep_previewimages" "ep_ruler" | |
12 | "ep_scrollto" "ep_set_title_on_pad" "ep_subscript_and_superscript" | |
13 | "ep_timesliderdiff" | |
14 | ]; | |
15 | # nix files are built using node2nix -i node-packages.json | |
16 | allModules = lib.attrsets.genAttrs moduleNames | |
17 | (name: (callPackage (./modules + "/${name}/node-packages.nix") { inherit nodeEnv; }).${name}); | |
120bcf4d IB |
18 | toPassthru = pkg: moduleNames: { |
19 | inherit varDir allModules nodejs moduleNames; | |
bc0f9fcf IB |
20 | withModules = withModules pkg; |
21 | }; | |
22 | withModules = pkg: toModules: | |
23 | let | |
24 | modules = toModules allModules; | |
25 | toInstallModule = n: '' | |
26 | cp -a ${n}/lib/node_modules/${n.packageName} $out/node_modules | |
27 | if [ ! -f $out/node_modules/${n.packageName}/.ep_initialized ]; then | |
28 | chmod u+w $out/node_modules/${n.packageName}/ | |
29 | ln -s ${varDir}/ep_initialized/${n.packageName} $out/node_modules/${n.packageName}/.ep_initialized | |
30 | fi | |
31 | ''; | |
120bcf4d | 32 | modulesNames = map (n: n.packageName) modules; |
bc0f9fcf IB |
33 | newEtherpad = pkg.overrideAttrs(old: { |
34 | installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallModule modules); | |
120bcf4d | 35 | passthru = toPassthru newEtherpad moduleNames; |
bc0f9fcf IB |
36 | }); |
37 | in newEtherpad; | |
38 | # built using node2nix -l package-lock.json | |
39 | # and changing "./." to "src" | |
40 | node-environment = (callPackage ./node-packages.nix { | |
41 | inherit nodeEnv; | |
42 | src = stdenv.mkDerivation { | |
43 | pname = "etherpad-lite"; | |
44 | version = src.version; | |
45 | inherit src; | |
46 | patches = [ ./libreoffice_patch.diff ]; | |
47 | buildPhase = '' | |
48 | touch src/.ep_initialized | |
49 | ''; | |
50 | installPhase = '' | |
51 | cp -a src/ $out | |
52 | ''; | |
53 | }; | |
54 | }).package; | |
55 | package = stdenv.mkDerivation rec { | |
56 | name = "etherpad-lite-${src.version}"; | |
57 | src = node-environment; | |
120bcf4d | 58 | version = src.version; |
bc0f9fcf IB |
59 | installPhase = '' |
60 | mkdir -p $out | |
61 | mkdir $out/node_modules | |
62 | cp -a lib/node_modules/ep_etherpad-lite $out/src | |
63 | chmod u+w $out/src/static/js/ | |
64 | ln -s ../src $out/node_modules/ep_etherpad-lite | |
1f1c7c69 | 65 | ln -s ${varDir}/var $out/var |
bc0f9fcf | 66 | ''; |
120bcf4d | 67 | passthru = toPassthru package []; |
bc0f9fcf IB |
68 | }; |
69 | in package |