summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/bioinformatics.scm7
-rw-r--r--gnu/packages/code.scm4
-rw-r--r--gnu/packages/ebook.scm4
-rw-r--r--gnu/packages/engineering.scm17
-rw-r--r--gnu/packages/games.scm25
-rw-r--r--gnu/packages/mail.scm16
-rw-r--r--gnu/packages/music.scm8
-rw-r--r--gnu/packages/patches/mutt-CVE-2014-9116.patch46
-rw-r--r--gnu/packages/python.scm105
-rw-r--r--gnu/packages/ruby.scm81
-rw-r--r--gnu/packages/video.scm4
-rw-r--r--gnu/packages/wm.scm34
-rw-r--r--gnu/packages/xdisorg.scm34
13 files changed, 300 insertions, 85 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 4b7f76b9c6..51e3df6d81 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -970,6 +970,9 @@ translated DNA query sequences against a protein reference database (BLASTP
 and BLASTX alignment mode).  The speedup over BLAST is up to 20,000 on short
 reads at a typical sensitivity of 90-99% relative to BLAST depending on the
 data and settings.")
+    ;; diamond fails to build on other platforms
+    ;; https://github.com/bbuchfink/diamond/issues/18
+    (supported-systems '("x86_64-linux"))
     (license (license:non-copyleft "file://src/COPYING"
                                    "See src/COPYING in the distribution."))))
 
@@ -2179,6 +2182,10 @@ viewer.")
          (lambda _ (chdir "ngs-sdk") #t)
          %standard-phases))))
     (native-inputs `(("perl" ,perl)))
+    ;; According to the test
+    ;;   unless ($MARCH =~ /x86_64/i || $MARCH =~ /i?86/i)
+    ;; in ngs-sdk/setup/konfigure.perl
+    (supported-systems '("i686-linux" "x86_64-linux"))
     (home-page "https://github.com/ncbi/ngs")
     (synopsis "API for accessing Next Generation Sequencing data")
     (description
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 6e858a7d96..86b131a3e8 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -67,14 +67,14 @@ a major mode for Emacs for examining the flowcharts that it produces.")
 (define-public complexity
   (package
     (name "complexity")
-    (version "1.2")
+    (version "1.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/complexity/complexity-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0pmlhlj1chl4caaqffvn1cy9z8gwmjbx97syi7pdfa0vqygkql6d"))))
+                "19bc64sxpqd5rqylqaa7dijz2x7qp2b0dg3ah3fb3qbcvd8b4wgy"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 43a7b9f034..258294f6c8 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -60,7 +60,7 @@
 (define-public calibre
   (package
     (name "calibre")
-    (version "2.40.0")
+    (version "2.41.0")
     (source
       (origin
         (method url-fetch)
@@ -69,7 +69,7 @@
                             version ".tar.xz"))
         (sha256
           (base32
-           "1xzf910w3c15vajnlra32xzi0gwb4z7a9m9w5nfj0by2wss3fv7n"))
+           "069fkcsx7kaazs7f095nkz4jw9jrm0k9zq16ayx41lxjbd1r97ik"))
         ;; Remove non-free or doubtful code, see
         ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
         (modules '((guix build utils)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 54e43ef0f8..1c378f63a7 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -237,6 +237,9 @@ optimizer; and it can produce photorealistic and design review images.")
               (sha256
                (base32
                 "0x37vfp6k0d2z3gnig0hbicvi0jp8v267xjnn3z8jdllpiaa6p3k"))
+              (snippet
+               ;; Remove a non-free file.
+               '(delete-file "doc/psfig.sty"))
               (modules '((guix build utils)
                          (guix build download)
                          (guix ftp-client)))
@@ -265,8 +268,18 @@ optimizer; and it can produce photorealistic and design review images.")
                          (("\\\\special\\{psfile=([^,]*),.*scale=([#0-9.]*).*\\}"
                            all file scale)
                           (string-append "\\includegraphics[scale=" scale "]{"
-                                         file "}")))
-                       (substitute* '("doc/mtt.tex" "doc/tcad.tex")
+                                         file "}"))
+                         (("\\\\psfig\\{figure=([^,]*),.*width=([#0-9.]*in).*\\}"
+                           all file width)
+                          (string-append "\\includegraphics[width=" width "]{"
+                                         file "}"))
+                         (("\\\\psfig\\{figure=([^,]*),.*height=([#0-9.]*in).*\\}"
+                           all file height)
+                          (string-append "\\includegraphics[height=" height "]{"
+                                         file "}"))
+                         (("\\\\psfig\\{figure=([^,]*)\\}" all file)
+                          (string-append "\\includegraphics{" file "}")))
+                       (substitute* '("doc/mtt.tex" "doc/tcad.tex" "doc/ug.tex")
                          (("^\\\\documentstyle\\[(.*)\\]\\{(.*)\\}"
                            all options class)
                           (string-append "\\documentclass[" options "]{"
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index e250bf9633..3023794218 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -163,17 +163,10 @@ scriptable with Guile.")
                   (guix build utils))
        #:phases (modify-phases %standard-phases
                   (add-after 'set-paths 'set-sdl-paths
-                    (lambda* (#:key inputs outputs (search-paths '())
-                              #:allow-other-keys)
-                      (define input-directories
-                        (match inputs
-                          (((_ . dir) ...)
-                           dir)))
-                      ;; This package does not use pkg-config, so modify CPATH
-                      ;; variable to point to include/SDL for SDL header files.
-                      (set-path-environment-variable "CPATH"
-                                                     '("include/SDL")
-                                                     input-directories)))
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (setenv "CPATH"
+                              (string-append (assoc-ref inputs "sdl-union")
+                                             "/include/SDL"))))
                   (add-after 'patch-source-shebangs 'patch-makefile
                     (lambda* (#:key outputs #:allow-other-keys)
                       ;; Replace /usr with package output directory.
@@ -192,11 +185,7 @@ scriptable with Guile.")
                   (delete 'configure))
        #:tests? #f)) ;; No check target.
     (native-inputs `(("pkg-config" ,pkg-config)))
