diff --git a/ats-pkg.cabal b/ats-pkg.cabal
--- a/ats-pkg.cabal
+++ b/ats-pkg.cabal
@@ -1,5 +1,5 @@
 name:                ats-pkg
-version:             1.2.0.7
+version:             1.2.0.8
 synopsis:            Package manager for ATS
 description:         A collection of scripts to make building ATS projects easy.
 homepage:            https://github.com/vmchale/ats-pkg#readme
@@ -12,7 +12,6 @@
 build-type:          Simple
 extra-doc-files:     README.md
 extra-source-files:  stack.yaml
-                   , cabal.project.local
 cabal-version:       1.18
 
 Flag development {
@@ -43,7 +42,8 @@
                      , unix
                      , lens
                      , dhall
-                     , shake-ext >= 1.2.0.3
+                     , shake-ats
+                     , shake-ext
                      , composition-prelude >= 1.1.0.2
                      , optparse-applicative
                      , temporary
diff --git a/cabal.project.local b/cabal.project.local
deleted file mode 100644
--- a/cabal.project.local
+++ /dev/null
@@ -1,6 +0,0 @@
-constraints: ats-pkg +development
-with-compiler: ghc-8.2.2
--- tests: True
-documentation: True
-haddock-hoogle: True
-haddock-internal: True
diff --git a/src/Language/ATS/Package/Dependency.hs b/src/Language/ATS/Package/Dependency.hs
--- a/src/Language/ATS/Package/Dependency.hs
+++ b/src/Language/ATS/Package/Dependency.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE DeriveAnyClass    #-}
 {-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TemplateHaskell   #-}
 
 module Language.ATS.Package.Dependency ( -- * Functions
                                          fetchDeps
@@ -13,25 +14,53 @@
 import           Control.Concurrent.ParallelIO.Global
 import           Control.Lens
 import           Control.Monad
+import           Data.Semigroup                       (Semigroup (..))
 import qualified Data.Text.Lazy                       as TL
 import           Dhall
 import           Network.HTTP.Client                  hiding (decompress)
 import           Network.HTTP.Client.TLS              (tlsManagerSettings)
 import           System.Directory
+import           System.Environment                   (getEnv)
+import           System.Posix.Files
+import           System.Process
 
 -- | Type for a dependency
 data Dependency = Dependency { libName :: Text -- ^ Library name, e.g.
-                             , dir     :: Text -- ^ Directory we should unpack to
+                             , _dir    :: Text -- ^ Directory we should unpack to
                              , url     :: Text -- ^ Url pointing to tarball
                              }
     deriving (Eq, Show, Generic, Interpret)
 
-fetchDeps :: Bool -> [Dependency] -> IO ()
-fetchDeps b deps =
+makeLenses ''Dependency
+
+fetchDeps :: Bool -- ^ Set to 'False' if unsure.
+          -> [Dependency] -- ^ ATS dependencies
+          -> [Dependency] -- ^ C Dependencies
+          -> IO ()
+fetchDeps b deps cdeps =
     unless (null deps) $ do
         putStrLn "Checking ATS dependencies..."
+        d <- pkgHome
         let libs = fmap (buildHelper b) deps
-        parallel_ libs >> stopGlobalPool
+            unpacked = fmap (over dir (TL.pack d <>)) cdeps
+            clibs = fmap (buildHelper b) unpacked
+        parallel_ (libs ++ clibs) >> stopGlobalPool
+        mapM_ setup unpacked
+
+pkgHome :: IO FilePath
+pkgHome = (++ "/.atspkg/lib/") <$> getEnv "HOME"
+
+clibSetup :: FilePath -> IO ()
+clibSetup p = do
+    let configurePath = p ++ "/configure"
+    setFileMode configurePath ownerModes
+    void $ readCreateProcess ((proc p ["--prefix", p]) { cwd = Just p }) ""
+    void $ readCreateProcess ((proc "make" []) { cwd = Just p}) ""
+    void $ readCreateProcess ((proc "make" ["install"]) { cwd = Just p }) ""
+
+setup :: Dependency -> IO ()
+setup (Dependency _ dirName' _) =
+    clibSetup (TL.unpack dirName')
 
 buildHelper :: Bool -> Dependency -> IO ()
 buildHelper b (Dependency lib' dirName' url'') = do
diff --git a/src/Language/ATS/Package/Exec.hs b/src/Language/ATS/Package/Exec.hs
--- a/src/Language/ATS/Package/Exec.hs
+++ b/src/Language/ATS/Package/Exec.hs
@@ -67,7 +67,7 @@
 fetchPkg :: String -> IO ()
 fetchPkg pkg = withSystemTempDirectory "atspkg" $ \p -> do
     let (lib, dirName, url') = ("atspkg", p, pkg) & each %~ TL.pack
-    fetchDeps True [Dependency lib dirName url']
+    fetchDeps True [Dependency lib dirName url'] []
     ps <- fmap ((p ++ "/") ++) <$> listDirectory p
     pkgDir <- fromMaybe p <$> findFile (p:ps) "atspkg.dhall"
     let a = withCurrentDirectory (takeDirectory pkgDir) (mkPkg ["install"])
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
@@ -92,9 +92,9 @@
         mapM_ cmd_ tests
 
 pkgToAction :: [String] -> Pkg -> Rules ()
-pkgToAction rs (Pkg bs ts mt v v' ds) = do
+pkgToAction rs (Pkg bs ts mt v v' ds cds) = do
     unless (rs == ["clean"]) $
-        liftIO $ fetchDeps False ds
+        liftIO $ fetchDeps False ds cds
     action (need ["atspkg.dhall"])
     mapM_ g (bs ++ ts)
     let bins = TL.unpack . target <$> bs
@@ -120,5 +120,6 @@
                , version      :: [Integer] -- ^ Library version
                , compiler     :: [Integer] -- ^ Compiler version
                , dependencies :: [Dependency] -- ^ List of dependencies
+               , clib         :: [Dependency] -- ^ List of C dependencies
                }
          deriving (Show, Eq, Generic, Interpret)
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -3,9 +3,10 @@
 packages:
   - '.'
 extra-deps:
-  - shake-ext-1.2.0.3
+  - shake-ext-1.4.0.0
+  - shake-ats-0.1.0.0
   - composition-prelude-1.1.0.2
-  - language-ats-0.1.0.6
+  - language-ats-0.1.1.3
 flags:
   ats-pkg:
     development: false
