diff --git a/hix.cabal b/hix.cabal
--- a/hix.cabal
+++ b/hix.cabal
@@ -1,11 +1,11 @@
 cabal-version: 2.2
 
--- This file has been generated from package.yaml by hpack version 0.35.0.
+-- This file has been generated from package.yaml by hpack version 0.35.2.
 --
 -- see: https://github.com/sol/hpack
 
 name:           hix
-version:        0.5.3
+version:        0.5.6
 synopsis:       Haskell/Nix development build tools
 description:    See https://hackage.haskell.org/package/hix/docs/Hix.html
 category:       Build
diff --git a/lib/Hix/Prelude.hs b/lib/Hix/Prelude.hs
--- a/lib/Hix/Prelude.hs
+++ b/lib/Hix/Prelude.hs
@@ -12,7 +12,8 @@
 data Prelude =
   Prelude {
     preludePackage :: String,
-    preludeModule :: String
+    preludeModule :: String,
+    local :: Bool
   }
   deriving stock (Eq, Show)
 
@@ -35,5 +36,5 @@
       let
         preludePackage = unPackageName mixinPackageName
         preludeModule = Exon.intercalate "." (ModuleName.components real)
-      in Just Prelude {..}
+      in Just Prelude {local = False, ..}
     _ -> Nothing
diff --git a/lib/Hix/Preproc.hs b/lib/Hix/Preproc.hs
--- a/lib/Hix/Preproc.hs
+++ b/lib/Hix/Preproc.hs
@@ -34,14 +34,17 @@
 import Hix.Optparse (JsonConfig)
 import qualified Hix.Prelude as Prelude
 import Hix.Prelude (Prelude (Prelude), findPrelude)
+import qualified Data.Map.Strict as Map
 
 type Regex = IndexedTraversal' Int ByteString Match
 
-fromPreludeConfig :: PreludeConfig -> Prelude
-fromPreludeConfig conf =
-  Prelude (toString (name conf.package)) (toString conf.module_.unModuleName)
+-- TODO do we need to parse the spec here?
+fromPreludeConfig :: PreprocConfig -> PreludeConfig -> Prelude
+fromPreludeConfig ppconf conf =
+  Prelude (toString name) (toString conf.module_.unModuleName) local
   where
-    name = \case
+    local = Map.member (coerce name) ppconf.packages
+    name = case conf.package of
       PreludePackageName n -> n
       PreludePackageSpec n -> n
 
@@ -211,9 +214,11 @@
     Nothing
   where
     insertPrelude =
-      (ix 0 .~ [exon|"#{encodeUtf8 preludePackage}" |])
+      addPackage
       .
       (ix 1 .~ encodeUtf8 preludeModule)
+    addPackage | local = id
+               | otherwise = ix 0 .~ [exon|"#{encodeUtf8 preludePackage}" |]
 
 parenRegex :: Regex
 parenRegex =
@@ -348,7 +353,10 @@
 
 customPreludeImport :: Prelude -> Builder
 customPreludeImport Prelude {..} =
-  lineB [exon|import "#{stringUtf8 preludePackage}" #{stringUtf8 preludeModule} as Prelude|]
+  lineB [exon|import#{package} #{stringUtf8 preludeModule} as Prelude|]
+  where
+    package | local = ""
+            | otherwise = [exon| "#{stringUtf8 preludePackage}"|]
 
 needPreludeExtensions :: PreludeAction -> Bool
 needPreludeExtensions = \case
@@ -457,7 +465,7 @@
   pure CabalConfig {
     extensions = stringUtf8 <$> target.component.language : target.component.extensions,
     ghcOptions = stringUtf8 <$> target.component.ghcOptions,
-    prelude = fromPreludeConfig <$> target.component.prelude
+    prelude = fromPreludeConfig conf <$> target.component.prelude
     }
 
 fromCabal :: BuildInfo -> CabalConfig
