@@ -99,10 +99,14 @@ fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDep
99 resolveInHackage i | (i^.ident) `elem` [ n | (Dependency (PackageName n) _) <- missingDeps ] = bindNull i
99 resolveInHackage i | (i^.ident) `elem` [ n | (Dependency (PackageName n) _) <- missingDeps ] = bindNull i
100 | otherwise = create binding (i, create path ["self",i]) -- TODO: "self" shouldn't be hardcoded.
100 | otherwise = create binding (i, create path ["self",i]) -- TODO: "self" shouldn't be hardcoded.
102+ goodScopes :: Set [Identifier]
103+ goodScopes = Set.fromList (map ("pkgs":) [[], ["xlibs"], ["gnome"], ["gnome3"], ["kde4"]])
102 resolveInNixpkgs :: Identifier -> Binding
105 resolveInNixpkgs :: Identifier -> Binding
103 resolveInNixpkgs i
106 resolveInNixpkgs i
104 | i `elem` ["clang","lldb","llvm"] = create binding (i,create path ["self","llvmPackages",i]) -- TODO: evil!
107 | i `elem` ["clang","lldb","llvm"] = create binding (i,create path ["self","llvmPackages",i]) -- TODO: evil!
108+ | Just p <- nixpkgsResolver i, init (view (reference . path) p) `Set.member` goodScopes = p
105− | otherwise = fromMaybe (bindNull i) (nixpkgsResolver i)
109+ | otherwise = bindNull i
107 resolveInHackageThenNixpkgs :: Identifier -> Binding
111 resolveInHackageThenNixpkgs :: Identifier -> Binding
108 resolveInHackageThenNixpkgs i | haskellResolver (Dependency (PackageName (i^.ident)) anyVersion) = resolveInHackage i
112 resolveInHackageThenNixpkgs i | haskellResolver (Dependency (PackageName (i^.ident)) anyVersion) = resolveInHackage i