diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -129,13 +129,15 @@
 common cases where the MPI library is not installed in a standard
 location:
 
-- OpenMPI on Debian Linux (package `openmpi-dev`): use `--flag
+- OpenMPI on Debian Linux (package `libopenmpi-dev`): use `--flag
   mpi-hs:openmpi-debian`
-- OpenMPI on Ubuntu Linux (package `openmpi-dev`): use `--flag
+- OpenMPI on Ubuntu Linux (package `libopenmpi-dev`): use `--flag
   mpi-hs:openmpi-ubuntu`
 - OpenMPI on macOS with MacPorts (package `openmpi`): use `--flag
   mpi-hs:openmpi-macports`
-- MPICH on Ubuntu Linux (package `mpich-dev`): use `--flag
+- MPICH on Debian Linux (package `libmpich-dev`): use `--flag
+  mpi-hs:mpich-debian`
+- MPICH on Ubuntu Linux (package `libmpich-dev`): use `--flag
   mpi-hs:mpich-ubuntu`
 - MPICH on macOS with MacPorts (package `mpich`): use `--flag
   mpi-hs:mpich-macports`
@@ -157,6 +159,11 @@
 extra-lib-dirs:
   - /usr/lib/openmpi/lib
 ```
+
+To remove default systems paths from the search paths, disable the
+`system-mpi` flag, which is enable by default: `--flag
+mpi-hs:-system-mpi`.
+
 
 ### Testing the MPI installation with a C program
 
diff --git a/mpi-hs.cabal b/mpi-hs.cabal
--- a/mpi-hs.cabal
+++ b/mpi-hs.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 538426701e8b2b17467e84727926d3787dccae19f2208fab5e05afde41654712
+-- hash: 89b326f1e7c99cda61b1e5fd0a447e1cdbb279459215ca51e80473e789abaafb
 
 name:           mpi-hs
