X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=blobdiff_plain;f=pkgs%2Fwebapps%2Froundcubemail%2Fdefault.nix;h=2b22b299e2da29bbf728657cef6990f75a1e2d92;hp=4f288b8882389bd4ed0344b06a226d3ef00f9b57;hb=34c7b88e16d1768b1b9a0cfa6dd21ea5d9b1b308;hpb=c4216ddb8bedd0b75149c039bd5dc86c3d6a9b7f diff --git a/pkgs/webapps/roundcubemail/default.nix b/pkgs/webapps/roundcubemail/default.nix index 4f288b8..2b22b29 100644 --- a/pkgs/webapps/roundcubemail/default.nix +++ b/pkgs/webapps/roundcubemail/default.nix @@ -1,6 +1,6 @@ { varDir ? "/var/lib/roundcubemail" , roundcube_config ? "/etc/roundcube/config.php" -, stdenv, fetchurl, jre, unzip }: +, stdenv, fetchurl, jre, unzip, lib, callPackage }: let defaultInstall = '' mkdir -p $out @@ -19,20 +19,39 @@ let 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); - }; - }); + skinNames = []; + allSkins = lib.attrsets.genAttrs skinNames + (name: callPackage (./skins + "/${name}") {}); + pluginNames = [ + "automatic_addressbook" "carddav" "contextmenu" + "contextmenu_folder" "html5_notifier" "ident_switch" + "message_highlight" "thunderbird_labels" + ]; + allPlugins = lib.attrsets.genAttrs pluginNames + (name: callPackage (./plugins + "/${name}") { inherit buildPlugin; }); + toPassthru = pkg: plugins: skins: { + inherit plugins skins allSkins allPlugins; + withSkins = withSkins pkg; + withPlugins = withPlugins pkg; + }; + withPlugins = pkg: toPlugins: + let + plugins = toPlugins allPlugins; + toInstallPlugin = n: "ln -s ${n} $out/plugins/${n.pluginName}"; + newRoundcube = pkg.overrideAttrs(old: { + installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallPlugin plugins); + passthru = toPassthru newRoundcube (pkg.plugins ++ plugins) pkg.skins; + }); + in newRoundcube; + withSkins = pkg: toSkins: + let + skins = toSkins allSkins; + toInstallSkin = n: "ln -s ${n} $out/skins/${n.skinName}"; + newRoundcube = pkg.overrideAttrs(old: { + installPhase = old.installPhase + "\n" + builtins.concatStringsSep "\n" (map toInstallSkin skins); + passthru = toPassthru newRoundcube pkg.plugins (pkg.skins ++ skins); + }); + in newRoundcube; shrinker = fetchurl { url = "http://dl.google.com/closure-compiler/compiler-latest.zip"; sha256 = "0naf3kflhlkm17ls1x7mgddd3b01f8yzbbbdjqwy5m12jmkzl2d5"; @@ -61,10 +80,6 @@ let cp -a . $out ln -s ${roundcube_config} $out/config/config.inc.php ''; - passthru = { - plugins = []; - skins = []; - inherit withPlugins buildPlugin; - }; + passthru = toPassthru package [] []; }; in package