diff --git a/.githooks/post-merge b/.githooks/post-merge
index d8d8a927b0b36f4ec1f0ed5ecb84e00a4057b735..5f9c97e925fe18d55e0089d24a6a46cae6f57000 100755
--- a/.githooks/post-merge
+++ b/.githooks/post-merge
@@ -3,6 +3,25 @@ set -eu
 
 notify () { printf '\n\e[1;94m=== %s ====\e[0m\n\n' "$1" >&2; }
 
+helm_install () {
+    name="$1"
+    url="$2"
+    version="${3:-}"
+    if [ -z "$version" ]
+    then
+        if ! helm plugin list | grep -qw "^$name"
+        then
+            helm plugin install "$url"
+        fi
+    else
+        if [ "$version" != "$(helm plugin list | awk "\$1 == \"$name\" {print \$2}")" ]
+        then
+            helm plugin uninstall "$name" || true
+            helm plugin install "$url" --version "$version"
+        fi
+    fi
+}
+
 cd "$(git rev-parse --show-toplevel)"
 notify 'Generating some configuration and private files.'
 make --directory "$HOME" --always-make --keep-going || true
@@ -26,6 +45,7 @@ if command -v helm > /dev/null
 then
     notify 'Installing Helm plugins'
     eval "$(grep 'export HELM_HOME' .bashrc)"
-    helm plugin list | { ! grep --silent '^diff'; } || helm plugin remove diff
-    helm plugin install https://github.com/databus23/helm-diff --version master
+    helm_install diff https://github.com/databus23/helm-diff.git
+    helm_install 2to3 https://github.com/helm/helm-2to3.git
+    helm_install cm-push https://github.com/chartmuseum/helm-push.git
 fi