-    (inputs `(("sdl" ,sdl)
-              ("sdl-gfx" ,sdl-gfx)
-              ("sdl-image" ,sdl-image)
-              ("sdl-mixer" ,sdl-mixer)
-              ("sdl-ttf" ,sdl-ttf)))
+    (inputs `(("sdl-union" ,(sdl-union))))
     (home-page "http://code.google.com/p/abbaye-for-linux/")
     (synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
     (description "L'Abbaye des Morts is a 2D platform game set in 13th century
@@ -309,7 +298,7 @@ asynchronously and at a user-defined speed.")
 (define-public chess
   (package
     (name "chess")
-    (version "6.1.1")
+    (version "6.2.2")
     (source
      (origin
        (method url-fetch)
@@ -317,7 +306,7 @@ asynchronously and at a user-defined speed.")
                            ".tar.gz"))
        (sha256
         (base32
-         "1jckpg1qi1vjr3pqs0dnip3rmn0mgklx63xflrpqiv3cx2qlz8kn"))))
+         "1a41ag03q66pwy3pjrmbxxjpzi9fcaiiaiywd7m9v25mxqac2xkp"))))
     (build-system gnu-build-system)
     (home-page "http://www.gnu.org/software/chess")
     (synopsis "Full chess implementation")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 53842b3aa0..25407b835a 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -171,21 +171,15 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.5.23")
