From c916b7849d0b866c64258443fea1909e4785d961 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sini=C5=A1a=20Bi=C4=91in?=
Date: Tue, 18 Aug 2015 22:40:14 +0200
Subject: [PATCH 1/2] gnu: Add xmonad.
* gnu/packages/xmonad.scm (xmonad): New variable.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
Signed-off-by: Eric Bavier
---
gnu-system.am | 1 +
gnu/packages/xmonad.scm | 94 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 95 insertions(+)
create mode 100644 gnu/packages/xmonad.scm
diff --git a/gnu-system.am b/gnu-system.am
index 130ae36..4c34da3 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -330,6 +330,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/xfig.scm \
gnu/packages/xiph.scm \
gnu/packages/xml.scm \
+ gnu/packages/xmonad.scm \
gnu/packages/xnee.scm \
gnu/packages/xdisorg.scm \
gnu/packages/xorg.scm \
diff --git a/gnu/packages/xmonad.scm b/gnu/packages/xmonad.scm
new file mode 100644
index 0000000..01828c9
--- /dev/null
+++ b/gnu/packages/xmonad.scm
@@ -0,0 +1,94 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 SiniÅ¡a BiÄin
+;;; Copyright © 2015 Eric Bavier
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see .
+
+(define-module (gnu packages xmonad)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix licenses)
+ #:use-module (guix build-system haskell)
+ #:use-module (gnu packages haskell))
+
+(define-public xmonad
+ (package
+ (name "xmonad")
+ (version "0.11.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://hackage.haskell.org/package/xmonad/xmonad-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32 "1pfjssamiwpwjp1qqkm9m9p9s35pv381m0cwg6jxg0ppglibzq1r"))))
+ (build-system haskell-build-system)
+ (home-page "http://xmonad.org")
+ (synopsis "Tiling window manager")
+ (arguments
+ `(#:imported-modules ((srfi srfi-26)
+ ,@%haskell-build-system-modules)
+ #:phases
+ (modify-phases %standard-phases
+ (add-after
+ 'install 'install-xsession
+ (lambda _
+ (let* ((xsessions (string-append %output "/share/xsessions")))
+ (mkdir-p xsessions)
+ (call-with-output-file
+ (string-append xsessions "/xmonad.desktop")
+ (lambda (port)
+ (format port "~
+ [Desktop Entry]~@
+ Name=~a~@
+ Comment=~a~@
+ Exec=~a/bin/xmonad~@
+ Type=Application~%" ,name ,synopsis %output))))))
+ (add-after
+ 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Xmonad needs 'ghc' in PATH in order for reconfiguration to
+ ;; work. This means that the ghc inputs also need to be
+ ;; available.
+ (wrap-program (string-append (assoc-ref outputs "out") "/bin/xmonad")
+ `("PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "haskell") "/bin")))
+ ;; `("GHC_PACKAGE_PATH" ":" prefix
+ ;; (,@(map (cut string-append <> "/lib")
+ ;; `(,out
+ ;; ,@(map (cut assoc-ref inputs <>)
+ ;; '("ghc-mtl" "ghc-utf8-string"
+ ;; "ghc-extensible-exceptions"
+ ;; "ghc-x11"))))))
+ )
+ )))))
+ (propagated-inputs
+ `(("ghc-mtl" ,ghc-mtl)
+ ("ghc-utf8-string" ,ghc-utf8-string)
+ ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
+ ("ghc-x11" ,ghc-x11)))
+ (description
+ "Xmonad is a tiling window manager for X. Windows are arranged
+automatically to tile the screen without gaps or overlap, maximising screen
+use. All features of the window manager are accessible from the keyboard: a
+mouse is strictly optional. Xmonad is written and extensible in Haskell.
+Custom layout algorithms, and other extensions, may be written by the user in
+config files. Layouts are applied dynamically, and different layouts may be
+used on each workspace. Xinerama is fully supported, allowing windows to be
+tiled on several screens.")
+ (license bsd-3)))
--
2.4.3