summary refs log tree commit diff
path: root/pkgs/applications/window-managers/xmonad
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-02-03 01:05:23 +0300
committerNikolay Amiantov <ab@fmap.me>2015-02-03 01:05:23 +0300
commitb7bb524f04c9e31c19d19086d1af0eda7d2f4ca8 (patch)
tree8f2ac6eed0eae17ddb98179b10b95161cf2ce853 /pkgs/applications/window-managers/xmonad
parentf8038b0c6c3c61f081c52a9e467f7f8d731a74ff (diff)
downloadnixpkgs-b7bb524f04c9e31c19d19086d1af0eda7d2f4ca8.tar
nixpkgs-b7bb524f04c9e31c19d19086d1af0eda7d2f4ca8.tar.gz
nixpkgs-b7bb524f04c9e31c19d19086d1af0eda7d2f4ca8.tar.bz2
nixpkgs-b7bb524f04c9e31c19d19086d1af0eda7d2f4ca8.tar.lz
nixpkgs-b7bb524f04c9e31c19d19086d1af0eda7d2f4ca8.tar.xz
nixpkgs-b7bb524f04c9e31c19d19086d1af0eda7d2f4ca8.tar.zst
nixpkgs-b7bb524f04c9e31c19d19086d1af0eda7d2f4ca8.zip
nixos/xmonad: move to haskell-ng and make a wrapper
Diffstat (limited to 'pkgs/applications/window-managers/xmonad')
-rw-r--r--pkgs/applications/window-managers/xmonad/default.nix2
-rw-r--r--pkgs/applications/window-managers/xmonad/wrapper.nix22
-rw-r--r--pkgs/applications/window-managers/xmonad/xmonad_ghc_var_0.11.patch44
3 files changed, 23 insertions, 45 deletions
diff --git a/pkgs/applications/window-managers/xmonad/default.nix b/pkgs/applications/window-managers/xmonad/default.nix
index 08b85a5530f..16b0ac365a2 100644
--- a/pkgs/applications/window-managers/xmonad/default.nix
+++ b/pkgs/applications/window-managers/xmonad/default.nix
@@ -18,7 +18,7 @@ cabal.mkDerivation (self: {
   '';
   patches = [
     # Patch to make xmonad use XMONAD_{GHC,XMESSAGE} (if available).
-    ./xmonad_ghc_var_0.11.patch
+    ../../../development/haskell-modules/xmonad-nix.patch
   ];
   meta = {
     homepage = "http://xmonad.org";
diff --git a/pkgs/applications/window-managers/xmonad/wrapper.nix b/pkgs/applications/window-managers/xmonad/wrapper.nix
new file mode 100644
index 00000000000..cddaeb5f799
--- /dev/null
+++ b/pkgs/applications/window-managers/xmonad/wrapper.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildEnv, ghcWithPackages, xmessage, makeWrapper, packages }:
+
+let
+xmonadEnv = ghcWithPackages (self: [ self.xmonad ] ++ packages self);
+drv = buildEnv {
+  name = "xmonad-with-packages";
+
+  paths = [ xmonadEnv ];
+
+  postBuild = ''
+    # TODO: This could be avoided if buildEnv could be forced to create all directories
+    rm $out/bin
+    mkdir $out/bin
+    for i in ${xmonadEnv}/bin/*; do
+      ln -s $i $out/bin
+    done
+    wrapProgram $out/bin/xmonad \
+      --set XMONAD_GHC "${xmonadEnv}/bin/ghc" \
+      --set XMONAD_XMESSAGE "${xmessage}/bin/xmessage"
+  '';
+  };
+in stdenv.lib.overrideDerivation drv (x : { buildInputs = x.buildInputs ++ [ makeWrapper ]; })
diff --git a/pkgs/applications/window-managers/xmonad/xmonad_ghc_var_0.11.patch b/pkgs/applications/window-managers/xmonad/xmonad_ghc_var_0.11.patch
deleted file mode 100644
index f0785773cc1..00000000000
--- a/pkgs/applications/window-managers/xmonad/xmonad_ghc_var_0.11.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- xmonad-0.11/XMonad/Core.hs	2013-01-01 01:31:47.000000000 +0000
-+++ new-xmonad/XMonad/Core.hs	2013-12-23 17:36:40.862146910 +0000
-@@ -47,6 +47,7 @@
- import System.Process
- import System.Directory
- import System.Exit
-+import System.Environment (lookupEnv)
- import Graphics.X11.Xlib
- import Graphics.X11.Xlib.Extras (Event)
- import Data.Typeable
-@@ -452,6 +453,7 @@
-         err  = base ++ ".errors"
-         src  = base ++ ".hs"
-         lib  = dir </> "lib"
-+    ghc <- fromMaybe "ghc" <$> liftIO (lookupEnv "XMONAD_GHC")
-     libTs <- mapM getModTime . Prelude.filter isSource =<< allFiles lib
-     srcT <- getModTime src
-     binT <- getModTime bin
-@@ -460,7 +462,7 @@
-         -- temporarily disable SIGCHLD ignoring:
-         uninstallSignalHandlers
-         status <- bracket (openFile err WriteMode) hClose $ \h ->
--            waitForProcess =<< runProcess "ghc" ["--make", "xmonad.hs", "-i", "-ilib", "-fforce-recomp", "-v0", "-o",binn] (Just dir)
-+            waitForProcess =<< runProcess ghc ["--make", "xmonad.hs", "-i", "-ilib", "-fforce-recomp", "-v0", "-o",binn] (Just dir)
-                                     Nothing Nothing Nothing (Just h)
- 
-         -- re-enable SIGCHLD:
-@@ -469,6 +471,7 @@
-         -- 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)
-@@ -476,7 +479,7 @@
-             -- nb, the ordering of printing, then forking, is crucial due to
-             -- lazy evaluation
-             hPutStrLn stderr msg
--            forkProcess $ executeFile "xmessage" True ["-default", "okay", msg] Nothing
-+            forkProcess $ executeFile xmessage True ["-default", "okay", msg] Nothing
-             return ()
-         return (status == ExitSuccess)
-       else return True