diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -27,16 +27,16 @@
 `file:///local/path/pkg.cabal` URI that doesn't depend on network access.
 However, if the source hash is not already in `cabal2nix`'s cache or provided
 using the `--sha256` option, `cabal2nix` still needs to download the source
-code to compute the hash, which obviously still causes network traffic. Run the
-utility with `--help` to see the complete list of supported command line flags.
+code to compute the hash, which still causes network traffic. Run the utility
+with `--help` to see the complete list of supported command-line flags.
 
-Detailed instructions how to use those generated files with Nix can be found at
+Detailed instructions on how to use those generated files with Nix can be found at
 https://nixos.org/nixpkgs/manual/#how-to-create-nix-builds-for-your-own-private-haskell-packages.
 
 `cabal2nix` can also build derivations for projects from other sources than
-hackage. You only need to provide an URI that points to a cabal project. The
-most common usecase for this is probably to generate a derivation for a project
-on the local file system:
+Hackage. You only need to provide a URI that points to a cabal project. The
+most common use-case for this is probably to generate a derivation for a
+project on the local file system:
 
     $ cabal get mtl-2.2.1 && cd mtl-2.2.1
     $ cabal2nix .
diff --git a/cabal2nix.cabal b/cabal2nix.cabal
--- a/cabal2nix.cabal
+++ b/cabal2nix.cabal
@@ -1,5 +1,5 @@
 name:               cabal2nix
-version:            2.15.0
+version:            2.15.1
 synopsis:           Convert Cabal files into Nix build instructions.
 description:
   Convert Cabal files into Nix build instructions. Users of Nix can install the latest
@@ -27,7 +27,7 @@
                     gebbert, laMudri, Александр Цамутали
 maintainer:         Peter Simons <simons@cryp.to>
 stability:          stable
-tested-with:        GHC == 8.6.5, GHC == 8.8.1
+tested-with:        GHC == 8.6.5, GHC == 8.8.3, GHC == 8.10.1
 category:           Distribution, Nix
 homepage:           https://github.com/nixos/cabal2nix#readme
 bug-reports:        https://github.com/nixos/cabal2nix/issues
@@ -61,7 +61,7 @@
   other-modules:      Paths_cabal2nix
   hs-source-dirs:     src
   build-depends:      base                 > 4.11
-                    , Cabal                > 3
+                    , Cabal                == 3.0.*
                     , aeson                > 1
                     , ansi-wl-pprint
                     , bytestring
@@ -84,7 +84,6 @@
                     , transformers
                     , yaml
   default-language:   Haskell2010
-  default-extensions: MonadFailDesugaring
   other-extensions:   MultiParamTypeClasses
                       ScopedTypeVariables
                       FlexibleInstances
@@ -102,7 +101,6 @@
   hs-source-dirs:     cabal2nix
   build-depends:      base, cabal2nix
   default-language:   Haskell2010
-  default-extensions: MonadFailDesugaring
   ghc-options:        -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates
                       -Wredundant-constraints
 
@@ -112,7 +110,7 @@
                       Paths_cabal2nix
   hs-source-dirs:     hackage2nix
   build-depends:      base                 < 5
-                    , Cabal                > 2.4
+                    , Cabal
                     , aeson
                     , bytestring
                     , cabal2nix
@@ -129,16 +127,15 @@
                     , optparse-applicative
                     , pretty               >= 1.1.2
   default-language:   Haskell2010
-  default-extensions: MonadFailDesugaring
   ghc-options:        -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates
-                      -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
+                      -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-maxN16
 
 test-suite regression-test
   type:               exitcode-stdio-1.0
   main-is:            Main.hs
   hs-source-dirs:     test
   build-depends:      base
-                    , Cabal        > 2.4
+                    , Cabal
                     , cabal2nix
                     , containers
                     , directory
@@ -150,7 +147,6 @@
                     , tasty
                     , tasty-golden
   default-language:   Haskell2010
-  default-extensions: MonadFailDesugaring
   build-tools:        cabal2nix
   ghc-options:        -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates
                       -Wredundant-constraints -threaded -with-rtsopts=-K64K
diff --git a/hackage2nix/Main.hs b/hackage2nix/Main.hs
--- a/hackage2nix/Main.hs
+++ b/hackage2nix/Main.hs
@@ -10,7 +10,7 @@
 import Control.Monad.Par.Combinator
 import Control.Monad.Par.IO
 import Control.Monad.Trans ( liftIO )
