From: Ismaƫl Bouya Date: Tue, 7 May 2019 08:20:12 +0000 (+0200) Subject: Add roundcubemail to pkgs X-Git-Tag: nur_publish~57 X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=commitdiff_plain;h=fffbbb5623649ca7c7b32b74558a26ec5cf11abb Add roundcubemail to pkgs --- diff --git a/nixops/modules/websites/tools/tools/default.nix b/nixops/modules/websites/tools/tools/default.nix index 746119b..433927e 100644 --- a/nixops/modules/websites/tools/tools/default.nix +++ b/nixops/modules/websites/tools/tools/default.nix @@ -9,7 +9,7 @@ let env = myconfig.env.tools.ttrss; }; roundcubemail = pkgs.callPackage ./roundcubemail.nix { - inherit (mylibs) fetchedGithub; + inherit (pkgs.webapps) roundcubemail roundcubemail-plugins roundcubemail-skins; env = myconfig.env.tools.roundcubemail; }; rainloop = pkgs.callPackage ./rainloop.nix {}; diff --git a/nixops/modules/websites/tools/tools/roundcubemail.nix b/nixops/modules/websites/tools/tools/roundcubemail.nix index 9939b77..6177ff3 100644 --- a/nixops/modules/websites/tools/tools/roundcubemail.nix +++ b/nixops/modules/websites/tools/tools/roundcubemail.nix @@ -1,217 +1,122 @@ -{ lib, env, writeText, stdenv, fetchurl, fetchedGithub, phpPackages, apacheHttpd }: -let - roundcubemail = let - 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}/logs - install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions - ''; - }; - keys = [{ - dest = "webapps/tools-roundcube"; - user = apache.user; - group = apache.group; - permissions = "0400"; - text = '' - array("verify_peer" => false)); - $config['smtp_server'] = 'tls://mail.immae.eu'; - $config['smtp_port'] = '25'; - $config['managesieve_host'] = 'mail.immae.eu'; - $config['managesieve_port'] = '4190'; - $config['managesieve_usetls'] = true; - $config['managesieve_conn_options'] = array("ssl" => array("verify_peer" => false)); +{ env, roundcubemail, roundcubemail-plugins, roundcubemail-skins, phpPackages, apacheHttpd }: +rec { + varDir = "/var/lib/roundcubemail"; + activationScript = { + deps = [ "wrappers" ]; + text = '' + install -m 0755 -o ${apache.user} -g ${apache.group} -d ${varDir} \ + ${varDir}/cache ${varDir}/logs + install -m 0750 -o ${apache.user} -g ${apache.group} -d ${varDir}/phpSessions + ''; + }; + keys = [{ + dest = "webapps/tools-roundcube"; + user = apache.user; + group = apache.group; + permissions = "0400"; + text = '' + array("verify_peer" => false)); + $config['smtp_server'] = 'tls://mail.immae.eu'; + $config['smtp_port'] = '25'; + $config['managesieve_host'] = 'mail.immae.eu'; + $config['managesieve_port'] = '4190'; + $config['managesieve_usetls'] = true; + $config['managesieve_conn_options'] = array("ssl" => array("verify_peer" => false)); - $config['imap_cache'] = 'db'; - $config['messages_cache'] = 'db'; + $config['imap_cache'] = 'db'; + $config['messages_cache'] = 'db'; - $config['support_url'] = '''; + $config['support_url'] = '''; - $config['des_key'] = '${env.secret}'; + $config['des_key'] = '${env.secret}'; - $config['skin'] = 'elastic'; - $config['plugins'] = array( - 'attachment_reminder', - 'emoticons', - 'filesystem_attachments', - 'hide_blockquote', - 'identicon', - 'identity_select', - 'jqueryui', - 'managesieve', - 'newmail_notifier', - 'vcard_attachments', - 'zipdownload', + $config['skin'] = 'elastic'; + $config['plugins'] = array( + 'attachment_reminder', + 'emoticons', + 'filesystem_attachments', + 'hide_blockquote', + 'identicon', + 'identity_select', + 'jqueryui', + 'managesieve', + 'newmail_notifier', + 'vcard_attachments', + 'zipdownload', - 'automatic_addressbook', - 'message_highlight', - 'carddav', - // Ne marche pas ?: 'ident_switch', - // Ne marche pas ?: 'thunderbird_labels', - ); + 'automatic_addressbook', + 'message_highlight', + 'carddav', + // Ne marche pas ?: 'ident_switch', + // Ne marche pas ?: 'thunderbird_labels', + ); - $config['language'] = 'fr_FR'; + $config['language'] = 'fr_FR'; - $config['drafts_mbox'] = 'Mail/Drafts'; - $config['junk_mbox'] = 'Mail/Spam'; - $config['sent_mbox'] = 'Mail/sent'; - $config['trash_mbox'] = '''; - $config['default_folders'] = array('INBOX', 'Mail/Drafts', 'Mail/sent', 'Mail/Spam', '''); - $config['draft_autosave'] = 60; - $config['enable_installer'] = false; - $config['log_driver'] = 'file'; - $config['temp_dir'] = '${varDir}/cache'; - $config['mime_types'] = '${apacheHttpd}/conf/mime.types'; - ''; - }]; - webRoot = stdenv.mkDerivation rec { - version = "1.4-rc1"; - name = "roundcubemail-${version}"; - src= fetchurl { - url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz"; - 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 + $config['drafts_mbox'] = 'Mail/Drafts'; + $config['junk_mbox'] = 'Mail/Spam'; + $config['sent_mbox'] = 'Mail/sent'; + $config['trash_mbox'] = '''; + $config['default_folders'] = array('INBOX', 'Mail/Drafts', 'Mail/sent', 'Mail/Spam', '''); + $config['draft_autosave'] = 60; + $config['enable_installer'] = false; + $config['log_driver'] = 'file'; + $config['temp_dir'] = '${varDir}/cache'; + $config['mime_types'] = '${apacheHttpd}/conf/mime.types'; + ''; + }]; + webRoot = (roundcubemail.override { roundcube_config = "/var/secrets/webapps/tools-roundcube"; }).withPlugins + (builtins.attrValues roundcubemail-plugins) (builtins.attrValues roundcubemail-skins); + apache = rec { + user = "wwwrun"; + group = "wwwrun"; + modules = [ "proxy_fcgi" ]; + webappName = "tools_roundcubemail"; + root = "/run/current-system/webapps/${webappName}"; + vhostConf = '' + Alias /roundcube "${root}" + + DirectoryIndex index.php + AllowOverride All + Options FollowSymlinks + Require all granted + + + SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" + + ''; - installPhase = '' - cp -a . $out - ln -s /var/secrets/webapps/tools-roundcube $out/config/config.inc.php - ${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 - )} + }; + phpFpm = rec { + serviceDeps = [ "postgresql.service" ]; + basedir = builtins.concatStringsSep ":" ( + [ webRoot "/var/secrets/webapps/tools-roundcube" varDir ] + ++ webRoot.plugins + ++ webRoot.skins); + phpConfig = '' + date.timezone = 'CET' + extension=${phpPackages.imagick}/lib/php/extensions/imagick.so ''; - }; - apache = rec { - user = "wwwrun"; - group = "wwwrun"; - modules = [ "proxy_fcgi" ]; - webappName = "tools_roundcubemail"; - root = "/run/current-system/webapps/${webappName}"; - vhostConf = '' - Alias /roundcube "${root}" - - DirectoryIndex index.php - AllowOverride All - Options FollowSymlinks - Require all granted + socket = "/var/run/phpfpm/roundcubemail.sock"; + pool = '' + listen = ${socket} + user = ${apache.user} + group = ${apache.group} + listen.owner = ${apache.user} + listen.group = ${apache.group} + pm = ondemand + pm.max_children = 60 + pm.process_idle_timeout = 60 - - SetHandler "proxy:unix:${phpFpm.socket}|fcgi://localhost" - - - ''; - }; - phpFpm = rec { - serviceDeps = [ "postgresql.service" ]; - basedir = builtins.concatStringsSep ":" ( - [ webRoot "/var/secrets/webapps/tools-roundcube" varDir ] - ++ 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} - user = ${apache.user} - group = ${apache.group} - listen.owner = ${apache.user} - listen.group = ${apache.group} - pm = ondemand - pm.max_children = 60 - pm.process_idle_timeout = 60 - - ; Needed to avoid clashes in browser cookies (same domain) - php_value[session.name] = RoundcubemailPHPSESSID - 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" - ''; - }; + ; Needed to avoid clashes in browser cookies (same domain) + php_value[session.name] = RoundcubemailPHPSESSID + 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" + ''; }; -in - roundcubemail +} diff --git a/pkgs/webapps/default.nix b/pkgs/webapps/default.nix index f9ecd4f..073905c 100644 --- a/pkgs/webapps/default.nix +++ b/pkgs/webapps/default.nix @@ -50,6 +50,23 @@ rec { phpldapadmin = callPackage ./phpldapadmin {}; rompr = callPackage ./rompr { inherit mylibs; }; + roundcubemail = callPackage ./roundcubemail {}; + roundcubemail-with-plugins-skins = roundcubemail.withPlugins (builtins.attrValues roundcubemail-plugins) (builtins.attrValues roundcubemail-skins); + roundcubemail-skins = let + names = []; + in + lib.attrsets.genAttrs names + (name: callPackage (./roundcubemail/skins + "/${name}") {}); + roundcubemail-plugins = let + names = [ + "automatic_addressbook" "carddav" "contextmenu" + "contextmenu_folder" "html5_notifier" "ident_switch" + "message_highlight" "thunderbird_labels" + ]; + in + lib.attrsets.genAttrs names + (name: callPackage (./roundcubemail/plugins + "/${name}") { buildPlugin = roundcubemail.buildPlugin; }); + yourls = callPackage ./yourls { inherit mylibs; }; yourls-with-plugins = yourls.withPlugins (builtins.attrValues yourls-plugins); yourls-plugins = let diff --git a/pkgs/webapps/roundcubemail/default.nix b/pkgs/webapps/roundcubemail/default.nix new file mode 100644 index 0000000..ba85f37 --- /dev/null +++ b/pkgs/webapps/roundcubemail/default.nix @@ -0,0 +1,61 @@ +{ varDir ? "/var/lib/roundcubemail" +, roundcube_config ? "/etc/roundcube/config.php" +, stdenv, fetchurl }: +let + 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; }; + passthru.pluginName = appName; + }; + withPlugins = plugins: skins: package.overrideAttrs(old: { + name = "${old.name}${if builtins.length skins > 0 then "-with-skins" else ""}${if builtins.length plugins > 0 then "-with-plugins" else ""}"; + installPhase = old.installPhase + + builtins.concatStringsSep "\n" ( + map (value: "ln -s ${value} $out/plugins/${value.pluginName}") plugins + ) + + builtins.concatStringsSep "\n" ( + map (value: "ln -s ${value} $out/skins/${value.skinName}") skins + ); + passthru = old.passthru // { + inherit plugins skins; + withPlugins = morePlugins: moreSkins: old.withPlugins (morePlugins ++ plugins) (morePlugins ++ skins); + }; + }); + package = stdenv.mkDerivation rec { + version = "1.4-rc1"; + name = "roundcubemail-${version}"; + src= fetchurl { + url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/${name}-complete.tar.gz"; + 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 + ln -s ${roundcube_config} $out/config/config.inc.php + ''; + passthru = { + plugins = []; + skins = []; + inherit withPlugins buildPlugin; + }; + }; +in package diff --git a/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix b/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix new file mode 100644 index 0000000..cd9efee --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/automatic_addressbook/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +buildPlugin rec { + appName = "automatic_addressbook"; + version = "0.4.3"; + url = "https://github.com/sblaisot/${appName}/archive/${version}.tar.gz"; + sha256 = "0bx5qjzp3a3wc72fr295bvgsy5n15949c041hq76n6c7sqdn7inc"; +} diff --git a/pkgs/webapps/roundcubemail/plugins/carddav/default.nix b/pkgs/webapps/roundcubemail/plugins/carddav/default.nix new file mode 100644 index 0000000..ad6856b --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/carddav/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +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"; +} diff --git a/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix b/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix new file mode 100644 index 0000000..c970007 --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/contextmenu/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +buildPlugin rec { + appName = "contextmenu"; + version = "2.3"; + url = "https://github.com/johndoh/roundcube-${appName}/archive/${version}.tar.gz"; + sha256 = "1rb8n821ylfniiiccfskc534vd6rczhk3g82455ks3m09q6l8hif"; +} diff --git a/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix b/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix new file mode 100644 index 0000000..e5cb46d --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/contextmenu_folder/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +buildPlugin rec { + appName = "contextmenu_folder"; + version = "1.3.3"; + url = "https://github.com/random-cuber/${appName}/archive/${version}.tar.gz"; + sha256 = "1ngfws1v8qrpa52rjh7kirc98alchk2vbqwra86h00agyjjlcc57"; +} diff --git a/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix b/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix new file mode 100644 index 0000000..35bff06 --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/html5_notifier/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +buildPlugin rec { + appName = "html5_notifier"; + version = "v0.6.2"; + url = "https://github.com/stremlau/${appName}/archive/${version}.tar.gz"; + sha256 = "0s1wq9ira4bcd8jvhn93nhxiqzpp92i0za2kw37kf7ksyhr0xslq"; +} diff --git a/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix b/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix new file mode 100644 index 0000000..1dfc402 --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/ident_switch/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +buildPlugin rec { + appName = "ident_switch"; + version = "4.0.1"; + url = "https://bitbucket.org/BoresExpress/${appName}/get/${version}.tar.gz"; + sha256 = "1zyy40lfq2kn7hkghbl8lgp18fb634zr4fxmmxvb1wqyvqdpdpyk"; +} diff --git a/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix b/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix new file mode 100644 index 0000000..dc7138a --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/message_highlight/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +buildPlugin rec { + appName = "message_highlight"; + version = "4.4"; + url = "https://github.com/corbosman/${appName}/archive/${version}.tar.gz"; + sha256 = "12c4x47y70xdl5pgm8csh5i4yiyhpi232lvjbixmca6di4lkhh9j"; +} diff --git a/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix b/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix new file mode 100644 index 0000000..ca7245f --- /dev/null +++ b/pkgs/webapps/roundcubemail/plugins/thunderbird_labels/default.nix @@ -0,0 +1,7 @@ +{ buildPlugin }: +buildPlugin rec { + appName = "thunderbird_labels"; + version = "v1.3.2"; + url = "https://github.com/mike-kfed/roundcube-${appName}/archive/${version}.tar.gz"; + sha256 = "1q4x30w66m02v3lw2n8020g0158rmyfzs6gydfk89pa1hs28k9bg"; +}