-{ lib, env, writeText, stdenv, fetchurl }:
+{ lib, env, writeText, stdenv, fetchurl, fetchedGithub, phpPackages, apacheHttpd }:
let
roundcubemail = let
- plugins = {};
+ defaultInstall = ''
+ mkdir -p $out
+ cp -R . $out/
+ cd $out
+ if [ -d skins -a -d skins/larry -a ! -d skins/elastic ]; then
+ ln -s larry skins/elastic
+ fi
+ '';
+ buildPlugin = { appName, version, url, sha256, installPhase ? defaultInstall }:
+ stdenv.mkDerivation rec {
+ name = "roundcube-${appName}-${version}";
+ inherit version;
+ phases = "unpackPhase installPhase";
+ inherit installPhase;
+ src = fetchurl { inherit url sha256; };
+ };
+ plugins = {
+ carddav = buildPlugin rec {
+ appName = "carddav";
+ version = "3.0.3";
+ url = "https://github.com/blind-coder/rcmcarddav/releases/download/v${version}/${appName}-${version}.tar.bz2";
+ sha256 = "0cf5rnqkhhag2vdy808zfpr4l5586fn43nvcia8ac1ha58azrxal";
+ };
+ contextmenu = buildPlugin rec {
+ appName = "contextmenu";
+ version = "2.3";
+ url = "https://github.com/johndoh/roundcube-${appName}/archive/${version}.tar.gz";
+ sha256 = "1rb8n821ylfniiiccfskc534vd6rczhk3g82455ks3m09q6l8hif";
+ };
+ contextmenu_folder = buildPlugin rec {
+ appName = "contextmenu_folder";
+ version = "1.3.3";
+ url = "https://github.com/random-cuber/${appName}/archive/${version}.tar.gz";
+ sha256 = "1ngfws1v8qrpa52rjh7kirc98alchk2vbqwra86h00agyjjlcc57";
+ };
+ automatic_addressbook = buildPlugin rec {
+ appName = "automatic_addressbook";
+ version = "0.4.3";
+ url = "https://github.com/sblaisot/${appName}/archive/${version}.tar.gz";
+ sha256 = "0bx5qjzp3a3wc72fr295bvgsy5n15949c041hq76n6c7sqdn7inc";
+ };
+ message_highlight = buildPlugin rec {
+ appName = "message_highlight";
+ version = "4.4";
+ url = "https://github.com/corbosman/${appName}/archive/${version}.tar.gz";
+ sha256 = "12c4x47y70xdl5pgm8csh5i4yiyhpi232lvjbixmca6di4lkhh9j";
+ };
+ thunderbird_labels = buildPlugin rec {
+ appName = "thunderbird_labels";
+ version = "v1.3.2";
+ url = "https://github.com/mike-kfed/roundcube-${appName}/archive/${version}.tar.gz";
+ sha256 = "1q4x30w66m02v3lw2n8020g0158rmyfzs6gydfk89pa1hs28k9bg";
+ };
+ html5_notifier = buildPlugin rec {
+ appName = "html5_notifier";
+ version = "v0.6.2";
+ url = "https://github.com/stremlau/${appName}/archive/${version}.tar.gz";
+ sha256 = "0s1wq9ira4bcd8jvhn93nhxiqzpp92i0za2kw37kf7ksyhr0xslq";
+ };
+ ident_switch = buildPlugin rec {
+ appName = "ident_switch";
+ version = "4.0.1";
+ url = "https://bitbucket.org/BoresExpress/${appName}/get/${version}.tar.gz";
+ sha256 = "1zyy40lfq2kn7hkghbl8lgp18fb634zr4fxmmxvb1wqyvqdpdpyk";
+ };
+ };
+ skins = {};
in rec {
varDir = "/var/lib/roundcubemail";
activationScript = {
deps = [ "wrappers" ];
text = ''
install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \
- ${varDir}/cache
+ ${varDir}/cache ${varDir}/logs
install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions
'';
};
$config['des_key'] = '${env.secret}';
- $config['plugins'] = array();
+ $config['skin'] = 'elastic';
+ $config['plugins'] = array(
+ // 'acl',
+ // 'additional_message_headers',
+ // 'archive',
+ 'attachment_reminder',
+ // 'autologon',
+ // 'database_attachments',
+ // 'debug_logger',
+ // 'emoticons',
+ // 'enigma',
+ // 'example_addressbook',
+ // 'filesystem_attachments',
+ // 'help',
+ // 'hide_blockquote',
+ // 'http_authentication',
+ // 'identicon',
+ // 'identity_select',
+ // 'jqueryui',
+ // 'krb_authentication',
+ // 'managesieve',
+ // 'markasjunk',
+ // 'new_user_dialog',
+ // 'new_user_identity',
+ // 'newmail_notifier',
+ // 'password',
+ // 'redundant_attachments',
+ // 'show_additional_headers',
+ // 'squirrelmail_usercopy',
+ // 'subscriptions_option',
+ // 'userinfo',
+ // 'vcard_attachments',
+ // 'virtuser_file',
+ // 'virtuser_query',
+ // 'zipdownload',
+
+ // 'automatic_addressbook',
+ // 'carddav',
+ // 'contextmenu',
+ // 'contextmenu_folder',
+ // 'html5_notifier',
+ // 'ident_switch',
+ // 'message_highlight',
+ // 'thunderbird_labels',
+ );
$config['language'] = 'fr_FR';
$config['enable_installer'] = false;
$config['log_driver'] = 'stdout';
$config['temp_dir'] = '${varDir}/cache';
- $config['debug_level'] = 1;
+ $config['mime_types'] = '${apacheHttpd}/conf/mime.types';
'';
webRoot = stdenv.mkDerivation rec {
- version = "1.3.8";
+ version = "1.4-rc1";
name = "roundcubemail-${version}";
src= fetchurl {
url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz";
- sha256 = "018djad7ygfl9c9f2l2j42qkg31ml3hs2f01f0dk361zckwk77n4";
+ sha256 = "0p18wffwi2prh6vxhx1bc69qd1vwybggm8gvg3shahfdknxci9i4";
};
buildPhase = ''
sed -i \
-e "s|RCUBE_INSTALL_PATH . 'temp.*|'${varDir}/cache';|" \
config/defaults.inc.php
+ sed -i \
+ -e "s|RCUBE_INSTALL_PATH . 'logs.*|'${varDir}/logs';|" \
+ config/defaults.inc.php
'';
installPhase = ''
cp -a . $out
${builtins.concatStringsSep "\n" (
lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/plugins/${name}") plugins
)}
+ ${builtins.concatStringsSep "\n" (
+ lib.attrsets.mapAttrsToList (name: value: "ln -sf ${value} $out/skins/${name}") skins
+ )}
'';
};
apache = rec {
phpFpm = rec {
basedir = builtins.concatStringsSep ":" (
[ webRoot config varDir ]
- ++ lib.attrsets.mapAttrsToList (name: value: value) plugins);
+ ++ lib.attrsets.mapAttrsToList (name: value: value) plugins
+ ++ lib.attrsets.mapAttrsToList (name: value: value) skins);
+ phpConfig = ''
+ date.timezone = 'CET'
+ extension=${phpPackages.imagick}/lib/php/extensions/imagick.so
+ '';
socket = "/var/run/phpfpm/roundcubemail.sock";
pool = ''
listen = ${socket}
; Needed to avoid clashes in browser cookies (same domain)
php_value[session.name] = RoundcubemailPHPSESSID
- php_admin_value[open_basedir] = "${basedir}:/tmp"
+ php_admin_value[upload_max_filesize] = 200M
+ php_admin_value[post_max_size] = 200M
+ php_admin_value[open_basedir] = "${basedir}:${apacheHttpd}/conf/mime.types:/tmp"
php_admin_value[session.save_path] = "${varDir}/phpSessions"
'';
};