diff --git a/ncurses.cabal b/ncurses.cabal
--- a/ncurses.cabal
+++ b/ncurses.cabal
@@ -1,5 +1,5 @@
 name: ncurses
-version: 0.2.7
+version: 0.2.8
 license: GPL-3
 license-file: license.txt
 author: John Millikin <jmillikin@gmail.com>
@@ -56,8 +56,24 @@
 source-repository this
   type: git
   location: https://john-millikin.com/code/haskell-ncurses/
-  tag: haskell-ncurses_0.2.7
+  tag: haskell-ncurses_0.2.8
 
+-- Do not use default to using pkg-config to find ncurses libraries, because
+-- the .pc files are missing or broken in many installations.
+flag use-pkgconfig
+  default: False
+  manual: True
+  description:
+    Use pkg-config to set linker and include flags.
+
+flag force-narrow-library
+  default: False
+  manual: True
+  description:
+    Force including and linking against ncurses instead of ncursesw. This is
+    only useful on systems that have the ncursesw package installed
+    incorrectly. On most systems this will cause compile- or run-time errors.
+
 library
   hs-source-dirs: lib
   ghc-options: -Wall -O2
@@ -72,18 +88,23 @@
   build-tools:
     c2hs >= 0.15
 
-  -- Do not use pkg-config to find ncurses libraries, because the .pc files
-  -- are missing or broken in many installations.
-  --
-  -- Explicitly linking against libpthread.so fixes a build problem on
-  -- platforms where the linker doesn't automatically follow dependencies.
-  if os(darwin)
+  if flag(use-pkgconfig)
+    if flag(force-narrow-library)
+      cc-options: -DHSNCURSES_NARROW_HEADER
+      pkgconfig-depends: ncurses, panel
+    else
+      pkgconfig-depends: ncursesw, panelw
+  else
     -- MacOS has a version of ncurses where the narrow- and wide-character
     -- builds have been merged into a single header/dylib.
-    cc-options: -DHSNCURSES_NARROW_HEADER
-    extra-libraries: panel ncurses pthread
-  else
-    extra-libraries: panelw ncursesw pthread
+    --
+    -- Explicitly linking against libpthread.so fixes a build problem on
+    -- platforms where the linker doesn't automatically follow dependencies.
+    if os(darwin) || flag(force-narrow-library)
+      cc-options: -DHSNCURSES_NARROW_HEADER
+      extra-libraries: panel ncurses pthread
+    else
+      extra-libraries: panelw ncursesw pthread
 
   c-sources: cbits/hsncurses-shim.c
 