-import Data.List
+import Data.List ( intercalate )
 import Data.Map.Strict ( Map )
 import qualified Data.Map.Strict as Map
 import Data.Maybe
diff --git a/src/Cabal2nix.hs b/src/Cabal2nix.hs
--- a/src/Cabal2nix.hs
+++ b/src/Cabal2nix.hs
@@ -11,10 +11,9 @@
 import Control.Exception ( bracket )
 import Control.Lens
 import Control.Monad
-import Data.List
+import Data.List ( intercalate, isPrefixOf )
 import Data.List.Split
 import Data.Maybe ( fromMaybe, isJust, listToMaybe )
-import Data.Monoid ( (<>) )
 import qualified Data.Set as Set
 import Data.String
 import Data.Time
@@ -136,6 +135,7 @@
   "watchos"       -> "ios"
   "tvos"          -> "ios"
   "linux-android" -> "linux-android"
+  "linux-androideabi" -> "linux-androideabi"
   _ | "linux-" `isPrefixOf` os -> "linux"
   _ -> fromMaybe os $ listToMaybe
     [prefix | prefix <- osPrefixes, prefix `isPrefixOf` os]
diff --git a/src/Distribution/Nixpkgs/Haskell/Derivation.hs b/src/Distribution/Nixpkgs/Haskell/Derivation.hs
--- a/src/Distribution/Nixpkgs/Haskell/Derivation.hs
+++ b/src/Distribution/Nixpkgs/Haskell/Derivation.hs
@@ -15,7 +15,7 @@
 
 import Control.DeepSeq
 import Control.Lens
-import Data.List
+import Data.List ( isPrefixOf )
 import Data.Set ( Set )
 import qualified Data.Set as Set
 import Data.Set.Lens
diff --git a/src/Distribution/Nixpkgs/Haskell/FromCabal/Flags.hs b/src/Distribution/Nixpkgs/Haskell/FromCabal/Flags.hs
--- a/src/Distribution/Nixpkgs/Haskell/FromCabal/Flags.hs
+++ b/src/Distribution/Nixpkgs/Haskell/FromCabal/Flags.hs
@@ -4,6 +4,7 @@
 
 import Distribution.Nixpkgs.Haskell.OrphanInstances ( )
 
+import Data.Char
 import Distribution.Package
 import Distribution.PackageDescription
 import Distribution.Version
@@ -15,6 +16,7 @@
 configureCabalFlags' (PackageIdentifier name version)
  | name == "accelerate-examples"= [disable "opencl"]
  | name == "arithmoi"           = [disable "llvm"]
+ | name == "bustle"             = [disable "hgettext"] -- https://gitlab.freedesktop.org/bustle/bustle/issues/13
  | name == "cabal-plan"         = [enable "exe"]
  | name == "cassava"            = [disable "bytestring--lt-0_10_4"]
  | name == "darcs"              = [enable "library", enable "force-char8-encoding"]
@@ -26,7 +28,7 @@
                                   , enable "dbus"
                                   , disable "debuglocks"
                                   , enable "magicmime"
-                                  , disable "networkbsd"
+                                  , enable "networkbsd"
                                   , enable "pairing"
                                   , enable "production"
                                   , enable "s3"
@@ -57,7 +59,10 @@
  | otherwise                    = []
 
 enable :: String -> (FlagName,Bool)
