diff --git a/CabalHelper/Main.hs b/CabalHelper/Main.hs
--- a/CabalHelper/Main.hs
+++ b/CabalHelper/Main.hs
@@ -168,15 +168,7 @@
       return $ Just $ ChResponseVersion (show comp) ver
 
     "ghc-options":flags -> do
-      res <- componentsMap lbi v distdir $ \c clbi bi -> let
-           outdir = componentOutDir lbi c
-           (clbi', adopts) = case flags of
-                               ["--with-inplace"] -> (clbi, mempty)
-                               [] -> removeInplaceDeps v lbi pd clbi
-
-
-           opts = componentGhcOptions normal lbi bi clbi' outdir
-         in renderGhcOptions' lbi v (opts `mappend` adopts)
+      res <- componentOptions lvd True flags id
       return $ Just $ ChResponseCompList (res ++ [(ChSetupHsName, [])])
 
     "ghc-src-options":flags -> do
@@ -204,12 +196,15 @@
     "ghc-merged-pkg-options":flags -> do
       let pd = localPkgDescr lbi
       res <- mconcat . map snd <$> (componentOptions' lvd True flags (\_ _ o -> return o) $ \opts -> mempty {
-                       ghcOptPackageDBs = ghcOptPackageDBs opts,
-                       ghcOptPackages   = ghcOptPackages opts,
-                       ghcOptHideAllPackages = ghcOptHideAllPackages opts
+                       ghcOptPackageDBs = [],
+                       ghcOptHideAllPackages = NoFlag,
+                       ghcOptPackages   = ghcOptPackages opts
                    })
 
-      let res' = res { ghcOptPackageDBs = nub $ ghcOptPackageDBs res }
+      let res' = res { ghcOptPackageDBs = withPackageDB lbi
+                     , ghcOptHideAllPackages = Flag True
+                     , ghcOptPackages   = nub $ ghcOptPackages res
+                     }
 
       Just . ChResponseList <$> renderGhcOptions' lbi v res'
 
@@ -304,7 +299,7 @@
            opts = componentGhcOptions normal lbi bi clbi' outdir
            opts' = f opts
 
-         in rf lbi v $ opts' `mappend` adopts
+         in rf lbi v $ nubPackageFlags $ opts' `mappend` adopts
 
 componentOptions (lbi, v, distdir) inplaceFlag flags f =
     componentOptions' (lbi, v, distdir) inplaceFlag flags renderGhcOptions' f
@@ -379,6 +374,8 @@
  where
    isInplaceDep :: (InstalledPackageId, PackageId) -> Bool
    isInplaceDep (ipid, pid) = inplacePackageId pid == ipid
+
+nubPackageFlags opts = opts { ghcOptPackages = nub $ ghcOptPackages opts }
 
 renderGhcOptions' lbi v opts = do
 #if CABAL_MAJOR == 1 && CABAL_MINOR < 20
diff --git a/cabal-helper.cabal b/cabal-helper.cabal
--- a/cabal-helper.cabal
+++ b/cabal-helper.cabal
@@ -1,5 +1,5 @@
 name:                cabal-helper
-version:             0.5.1.0
+version:             0.5.2.0
 synopsis:            Simple interface to some of Cabal's configuration state used by ghc-mod
 description:
     @cabal-helper@ provides a library which wraps the internal use of
