diff --git a/hpack.cabal b/hpack.cabal
--- a/hpack.cabal
+++ b/hpack.cabal
@@ -1,9 +1,9 @@
--- This file has been generated from package.yaml by hpack version 0.11.2.
+-- This file has been generated from package.yaml by hpack version 0.12.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           hpack
-version:        0.12.0
+version:        0.13.0
 synopsis:       An alternative format for Haskell packages
 category:       Development
 homepage:       https://github.com/sol/hpack#readme
diff --git a/src/Hpack/Config.hs b/src/Hpack/Config.hs
--- a/src/Hpack/Config.hs
+++ b/src/Hpack/Config.hs
@@ -52,7 +52,7 @@
 import           Data.String
 import           Data.Text (Text)
 import qualified Data.Text as T
-import           GHC.Generics
+import           GHC.Generics (Generic, Rep)
 import           Prelude ()
 import           Prelude.Compat
 import           System.Directory
@@ -91,7 +91,7 @@
   ++ maybe [] sectionDependencies packageLibrary
 
 section :: a -> Section a
-section a = Section a [] [] [] [] [] [] [] [] [] [] Nothing []
+section a = Section a [] [] [] [] [] [] [] [] [] [] [] [] [] Nothing []
 
 packageConfig :: FilePath
 packageConfig = "package.yaml"
@@ -181,6 +181,9 @@
 , commonOptionsGhcOptions :: Maybe (List GhcOption)
 , commonOptionsGhcProfOptions :: Maybe (List GhcProfOption)
 , commonOptionsCppOptions :: Maybe (List CppOption)
+, commonOptionsCSources :: Maybe (List FilePath)
+, commonOptionsExtraLibDirs :: Maybe (List FilePath)
+, commonOptionsExtraLibraries :: Maybe (List FilePath)
 , commonOptionsIncludeDirs :: Maybe (List FilePath)
 , commonOptionsInstallIncludes :: Maybe (List FilePath)
 , commonOptionsLdOptions :: Maybe (List LdOption)
@@ -384,6 +387,9 @@
 , sectionGhcOptions :: [GhcOption]
 , sectionGhcProfOptions :: [GhcProfOption]
 , sectionCppOptions :: [CppOption]
+, sectionCSources :: [FilePath]
+, sectionExtraLibDirs :: [FilePath]
+, sectionExtraLibraries :: [FilePath]
 , sectionIncludeDirs :: [FilePath]
 , sectionInstallIncludes :: [FilePath]
 , sectionLdOptions :: [LdOption]
@@ -591,37 +597,48 @@
 
 mergeSections :: Section global -> Section a -> Section a
 mergeSections globalOptions options
-  = Section a sourceDirs dependencies defaultExtensions otherExtensions ghcOptions ghcProfOptions cppOptions includeDirs installIncludes ldOptions buildable conditionals
-  where
-    a = sectionData options
-    sourceDirs = sectionSourceDirs globalOptions ++ sectionSourceDirs options
-    defaultExtensions = sectionDefaultExtensions globalOptions ++ sectionDefaultExtensions options
-    otherExtensions = sectionOtherExtensions globalOptions ++ sectionOtherExtensions options
-    ghcOptions = sectionGhcOptions globalOptions ++ sectionGhcOptions options
-    ghcProfOptions = sectionGhcProfOptions globalOptions ++ sectionGhcProfOptions options
-    cppOptions = sectionCppOptions globalOptions ++ sectionCppOptions options
-    includeDirs = sectionIncludeDirs globalOptions ++ sectionIncludeDirs options
-    installIncludes = sectionInstallIncludes globalOptions ++ sectionInstallIncludes options
-    ldOptions = sectionLdOptions globalOptions ++ sectionLdOptions options
-    buildable = sectionBuildable options <|> sectionBuildable globalOptions
-    dependencies = sectionDependencies globalOptions ++ sectionDependencies options
-    conditionals = sectionConditionals globalOptions ++ sectionConditionals options
+  = Section {
+    sectionData = sectionData options
+  , sectionSourceDirs = sectionSourceDirs globalOptions ++ sectionSourceDirs options
+  , sectionDefaultExtensions = sectionDefaultExtensions globalOptions ++ sectionDefaultExtensions options
+  , sectionOtherExtensions = sectionOtherExtensions globalOptions ++ sectionOtherExtensions options
+  , sectionGhcOptions = sectionGhcOptions globalOptions ++ sectionGhcOptions options
+  , sectionGhcProfOptions = sectionGhcProfOptions globalOptions ++ sectionGhcProfOptions options
+  , sectionCppOptions = sectionCppOptions globalOptions ++ sectionCppOptions options
+  , sectionCSources = sectionCSources globalOptions ++ sectionCSources options
+  , sectionExtraLibDirs = sectionExtraLibDirs globalOptions ++ sectionExtraLibDirs options
+  , sectionExtraLibraries = sectionExtraLibraries globalOptions ++ sectionExtraLibraries options
+  , sectionIncludeDirs = sectionIncludeDirs globalOptions ++ sectionIncludeDirs options
+  , sectionInstallIncludes = sectionInstallIncludes globalOptions ++ sectionInstallIncludes options
+  , sectionLdOptions = sectionLdOptions globalOptions ++ sectionLdOptions options
+  , sectionBuildable = sectionBuildable options <|> sectionBuildable globalOptions
+  , sectionDependencies = sectionDependencies globalOptions ++ sectionDependencies options
+  , sectionConditionals = sectionConditionals globalOptions ++ sectionConditionals options
+  }
 
 toSection :: a -> CommonOptions -> ([FieldName], Section a)
 toSection a CommonOptions{..}
