diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## Changes in 0.21.2
+  - Fix a bug in module inference for conditionals (see #236)
+  - Add support for `extra-doc-files`.
+  - Add support for `pkg-config-dependencies`
+
 ## Changes in 0.21.1
   - Allow dependency constraints to be numbers (see #234)
 
diff --git a/hpack.cabal b/hpack.cabal
--- a/hpack.cabal
+++ b/hpack.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: e632b2c7492b7b1a42a6c95bdf1b94a5a800b10cc81d785ee085456a5ef719c1
+-- hash: 717efcb68d31a77fdd5eec9b427eaba95d5ca99c5d2aedf570e483461daa01ca
 
 name:           hpack
-version:        0.21.1
+version:        0.21.2
 synopsis:       An alternative format for Haskell packages
 description:    See README at <https://github.com/sol/hpack#readme>
 category:       Development
diff --git a/src/Hpack/Config.hs b/src/Hpack/Config.hs
--- a/src/Hpack/Config.hs
+++ b/src/Hpack/Config.hs
@@ -39,6 +39,7 @@
 , renameDependencies
 , Empty(..)
 , getModules
+, pathsModuleFromPackageName
 , determineModules
 , BuildType(..)
 
@@ -96,6 +97,7 @@
   , packageTestedWith = Nothing
   , packageFlags = []
   , packageExtraSourceFiles = []
+  , packageExtraDocFiles = []
   , packageDataFiles = []
   , packageSourceRepository = Nothing
   , packageCustomSetup = Nothing
@@ -134,7 +136,7 @@
     deps xs = [(name, version) | (name, version) <- (Map.toList . unDependencies . sectionDependencies) xs]
 
 section :: a -> Section a
-section a = Section a [] mempty [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Nothing [] mempty
+section a = Section a [] mempty [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Nothing [] mempty
 
 packageConfig :: FilePath
 packageConfig = "package.yaml"
@@ -189,6 +191,7 @@
 data CommonOptions a capture cSources jsSources = CommonOptions {
   commonOptionsSourceDirs :: Maybe (List FilePath)
 , commonOptionsDependencies :: Maybe Dependencies
+, commonOptionsPkgConfigDependencies :: Maybe (List String)
 , commonOptionsDefaultExtensions :: Maybe (List String)
 , commonOptionsOtherExtensions :: Maybe (List String)
 , commonOptionsGhcOptions :: Maybe (List GhcOption)
@@ -366,6 +369,7 @@
 , packageConfigTestedWith :: Maybe String
 , packageConfigFlags :: Maybe (Map String (capture FlagSection))
 , packageConfigExtraSourceFiles :: Maybe (List FilePath)
+, packageConfigExtraDocFiles :: Maybe (List FilePath)
 , packageConfigDataFiles :: Maybe (List FilePath)
 , packageConfigGithub :: Maybe Text
 , packageConfigGit :: Maybe String
@@ -456,6 +460,7 @@
 , packageTestedWith :: Maybe String
 , packageFlags :: [Flag]
 , packageExtraSourceFiles :: [FilePath]
+, packageExtraDocFiles :: [FilePath]
 , packageDataFiles :: [FilePath]
 , packageSourceRepository :: Maybe SourceRepository
 , packageCustomSetup :: Maybe CustomSetup
@@ -486,6 +491,7 @@
   sectionData :: a
 , sectionSourceDirs :: [FilePath]
 , sectionDependencies :: Dependencies
+, sectionPkgConfigDependencies :: [String]
 , sectionDefaultExtensions :: [String]
 , sectionOtherExtensions :: [String]
 , sectionGhcOptions :: [GhcOption]
@@ -590,6 +596,9 @@
   (extraSourceFilesWarnings, extraSourceFiles) <-
     expandGlobs "extra-source-files" dir (fromMaybeList packageConfigExtraSourceFiles)
 
+  (extraDocFilesWarnings, extraDocFiles) <-
+    expandGlobs "extra-doc-files" dir (fromMaybeList packageConfigExtraDocFiles)
+
   (dataFilesWarnings, dataFiles) <-
     expandGlobs "data-files" dir (fromMaybeList packageConfigDataFiles)
 
@@ -619,6 +628,7 @@
       , packageTestedWith = packageConfigTestedWith
       , packageFlags = flags
       , packageExtraSourceFiles = extraSourceFiles
+      , packageExtraDocFiles = extraDocFiles
       , packageDataFiles = dataFiles
       , packageSourceRepository = sourceRepository
       , packageCustomSetup = mCustomSetup
@@ -635,6 +645,7 @@
         ++ formatMissingSourceDirs missingSourceDirs
         ++ executableWarning
         ++ extraSourceFilesWarnings
+        ++ extraDocFilesWarnings
         ++ dataFilesWarnings
 
   return (warnings, pkg)
@@ -765,40 +776,72 @@
 toCustomSetup CustomSetupSection{..} = CustomSetup
   { customSetupDependencies = fromMaybe mempty customSetupSectionDependencies }
 
-traverseSectionAndConditionals :: Applicative m => (Section a -> m b) -> (Section a -> m b) -> Section a -> m (Section b)
-traverseSectionAndConditionals fData fConditionals sect@Section{..} =
-  update <$> fData sect <*> traverseConditionals sectionConditionals
+traverseSectionAndConditionals :: Monad m
+  => (acc -> Section a -> m (acc, b))
+  -> (acc -> Section a -> m (acc, b))
+  -> acc
+  -> Section a
+  -> m (Section b)
+traverseSectionAndConditionals fData fConditionals acc0 sect@Section{..} = do
+  (acc1, x) <- fData acc0 sect
+  xs <- traverseConditionals acc1 sectionConditionals
+  return sect{sectionData = x, sectionConditionals = xs}
   where
-    update x xs = sect{sectionData = x, sectionConditionals = xs}
-    traverseConditionals = traverse $ traverse $ traverseSectionAndConditionals fConditionals fConditionals
+    traverseConditionals = traverse . traverse . traverseSectionAndConditionals fConditionals fConditionals
 
-getMentionedLibraryModules :: Section LibrarySection -> [String]
-getMentionedLibraryModules = concatMap $ \ LibrarySection{..} ->
+getMentionedLibraryModules :: LibrarySection -> [String]
+getMentionedLibraryModules LibrarySection{..} =
   fromMaybeList librarySectionExposedModules ++ fromMaybeList librarySectionOtherModules
 
+listModules :: FilePath -> Section a -> IO [String]
+listModules dir Section{..} = concat <$> mapM (getModules dir) sectionSourceDirs
+
+inferModules ::
+     FilePath
+  -> String
+  -> (a -> [String])
+  -> (b -> [String])
+  -> ([String] -> [String] -> a -> b)
+  -> ([String] -> a -> b)
+  -> Section a
+  -> IO (Section b)
+inferModules dir packageName_ getMentionedModules getInferredModules fromData fromConditionals = traverseSectionAndConditionals
+  (fromConfigSection fromData [pathsModuleFromPackageName packageName_])
+  (fromConfigSection (\ [] -> fromConditionals) [])
+  []
+  where
+    fromConfigSection fromConfig pathsModule_ outerModules sect@Section{sectionData = conf} = do
+      modules <- listModules dir sect
+      let
+        mentionedModules = concatMap getMentionedModules sect
+        inferableModules = (modules \\ outerModules) \\ mentionedModules
+        pathsModule = (pathsModule_ \\ outerModules) \\ mentionedModules
+        r = fromConfig pathsModule inferableModules conf
+      return (outerModules ++ getInferredModules r, r)
+
 toLibrary :: FilePath -> String -> Section global -> Section LibrarySection -> IO (Section Library)
 toLibrary dir name globalOptions =
-    traverseSectionAndConditionals (fromLibrarySection True) (fromLibrarySection False)
+    inferModules dir name getMentionedLibraryModules getLibraryModules fromLibrarySectionTopLevel fromLibrarySectionInConditional
   . mergeSections emptyLibrarySection globalOptions
   where
-    fromLibrarySection topLevel sect@Section{..} = do
-      modules <- concat <$> mapM (getModules dir) sectionSourceDirs
-      let
-        mentionedModules = getMentionedLibraryModules sect
-        inferableModules = modules \\ mentionedModules
-      return $ action inferableModules sectionData
-      where
-        action
-          | topLevel = fromLibrarySectionTopLevel
-          | otherwise = fromLibrarySectionInConditional
+    getLibraryModules :: Library -> [String]
+    getLibraryModules Library{..} = libraryExposedModules ++ libraryOtherModules
 
-    fromLibrarySectionTopLevel inferableModules LibrarySection{..} =
+    fromLibrarySectionTopLevel pathsModule inferableModules LibrarySection{..} =
       Library librarySectionExposed exposedModules otherModules reexportedModules
       where
         (exposedModules, otherModules) =
-          determineModules name inferableModules librarySectionExposedModules librarySectionOtherModules
+          determineModules pathsModule inferableModules librarySectionExposedModules librarySectionOtherModules
         reexportedModules = fromMaybeList librarySectionReexportedModules
 
+determineModules :: [String] -> [String] -> Maybe (List String) -> Maybe (List String) -> ([String], [String])
+determineModules pathsModule inferableModules mExposedModules mOtherModules = case (mExposedModules, mOtherModules) of
+  (Nothing, Nothing) -> (inferableModules, pathsModule)
+  _ -> (exposedModules, otherModules)
+    where
+      exposedModules = maybe (inferableModules \\ otherModules) fromList mExposedModules
+      otherModules   = maybe ((inferableModules ++ pathsModule) \\ exposedModules) fromList mOtherModules
+
 fromLibrarySectionInConditional :: [String] -> LibrarySection -> Library
 fromLibrarySectionInConditional inferableModules lib@(LibrarySection _ exposedModules otherModules _) = do
   case (exposedModules, otherModules) of
@@ -819,31 +862,21 @@
 toExecutables :: FilePath -> String -> Section global -> Map String (Section ExecutableSection) -> IO (Map String (Section Executable))
 toExecutables dir packageName_ globalOptions = traverse (toExecutable dir packageName_ globalOptions)
 
-getMentionedExecutableModules :: Section ExecutableSection -> [String]
-getMentionedExecutableModules = concatMap $ \ ExecutableSection{..} ->
+getMentionedExecutableModules :: ExecutableSection -> [String]
+getMentionedExecutableModules ExecutableSection{..} =
   fromMaybeList executableSectionOtherModules ++ maybe [] return (executableSectionMain >>= toModule . splitDirectories)
 
 toExecutable :: FilePath -> String -> Section global -> Section ExecutableSection -> IO (Section Executable)
 toExecutable dir packageName_ globalOptions =
-    traverseSectionAndConditionals (fromExecutableSection True) (fromExecutableSection False)
+    inferModules dir packageName_ getMentionedExecutableModules executableOtherModules fromExecutableSection (fromExecutableSection [])
   . expandMain
   . mergeSections emptyExecutableSection globalOptions
   where
-    fromExecutableSection :: Bool -> Section ExecutableSection -> IO Executable
-    fromExecutableSection inferPathsModule sect@Section{sectionData = ExecutableSection main_ otherModules, ..} = do
-      modules <- maybe inferModules (return . fromList) otherModules
-      return (Executable main_ modules)
+    fromExecutableSection :: [String] -> [String] -> ExecutableSection -> Executable
+    fromExecutableSection pathsModule inferableModules ExecutableSection{..} =
+      (Executable executableSectionMain otherModules)
       where
-        mentionedModules = getMentionedExecutableModules sect
-
-        inferModules :: IO [String]
-        inferModules
-          | null sectionSourceDirs = return []
-          | otherwise = (\\ mentionedModules) . (++ pathsModule) . concat <$> mapM (getModules dir) sectionSourceDirs
-
-        pathsModule = case inferPathsModule of
-          True -> [pathsModuleFromPackageName packageName_]
-          False -> []
+        otherModules = maybe (inferableModules ++ pathsModule) fromList executableSectionOtherModules
 
 expandMain :: Section ExecutableSection -> Section ExecutableSection
 expandMain = flatten . expand
@@ -887,6 +920,7 @@
   , sectionLdOptions = sectionLdOptions globalOptions ++ sectionLdOptions options
   , sectionBuildable = sectionBuildable options <|> sectionBuildable globalOptions
   , sectionDependencies = sectionDependencies options <> sectionDependencies globalOptions
+  , sectionPkgConfigDependencies = sectionPkgConfigDependencies globalOptions ++ sectionPkgConfigDependencies options
   , sectionConditionals = map (fmap (a <$)) (sectionConditionals globalOptions) ++ sectionConditionals options
   , sectionBuildTools = sectionBuildTools options <> sectionBuildTools globalOptions
   }
@@ -916,6 +950,7 @@
       , sectionLdOptions = fromMaybeList commonOptionsLdOptions
       , sectionBuildable = commonOptionsBuildable
       , sectionDependencies = fromMaybe mempty commonOptionsDependencies
+      , sectionPkgConfigDependencies = fromMaybeList commonOptionsPkgConfigDependencies
       , sectionConditionals = conditionals
       , sectionBuildTools = fromMaybe mempty commonOptionsBuildTools
       }
@@ -932,15 +967,6 @@
   where
     f '-' = '_'
     f x = x
-
-determineModules :: String -> [String] -> Maybe (List String) -> Maybe (List String) -> ([String], [String])
-determineModules name modules mExposedModules mOtherModules = case (mExposedModules, mOtherModules) of
-  (Nothing, Nothing) -> (modules, [pathsModuleFromPackageName name])
-  _ -> (exposedModules, otherModules)
-    where
-      otherModules   = maybe ((modules \\ exposedModules) ++ pathsModule) fromList mOtherModules
-      exposedModules = maybe (modules \\ otherModules)   fromList mExposedModules
-      pathsModule = [pathsModuleFromPackageName name] \\ exposedModules
 
 getModules :: FilePath -> FilePath -> IO [String]
 getModules dir src_ = sort <$> do
diff --git a/src/Hpack/Run.hs b/src/Hpack/Run.hs
--- a/src/Hpack/Run.hs
+++ b/src/Hpack/Run.hs
@@ -67,6 +67,9 @@
     extraSourceFiles :: Element
     extraSourceFiles = Field "extra-source-files" (LineSeparatedList packageExtraSourceFiles)
 
+    extraDocFiles :: Element
+    extraDocFiles = Field "extra-doc-files" (LineSeparatedList packageExtraDocFiles)
+
     dataFiles :: Element
     dataFiles = Field "data-files" (LineSeparatedList packageDataFiles)
 
@@ -82,6 +85,7 @@
     stanzas :: [Element]
     stanzas =
       extraSourceFiles
+      : extraDocFiles
       : dataFiles
       : sourceRepository
       ++ concat [
@@ -261,6 +265,7 @@
   , Field "frameworks" (LineSeparatedList sectionFrameworks)
   , renderLdOptions sectionLdOptions
   , renderDependencies "build-depends" sectionDependencies
+  , Field "pkgconfig-depends" (CommaSeparatedList sectionPkgConfigDependencies)
   , renderDependencies "build-tools" sectionBuildTools
   ]
   ++ maybe [] (return . renderBuildable) sectionBuildable
diff --git a/test/EndToEndSpec.hs b/test/EndToEndSpec.hs
--- a/test/EndToEndSpec.hs
+++ b/test/EndToEndSpec.hs
@@ -20,12 +20,45 @@
 spec :: Spec
 spec = around_ (inTempDirectoryNamed "foo") $ do
   describe "hpack" $ do
+    describe "extra-doc-files" $ do
+      it "accepts a list of files" $ do
+        touch "CHANGES.markdown"
+        touch "README.markdown"
+        [i|
+        extra-doc-files:
+          - CHANGES.markdown
+          - README.markdown
+        |] `shouldRenderTo` package [i|
+        extra-doc-files:
+            CHANGES.markdown
+            README.markdown
+        |]
+
+      it "accepts glob patterns" $ do
+        touch "CHANGES.markdown"
+        touch "README.markdown"
+        [i|
+        extra-doc-files:
+          - "*.markdown"
+        |] `shouldRenderTo` package [i|
+        extra-doc-files:
+            CHANGES.markdown
+            README.markdown
+        |]
+
+      it "warns if a glob pattern does not match anything" $ do
+        [i|
+        name: foo
+        extra-doc-files:
+          - "*.markdown"
+        |] `shouldWarn` ["Specified pattern \"*.markdown\" for extra-doc-files does not match any files"]
+
     describe "dependencies" $ do
       it "accepts single dependency" $ do
         [i|
         executable:
           dependencies: base
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         build-depends:
             base
         |]
@@ -36,7 +69,7 @@
           dependencies:
             - base
             - transformers
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         build-depends:
             base
           , transformers
@@ -49,7 +82,7 @@
             - base
           executable:
             dependencies: hspec
-          |] `shouldRenderTo` executable "foo" [i|
+          |] `shouldRenderTo` executable_ "foo" [i|
           build-depends:
               base
             , hspec
@@ -61,11 +94,24 @@
             - base
           executable:
             dependencies: base >= 2
-          |] `shouldRenderTo` executable "foo" [i|
+          |] `shouldRenderTo` executable_ "foo" [i|
           build-depends:
               base >=2
           |]
 
+    describe "pkg-config-dependencies" $ do
+      it "accepts pkg-config-dependencies" $ do
+        [i|
+        pkg-config-dependencies:
+          - QtWebKit
+          - weston
+        executable: {}
+        |] `shouldRenderTo` executable_ "foo" [i|
+        pkgconfig-depends:
+            QtWebKit
+          , weston
+        |]
+
     describe "include-dirs" $ do
       it "accepts include-dirs" $ do
         [i|
@@ -73,7 +119,7 @@
           - foo
           - bar
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         include-dirs:
             foo
             bar
@@ -86,7 +132,7 @@
           - foo.h
           - bar.h
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         install-includes:
             foo.h
             bar.h
@@ -99,7 +145,7 @@
           js-sources:
             - foo.js
             - jsbits/*.js
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         js-sources:
             foo.js
             jsbits/bar.js
@@ -111,7 +157,7 @@
           - foo.js
           - jsbits/*.js
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         js-sources:
             foo.js
             jsbits/bar.js
@@ -123,7 +169,7 @@
           - foo
           - bar
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         extra-lib-dirs:
             foo
             bar
@@ -136,7 +182,7 @@
           - foo
           - bar
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         extra-libraries:
             foo
             bar
@@ -149,7 +195,7 @@
           - foo
           - bar
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         extra-frameworks-dirs:
             foo
             bar
@@ -162,7 +208,7 @@
           - foo
           - bar
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         frameworks:
             foo
             bar
@@ -224,7 +270,7 @@
           c-sources: cbits/*.c
           executables:
             foo: {}
-          |] `shouldRenderTo` executable "foo" [i|
+          |] `shouldRenderTo` executable_ "foo" [i|
           c-sources:
               cbits/bar.c
               cbits/foo.c
@@ -235,7 +281,7 @@
           executables:
             foo:
               c-sources: cbits/*.c
-          |] `shouldRenderTo` executable "foo" [i|
+          |] `shouldRenderTo` executable_ "foo" [i|
           c-sources:
               cbits/bar.c
               cbits/foo.c
@@ -366,17 +412,18 @@
               source-dirs: src
               when:
                 condition: os(windows)
-                exposed-modules: Foo
+                exposed-modules:
+                  - Foo
+                  - Paths_foo
             |] `shouldRenderTo` library [i|
             hs-source-dirs:
                 src
             if os(windows)
               exposed-modules:
                   Foo
+                  Paths_foo
             exposed-modules:
                 Bar
-            other-modules:
-                Paths_foo
             |]
 
           context "with a source-dir inside the conditional" $ do
@@ -397,6 +444,32 @@
                     windows
               |]
 
+            it "does not infer outer modules" $ do
+              touch "windows/Foo.hs"
+              touch "unix/Foo.hs"
+              [i|
+              library:
+                exposed-modules: Foo
+                when:
+                  condition: os(windows)
+                  then:
+                    source-dirs: windows/
+                  else:
+                    source-dirs: unix/
+
+              |] `shouldRenderTo` library [i|
+              exposed-modules:
+                  Foo
+              other-modules:
+                  Paths_foo
+              if os(windows)
+                hs-source-dirs:
+                    windows/
+              else
+                hs-source-dirs:
+                    unix/
+              |]
+
     context "with internal-libraries" $ do
       it "accepts internal-libraries" $ do
         touch "src/Foo.hs"
@@ -537,7 +610,7 @@
               when:
                 condition: os(windows)
                 main: Foo.hs
-          |] `shouldRenderTo` executable "foo" [i|
+          |] `shouldRenderTo` executable_ "foo" [i|
           ghc-options: -Wall
           if os(windows)
             main-is: Foo.hs
@@ -550,7 +623,7 @@
               when:
                 condition: os(windows)
                 main: Foo
-          |] `shouldRenderTo` executable "foo" [i|
+          |] `shouldRenderTo` executable_ "foo" [i|
           if os(windows)
             main-is: Foo.hs
             ghc-options: -main-is Foo
@@ -563,7 +636,7 @@
           condition: os(windows)
           dependencies: Win32
         executable: {}
-        |] `shouldRenderTo` executable "foo" [i|
+        |] `shouldRenderTo` executable_ "foo" [i|
         if os(windows)
           build-depends:
               Win32
@@ -597,7 +670,7 @@
             else:
               dependencies: unix
           executable: {}
-          |] `shouldRenderTo` executable "foo" [i|
+          |] `shouldRenderTo` executable_ "foo" [i|
           if os(windows)
             build-depends:
                 Win32
@@ -700,6 +773,17 @@
   where
     content = [i|
 library #{name}
+#{indentBy 2 $ unindent e}
+  default-language: Haskell2010
+|]
+
+executable_ :: String -> String -> Package
+executable_ name e = package content
+  where
+    content = [i|
+executable #{name}
+  other-modules:
+      Paths_#{name}
 #{indentBy 2 $ unindent e}
   default-language: Haskell2010
 |]
diff --git a/test/Hpack/ConfigSpec.hs b/test/Hpack/ConfigSpec.hs
--- a/test/Hpack/ConfigSpec.hs
+++ b/test/Hpack/ConfigSpec.hs
@@ -38,7 +38,7 @@
 package = Config.package "foo" "0.0.0"
 
 executable :: String -> Executable
-executable main_ = Executable (Just main_) []
+executable main_ = Executable (Just main_) ["Paths_foo"]
 
 library :: Library
 library = Library Nothing [] ["Paths_foo"] []
@@ -66,6 +66,21 @@
 
 spec :: Spec
 spec = do
+  describe "pathsModuleFromPackageName" $ do
+    it "replaces dashes with underscores in package name" $ do
+      pathsModuleFromPackageName "foo-bar" `shouldBe` "Paths_foo_bar"
+
+  describe "determineModules" $ do
+    it "adds the Paths_* module to the other-modules" $ do
+      determineModules ["Paths_foo"] [] ["Foo"] Nothing `shouldBe` (["Foo"], ["Paths_foo"])
+
+    it "adds the Paths_* module to the other-modules when no modules are specified" $ do
+      determineModules ["Paths_foo"] [] Nothing Nothing `shouldBe` ([], ["Paths_foo"])
+
+    context "when the Paths_* module is part of the exposed-modules" $ do
+      it "does not add the Paths_* module to the other-modules" $ do
+        determineModules ["Paths_foo"] [] ["Foo", "Paths_foo"] Nothing `shouldBe` (["Foo", "Paths_foo"], [])
+
   describe "fromLibrarySectionInConditional" $ do
     let
       sect = LibrarySection {
@@ -139,20 +154,6 @@
         touch (dir </> "Foo.hs")
         touch (dir </> "Setup.hs")
         getModules dir  "./." `shouldReturn` ["Foo"]
-
-  describe "determineModules" $ do
-    it "adds the Paths_* module to the other-modules" $ do
-      determineModules "foo" [] ["Foo"] Nothing `shouldBe` (["Foo"], ["Paths_foo"])
-
-    it "adds the Paths_* module to the other-modules when no modules are specified" $ do
-      determineModules "foo" [] Nothing Nothing `shouldBe` ([], ["Paths_foo"])
-
-    it "replaces dashes with underscores in Paths_*" $ do
-      determineModules "foo-bar" [] ["Foo"] Nothing `shouldBe` (["Foo"], ["Paths_foo_bar"])
-
-    context "when the Paths_* module is part of the exposed-modules" $ do
-      it "does not add the Paths_* module to the other-modules" $ do
-        determineModules "foo" [] ["Foo", "Paths_foo"] Nothing `shouldBe` (["Foo", "Paths_foo"], [])
 
   describe "readPackageConfig" $ do
     it "warns on unknown fields" $ do
