diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
 This is a build system for ATS written in Haskell and configured with Dhall. It
 is not fully working, but the configuration format is now stable.
 
-`atspkg` works quite well as a build system, and less well as a package manager.
+`atspkg` works quite well as a build system, and acceptably well as a package manager.
 
 ## Features & Non-Features
 
@@ -22,14 +22,14 @@
   * Install `patscc` and other ATS tooling
   * Install manual pages and shell completions
   * Install ATS libraries
+  * Dependency resolution
 
 Things that `atspkg` will not do for you:
 
-  * Dependency resolution (this is planned)
   * Give you the full flexibility of the C/ATS ecosystem
   * Integrate with other ecosystems
   * Provide a centralized package repository
-  * Cache builds locally (like `nix` or `cabal`)
+  * Cache builds (like `nix` or `cabal new-build`)
 
 ### Example
 
diff --git a/ats-pkg.cabal b/ats-pkg.cabal
--- a/ats-pkg.cabal
+++ b/ats-pkg.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: ats-pkg
-version: 2.10.0.20
+version: 2.10.1.5
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
@@ -76,6 +76,10 @@
         System.Process.Ext
         Quaalude
     default-language: Haskell2010
+    other-extensions: OverloadedStrings GADTs
+                      GeneralizedNewtypeDeriving DeriveAnyClass DeriveGeneric
+                      TemplateHaskell RecordWildCards TupleSections StandaloneDeriving
+                      DerivingStrategies
     ghc-options: -Wall -Wincomplete-uni-patterns
                  -Wincomplete-record-updates
     build-depends:
@@ -98,7 +102,7 @@
         parallel-io -any,
         unix -any,
         mtl -any,
-        dhall >=1.11.0 && <=1.13.0,
+        dhall >=1.13.0,
         ansi-wl-pprint -any,
         shake-ats >=1.8.0.0,
         shake-ext >=2.6.0.0,
diff --git a/src/Language/ATS/Package/Build.hs b/src/Language/ATS/Package/Build.hs
--- a/src/Language/ATS/Package/Build.hs
+++ b/src/Language/ATS/Package/Build.hs
@@ -255,7 +255,7 @@
             -> Maybe String -- ^ Optional compiler triple (overrides 'ccompiler')
             -> Pkg -- ^ Package data type
             -> Rules ()
