]> git.immae.eu Git - perso/Immae/Config/Nix.git/blame - pkgs/webapps/roundcubemail/default.nix
Update sums after github cache expiration
[perso/Immae/Config/Nix.git] / pkgs / webapps / roundcubemail / default.nix
CommitLineData
fffbbb56
IB
1{ varDir ? "/var/lib/roundcubemail"
2, roundcube_config ? "/etc/roundcube/config.php"
34c7b88e 3, stdenv, fetchurl, jre, unzip, lib, callPackage }:
fffbbb56
IB
4let
5 defaultInstall = ''
6 mkdir -p $out
7 cp -R . $out/
8 cd $out
9 if [ -d skins -a -d skins/larry -a ! -d skins/elastic ]; then
10 ln -s larry skins/elastic
11 fi
12 '';
13 buildPlugin = { appName, version, url, sha256, installPhase ? defaultInstall }:
14 stdenv.mkDerivation rec {
15 name = "roundcube-${appName}-${version}";
16 inherit version;
17 phases = "unpackPhase installPhase";
18 inherit installPhase;
19 src = fetchurl { inherit url sha256; };
20 passthru.pluginName = appName;
21 };
34c7b88e
IB
22 skinNames = [];
23 allSkins = lib.attrsets.genAttrs skinNames
24 (name: callPackage (./skins + "/${name}") {});
25 pluginNames = [
26 "automatic_addressbook" "carddav" "contextmenu"
27 "contextmenu_folder" "html5_notifier" "ident_switch"
28 "message_highlight" "thunderbird_labels"
29 ];
30 allPlugins = lib.attrsets.genAttrs pluginNames
31 (name: callPackage (./plugins + "/${name}") { inherit buildPlugin; });
32 toPassthru = pkg: plugins: skins: {
33 inherit plugins skins allSkins allPlugins;
34 withSkins = withSkins pkg;
35 withPlugins = withPlugins pkg;
36 };
37 withPlugins = pkg: toPlugins:
38 let
39 plugins = toPlugins allPlugins;
40 toInstallPlugin = n: "ln -s ${n} $out/plugins/${n.pluginName}";
41 newRoundcube = pkg.overrideAttrs(old: {
42 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins);
43 passthru = toPassthru newRoundcube (pkg.plugins ++ plugins) pkg.skins;
44 });
45 in newRoundcube;
46 withSkins = pkg: toSkins:
47 let
48 skins = toSkins allSkins;
49 toInstallSkin = n: "ln -s ${n} $out/skins/${n.skinName}";
50 newRoundcube = pkg.overrideAttrs(old: {
51 installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallSkin skins);
52 passthru = toPassthru newRoundcube pkg.plugins (pkg.skins ++ skins);
53 });
54 in newRoundcube;
9271611c 55 shrinker = fetchurl {
0c67c584
IB
56 url = "https://dl.google.com/closure-compiler/compiler-20200719.zip";
57 sha256 = "0j46y9ack2yq67naca6nfysbmyilwjlkl29dbswidf1lq09yhhj3";
9271611c 58 };
fffbbb56 59 package = stdenv.mkDerivation rec {
9271611c 60 version = "1.4.4";
fffbbb56
IB
61 name = "roundcubemail-${version}";
62 src= fetchurl {
63 url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz";
9271611c 64 sha256 = "1my726p0wmsn21nbdsjx02h6hnbh8nidzipzdy0gk0qgda1j729b";
fffbbb56 65 };
9271611c
IB
66 patches = [ ./add_all.patch ]; # This patch includes js modification which requires to re-run the jsshrink below
67 buildInputs = [ unzip jre ];
fffbbb56 68 buildPhase = ''
9271611c
IB
69 mkdir -p /tmp
70 unzip -p "${shrinker}" "*.jar" > "/tmp/compiler.jar"
71 ./bin/jsshrink.sh
fffbbb56
IB
72 sed -i \
73 -e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \
74 config/defaults.inc.php
75 sed -i \
76 -e "s|RCUBE_INSTALL_PATH . 'logs.*|'${varDir}/logs';|" \
77 config/defaults.inc.php
78 '';
79 installPhase = ''
80 cp -a . $out
81 ln -s ${roundcube_config} $out/config/config.inc.php
82 '';
34c7b88e 83 passthru = toPassthru package [] [];
fffbbb56
IB
84 };
85in package