diff --git a/CMakeLists.txt b/CMakeLists.txt
index 01b1312284c84a2f02f0500076b3ca50d337922f..efae190259dbe130993eb92eb1bfa43c48a6e967 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -220,6 +220,34 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "Coverage")
 
 endif()
 
+#------------------------------------------------------
+# Search for ParMETIS
+
+if(${MPI_FOUND})
+  find_path(PARMETIS_INCLUDE_DIR parmetis.h
+    PATH_SUFFIX include parmetis
+    NO_DEFAULT_PATH
+    DOC "Custom include directory for parmetis.h")
+  find_path(PARMETIS_INCLUDE_DIR parmetis.h
+    PATH_SUFFIX include parmetis)
+
+  if (EXISTS "${PARMETIS_INCLUDE_DIR}/parmetis.h")
+    message("-- Found parmetis.h in ${PARMETIS_INCLUDE_DIR}")
+    find_library(LIB_PARMETIS parmetis)
+    if("${LIB_PARMETIS}" STREQUAL "LIB_PARMETIS-NOTFOUND")
+      message(FATAL_ERROR "Could not find parmetis library")
+    endif()
+    find_library(LIB_METIS metis)
+    if("${LIB_PARMETIS}" STREQUAL "LIB_METIS-NOTFOUND")
+      message(FATAL_ERROR "Could not find metis library")
+    endif()
+    set(PARMETIS_LIBRARIES ${LIB_PARMETIS} ${LIB_METIS})
+    message("-- Found parmetis/metis libraries ${PARMETIS_LIBRARIES}")
+  else()
+    message(FATAL_ERROR "Could not find parmetis.h")
+  endif()
+endif()
+
 # -----------------------------------------------------
 
 link_libraries("-rdynamic")
@@ -234,6 +262,7 @@ add_executable(
 target_link_libraries(
   pastis
   kokkos
+  ${PARMETIS_LIBRARIES}
   ${MPI_CXX_LINK_FLAGS} ${MPI_CXX_LIBRARIES}
   PastisUtils
   PastisMesh)