]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - pkgs/webapps/roundcubemail/default.nix
Add roundcubemail to pkgs
[perso/Immae/Config/Nix.git] / pkgs / webapps / roundcubemail / default.nix
diff --git a/pkgs/webapps/roundcubemail/default.nix b/pkgs/webapps/roundcubemail/default.nix
new file mode 100644 (file)
index 0000000..ba85f37
--- /dev/null
@@ -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