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