-  = (concat unknownFields, Section a sourceDirs dependencies defaultExtensions otherExtensions ghcOptions ghcProfOptions cppOptions includeDirs installIncludes ldOptions buildable conditionals)
+  = ( concat unknownFields 
+    , Section {
+        sectionData = a
+      , sectionSourceDirs = fromMaybeList commonOptionsSourceDirs
+      , sectionDefaultExtensions = fromMaybeList commonOptionsDefaultExtensions
+      , sectionOtherExtensions = fromMaybeList commonOptionsOtherExtensions
+      , sectionGhcOptions = fromMaybeList commonOptionsGhcOptions
+      , sectionGhcProfOptions = fromMaybeList commonOptionsGhcProfOptions
+      , sectionCppOptions = fromMaybeList commonOptionsCppOptions
+      , sectionCSources = fromMaybeList commonOptionsCSources
+      , sectionExtraLibDirs = fromMaybeList commonOptionsExtraLibDirs
+      , sectionExtraLibraries = fromMaybeList commonOptionsExtraLibraries
+      , sectionIncludeDirs = fromMaybeList commonOptionsIncludeDirs
+      , sectionInstallIncludes = fromMaybeList commonOptionsInstallIncludes
+      , sectionLdOptions = fromMaybeList commonOptionsLdOptions
+      , sectionBuildable = commonOptionsBuildable
+      , sectionDependencies = fromMaybeList commonOptionsDependencies
+      , sectionConditionals = conditionals
+      }
+    )
   where
-    sourceDirs = fromMaybeList commonOptionsSourceDirs
-    defaultExtensions = fromMaybeList commonOptionsDefaultExtensions
-    otherExtensions = fromMaybeList commonOptionsOtherExtensions
-    ghcOptions = fromMaybeList commonOptionsGhcOptions
-    ghcProfOptions = fromMaybeList commonOptionsGhcProfOptions
-    cppOptions = fromMaybeList commonOptionsCppOptions
-    includeDirs = fromMaybeList commonOptionsIncludeDirs
-    installIncludes = fromMaybeList commonOptionsInstallIncludes
-    ldOptions = fromMaybeList commonOptionsLdOptions
-    buildable = commonOptionsBuildable
-    dependencies = fromMaybeList commonOptionsDependencies
     (unknownFields, conditionals) = unzip (map toConditional $ fromMaybeList commonOptionsWhen)
 
 toConditional :: ConditionalSection -> ([FieldName], Conditional)
diff --git a/src/Hpack/Run.hs b/src/Hpack/Run.hs
--- a/src/Hpack/Run.hs
+++ b/src/Hpack/Run.hs
@@ -211,6 +211,9 @@
   , renderCppOptions sectionCppOptions
   , Field "include-dirs" (LineSeparatedList sectionIncludeDirs)
   , Field "install-includes" (LineSeparatedList sectionInstallIncludes)
+  , Field "c-sources" (LineSeparatedList sectionCSources)
+  , Field "extra-lib-dirs" (LineSeparatedList sectionExtraLibDirs)
+  , Field "extra-libraries" (LineSeparatedList sectionExtraLibraries)
   , renderLdOptions sectionLdOptions
   , renderDependencies sectionDependencies
   ]
diff --git a/test/Hpack/ConfigSpec.hs b/test/Hpack/ConfigSpec.hs
--- a/test/Hpack/ConfigSpec.hs
+++ b/test/Hpack/ConfigSpec.hs
@@ -108,6 +108,33 @@
         captureUnknownFieldsValue <$> decodeEither input
           `shouldBe` Right (section Empty){sectionInstallIncludes = ["foo.h", "bar.h"]}
 
+      it "accepts c-sources" $ do
+        let input = [i|
+              c-sources:
+                - foo.c
+                - bar.c
+              |]
+        captureUnknownFieldsValue <$> decodeEither input
+          `shouldBe` Right (section Empty){sectionCSources = ["foo.c", "bar.c"]}
+
+      it "accepts extra-lib-dirs" $ do
+        let input = [i|
+              extra-lib-dirs:
+                - foo
+                - bar
+              |]
+        captureUnknownFieldsValue <$> decodeEither input
+          `shouldBe` Right (section Empty){sectionExtraLibDirs = ["foo", "bar"]}
+
+      it "accepts extra-libraries" $ do
+        let input = [i|
+              extra-libraries:
+                - foo
+                - bar
+              |]
+        captureUnknownFieldsValue <$> decodeEither input
+          `shouldBe` Right (section Empty){sectionExtraLibraries = ["foo", "bar"]}
+
       context "when parsing conditionals" $ do
         it "accepts conditionals" $ do
           let input = [i|
