diff --git a/app/ghcup/Main.hs b/app/ghcup/Main.hs
index 1e357be4d429290753f38bf0897828c6fd59a6d5..2188c618f9007bb3326d36723c5955a552a30df1 100644
--- a/app/ghcup/Main.hs
+++ b/app/ghcup/Main.hs
@@ -1701,27 +1701,39 @@ Make sure to clean up #{tmpdir} afterwards.|])
                                 >> pure (ExitFailure 13)
                     else putStrLn uri' >> pure ExitSuccess
 
-            Nuke -> do
-              runLogger $ $logWarn "WARNING: This will remove GHCup and all installed components from your system."
-              runLogger $ $logWarn "Waiting 10 seconds before commencing, if you want to cancel it, now would be the time."
-
-              threadDelay 10000000  -- wait 10s
+            Nuke ->
+              runRm (do
+                   lift $ runLogger $ $logWarn "WARNING: This will remove GHCup and all installed components from your system."
+                   lift $ runLogger $ $logWarn "Waiting 10 seconds before commencing, if you want to cancel it, now would be the time."
+                   liftIO $ threadDelay 10000000  -- wait 10s
+
+                   lift $ runLogger $ $logInfo "Initiating Nuclear Sequence 🚀🚀🚀"
+                   lift $ runLogger $ $logInfo "Nuking in 3...2...1"
               
-              runLogger $ $logInfo "Initiating Nuclear Sequence 🚀🚀🚀"
-              runLogger $ $logInfo "Nuking in 3...2...1"
 
-              lInstalled <- runLogger . flip runReaderT appstate $ listVersions Nothing (Just ListInstalled)
-              forM_ lInstalled $ runRm . rmTool
+                   lInstalled <- lift $ runLogger . flip runReaderT appstate $ listVersions Nothing (Just ListInstalled)
+
+                   forM_ lInstalled (liftE . rmTool)
+
+                   leftOverFiles <- lift $ runLogger $ runReaderT rmGhcupDirs appstate
+                   pure leftOverFiles
+
+                   ) >>= \case
+                            VRight leftOverFiles -> do
 
-              leftOverFiles <- runLogger $ runReaderT rmGhcupDirs appstate
+                              case length leftOverFiles of
+                                0 -> do
+                                  runLogger $ $logInfo "Nuclear Annihilation complete!"
+                                  pure ExitSuccess
+                                _ -> do
+                                  runLogger $ $logWarn "These Directories/Files have survived Nuclear Annihilation, you may remove them manually."
+                                  forM_ leftOverFiles (runLogger . $logDebug . T.pack)
+                                  pure ExitSuccess
 
-              case length leftOverFiles of
-                0 -> runLogger $ $logInfo "Nuclear Annihilation complete!"
-                _ -> do
-                     runLogger $ $logWarn "These Directories/Files have survived Nuclear Annihilation, you may remove them manually."
-                     forM_ leftOverFiles (runLogger . $logWarn . T.pack)
+                            VLeft e -> do
+                              runLogger $ $(logError) $ T.pack $ prettyShow e
+                              pure $ ExitFailure 15
 
-              pure ExitSuccess
 
           case res of
             ExitSuccess        -> pure ()