-enable name = (mkFlagName name, True)
+enable name = (mkFlagName' name, True)
 
 disable :: String -> (FlagName,Bool)
-disable name = (mkFlagName name, False)
+disable name = (mkFlagName' name, False)
+
+mkFlagName' :: String -> FlagName
+mkFlagName' = mkFlagName . map toLower
diff --git a/src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs b/src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs
--- a/src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs
+++ b/src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs
@@ -29,6 +29,7 @@
 libNixName "appindicator3-0.1"                  = return "libappindicator-gtk3"
 libNixName "asound"                             = return "alsaLib"
 libNixName "b2"                                 = return "libb2"
+libNixName "boost_context"                      = return "boost"
 libNixName "bz2"                                = return "bzip2"
 libNixName "c++"                                = []  -- What is that?
 libNixName "cairo-gobject"                      = return "cairo"
@@ -94,6 +95,8 @@
 libNixName "libavutil"                          = return "ffmpeg"
 libNixName "libgsasl"                           = return "gsasl"
 libNixName "libpcre"                            = return "pcre"
+libNixName "libpcre2"                           = return "pcre2"
+libNixName "libpcre2-8"                         = libNixName "libpcre2"
 libNixName "libqrencode"                        = return "qrencode"
 libNixName "libR"                               = return "R"
 libNixName "libsoup-gnome-2.4"                  = return "libsoup"
@@ -200,7 +203,6 @@
 buildToolNixName "nix-hash"                     = return "nix"
 buildToolNixName "nix-instantiate"              = return "nix"
 buildToolNixName "nix-store"                    = return "nix"
-buildToolNixName "pkg-config"                   = return "pkgconfig"
 buildToolNixName x                              = return (fromString x)
 
 -- | Helper function to extract the package name from a String that may or may
diff --git a/src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs b/src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs
--- a/src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs
+++ b/src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs
@@ -13,6 +13,7 @@
 import qualified Data.Set as Set
 import Distribution.Nixpkgs.Haskell
 import Distribution.Nixpkgs.Meta
+import Distribution.Nixpkgs.License
 import Distribution.Package
 import Distribution.System
 import Distribution.Text
@@ -78,7 +79,7 @@
   , ("alsa-core", over (metaSection . platforms) (Set.filter (\(Platform _ os) -> os == Linux)))
   , ("bindings-GLFW", over (libraryDepends . system) (Set.union (Set.fromList [bind "pkgs.xorg.libXext", bind "pkgs.xorg.libXfixes"])))
   , ("bindings-lxc", over (metaSection . platforms) (Set.filter (\(Platform _ os) -> os == Linux)))
-  , ("bustle", set (libraryDepends . pkgconfig . contains "system-glib = pkgs.glib") True)
+  , ("bustle", bustleOverrides)
   , ("Cabal", set doCheck False) -- test suite doesn't work in Nix
   , ("Cabal >2.2", over (setupDepends . haskell) (Set.union (Set.fromList [self "mtl", self "parsec"]))) -- https://github.com/haskell/cabal/issues/5391
   , ("cabal-helper", set doCheck False) -- https://github.com/DanielG/cabal-helper/issues/17
@@ -89,7 +90,7 @@
   , ("dns", set testTarget "spec")      -- don't execute tests that try to access the network
   , ("eventstore", over (metaSection . platforms) (Set.filter (\(Platform arch _) -> arch == X86_64)))
   , ("freenect < 1.2.1", over configureFlags (Set.union (Set.fromList ["--extra-include-dirs=${pkgs.freenect}/include/libfreenect", "--extra-lib-dirs=${pkgs.freenect}/lib"])))
-  , ("fltkhs", set (libraryDepends . system . contains (pkg "fltk14")) True . set (libraryDepends . pkgconfig . contains (pkg "libGLU_combined")) True) -- TODO: fltk14 belongs into the *setup* dependencies.
+  , ("fltkhs", set (libraryDepends . system . contains (pkg "fltk14")) True . over (libraryDepends . pkgconfig) (Set.union (pkgs ["libGLU", "libGL"]))) -- TODO: fltk14 belongs into the *setup* dependencies.
   , ("gf", set phaseOverrides gfPhaseOverrides . set doCheck False)
   , ("gi-cairo", giCairoPhaseOverrides)                     -- https://github.com/haskell-gi/haskell-gi/issues/36
   , ("gi-gdk", set runHaddock True )
@@ -255,7 +256,7 @@
   , "  sed -i \"s|numJobs (bf bi)++||\" ./Setup.hs"
     -- Parallel compilation fails. Disable it.
   , "'';"
-  , "preBuild = ''export LD_LIBRARY_PATH=`pwd`/dist/build:$LD_LIBRARY_PATH'';"
+  , "preBuild = ''export LD_LIBRARY_PATH=`pwd`/dist/build''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH'';"
     -- The build step itself, after having built the library, needs to be able
     -- to find the library it just built in order to compile grammar files.
   ]
@@ -400,3 +401,9 @@
                           , "  mv \"man/\"*.1 $out/share/man/man1/"
                           , "'';"
                           ]
+
+bustleOverrides :: Derivation -> Derivation
+bustleOverrides = set (libraryDepends . pkgconfig . contains "system-glib = pkgs.glib") True
+                . set (executableDepends . pkgconfig . contains "gio-unix = null") False
+                . set (metaSection . license) (Known "stdenv.lib.licenses.lgpl21Plus")
+                . set (metaSection . hydraPlatforms) allKnownPlatforms