+    (version "1.5.24")
     (source (origin
              (method url-fetch)
-             (uri (list ;; Temporarily put bitbucket first, because
-                        ;; ftp.mutt.org has been down for a while.
-                        (string-append "https://bitbucket.org/mutt/mutt/downloads/mutt-"
-                                       version ".tar.gz")
-                        (string-append "ftp://ftp.mutt.org/mutt/devel/mutt-"
-                                       version ".tar.gz")))
+             (uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-"
+                                 version ".tar.gz"))
              (sha256
               (base32
-               "0dzx4qk50pjfsb6cs5jahng96a52k12f7pm0sc78iqdrawg71w1s"))
-             (patches (map search-patch
-                           '("mutt-CVE-2014-9116.patch"
-                             "mutt-store-references.patch")))))
+               "0012njrgxf1barjksqkx7ccid2l0xyikhna9mjs9vcfpbrvcm4m2"))
+             (patches (list (search-patch "mutt-store-references.patch")))))
     (build-system gnu-build-system)
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index fe8e6f129d..a72f7543dd 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -274,7 +274,13 @@ Guile.")
       (build-system waf-build-system)
       (arguments
        `(#:tests? #f ;no "check" target
-         #:configure-flags '("--project=sequencer")
+         #:configure-flags
+         (list "--project=sequencer"
+               ;; Disable the use of SSE unless on x86_64.
+               ,@(if (not (string-prefix? "x86_64" (or (%current-target-system)
+                                                       (%current-system))))
+                     '("--disable-sse")
+                     '()))
          #:python ,python-2))
       (inputs
        `(("jack" ,jack-1)
diff --git a/gnu/packages/patches/mutt-CVE-2014-9116.patch b/gnu/packages/patches/mutt-CVE-2014-9116.patch
deleted file mode 100644
index 91e17ecbe0..0000000000
--- a/gnu/packages/patches/mutt-CVE-2014-9116.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-Fix CVE-2014-9116.  Copied from Debian:
-
-This patch solves the issue raised by CVE-2014-9116 in bug 771125.
-
-We correctly redefine what are the whitespace characters as per RFC5322; by
-doing so we prevent mutt_substrdup from being used in a way that could lead to
-a segfault.
-
-The lib.c part was written by Antonio Radici <antonio@debian.org> to prevent
-crashes due to this kind of bugs from happening again.
-
-The wheezy version of this patch is slightly different, therefore this patch
-has -jessie prefixed in its name.
-
-The sendlib.c part was provided by Salvatore Bonaccorso and it is the same as
-the upstream patch reported here:
-http://dev.mutt.org/trac/attachment/ticket/3716/ticket-3716-stable.patch
-
---- a/lib.c
-+++ b/lib.c
-@@ -815,6 +815,9 @@ char *mutt_substrdup (const char *begin,
-   size_t len;
-   char *p;
- 
-+  if (end != NULL && end < begin)
-+    return NULL;
-+
-   if (end)
-     len = end - begin;
-   else
---- a/sendlib.c
-+++ b/sendlib.c
-@@ -1814,7 +1814,12 @@ static int write_one_header (FILE *fp, i
-     {
-       tagbuf = mutt_substrdup (start, t);
-       /* skip over the colon separating the header field name and value */
--      t = skip_email_wsp(t + 1);
-+      ++t;
-+
-+      /* skip over any leading whitespace (WSP, as defined in RFC5322) */
-+      while (*t == ' ' || *t == '\t')
-+        t++;
-+
-       valbuf = mutt_substrdup (t, end);
-     }
-     dprint(4,(debugfile,"mwoh: buf[%s%s] too long, "
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 399c23fc0c..c972b62500 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -36,6 +36,7 @@
   #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages attr)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages fontutils)
@@ -72,6 +73,7 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (srfi srfi-1))
@@ -3272,6 +3274,7 @@ functions.")
     (native-inputs
      `(("python-nose" ,python-nose)
        ("python-sphinx" ,python-sphinx)
+       ("python-numpydoc" ,python-numpydoc)
        ("gfortran" ,gfortran)
        ("texlive" ,texlive)
        ("perl" ,perl)))
@@ -3329,7 +3332,13 @@ atlas_libs = openblas
               (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
           (alist-delete
            'check
-           %standard-phases))))))
+           (alist-cons-after
+            'unpack 'fix-tests
+            (lambda _
+              (substitute* "scipy/integrate/tests/test_quadpack.py"
+                (("libm.so") "libm.so.6"))
+              #t)
+            %standard-phases)))))))
     (home-page "http://www.scipy.org/")
     (synopsis "The Scipy library provides efficient numerical routines")
     (description "The SciPy library is one of the core packages that make up
@@ -5610,3 +5619,97 @@ Python Package Index (PyPI).")
 
 (define-public python2-pip
   (package-with-python2 python-pip))
+
+(define-public python-tlsh
+  (package
+    (name "python-tlsh")
+    (version "3.4.1")                             ;according to CMakeLists.txt
+    (home-page "https://github.com/trendmicro/tlsh")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url home-page)
+                    ;; This is a commit right after 3.4.1; see
+                    ;; <https://github.com/trendmicro/tlsh/issues/9>.
+                    (commit "3ae3f1f")))
+              (sha256
+               (base32
+                "12cvnr5ndm5cg6i7lch93id90kgwgrigjgrj8f186nh3h4bf9chj"))
+              (file-name (string-append name "-" version "-checkout"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:out-of-source? #f
+       #:phases (modify-phases %standard-phases
+                  (replace
+                   'install
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     ;; Build and install the Python bindings.  The underlying
+                     ;; C++ library is apparently not meant to be installed.
+                     (let ((out (assoc-ref outputs "out")))
+                       (with-directory-excursion "py_ext"
+                         (and (system* "python" "setup.py" "build")
+                              (system* "python" "setup.py" "install"
+                                       (string-append "--prefix=" out))))))))))
+    (inputs `(("python" ,python-wrapper)))        ;for the bindings
+    (synopsis "Fuzzy matching library for Python")
+    (description
+     "Trend Micro Locality Sensitive Hash (TLSH) is a fuzzy matching library.
+Given a byte stream with a minimum length of 256 bytes, TLSH generates a hash
+value which can be used for similarity comparisons.  Similar objects have
+similar hash values, which allows for the detection of similar objects by
+comparing their hash values.  The byte stream should have a sufficient amount
+of complexity; for example, a byte stream of identical bytes will not generate
+a hash value.")
+    (license asl2.0)))
+
+(define-public python2-tlsh
+  (package
+    (inherit python-tlsh)
+    (name "python2-tlsh")
+    (inputs `(("python" ,python-2)))))
+
+(define-public python-libarchive-c
+  (package
+    (name "python-libarchive-c")
+    (version "2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://pypi.python.org/packages/source/l/libarchive-c/libarchive-c-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "089lrz6xyrfnk55v35vis6jyqyyl77w093057djyspnd2744wi2n"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (add-before
+                   'build 'reference-libarchive
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     ;; Retain the absolute file name of libarchive.so.
+                     (let ((libarchive (assoc-ref inputs "libarchive")))
+                       (substitute* "libarchive/ffi.py"
+                         (("find_library\\('archive'\\)")
+                          (string-append "'" libarchive
+                                         "/lib/libarchive.so'"))))
+
+                     ;; Do not make a compressed egg (see
+                     ;; <http://bugs.gnu.org/20765>).
+                     (let ((port (open-file "setup.cfg" "a")))
+                       (display "\n[easy_install]\nzip_ok = 0\n"
+                                port)
+                       (close-port port)
+                       #t))))))
+    (inputs
+     `(("python-setuptools" ,python-setuptools)
+       ("libarchive" ,libarchive)))
+    (home-page "https://github.com/Changaco/python-libarchive-c")
+    (synopsis "Python interface to libarchive")
+    (description
+     "This package provides Python bindings to libarchive, a C library to
+access possibly compressed archives in many different formats.  It uses
+Python's @code{ctypes} foreign function interface (FFI).")
+    (license lgpl2.0+)))
+
+(define-public python2-libarchive-c
+  (package-with-python2 python-libarchive-c))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index c906361971..701b7ee6ef 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -258,6 +259,17 @@ groups.")
     (home-page "https://github.com/rspec/rspec-core")
     (license license:expat)))
 
+(define-public ruby-rspec-core-2
+  (package (inherit ruby-rspec-core)
+    (version "2.14.8")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rspec-core" version))
+              (sha256
+               (base32
+                "0psjy5kdlz3ph39br0m01w65i1ikagnqlg39f8p65jh5q7dz8hwc"))))
+    (propagated-inputs `())))
+
 (define-public ruby-diff-lcs
   (package
     (name "ruby-diff-lcs")
@@ -301,6 +313,18 @@ outcomes of a code example.")
     (home-page "https://github.com/rspec/rspec-expectations")
     (license license:expat)))
 
+(define-public ruby-rspec-expectations-2
+  (package (inherit ruby-rspec-expectations)
+    (version "2.14.5")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rspec-expectations" version))
+              (sha256
+               (base32
+                "1ni8kw8kjv76jvwjzi4jba00k3qzj9f8wd94vm6inz0jz3gwjqf9"))))
+    (propagated-inputs
+     `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
+
 (define-public ruby-rspec-mocks
   (package
     (name "ruby-rspec-mocks")
@@ -323,6 +347,18 @@ support for stubbing and mocking.")
     (home-page "https://github.com/rspec/rspec-mocks")
     (license license:expat)))
 
+(define-public ruby-rspec-mocks-2
+  (package (inherit ruby-rspec-mocks)
+    (version "2.14.6")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rspec-mocks" version))
+              (sha256
+               (base32
+                "1fwsmijd6w6cmqyh4ky2nq89jrpzh56hzmndx9wgkmdgfhfakv30"))))
+    (propagated-inputs
+     `(("ruby-diff-lcs" ,ruby-diff-lcs)))))
+
 (define-public ruby-rspec
   (package
     (name "ruby-rspec")
@@ -347,6 +383,20 @@ expectations and mocks frameworks.")
     (home-page "http://rspec.info/")
     (license license:expat)))
 
+(define-public ruby-rspec-2
+  (package (inherit ruby-rspec)
+    (version "2.14.1")
+    (source (origin
+              (method url-fetch)
+              (uri (rubygems-uri "rspec" version))
+              (sha256
+               (base32
+                "134y4wzk1prninb5a0bhxgm30kqfzl8dg06af4js5ylnhv2wd7sg"))))
+    (propagated-inputs
+     `(("ruby-rspec-core" ,ruby-rspec-core-2)
+       ("ruby-rspec-mocks" ,ruby-rspec-mocks-2)
+       ("ruby-rspec-expectations" ,ruby-rspec-expectations-2)))))
+
 ;; Bundler is yet another source of circular dependencies, so we must disable
 ;; its test suite as well.
 (define-public bundler
@@ -1415,3 +1465,34 @@ and trust on your team.")
 features such as filtering and fine grained logging.")
     (home-page "https://github.com/pjotrp/bioruby-logger-plugin")
     (license license:expat)))
+
+(define-public ruby-yard
+  (package
+    (name "ruby-yard")
+    (version "0.8.7.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rubygems-uri "yard" version))
+       (sha256
+        (base32
+         "1dj6ibc0qqvmb5a5r5kk0vhr04mnrz9b26gnfrs5p8jgp620i89x"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:test-target "specs"
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-HOME
+          ;; $HOME needs to be set to somewhere writeable for tests to run
+          (lambda _ (setenv "HOME" "/tmp") #t)))))
+    (native-inputs
+     `(("ruby-rspec" ,ruby-rspec-2)
+       ("ruby-rack" ,ruby-rack)))
+    (synopsis "Documentation generation tool for Ruby")
+    (description
+     "YARD is a documentation generation tool for the Ruby programming
+language.  It enables the user to generate consistent, usable documentation
+that can be exported to a number of formats very easily, and also supports
+extending for custom Ruby constructs such as custom class level definitions.")
+    (home-page "http://yardoc.org")
+    (license license:expat)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 26483f707b..ced17f0e30 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -793,7 +793,7 @@ projects while introducing many more.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2015.09.28")
+    (version "2015.10.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://youtube-dl.org/downloads/"
@@ -801,7 +801,7 @@ projects while introducing many more.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0q3s2a91s1lr1db2ngacq0iapyr4jngx1dqp4z5dc6zma0qyx5k3"))))
+                "001a4md0yl3zx129mksmwc85grss67r3c9rynvranf9vlpv202vn"))))
     (build-system python-build-system)
     (inputs `(("setuptools" ,python-setuptools)))
     (home-page "http://youtube-dl.org")
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 9ca5b96fe8..e0859ccf30 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -64,6 +65,39 @@ single/double-quoted strings, environment variable expansion, functions and
 nested include statements).")
     (license isc)))
 
+(define-public bspwm
+  (package
+    (name "bspwm")
+    (version "0.9")
+    (source
+     (origin
+       (file-name (string-append name "-" version ".tar.gz"))
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/baskerville/bspwm/archive/"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1pig0h2jk8wipyz90j69c4bk37bfyq60asnn0v0bqld2p2vjvyqy"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libxcb" ,libxcb)
+       ("libxinerama" ,libxinerama)
+       ("sxhkd" ,sxhkd)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-wm" ,xcb-util-wm)))
+    (arguments
+     '(#:phases (alist-delete 'configure %standard-phases)
+       #:tests? #f  ; no check target
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX=" %output))))
+    (home-page "https://github.com/baskerville/bspwm")
+    (synopsis "Tiling window manager based on binary space partitioning")
+    (description "bspwm is a tiling window manager that represents windows as
+the leaves of a full binary tree.")
+    (license bsd-2)))
+
 (define-public i3status
   (package
     (name "i3status")
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 7a0b50bdab..42a0454a35 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
 ;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
+;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
+  #:use-module (gnu packages asciidoc)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
@@ -489,6 +491,38 @@ clicks or timed double clicks take actions.  Also all functions that work in
 Guile will work for XBindKeys.")
     (license license:gpl2+)))
 
+(define-public sxhkd
+  (package
+    (name "sxhkd")
+    (version "0.5.5")
+    (source
+     (origin
+       (file-name (string-append name "-" version ".tar.gz"))
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/baskerville/sxhkd/archive/"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "04s3y2bq9502gw72jj3y2zsh96yj3qg2av3zsa8ahd2farvrysg6"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("asciidoc" ,asciidoc)
+       ("libxcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-wm" ,xcb-util-wm)))
+    (arguments
+     '(#:phases (alist-delete 'configure %standard-phases)
+       #:tests? #f  ; no check target
+       #:make-flags (list "CC=gcc"
+                          (string-append "PREFIX=" %output))))
+    (home-page "https://github.com/baskerville/sxhkd")
+    (synopsis "Simple X hotkey daemon")
+    (description "sxhkd is a simple X hotkey daemon with a powerful and
+compact configuration syntax.")
+    (license license:bsd-2)))
+
 (define-public rxvt-unicode
   (package
     (name "rxvt-unicode")