-pkgToAction setup rs tgt ~(Pkg bs ts lbs mt _ v v' ds cds bdeps ccLocal cf as dl slv deb al) =
+pkgToAction setup rs tgt ~(Pkg bs ts lbs mt _ v v' ds cds bdeps ccLocal cf af as dl slv deb al) =
 
     unless (rs == ["clean"]) $ do
 
@@ -293,7 +293,7 @@
           k False = SharedLibrary
           k True  = StaticLibrary
 
-          atsToolConfig ph = ATSToolConfig ph (patsHomeLocsAtsPkg 5) False (ccFromString cc') (not dl) slv al
+          atsToolConfig ph = ATSToolConfig ph (patsHomeLocsAtsPkg 5) False (ccFromString cc') (not dl) slv al (unpack <$> af)
 
           cDepsRules ph = unless (null as) $ do
               let targets = fmap (unpack . cTarget) as
diff --git a/src/Language/ATS/Package/Build/C.hs b/src/Language/ATS/Package/Build/C.hs
--- a/src/Language/ATS/Package/Build/C.hs
+++ b/src/Language/ATS/Package/Build/C.hs
@@ -43,10 +43,13 @@
     cmakeLists <- findFile (p:subdirs) "CMakeLists.txt"
     fold (setFileMode <$> configurePath <*> pure ownerModes)
     makeExecutable "install-sh" (p:subdirs)
+    makeExecutable "mkinstalldirs" (p:subdirs)
+    makeExecutable "rellns-sh" (p:subdirs)
 
+    -- CC="gcc" CFLAGS="-shared-libgcc -O2" ./glibc-2.27/configure --prefix="$HOME/.atspkg"
     -- Set environment variables for configure script
     h <- cpkgHome cc'
-    let procEnv = Just [("CC", ccForConfig cc'), ("CFLAGS" :: String, "-I" <> h <> "include"), ("PATH", "/usr/bin:/bin")]
+    let procEnv = Just [("CC", ccForConfig cc'), ("CFLAGS" :: String, "-I" <> h <> "include -Wno-error -O2"), ("PATH", "/usr/bin:/bin")]
 
     biaxe [fold (configure v h <$> configurePath <*> pure procEnv), cmake v h cmakeLists, make v, install v] lib' p
 
diff --git a/src/Language/ATS/Package/Config.hs b/src/Language/ATS/Package/Config.hs
--- a/src/Language/ATS/Package/Config.hs
+++ b/src/Language/ATS/Package/Config.hs
@@ -1,5 +1,6 @@
 {-# LANGUAGE DeriveAnyClass  #-}
 {-# LANGUAGE DeriveGeneric   #-}
+{-# LANGUAGE QuasiQuotes     #-}
 {-# LANGUAGE TemplateHaskell #-}
 
 module Language.ATS.Package.Config ( UserConfig (..)
diff --git a/src/Language/ATS/Package/Debian.hs b/src/Language/ATS/Package/Debian.hs
--- a/src/Language/ATS/Package/Debian.hs
+++ b/src/Language/ATS/Package/Debian.hs
@@ -2,7 +2,6 @@
 {-# LANGUAGE DeriveAnyClass             #-}
 {-# LANGUAGE DeriveGeneric              #-}
 {-# LANGUAGE DerivingStrategies         #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE RecordWildCards            #-}
 {-# LANGUAGE StandaloneDeriving         #-}
diff --git a/src/Language/ATS/Package/Generic.hs b/src/Language/ATS/Package/Generic.hs
--- a/src/Language/ATS/Package/Generic.hs
+++ b/src/Language/ATS/Package/Generic.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE DerivingStrategies         #-}
 {-# LANGUAGE GADTs                      #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
@@ -40,8 +39,7 @@
 -- in particular, the directory for installation and the directories for
 -- dependencies.
 newtype Package a b = Package { unPack :: ReaderT (InstallDirs a) IO b }
-    deriving (Functor)
-    deriving newtype (Applicative, Monad)
+    deriving (Functor, Applicative, Monad)
 
 -- | Any type implementing 'GenericPackage' can be depended on by other
 -- packages.
diff --git a/src/Language/ATS/Package/PackageSet.hs b/src/Language/ATS/Package/PackageSet.hs
--- a/src/Language/ATS/Package/PackageSet.hs
+++ b/src/Language/ATS/Package/PackageSet.hs
@@ -31,7 +31,7 @@
               g Nothing  = id
 
 instance Pretty ATSPackageSet where
-    pretty (ATSPackageSet ds) = mconcat (punctuate hardline (pretty <$> ds))
+    pretty (ATSPackageSet ds) = fold (punctuate hardline (pretty <$> ds))
 
 displayList :: String -> IO ()
 displayList = putDoc . pretty <=< listDeps True
diff --git a/src/Language/ATS/Package/Type.hs b/src/Language/ATS/Package/Type.hs
--- a/src/Language/ATS/Package/Type.hs
+++ b/src/Language/ATS/Package/Type.hs
@@ -6,7 +6,6 @@
 {-# LANGUAGE DuplicateRecordFields      #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE OverloadedStrings          #-}
-{-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE StandaloneDeriving         #-}
 {-# LANGUAGE TemplateHaskell            #-}
 
@@ -117,6 +116,7 @@
                , buildDeps    :: [LibDep] -- ^ List of ATS library dependencies
                , ccompiler    :: Text -- ^ The C compiler we should use
                , cflags       :: [Text] -- ^ List of flags to pass to the C compiler
+               , atsFlags     :: [Text] -- ^ List of flags to pass to @patsopt@.
                , atsSource    :: [Src] -- ^ ATS source to be compile to C.
                , dynLink      :: Bool -- ^ Don't link statically, instead, use libraries installed by @atspkg@.
                , extSolve     :: Solver -- ^ Solver to use.
diff --git a/src/Quaalude.hs b/src/Quaalude.hs
--- a/src/Quaalude.hs
+++ b/src/Quaalude.hs
@@ -124,7 +124,7 @@
 import           Data.Binary
 import           Data.Bool                    (bool)
 import           Data.ByteString.Lazy         (ByteString)
-import           Data.Foldable
+import           Data.Foldable                (fold)
 import           Data.List
 import           Data.Maybe                   (fromMaybe)
 import           Data.Semigroup
