diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # ChangeLog hie-bios
 
+## 2021-02-19 - 0.7.4
+
+### Bug Fixes
+
+* Create the cache directory on linux if it is missing [#283](https://github.com/mpickering/hie-bios/pull/283)
+
 ## 2021-01-29 - 0.7.3
 
 * Set builddir for cabal [#264](https://github.com/mpickering/hie-bios/pull/264)
diff --git a/hie-bios.cabal b/hie-bios.cabal
--- a/hie-bios.cabal
+++ b/hie-bios.cabal
@@ -1,6 +1,6 @@
 Cabal-Version:          2.2
 Name:                   hie-bios
-Version:                0.7.3
+Version:                0.7.4
 Author:                 Matthew Pickering <matthewtpickering@gmail.com>
 Maintainer:             Matthew Pickering <matthewtpickering@gmail.com>
 License:                BSD-3-Clause
diff --git a/src/HIE/Bios/Cradle.hs b/src/HIE/Bios/Cradle.hs
--- a/src/HIE/Bios/Cradle.hs
+++ b/src/HIE/Bios/Cradle.hs
@@ -467,6 +467,7 @@
 withCabalWrapperTool :: GhcProc -> FilePath -> IO FilePath
 withCabalWrapperTool (mbGhc, ghcArgs) wdir = do
     cacheDir <- getCacheDir ""
+    createDirectoryIfMissing True cacheDir
     let wrapperContents = if isWindows then cabalWrapperHs else cabalWrapper
         suffix fp = if isWindows then fp <.> "exe" else fp
     let srcHash = show (fingerprintString wrapperContents)
@@ -477,7 +478,6 @@
       if isWindows
       then do
         withSystemTempDirectory "hie-bios" $ \ tmpDir -> do
-          createDirectoryIfMissing True cacheDir
           let wrapper_hs = cacheDir </> wrapper_name <.> "hs"
           writeFile wrapper_hs wrapperContents
           let ghc = (proc mbGhc $
