summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/patches/xmonad-nix.patch
blob: 2a9ec4bfedfb2fb10a98300c8299202db475c94c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
diff --git a/src/XMonad/Core.hs b/src/XMonad/Core.hs
index 138d735..65b5a84 100644
--- a/src/XMonad/Core.hs
+++ b/src/XMonad/Core.hs
@@ -51,6 +51,7 @@ import System.Posix.Types (ProcessID)
 import System.Process
 import System.Directory
 import System.Exit
+import System.Environment (lookupEnv)
 import Graphics.X11.Xlib
 import Graphics.X11.Xlib.Extras (getWindowAttributes, WindowAttributes, Event)
 import Data.Typeable
@@ -571,6 +572,7 @@ recompile force = io $ do
         lib  = cfgdir </> "lib"
         buildscript = cfgdir </> "build"
 
+    ghc <- fromMaybe "ghc" <$> liftIO (lookupEnv "NIX_GHC")
     libTs <- mapM getModTime . Prelude.filter isSource =<< allFiles lib
     srcT <- getModTime src
     binT <- getModTime bin
@@ -586,7 +588,7 @@ recompile force = io $ do
         status <- bracket (openFile err WriteMode) hClose $ \errHandle ->
             waitForProcess =<< if useBuildscript
                                then compileScript bin cfgdir buildscript errHandle
-                               else compileGHC bin cfgdir errHandle
+                               else compileGHC ghc bin cfgdir errHandle
 
         -- re-enable SIGCHLD:
         installSignalHandlers
@@ -594,6 +596,7 @@ recompile force = io $ do
         -- now, if it fails, run xmessage to let the user know:
         when (status /= ExitSuccess) $ do
             ghcErr <- readFile err
+            xmessage <- fromMaybe "xmessage" <$> liftIO (lookupEnv "XMONAD_XMESSAGE")
             let msg = unlines $
                     ["Error detected while loading xmonad configuration file: " ++ src]
                     ++ lines (if null ghcErr then show status else ghcErr)
@@ -601,7 +604,7 @@ recompile force = io $ do
             -- nb, the ordering of printing, then forking, is crucial due to
             -- lazy evaluation
             hPutStrLn stderr msg
-            forkProcess $ executeFile "xmessage" True ["-default", "okay", replaceUnicode msg] Nothing
+            forkProcess $ executeFile xmessage True ["-default", "okay", replaceUnicode msg] Nothing
             return ()
         return (status == ExitSuccess)
       else return True
@@ -619,16 +622,16 @@ recompile force = io $ do
            '\8216' -> '`'  -- ‘
            '\8217' -> '`'  -- ’
            _ -> c
-       compileGHC bin dir errHandle =
-         runProcess "ghc" ["--make"
-                          , "xmonad.hs"
-                          , "-i"
-                          , "-ilib"
-                          , "-fforce-recomp"
-                          , "-main-is", "main"
-                          , "-v0"
-                          , "-o", bin
-                          ] (Just dir) Nothing Nothing Nothing (Just errHandle)
+       compileGHC ghc bin dir errHandle =
+         runProcess ghc ["--make"
+                        , "xmonad.hs"
+                        , "-i"
+                        , "-ilib"
+                        , "-fforce-recomp"
+                        , "-main-is", "main"
+                        , "-v0"
+                        , "-o", bin
+                        ] (Just dir) Nothing Nothing Nothing (Just errHandle)
        compileScript bin dir script errHandle =
          runProcess script [bin] (Just dir) Nothing Nothing Nothing (Just errHandle)