@@ -22,8 +22,10 @@ import qualified Distribution.Nixpkgs.Meta as Nix
2222import Distribution.Package
2323import Distribution.PackageDescription
2424import qualified Distribution.PackageDescription as Cabal
25+import Distribution.Types.ExeDependency as Cabal
2526import Distribution.Types.LegacyExeDependency as Cabal
2627import Distribution.Types.PkgconfigDependency as Cabal
28+import Distribution.Types.UnqualComponentName as Cabal
2729import Distribution.PackageDescription.Configuration as Cabal
2830import Distribution.Types.ComponentRequestedSpec as Cabal
2931import Distribution.System
@@ -64,14 +66,14 @@ finalizeGenericPackageDescription haskellResolver arch compiler flags constraint
6466 Right (d,_) -> (d,[])
6567
6668fromPackageDescription :: HaskellResolver -> NixpkgsResolver -> [Dependency] -> FlagAssignment -> PackageDescription -> Derivation
67−fromPackageDescription haskellResolver nixpkgsResolver missingDeps flags (PackageDescription {..}) = normalize $ postProcess $ nullDerivation
69+fromPackageDescription haskellResolver nixpkgsResolver missingDeps flags PackageDescription {..} = normalize $ postProcess $ nullDerivation
6870 & isLibrary .~ isJust library
6971 & pkgid .~ package
7072 & revision .~ xrev
7173 & isLibrary .~ isJust library
7274 & isExecutable .~ not (null executables)
7375 & extraFunctionArgs .~ mempty
74− & libraryDepends .~ maybe mempty (convertBuildInfo . libBuildInfo) library
76+ & libraryDepends .~ foldMap (convertBuildInfo . libBuildInfo) (maybeToList library ++ subLibraries)
7577 & executableDepends .~ mconcat (map (convertBuildInfo . buildInfo) executables)
7678 & testDepends .~ mconcat (map (convertBuildInfo . testBuildInfo) testSuites)
7779 & benchmarkDepends .~ mconcat (map (convertBuildInfo . benchmarkBuildInfo) benchmarks)
@@ -124,12 +126,16 @@ fromPackageDescription haskellResolver nixpkgsResolver missingDeps flags (Packag
124126 resolveInHackageThenNixpkgs i | haskellResolver (Dependency (mkPackageName (i^.ident)) anyVersion) = resolveInHackage i
125127 | otherwise = resolveInNixpkgs i
126128
129+ internalLibNames :: [PackageName]
130+ internalLibNames = fmap unqualComponentNameToPackageName . catMaybes $ libName <$> subLibraries
131+
127132 convertBuildInfo :: Cabal.BuildInfo -> Nix.BuildInfo
128133 convertBuildInfo Cabal.BuildInfo {..} = mempty
129− & haskell .~ Set.fromList [ resolveInHackage (toNixName x) | (Dependency x _) <- targetBuildDepends ]
134+ & haskell .~ Set.fromList [ resolveInHackage (toNixName x) | (Dependency x _) <- targetBuildDepends, x `notElem` internalLibNames ]
130135 & system .~ Set.fromList [ resolveInNixpkgs y | x <- extraLibs, y <- libNixName x ]
131136 & pkgconfig .~ Set.fromList [ resolveInNixpkgs y | PkgconfigDependency x _ <- pkgconfigDepends, y <- libNixName (unPkgconfigName x) ]
132− & tool .~ Set.fromList [ resolveInHackageThenNixpkgs y | LegacyExeDependency x _ <- buildTools, y <- buildToolNixName x ]
137+ & tool .~ Set.fromList (map resolveInHackageThenNixpkgs . concatMap buildToolNixName
138+ $ [ unPackageName x | ExeDependency x _ _ <- buildToolDepends ] ++ [ x | LegacyExeDependency x _ <- buildTools ])
133139
134140 convertSetupBuildInfo :: Cabal.SetupBuildInfo -> Nix.BuildInfo
135141 convertSetupBuildInfo bi = mempty