diff --git a/cabal-install/Distribution/Client/CmdInstall.hs b/cabal-install/Distribution/Client/CmdInstall.hs
index e1cf7e1e180ad244386c6f93791787d482598ab4..50d964105aead3db93038357006f2e5274fe5a97 100644
--- a/cabal-install/Distribution/Client/CmdInstall.hs
+++ b/cabal-install/Distribution/Client/CmdInstall.hs
@@ -124,19 +124,21 @@ import Distribution.Utils.NubList
          ( fromNubList )
 import System.Directory 
          ( getHomeDirectory, doesFileExist, createDirectoryIfMissing
-         , getTemporaryDirectory, makeAbsolute )
+         , getTemporaryDirectory, makeAbsolute, getCurrentDirectory )
 import System.FilePath
          ( (</>), takeDirectory )
 
 data NewInstallFlags = NewInstallFlags
   { ninstInstallLibs :: Flag Bool
   , ninstEnvironmentPath :: Flag FilePath
+  , ninstEnvironmentCwd :: Flag Bool
   }
 
 defaultNewInstallFlags :: NewInstallFlags
 defaultNewInstallFlags = NewInstallFlags
   { ninstInstallLibs = toFlag False
   , ninstEnvironmentPath = mempty
+  , ninstEnvironmentCwd = toFlag False
   }
 
 newInstallOptions :: ShowOrParseArgs -> [OptionField NewInstallFlags]
@@ -149,6 +151,10 @@ newInstallOptions _ =
     "Set the environment file that may be modified."
     ninstEnvironmentPath (\pf flags -> flags { ninstEnvironmentPath = pf })
     (reqArg "PATH" (succeedReadE Flag) flagToList)
+  , option [] ["env-cwd"]
+    "Modify the current directory's environment instead of the global one."
+    ninstEnvironmentCwd (\pf flags -> flags { ninstEnvironmentCwd = pf })
+    trueArg
   ]
 
 installCommand :: CommandUI ( ConfigFlags, ConfigExFlags, InstallFlags
@@ -405,10 +411,18 @@ installAction (configFlags, configExFlags, installFlags, haddockFlags, newInstal
     compilerId@(CompilerId compilerFlavor compilerVersion) }, platform, progDb') <-
       configCompilerEx hcFlavor hcPath hcPkg progDb verbosity
 
+  cwd <- getCurrentDirectory
+
   let 
-    envFile = flip fromFlagOrDefault (ninstEnvironmentPath newInstallFlags) $
+    defaultEnv =
       home </> ".ghc" </> ghcPlatformAndVersionString platform compilerVersion
            </> "environments" </> "default"
+    cwdEnv =
+      cwd </> ".ghc.environment." ++ ghcPlatformAndVersionString platform ghcversion
+    
+    envFile = if fromFlagOrDefault False (ninstEnvironmentCwd newInstallFlags)
+      then cwdEnv
+      else fromFlagOrDefault defaultEnv (ninstEnvironmentPath newInstallFlags)
     GhcImplInfo{ supportsPkgEnvFiles } = getImplInfo compiler
     -- Why? We know what the first part will be, we only care about the packages.
     filterEnvEntries = filter $ \case