-version:        0.7.0.0
+version:        0.7.1.0
 synopsis:       MPI bindings for Haskell
 description:    MPI (the [Message Passinag Interface](https://www.mpi-forum.org)) is
                 a widely used standard for distributed-memory programming on HPC
@@ -59,6 +59,11 @@
   type: git
   location: https://github.com/eschnett/mpi-hs
 
+flag mpich-debian
+  description: Use MPICH on Debian
+  manual: True
+  default: False
+
 flag mpich-macports
   description: Use MPICH on MacPorts
   manual: True
@@ -84,6 +89,11 @@
   manual: True
   default: False
 
+flag system-mpi
+  description: Use generic system MPI
+  manual: True
+  default: True
+
 library
   exposed-modules:
       Control.Distributed.MPI
@@ -103,6 +113,30 @@
       base >=4 && <5
     , bytestring
     , monad-loops
+  if flag(mpich-debian)
+    include-dirs:
+        /usr/include/mpich
+        /usr/include/x86_64-linux-gnu/mpich
+    extra-lib-dirs:
+        /usr/lib/x86_64-linux-gnu/lib
+    extra-libraries:
+        mpich
+  if flag(mpich-macports)
+    include-dirs:
+        /opt/local/include/mpich-gcc9
+    extra-lib-dirs:
+        /opt/local/lib/mpich-gcc9
+    extra-libraries:
+        mpi
+  if flag(mpich-ubuntu)
+    include-dirs:
+        /usr/include/x86_64-linux-gnu/mpich
+        /usr/lib/mpich/include
+    extra-lib-dirs:
+        /usr/lib/mpich/lib
+        /usr/lib/x86_64-linux-gnu
+    extra-libraries:
+        mpich
   if flag(openmpi-debian)
     include-dirs:
         /usr/lib/x86_64-linux-gnu/openmpi/include
@@ -124,6 +158,40 @@
         /usr/lib/openmpi/lib
     extra-libraries:
         mpi
+  if flag(system-mpi)
+    if !flag(mpich-debian)
+      if !flag(mpich-macports)
+        if !flag(mpich-ubuntu)
+          if !flag(openmpi-debian)
+            if !flag(openmpi-macports)
+              if !flag(openmpi-ubuntu)
+                include-dirs:
+                    /usr/include/mpich
+                    /usr/include/x86_64-linux-gnu/mpich
+                extra-lib-dirs:
+                    /usr/lib/x86_64-linux-gnu/lib
+                extra-libraries:
+                    mpich
+  default-language: Haskell2010
+
+executable example1
+  main-is: example1.hs
+  other-modules:
+      Paths_mpi_hs
+  hs-source-dirs:
+      src
+  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
+  build-depends:
+      base
+    , mpi-hs
+  if flag(mpich-debian)
+    include-dirs:
+        /usr/include/mpich
+        /usr/include/x86_64-linux-gnu/mpich
+    extra-lib-dirs:
+        /usr/lib/x86_64-linux-gnu/lib
+    extra-libraries:
+        mpich
   if flag(mpich-macports)
     include-dirs:
         /opt/local/include/mpich-gcc9
@@ -133,25 +201,13 @@
         mpi
   if flag(mpich-ubuntu)
     include-dirs:
-        /usr/lib/mpich/include
         /usr/include/x86_64-linux-gnu/mpich
+        /usr/lib/mpich/include
     extra-lib-dirs:
         /usr/lib/mpich/lib
         /usr/lib/x86_64-linux-gnu
     extra-libraries:
         mpich
-  default-language: Haskell2010
-
-executable example1
-  main-is: example1.hs
-  other-modules:
-      Paths_mpi_hs
-  hs-source-dirs:
-      src
-  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
-  build-depends:
-      base
-    , mpi-hs
   if flag(openmpi-debian)
     include-dirs:
         /usr/lib/x86_64-linux-gnu/openmpi/include
@@ -173,6 +229,40 @@
         /usr/lib/openmpi/lib
     extra-libraries:
         mpi
+  if flag(system-mpi)
+    if !flag(mpich-debian)
+      if !flag(mpich-macports)
+        if !flag(mpich-ubuntu)
+          if !flag(openmpi-debian)
+            if !flag(openmpi-macports)
+              if !flag(openmpi-ubuntu)
+                include-dirs:
+                    /usr/include/mpich
+                    /usr/include/x86_64-linux-gnu/mpich
+                extra-lib-dirs:
+                    /usr/lib/x86_64-linux-gnu/lib
+                extra-libraries:
+                    mpich
+  default-language: Haskell2010
+
+executable example2
+  main-is: example2.hs
+  other-modules:
+      Paths_mpi_hs
+  hs-source-dirs:
+      src
+  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
+  build-depends:
+      base
+    , mpi-hs
+  if flag(mpich-debian)
+    include-dirs:
+        /usr/include/mpich
+        /usr/include/x86_64-linux-gnu/mpich
+    extra-lib-dirs:
+        /usr/lib/x86_64-linux-gnu/lib
+    extra-libraries:
+        mpich
   if flag(mpich-macports)
     include-dirs:
         /opt/local/include/mpich-gcc9
@@ -182,25 +272,13 @@
         mpi
   if flag(mpich-ubuntu)
     include-dirs:
-        /usr/lib/mpich/include
         /usr/include/x86_64-linux-gnu/mpich
+        /usr/lib/mpich/include
     extra-lib-dirs:
         /usr/lib/mpich/lib
         /usr/lib/x86_64-linux-gnu
     extra-libraries:
         mpich
-  default-language: Haskell2010
-
-executable example2
-  main-is: example2.hs
-  other-modules:
-      Paths_mpi_hs
-  hs-source-dirs:
-      src
-  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
-  build-depends:
-      base
-    , mpi-hs
   if flag(openmpi-debian)
     include-dirs:
         /usr/lib/x86_64-linux-gnu/openmpi/include
@@ -222,6 +300,40 @@
         /usr/lib/openmpi/lib
     extra-libraries:
         mpi
+  if flag(system-mpi)
+    if !flag(mpich-debian)
+      if !flag(mpich-macports)
+        if !flag(mpich-ubuntu)
+          if !flag(openmpi-debian)
+            if !flag(openmpi-macports)
+              if !flag(openmpi-ubuntu)
+                include-dirs:
+                    /usr/include/mpich
+                    /usr/include/x86_64-linux-gnu/mpich
+                extra-lib-dirs:
+                    /usr/lib/x86_64-linux-gnu/lib
+                extra-libraries:
+                    mpich
+  default-language: Haskell2010
+
+executable version
+  main-is: version.hs
+  other-modules:
+      Paths_mpi_hs
+  hs-source-dirs:
+      src
+  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
+  build-depends:
+      base
+    , mpi-hs
+  if flag(mpich-debian)
+    include-dirs:
+        /usr/include/mpich
+        /usr/include/x86_64-linux-gnu/mpich
+    extra-lib-dirs:
+        /usr/lib/x86_64-linux-gnu/lib
+    extra-libraries:
+        mpich
   if flag(mpich-macports)
     include-dirs:
         /opt/local/include/mpich-gcc9
@@ -231,25 +343,13 @@
         mpi
   if flag(mpich-ubuntu)
     include-dirs:
-        /usr/lib/mpich/include
         /usr/include/x86_64-linux-gnu/mpich
+        /usr/lib/mpich/include
     extra-lib-dirs:
         /usr/lib/mpich/lib
         /usr/lib/x86_64-linux-gnu
     extra-libraries:
         mpich
-  default-language: Haskell2010
-
-executable version
-  main-is: version.hs
-  other-modules:
-      Paths_mpi_hs
-  hs-source-dirs:
-      src
-  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
-  build-depends:
-      base
-    , mpi-hs
   if flag(openmpi-debian)
     include-dirs:
         /usr/lib/x86_64-linux-gnu/openmpi/include
@@ -271,6 +371,42 @@
         /usr/lib/openmpi/lib
     extra-libraries:
         mpi
+  if flag(system-mpi)
+    if !flag(mpich-debian)
+      if !flag(mpich-macports)
+        if !flag(mpich-ubuntu)
+          if !flag(openmpi-debian)
+            if !flag(openmpi-macports)
+              if !flag(openmpi-ubuntu)
+                include-dirs:
+                    /usr/include/mpich
+                    /usr/include/x86_64-linux-gnu/mpich
+                extra-lib-dirs:
+                    /usr/lib/x86_64-linux-gnu/lib
+                extra-libraries:
+                    mpich
+  default-language: Haskell2010
+
+test-suite mpi-test
+  type: exitcode-stdio-1.0
+  main-is: Main.hs
+  other-modules:
+      Paths_mpi_hs
+  hs-source-dirs:
+      tests/mpi
+  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
+  build-depends:
+      base
+    , monad-loops
+    , mpi-hs
+  if flag(mpich-debian)
+    include-dirs:
+        /usr/include/mpich
+        /usr/include/x86_64-linux-gnu/mpich
+    extra-lib-dirs:
+        /usr/lib/x86_64-linux-gnu/lib
+    extra-libraries:
+        mpich
   if flag(mpich-macports)
     include-dirs:
         /opt/local/include/mpich-gcc9
@@ -280,27 +416,13 @@
         mpi
   if flag(mpich-ubuntu)
     include-dirs:
-        /usr/lib/mpich/include
         /usr/include/x86_64-linux-gnu/mpich
+        /usr/lib/mpich/include
     extra-lib-dirs:
         /usr/lib/mpich/lib
         /usr/lib/x86_64-linux-gnu
     extra-libraries:
         mpich
-  default-language: Haskell2010
-
-test-suite mpi-test
-  type: exitcode-stdio-1.0
-  main-is: Main.hs
-  other-modules:
-      Paths_mpi_hs
-  hs-source-dirs:
-      tests/mpi
-  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
-  build-depends:
-      base
-    , monad-loops
-    , mpi-hs
   if flag(openmpi-debian)
     include-dirs:
         /usr/lib/x86_64-linux-gnu/openmpi/include
@@ -322,6 +444,41 @@
         /usr/lib/openmpi/lib
     extra-libraries:
         mpi
+  if flag(system-mpi)
+    if !flag(mpich-debian)
+      if !flag(mpich-macports)
+        if !flag(mpich-ubuntu)
+          if !flag(openmpi-debian)
+            if !flag(openmpi-macports)
+              if !flag(openmpi-ubuntu)
+                include-dirs:
+                    /usr/include/mpich
+                    /usr/include/x86_64-linux-gnu/mpich
+                extra-lib-dirs:
+                    /usr/lib/x86_64-linux-gnu/lib
+                extra-libraries:
+                    mpich
+  default-language: Haskell2010
+
+test-suite mpi-test-storable
+  type: exitcode-stdio-1.0
+  main-is: Main.hs
+  other-modules:
+      Paths_mpi_hs
+  hs-source-dirs:
+      tests/storable
+  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
+  build-depends:
+      base
+    , mpi-hs
+  if flag(mpich-debian)
+    include-dirs:
+        /usr/include/mpich
+        /usr/include/x86_64-linux-gnu/mpich
+    extra-lib-dirs:
+        /usr/lib/x86_64-linux-gnu/lib
+    extra-libraries:
+        mpich
   if flag(mpich-macports)
     include-dirs:
         /opt/local/include/mpich-gcc9
@@ -331,26 +488,13 @@
         mpi
   if flag(mpich-ubuntu)
     include-dirs:
-        /usr/lib/mpich/include
         /usr/include/x86_64-linux-gnu/mpich
+        /usr/lib/mpich/include
     extra-lib-dirs:
         /usr/lib/mpich/lib
         /usr/lib/x86_64-linux-gnu
     extra-libraries:
         mpich
-  default-language: Haskell2010
-
-test-suite mpi-test-storable
-  type: exitcode-stdio-1.0
-  main-is: Main.hs
-  other-modules:
-      Paths_mpi_hs
-  hs-source-dirs:
-      tests/storable
-  ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N
-  build-depends:
-      base
-    , mpi-hs
   if flag(openmpi-debian)
     include-dirs:
         /usr/lib/x86_64-linux-gnu/openmpi/include
@@ -372,20 +516,18 @@
         /usr/lib/openmpi/lib
     extra-libraries:
         mpi
-  if flag(mpich-macports)
-    include-dirs:
-        /opt/local/include/mpich-gcc9
-    extra-lib-dirs:
-        /opt/local/lib/mpich-gcc9
-    extra-libraries:
-        mpi
-  if flag(mpich-ubuntu)
-    include-dirs:
-        /usr/lib/mpich/include
-        /usr/include/x86_64-linux-gnu/mpich
-    extra-lib-dirs:
-        /usr/lib/mpich/lib
-        /usr/lib/x86_64-linux-gnu
-    extra-libraries:
-        mpich
+  if flag(system-mpi)
+    if !flag(mpich-debian)
+      if !flag(mpich-macports)
+        if !flag(mpich-ubuntu)
+          if !flag(openmpi-debian)
+            if !flag(openmpi-macports)
+              if !flag(openmpi-ubuntu)
+                include-dirs:
+                    /usr/include/mpich
+                    /usr/include/x86_64-linux-gnu/mpich
+                extra-lib-dirs:
+                    /usr/lib/x86_64-linux-gnu/lib
+                extra-libraries:
+                    mpich
   default-language: Haskell2010
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: mpi-hs
-version: '0.7.0.0'
+version: '0.7.1.0'
 github: "eschnett/mpi-hs"
 license: Apache-2.0
 author: "Erik Schnetter <schnetter@gmail.com>"
@@ -50,6 +50,10 @@
     description: Use OpenMPI on Ubuntu
     manual: true
     default: false
+  mpich-debian:
+    description: Use MPICH on Debian
+    manual: true
+    default: false
   mpich-macports:
     description: Use MPICH on MacPorts
     manual: true
@@ -58,6 +62,10 @@
     description: Use MPICH on Ubuntu
     manual: true
     default: false
+  system-mpi:
+    description: Use generic system MPI
+    manual: true
+    default: true
 
 extra-source-files:
   - LICENSE
@@ -85,6 +93,30 @@
     - c/include
 
 when:
+  - condition: flag(mpich-debian)
+    include-dirs:
+      - /usr/include/mpich
+      - /usr/include/x86_64-linux-gnu/mpich
+    extra-lib-dirs:
+      - /usr/lib/x86_64-linux-gnu/lib
+    extra-libraries:
+      - mpich
+  - condition: flag(mpich-macports)
+    include-dirs:
+      - /opt/local/include/mpich-gcc9
+    extra-lib-dirs:
+      - /opt/local/lib/mpich-gcc9
+    extra-libraries:
+      - mpi
+  - condition: flag(mpich-ubuntu)
+    include-dirs:
+      - /usr/include/x86_64-linux-gnu/mpich
+      - /usr/lib/mpich/include
+    extra-lib-dirs:
+      - /usr/lib/mpich/lib
+      - /usr/lib/x86_64-linux-gnu
+    extra-libraries:
+      - mpich
   - condition: flag(openmpi-debian)
     include-dirs:
       - /usr/lib/x86_64-linux-gnu/openmpi/include
@@ -106,22 +138,26 @@
       - /usr/lib/openmpi/lib
     extra-libraries:
       - mpi
-  - condition: flag(mpich-macports)
-    include-dirs:
-      - /opt/local/include/mpich-gcc9
-    extra-lib-dirs:
-      - /opt/local/lib/mpich-gcc9
-    extra-libraries:
-      - mpi
-  - condition: flag(mpich-ubuntu)
-    include-dirs:
-      - /usr/lib/mpich/include
-      - /usr/include/x86_64-linux-gnu/mpich
-    extra-lib-dirs:
-      - /usr/lib/mpich/lib
-      - /usr/lib/x86_64-linux-gnu
-    extra-libraries:
-      - mpich
+  - condition: flag(system-mpi)
+    when:
+      - condition: '!flag(mpich-debian)'
+        when:
+          - condition: '!flag(mpich-macports)'
+            when:
+              - condition: '!flag(mpich-ubuntu)'
+                when:
+                  - condition: '!flag(openmpi-debian)'
+                    when:
+                      - condition: '!flag(openmpi-macports)'
+                        when:
+                          - condition: '!flag(openmpi-ubuntu)'
+                            include-dirs:
+                              - /usr/include/mpich
+                              - /usr/include/x86_64-linux-gnu/mpich
+                            extra-lib-dirs:
+                              - /usr/lib/x86_64-linux-gnu/lib
+                            extra-libraries:
+                              - mpich
 
 executables:
   version:
