@@ -31,8 +31,11 @@ import CmdLineParser
31import DynFlags
31import DynFlags
32import Panic
32import Panic
34−import GHC.Paths
34+import qualified GHC.Paths
36+-- Set the GHC libdir to the nix libdir if it's present.
37+getLibdir :: IO FilePath
38+getLibdir = fromMaybe GHC.Paths.libdir <$> lookupEnv "NIX_GHC_LIBDIR"
37main :: IO ()
40main :: IO ()
@@ -78,7 +81,7 @@ showEvent lock e = withLock lock $ print e
79-- | Create a GHC session that will be subsequently reused.
82-- | Create a GHC session that will be subsequently reused.
80newSession :: [String] -> IO HscEnv
83newSession :: [String] -> IO HscEnv
81−newSession flags = runGhc (Just libdir) $ do
84+newSession flags = getLibdir >>= \libdir -> runGhc (Just libdir) $ do
82 damlDFlags <- getSessionDynFlags
85 damlDFlags <- getSessionDynFlags
83 (dflags', leftover, warns) <- parseDynamicFlagsCmdLine damlDFlags $ map noLoc flags
86 (dflags', leftover, warns) <- parseDynamicFlagsCmdLine damlDFlags $ map noLoc flags