]> git.immae.eu Git - perso/Immae/Config/Nix/NUR.git/blob - pkgs/webapps/roundcubemail/default.nix
Initial commit published for NUR
[perso/Immae/Config/Nix/NUR.git] / pkgs / webapps / roundcubemail / default.nix
1 { varDir ? "/var/lib/roundcubemail"
2 , roundcube_config ? "/etc/roundcube/config.php"
3 , stdenv, fetchurl }:
4 let
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 };
22 withPlugins = plugins: skins: package.overrideAttrs(old: {
23 name = "${old.name}${if builtins.length skins > 0 then "-with-skins" else ""}${if builtins.length plugins > 0 then "-with-plugins" else ""}";
24 installPhase = old.installPhase +
25 builtins.concatStringsSep "\n" (
26 map (value: "ln -s ${value} $out/plugins/${value.pluginName}") plugins
27 ) +
28 builtins.concatStringsSep "\n" (
29 map (value: "ln -s ${value} $out/skins/${value.skinName}") skins
30 );
31 passthru = old.passthru // {
32 inherit plugins skins;
33 withPlugins = morePlugins: moreSkins: old.withPlugins (morePlugins ++ plugins) (morePlugins ++ skins);
34 };
35 });
36 package = stdenv.mkDerivation rec {
37 version = "1.4-rc1";
38 name = "roundcubemail-${version}";
39 src= fetchurl {
40 url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz";
41 sha256 = "0p18wffwi2prh6vxhx1bc69qd1vwybggm8gvg3shahfdknxci9i4";
42 };
43 buildPhase = ''
44 sed -i \
45 -e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \
46 config/defaults.inc.php
47 sed -i \
48 -e "s|RCUBE_INSTALL_PATH . 'logs.*|'${varDir}/logs';|" \
49 config/defaults.inc.php
50 '';
51 installPhase = ''
52 cp -a . $out
53 ln -s ${roundcube_config} $out/config/config.inc.php
54 '';
55 passthru = {
56 plugins = [];
57 skins = [];
58 inherit withPlugins buildPlugin;
59 };
60 };
61 in package