[PATCH 0/5] Update XMonad (and add new dependencies)

DoneSubmitted by John Kehayias.
Details
2 participants
  • John Kehayias
  • Lars-Dominik Braun
Owner
unassigned
Severity
normal
J
J
John Kehayias wrote on 24 Dec 2021 20:22
(name . Guix-patches)(address . guix-patches@gnu.org)
Za9d3f8yx-cBVXBqMap5HWIudwcVR6SvNkO_m2pQ5pPNM9UE4C4pqLBuUJpUOG8AoCVwVztLo84Rtt-kXRU5dq8qYZ4P8g5Uj1K1_C3AwJU=@protonmail.com
Hello,

Incoming are patches to update XMonad and ghc-xmonad-contrib to the new release, 0.17.0. This required some new Haskell packages and minor changes to xmonad. I've tested this builds but haven't tried running the newer versions (currently away from my main Guix computer). I also updated xmobar (again, untested beyond building).

Note that this new version has breaking configuration changes, detailed in their announcement: https://xmonad.org/news/2021/10/27/xmonad-0-17-0.html Is that worth a news entry for guix pull? It has been a long time since xmonad released a new version, for those that stay on the stable release.

John
J
J
John Kehayias wrote on 24 Dec 2021 20:28
[PATCH 1/5] Update XMonad (and add new dependencies)
(name . 52784@debbugs.gnu.org)(address . 52784@debbugs.gnu.org)
bA-lYBddf3at-sO9QfJd5OIZxQL1T5aSGoHqiXUm-RaeRSMm6Cv990SO4_MyIWSOmIvV1Qa2FOzHvyvB-e4XAXNvdiFFvGt6BTlNVtjL6yA=@protonmail.com
Empty Message
From 72a5160025feb84bf7fb111fd1d2b2a29d0ffdb9 Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Fri, 24 Dec 2021 13:45:59 -0500
Subject: [PATCH 1/5] gnu: Add ghc-primitive-addr.

* gnu/packages/haskell-xyz.scm (ghc-primitive-addr): New variable.
---
gnu/packages/haskell-xyz.scm | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

Toggle diff (43 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index e2adefa48f..7649e4922d 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -29,6 +29,7 @@
 ;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
 ;;; Copyright © 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2021 Alice BRENON <alice.brenon@ens-lyon.fr>
+;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -9944,6 +9945,28 @@ (define-public ghc-primitive
      "This package provides various primitive memory-related operations.")
     (license license:bsd-3)))
 
+(define-public ghc-primitive-addr
+  (package
+    (name "ghc-primitive-addr")
+    (version "0.1.0.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://hackage.haskell.org/package/primitive-addr/primitive-addr-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32 "06r1p56wm8rbjxnlaqbmc3rbsj1rsv5scwnh80lsn0xw56jc70a2"))))
+    (build-system haskell-build-system)
+    (inputs (list ghc-primitive))
+    (home-page "https://github.com/haskell-primitive/primitive-addr")
+    (synopsis "Addresses to unmanaged memory")
+    (description
+     "This library provides the @code{Data.Primitive.Addr} module that was a part
+of the @code{primitive} library before @code{primitive-0.7.0.0}.")
+    (license license:bsd-3)))
+
 (define-public ghc-process-extras
   (package
     (name "ghc-process-extras")
-- 
2.34.1
J
J
John Kehayias wrote on 24 Dec 2021 20:29
[PATCH 2/5] Update XMonad (and add new dependencies)
(name . 52784@debbugs.gnu.org)(address . 52784@debbugs.gnu.org)
1tlUn_67MAFJiBN4BVeunQTBFZhX9lQfK9ZRjTmY0solgLP1fAdeSQoMJsdoR31YWPJv4cqAckDSJK-YhWZO9xe6L8CUaQ4uBSGWtLTvuZY=@protonmail.com
Empty Message
From aee88dedea562c405d38eb4dc1a2164b52281600 Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Fri, 24 Dec 2021 13:51:33 -0500
Subject: [PATCH 2/5] gnu: Add ghc-semirings.

* gnu/packages/haskell-xyz.scm (ghc-semirings): New variable.
---
gnu/packages/haskell-xyz.scm | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 7649e4922d..9e6df24093 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -11398,6 +11398,40 @@ (define-public ghc-semigroups-bootstrap
            ghc-unordered-containers-bootstrap ghc-hashable-bootstrap))
     (properties '((hidden? #t)))))
 
+(define-public ghc-semirings
+  (package
+    (name "ghc-semirings")
+    (version "0.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://hackage.haskell.org/package/semirings/semirings-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32 "16q535bvjl7395sqkx6zlw48y4fzr7irp44pcp7w9irpn4cncdcr"))))
+    (build-system haskell-build-system)
+    (inputs
+      (list ghc-base-compat-batteries ghc-hashable ghc-unordered-containers))
+    (arguments
+      `(#:cabal-revision
+        ("1" "1c06yhfa053sv3rfz0d72a33l5qb0xmj1b3hy2z7pzxrcay6g1yc")))
+    (home-page "https://github.com/chessai/semirings")
+    (synopsis "Two monoids as one, in holy haskimony")
+    (description
+     "Haskellers are usually familiar with monoids and semigroups.  A monoid has an
+appending operation @code{<>} (or @code{mappend}), and an identity element,
+@code{mempty}.  A semigroup has an appending @code{<>} operation, but does not
+require a @code{mempty} element.  A Semiring has two appending operations,
+@code{plus} and @code{times}, and two respective identity elements,
+@code{zero} and @code{one}.  More formally, a Semiring R is a set equipped
+with two binary relations @code{+} and @code{*}, such that: (R,+) is a
+commutative monoid with identity element 0, (R,*) is a monoid with identity
+element 1, (*) left and right distributes over addition, and . multiplication
+by @code{0} annihilates R.")
+    (license license:bsd-3)))
+
 (define-public ghc-serialise
   (package
     (name "ghc-serialise")
-- 
2.34.1
J
J
John Kehayias wrote on 24 Dec 2021 20:29
[PATCH 3/5] Update XMonad (and add new dependencies)
(name . 52784@debbugs.gnu.org)(address . 52784@debbugs.gnu.org)
1kkjy9LkMD4phCPjYgqUH-wqbJpWbrKFcL7eUQsdg0Q-5i5tC5kayc9M5K_lQfbW2PinIaEIVvWISXbsY3vxbzOg3NBSPlf8kvyi34dcwvU=@protonmail.com
Empty Message
From e72e083b36d3ad12aa81ee7cbc325c4f61799187 Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Fri, 24 Dec 2021 13:52:16 -0500
Subject: [PATCH 3/5] gnu: Add ghc-quickcheck-classes.

* gnu/packages/haskell-check.scm (ghc-quickcheck-classes): New variable.
---
gnu/packages/haskell-check.scm | 46 ++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (73 lines)
diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm
index e647d65a89..62433cdb15 100644
--- a/gnu/packages/haskell-check.scm
+++ b/gnu/packages/haskell-check.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
 ;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
 ;;; Copyright © 2020 Carlo Holl <carloholl@gmail.com>
+;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,6 +33,7 @@
 (define-module (gnu packages haskell-check)
   #:use-module (gnu packages)
   #:use-module (gnu packages haskell-crypto)
+  #:use-module (gnu packages haskell-web)
   #:use-module (gnu packages haskell-xyz)
   #:use-module (guix build-system haskell)
   #:use-module (guix download)
@@ -1056,6 +1058,50 @@ (define-public ghc-inspection-testing
 examples and more information.")
     (license license:expat)))
 
+(define-public ghc-quickcheck-classes
+  (package
+    (name "ghc-quickcheck-classes")
+    (version "0.6.5.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://hackage.haskell.org/package/quickcheck-classes/quickcheck-classes-"
+               version
+               ".tar.gz"))
+        (sha256
+          (base32 "19iw15mvb7gws3ljdxqwsbb4pmfc0sfflf8szgmrhiqr3k82mqv2"))))
+    (build-system haskell-build-system)
+    (inputs
+      (list ghc-quickcheck
+            ghc-primitive
+            ghc-primitive-addr
+            ghc-quickcheck-classes-base
+            ghc-aeson
+            ghc-semigroupoids
+            ghc-semirings
+            ghc-vector))
+    (native-inputs
+      (list ghc-base-orphans
+            ghc-tagged
+            ghc-base-orphans
+            ghc-tagged
+            ghc-tasty
+            ghc-tasty-quickcheck))
+    (home-page "https://github.com/andrewthad/quickcheck-classes#readme")
+    (synopsis "QuickCheck common typeclasses")
+    (description
+      "This library provides QuickCheck properties to ensure that typeclass
+instances adhere to the set of laws that they are supposed to.  There are
+other libraries that do similar things, such as @code{genvalidity-hspec} and
+@code{checkers}.  This library differs from other solutions by not introducing
+any new typeclasses that the user needs to learn.  /Note:/ on GHC < 8.5, this
+library uses the higher-kinded typeclasses (@code{Data.Functor.Classes.Show1},
+@code{Data.Functor.Classes.Eq1}, @code{Data.Functor.Classes.Ord1}, etc.), but
+on GHC >= 8.5, it uses @code{-XQuantifiedConstraints} to express these
+constraints more cleanly.")
+    (license license:bsd-3)))
+
 (define-public ghc-quickcheck-classes-base
   (package
     (name "ghc-quickcheck-classes-base")
-- 
2.34.1
J
J
John Kehayias wrote on 24 Dec 2021 20:29
[PATCH 4/5] Update XMonad (and add new dependencies)
(name . 52784@debbugs.gnu.org)(address . 52784@debbugs.gnu.org)
o8sa3Dy9BpHvdiUNX2bS3mCKYBMHVEdtWebUO2VuLjCXALBqeFBvMnCteh6M60Y8ncEVLaGI__lRdQgXivA6nW-4JDxSF1tPwRvLFfZf0jc=@protonmail.com
Empty Message
From f48d7d5c2ff1b65a0a95b33acfae17d3fb540ddb Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Fri, 24 Dec 2021 13:55:37 -0500
Subject: [PATCH 4/5] gnu: xmonad: Update to 0.17.0.

* gnu/packages/wm.scm (xmonad): Update to 0.17.0.
[inputs]: Add GHC-DATA-DEFAULT-CLASS, remove GHC-EXTENSIBLE-EXCEPTIONS,
GHC-DATA-DEFAULT, GHC-SEMIGROUPS, and GHC-UTF8-STRING.
[native-inputs]: Add GHC-QUICKCHECK and GHC-QUICKCHECK-CLASSES.
(ghc-xmonad-contrib): Update to 0.17.0.
[propagated-inputs]: Remove GHC-OLD-TIME, GHC-EXTENSIBLE-EXCEPTIONS,
GHC-SEMIGROUPS.
[native-inputs]: Add GHC-QUICKCHECK and GHC-HSPEC.
* gnu/packages/patches/xmonad-dynamic-linking.patch: Update patch.
---
.../patches/xmonad-dynamic-linking.patch | 24 ++++++------
gnu/packages/wm.scm | 37 +++++--------------
2 files changed, 22 insertions(+), 39 deletions(-)

Toggle diff (113 lines)
diff --git a/gnu/packages/patches/xmonad-dynamic-linking.patch b/gnu/packages/patches/xmonad-dynamic-linking.patch
index 4f3386e53a..a1d71825b6 100644
--- a/gnu/packages/patches/xmonad-dynamic-linking.patch
+++ b/gnu/packages/patches/xmonad-dynamic-linking.patch
@@ -2,15 +2,15 @@ This patch is required for xmonad to make use of shared libraries.
 Without it, xmonad will not work since we do not (by default) use
 statically linked Haskell libraries.
 
-diff -ruN xmonad-0.15-a/src/XMonad/Core.hs xmonad-0.15-b/src/XMonad/Core.hs
---- xmonad-0.15-a/src/XMonad/Core.hs	1969-12-31 19:00:00.000000000 -0500
-+++ xmonad-0.15-b/src/XMonad/Core.hs	1969-12-31 19:00:00.000000000 -0500
-@@ -681,6 +681,8 @@
-        compileGHC bin dir errHandle =
-          runProcess "ghc" ["--make"
-                           , "xmonad.hs"
-+                          , "-dynamic"
-+                          , "-fPIC"
-                           , "-i"
-                           , "-ilib"
-                           , "-fforce-recomp"
+index 46a0939..5ad4f8f 100644
+--- a/src/XMonad/Core.hs
++++ b/src/XMonad/Core.hs
+@@ -664,6 +664,8 @@ compile dirs method =
+   where
+     ghcArgs = [ "--make"
+               , "xmonad.hs"
++              , "-dynamic"
++              , "-fPIC"
+               , "-i" -- only look in @lib@
+               , "-ilib"
+               , "-fforce-recomp"
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index c6881154fe..2aa7309027 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com>
+;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -739,7 +740,7 @@ (define-public i3lock-fancy
 (define-public xmonad
   (package
     (name "xmonad")
-    (version "0.15")
+    (version "0.17.0")
     (synopsis "Tiling window manager")
     (source (origin
               (method url-fetch)
@@ -747,21 +748,13 @@ (define-public xmonad
                                   "xmonad-" version ".tar.gz"))
               (sha256
                (base32
-                "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
+                "04qspdz9w6xpw1npcmx2zx0595wc68q985pv4i0hvp32zillvdqy"))
               (patches (search-patches "xmonad-dynamic-linking.patch"))))
     (build-system haskell-build-system)
-    (inputs
-     (list ghc-extensible-exceptions
-           ghc-data-default
-           ghc-quickcheck
-           ghc-semigroups
-           ghc-setlocale
-           ghc-utf8-string
-           ghc-x11))
+    (inputs (list ghc-data-default-class ghc-setlocale ghc-x11))
+    (native-inputs (list ghc-quickcheck ghc-quickcheck-classes))
     (arguments
-     `(#:cabal-revision
-       ("1" "0yqh96qqphllr0zyz5j93cij5w2qvf39xxnrb52pz0qz3pywz9wd")
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after
           'install 'install-xsession
@@ -865,27 +858,17 @@ (define-public yeganesh
 (define-public ghc-xmonad-contrib
   (package
     (name "ghc-xmonad-contrib")
-    (version "0.16")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://hackage/package/xmonad-contrib/"
                            "xmonad-contrib-" version ".tar.gz"))
        (sha256
-        (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
+        (base32 "11g1cyfgfvcmz35qhgi9wzxrk3br8m8b7qy3jvph4nnf6aj13wvy"))))
     (build-system haskell-build-system)
-    (arguments
-     `(#:cabal-revision
-       ("1" "0vimkby2gq6sgzxzbvz67caba609xqlv2ii2gi8a1cjrnn6ib011")))
-    (propagated-inputs
-     (list ghc-old-time
-           ghc-random
-           ghc-utf8-string
-           ghc-extensible-exceptions
-           ghc-semigroups
-           ghc-x11
-           ghc-x11-xft
-           xmonad))
+    (propagated-inputs (list ghc-random ghc-x11 ghc-utf8-string ghc-x11-xft xmonad))
+    (native-inputs (list ghc-quickcheck ghc-hspec))
     (home-page "https://xmonad.org")
     (synopsis "Third party extensions for xmonad")
     (description
-- 
2.34.1
J
J
John Kehayias wrote on 24 Dec 2021 20:30
[PATCH 5/5] Update XMonad (and add new dependencies)
(name . 52784@debbugs.gnu.org)(address . 52784@debbugs.gnu.org)
bDLFFzkEGpdFZjqR3Jtt-BMCYgx0gH0MBVo68Sow21xFaJYGKD83U7sVDdsEcH5s_7VeHrc8avMVRMUhmufq8v7vp088VfUsJp8qGmuBynQ=@protonmail.com
Empty Message
From ed12779f7d9364e8473495504220e91607e47757 Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Fri, 24 Dec 2021 14:11:29 -0500
Subject: [PATCH 5/5] gnu: xmobar: Update to 0.40.

* gnu/packages/wm.scm (xmobar): Update to 0.40.
---
gnu/packages/wm.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (23 lines)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 2aa7309027..4f79b5f383 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -785,14 +785,14 @@ (define-public xmonad
 (define-public xmobar
   (package
     (name "xmobar")
-    (version "0.39")
+    (version "0.40")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://hackage.haskell.org/package/xmobar/"
                                   "xmobar-" version ".tar.gz"))
               (sha256
                (base32
-                "1k1n3ff0ikdmfq0mi8r2vpqg1iq6hsw1drvxps6k98rvvn87pws6"))))
+                "1mrdiblm8vilkm1w23pz6xbi16zh1b1lvql26czjzw5k79vd67sf"))))
     (build-system haskell-build-system)
     (native-inputs
      (list ghc-hspec hspec-discover))
-- 
2.34.1
L
L
Lars-Dominik Braun wrote on 28 Dec 2021 11:24
Re: [bug#52784] [PATCH 0/5] Update XMonad (and add new dependencies)
(name . John Kehayias)(address . john.kehayias@protonmail.com)(address . 52784@debbugs.gnu.org)
Ycrl4T40hbpOuqc6@noor.fritz.box
Hi John,

thanks for your patches. I also upgraded xmonad locally (see
attached patch), but I didn’t need the version bumps/new packages
(i.e. xmonad’s test suite builds and runs fine). Are they really
necessary?

Toggle quote (1 lines)
> Note that this new version has breaking configuration changes, detailed in their announcement: https://xmonad.org/news/2021/10/27/xmonad-0-17-0.html Is that worth a news entry for guix pull? It has been a long time since xmonad released a new version, for those that stay on the stable release.
I was also hesitant to push the new version for this reason. Additionally
xmonad is part of Stackage, which we use where possible. How about adding
a xmonad-next package instead and make the switch when Stackage includes
the new version?

Cheers,
Lars
commit 0b099048a1f4c8aaf9a7830e089ff2e085a7ca92
Author: Lars-Dominik Braun <lars@6xq.net>
Date: Thu Nov 18 09:30:48 2021 +0100

dirty: xmonad upgrade

Toggle diff (95 lines)
diff --git a/gnu/packages/patches/xmonad-dynamic-linking.patch b/gnu/packages/patches/xmonad-dynamic-linking.patch
index 4f3386e53a..0aa91954ee 100644
--- a/gnu/packages/patches/xmonad-dynamic-linking.patch
+++ b/gnu/packages/patches/xmonad-dynamic-linking.patch
@@ -2,15 +2,15 @@ This patch is required for xmonad to make use of shared libraries.
 Without it, xmonad will not work since we do not (by default) use
 statically linked Haskell libraries.
 
-diff -ruN xmonad-0.15-a/src/XMonad/Core.hs xmonad-0.15-b/src/XMonad/Core.hs
---- xmonad-0.15-a/src/XMonad/Core.hs	1969-12-31 19:00:00.000000000 -0500
-+++ xmonad-0.15-b/src/XMonad/Core.hs	1969-12-31 19:00:00.000000000 -0500
-@@ -681,6 +681,8 @@
-        compileGHC bin dir errHandle =
-          runProcess "ghc" ["--make"
-                           , "xmonad.hs"
-+                          , "-dynamic"
-+                          , "-fPIC"
-                           , "-i"
-                           , "-ilib"
-                           , "-fforce-recomp"
+diff -Naur xmonad-0.17.0.orig/src/XMonad/Core.hs xmonad-0.17.0/src/XMonad/Core.hs
+--- xmonad-0.17.0.orig/src/XMonad/Core.hs	2001-09-09 03:46:40.000000000 +0200
++++ xmonad-0.17.0/src/XMonad/Core.hs	2021-11-13 10:40:17.840524866 +0100
+@@ -664,6 +664,8 @@
+   where
+     ghcArgs = [ "--make"
+               , "xmonad.hs"
++              , "-dynamic"
++              , "-fPIC"
+               , "-i" -- only look in @lib@
+               , "-ilib"
+               , "-fforce-recomp"
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index c6881154fe..d661307c4f 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -739,7 +739,7 @@ (define-public i3lock-fancy
 (define-public xmonad
   (package
     (name "xmonad")
-    (version "0.15")
+    (version "0.17.0")
     (synopsis "Tiling window manager")
     (source (origin
               (method url-fetch)
@@ -747,7 +747,7 @@ (define-public xmonad
                                   "xmonad-" version ".tar.gz"))
               (sha256
                (base32
-                "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
+                "04qspdz9w6xpw1npcmx2zx0595wc68q985pv4i0hvp32zillvdqy"))
               (patches (search-patches "xmonad-dynamic-linking.patch"))))
     (build-system haskell-build-system)
     (inputs
@@ -759,9 +759,7 @@ (define-public xmonad
            ghc-utf8-string
            ghc-x11))
     (arguments
-     `(#:cabal-revision
-       ("1" "0yqh96qqphllr0zyz5j93cij5w2qvf39xxnrb52pz0qz3pywz9wd")
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after
           'install 'install-xsession
@@ -865,18 +863,15 @@ (define-public yeganesh
 (define-public ghc-xmonad-contrib
   (package
     (name "ghc-xmonad-contrib")
-    (version "0.16")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://hackage/package/xmonad-contrib/"
                            "xmonad-contrib-" version ".tar.gz"))
        (sha256
-        (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
+        (base32 "11g1cyfgfvcmz35qhgi9wzxrk3br8m8b7qy3jvph4nnf6aj13wvy"))))
     (build-system haskell-build-system)
-    (arguments
-     `(#:cabal-revision
-       ("1" "0vimkby2gq6sgzxzbvz67caba609xqlv2ii2gi8a1cjrnn6ib011")))
     (propagated-inputs
      (list ghc-old-time
            ghc-random
@@ -886,6 +881,8 @@ (define-public ghc-xmonad-contrib
            ghc-x11
            ghc-x11-xft
            xmonad))
+    (native-inputs
+     (list ghc-quickcheck ghc-hspec hspec-discover))
     (home-page "https://xmonad.org")
     (synopsis "Third party extensions for xmonad")
     (description
J
J
John Kehayias wrote on 28 Dec 2021 20:15
(name . Lars-Dominik Braun)(address . lars@6xq.net)(address . 52784@debbugs.gnu.org)
nIjrGutqpVhj6vnSpYwjr978ZOodxFw1mY7fMyGpxRo6yb7XGfu6tHPE27hqOF4AIxSDwGobd5ZpegqIVEPzlvxpOdSsIvtp-KDJeAlbpTI=@protonmail.com
Hi Lars,

Thanks for taking a look and testing.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Tuesday, December 28th, 2021 at 5:24 AM, Lars-Dominik Braun wrote:

Toggle quote (8 lines)
> Hi John,
>
> thanks for your patches. I also upgraded xmonad locally (see
> attached patch), but I didn’t need the version bumps/new packages
> (i.e. xmonad’s test suite builds and runs fine). Are they really
> necessary?
>

I can confirm your patch also builds and checks fine (though didn't look at the log in much detail).

Taking a quick look at the new dependency, it is for some testing but seems optional: https://github.com/xmonad/xmonad/commit/031bbd62306e592ddd0768d4e5b1105bf5e81032So maybe that's why it builds/checks fine. Since we can easily add the needed packages, I would err on including it, what do you think?

I removed/added dependencies based on a fresh guix import and looking at the Hackage info for xmonad. I think some of the dependencies that were removed were due to older versions (or to support older GHC?) or I guess libraries that aren't needed anymore.

Toggle quote (8 lines)
> > Note that this new version has breaking configuration changes, detailed in their announcement: https://xmonad.org/news/2021/10/27/xmonad-0-17-0.htmlIs that worth a news entry for guix pull? It has been a long time since xmonad released a new version, for those that stay on the stable release.
>
> I was also hesitant to push the new version for this reason. Additionally
> xmonad is part of Stackage, which we use where possible. How about adding
> a xmonad-next package instead and make the switch when Stackage includes
> the new version?
>

We do tend to follow LTS Stackage, but I wasn't sure how something like XMonad fits since I imagine most people that use it aren't using Haskell otherwise. Also, since it has been a few years since they had a release, I thought it would be nice to have it.

Anyway, an xmonad-next could make the transition easier for anyone using the previous stable release. I've been using cabal but with an update in Guix would look to make my setup more Guix-y.

To summarize, I would opt for the changes in dependencies to follow upstream, and making a separate xmonad-next avoids further disruption anyway. Personally, I also wanted to submit those new packages as part of a whole lot of Haskell packages I will be submitting to get haskell-gi and taffybar in Guix.

Thanks,
John
J
J
John Kehayias wrote on 10 Jan 02:54 +0100
Re: [bug#52784] [PATCH 4/5 v2] Add xmonad-next and ghc-xmonad-contrib-next.
(name . Lars-Dominik Braun)(address . lars@6xq.net)(address . 52784@debbugs.gnu.org)
bzkz_nwtjgQCFbilnKcQWQDhKNY1tuWNmZJsSmoI5nicxtAypsQqEMeaYhyxjtd0Qiu3ZuyHafzS1lkD7A2NrToJm8ipDlzJq8VJ5JQc858=@protonmail.com
Hi Lars,

Here is version two of the patch (number 4/5) this time adding the updated xmonad and xmonad-contrib versions as new variables. I kept in the previous commit message of the changes relative to the current version (0.16), but wasn't sure if that was appropriate. The xmonad compile patch was added as a new patch and added to local.mk.

I don't use xmobar and wasn't sure about that, doesn't seem to have explicit dependencies on xmonad or xmonad-contrib. So I've left it as is, though I'm guessing would need to be rebased due to the line changes?

How does that look to you?

John
From 62cfaa7146783f51b891bdbddfad288d4b4f34ee Mon Sep 17 00:00:00 2001
From: John Kehayias <john.kehayias@protonmail.com>
Date: Sun, 9 Jan 2022 20:43:56 -0500
Subject: [PATCH] gnu: Add xmonad-next and ghc-xmonad-contrib-next.

* gnu/packages/wm.scm (xmonad-next): New variable. Compared to xmonad: Update
to 0.17.0.
[inputs]: Add GHC-DATA-DEFAULT-CLASS, remove GHC-EXTENSIBLE-EXCEPTIONS,
GHC-DATA-DEFAULT, GHC-SEMIGROUPS, and GHC-UTF8-STRING.
[native-inputs]: Add GHC-QUICKCHECK and GHC-QUICKCHECK-CLASSES.
(ghc-xmonad-contrib-next): New variable. Compared to ghc-xmonad-contrib:
Update to 0.17.0.
[propagated-inputs]: Remove GHC-OLD-TIME, GHC-EXTENSIBLE-EXCEPTIONS,
GHC-SEMIGROUPS.
[native-inputs]: Add GHC-QUICKCHECK and GHC-HSPEC.
* gnu/packages/patches/xmonad-next-dynamic-linking.patch: New patch. Update of
xmonad-dynamic-linking.patch to apply to xmonad-next.
* gnu/local.mk: Add it.
---
gnu/local.mk | 1 +
gnu/packages/wm.scm | 67 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 68 insertions(+)

Toggle diff (106 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index ca95c9e488..73c9871366 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1960,6 +1960,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/xfce4-settings-defaults.patch		\
   %D%/packages/patches/xgboost-use-system-dmlc-core.patch       \
   %D%/packages/patches/xmonad-dynamic-linking.patch		\
+  %D%/packages/patches/xmonad-next-dynamic-linking.patch	\
   %D%/packages/patches/xnnpack-system-libraries.patch		\
   %D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch		\
   %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index bf24dfa0d9..02e6af6599 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -48,6 +48,7 @@
 ;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com>
+;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -789,6 +790,51 @@ (define-public xmonad
 tiled on several screens.")
     (license license:bsd-3)))
 
+(define-public xmonad-next
+  (package
+    (name "xmonad-next")
+    (version "0.17.0")
+    (synopsis "Tiling window manager")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://hackage/package/xmonad/"
+                                  "xmonad-" version ".tar.gz"))
+              (sha256
+               (base32
+                "04qspdz9w6xpw1npcmx2zx0595wc68q985pv4i0hvp32zillvdqy"))
+              (patches (search-patches "xmonad-next-dynamic-linking.patch"))))
+    (build-system haskell-build-system)
+    (inputs (list ghc-data-default-class ghc-setlocale ghc-x11))
+    (native-inputs (list ghc-quickcheck ghc-quickcheck-classes))
+    (arguments
+     `(#: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)))))))))
+    (home-page "https://xmonad.org")
+    (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 license:bsd-3)))
+
 (define-public xmobar
   (package
     (name "xmobar")
@@ -893,6 +939,27 @@ (define-public ghc-xmonad-contrib
 tiling window manager for X.")
     (license license:bsd-3)))
 
+(define-public ghc-xmonad-contrib-next
+  (package
+    (name "ghc-xmonad-contrib-next")
+    (version "0.17.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://hackage/package/xmonad-contrib/"
+                           "xmonad-contrib-" version ".tar.gz"))
+       (sha256
+        (base32 "11g1cyfgfvcmz35qhgi9wzxrk3br8m8b7qy3jvph4nnf6aj13wvy"))))
+    (build-system haskell-build-system)
+    (propagated-inputs (list ghc-random ghc-x11 ghc-utf8-string ghc-x11-xft xmonad-next))
+    (native-inputs (list ghc-quickcheck ghc-hspec))
+    (home-page "https://xmonad.org")
+    (synopsis "Third party extensions for xmonad")
+    (description
+     "Third party tiling algorithms, configurations, and scripts to Xmonad, a
+tiling window manager for X.")
+    (license license:bsd-3)))
+
 (define-public evilwm
   (package
     (name "evilwm")
-- 
2.34.0
L
L
Lars-Dominik Braun wrote on 15 Jan 11:38 +0100
(name . John Kehayias)(address . john.kehayias@protonmail.com)(address . 52784@debbugs.gnu.org)
YeKkQRi9Xa3ucwx3@noor.fritz.box
Hi,

Toggle quote (1 lines)
> Here is version two of the patch (number 4/5) this time adding the updated xmonad and xmonad-contrib versions as new variables. I kept in the previous commit message of the changes relative to the current version (0.16), but wasn't sure if that was appropriate. The xmonad compile patch was added as a new patch and added to local.mk.
It would be nice if we could use inheritance to avoid duplicated
metadata. I implemented that on top of your changes in the attached patch,
so when the time comes we can just delete xmonad and rename xmonad-next
to xmonad. What do you think?
Toggle quote (1 lines)
> I don't use xmobar and wasn't sure about that, doesn't seem to have explicit dependencies on xmonad or xmonad-contrib. So I've left it as is, though I'm guessing would need to be rebased due to the line changes?
I tested it and the new version works fine for me.

Cheers,
Lars
Toggle diff (197 lines)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 7a62dbeacb..67e113aaa2 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -737,10 +737,10 @@ (define-public i3lock-fancy
 desktop environment.")
     (license license:expat)))
 
-(define-public xmonad
+(define-public xmonad-next
   (package
-    (name "xmonad")
-    (version "0.15")
+    (name "xmonad-next")
+    (version "0.17.0")
     (synopsis "Tiling window manager")
     (source (origin
               (method url-fetch)
@@ -748,21 +748,13 @@ (define-public xmonad
                                   "xmonad-" version ".tar.gz"))
               (sha256
                (base32
-                "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
-              (patches (search-patches "xmonad-dynamic-linking.patch"))))
+                "04qspdz9w6xpw1npcmx2zx0595wc68q985pv4i0hvp32zillvdqy"))
+              (patches (search-patches "xmonad-next-dynamic-linking.patch"))))
     (build-system haskell-build-system)
-    (inputs
-     (list ghc-extensible-exceptions
-           ghc-data-default
-           ghc-quickcheck
-           ghc-semigroups
-           ghc-setlocale
-           ghc-utf8-string
-           ghc-x11))
+    (inputs (list ghc-data-default-class ghc-setlocale ghc-x11))
+    (native-inputs (list ghc-quickcheck ghc-quickcheck-classes))
     (arguments
-     `(#:cabal-revision
-       ("1" "0yqh96qqphllr0zyz5j93cij5w2qvf39xxnrb52pz0qz3pywz9wd")
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
          (add-after
           'install 'install-xsession
@@ -790,50 +782,32 @@ (define-public xmonad
 tiled on several screens.")
     (license license:bsd-3)))
 
-(define-public xmonad-next
+(define-public xmonad
   (package
-    (name "xmonad-next")
-    (version "0.17.0")
-    (synopsis "Tiling window manager")
+    (inherit xmonad-next)
+    (name "xmonad")
+    (version "0.15")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://hackage/package/xmonad/"
                                   "xmonad-" version ".tar.gz"))
               (sha256
                (base32
-                "04qspdz9w6xpw1npcmx2zx0595wc68q985pv4i0hvp32zillvdqy"))
-              (patches (search-patches "xmonad-next-dynamic-linking.patch"))))
-    (build-system haskell-build-system)
-    (inputs (list ghc-data-default-class ghc-setlocale ghc-x11))
-    (native-inputs (list ghc-quickcheck ghc-quickcheck-classes))
+                "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
+              (patches (search-patches "xmonad-dynamic-linking.patch"))))
+    (inputs
+     (list ghc-extensible-exceptions
+           ghc-data-default
+           ghc-quickcheck
+           ghc-semigroups
+           ghc-setlocale
+           ghc-utf8-string
+           ghc-x11))
+    (native-inputs '())
     (arguments
-     `(#: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)))))))))
-    (home-page "https://xmonad.org")
-    (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 license:bsd-3)))
+     `(#:cabal-revision
+       ("1" "0yqh96qqphllr0zyz5j93cij5w2qvf39xxnrb52pz0qz3pywz9wd")
+       ,@(package-arguments xmonad-next)))))
 
 (define-public xmobar
   (package
@@ -908,30 +882,20 @@ (define-public yeganesh
 particular, it displays commonly-chosen options before uncommon ones.")
     (license license:bsd-3)))
 
-(define-public ghc-xmonad-contrib
+(define-public ghc-xmonad-contrib-next
   (package
-    (name "ghc-xmonad-contrib")
-    (version "0.16")
+    (name "ghc-xmonad-contrib-next")
+    (version "0.17.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://hackage/package/xmonad-contrib/"
                            "xmonad-contrib-" version ".tar.gz"))
        (sha256
-        (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
+        (base32 "11g1cyfgfvcmz35qhgi9wzxrk3br8m8b7qy3jvph4nnf6aj13wvy"))))
     (build-system haskell-build-system)
-    (arguments
-     `(#:cabal-revision
-       ("1" "0vimkby2gq6sgzxzbvz67caba609xqlv2ii2gi8a1cjrnn6ib011")))
-    (propagated-inputs
-     (list ghc-old-time
-           ghc-random
-           ghc-utf8-string
-           ghc-extensible-exceptions
-           ghc-semigroups
-           ghc-x11
-           ghc-x11-xft
-           xmonad))
+    (propagated-inputs (list ghc-random ghc-x11 ghc-utf8-string ghc-x11-xft xmonad-next))
+    (native-inputs (list ghc-quickcheck ghc-hspec))
     (home-page "https://xmonad.org")
     (synopsis "Third party extensions for xmonad")
     (description
@@ -939,26 +903,32 @@ (define-public ghc-xmonad-contrib
 tiling window manager for X.")
     (license license:bsd-3)))
 
-(define-public ghc-xmonad-contrib-next
+(define-public ghc-xmonad-contrib
   (package
-    (name "ghc-xmonad-contrib-next")
-    (version "0.17.0")
+    (inherit ghc-xmonad-contrib-next)
+    (name "ghc-xmonad-contrib")
+    (version "0.16")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://hackage/package/xmonad-contrib/"
                            "xmonad-contrib-" version ".tar.gz"))
        (sha256
-        (base32 "11g1cyfgfvcmz35qhgi9wzxrk3br8m8b7qy3jvph4nnf6aj13wvy"))))
-    (build-system haskell-build-system)
-    (propagated-inputs (list ghc-random ghc-x11 ghc-utf8-string ghc-x11-xft xmonad-next))
-    (native-inputs (list ghc-quickcheck ghc-hspec))
-    (home-page "https://xmonad.org")
-    (synopsis "Third party extensions for xmonad")
-    (description
-     "Third party tiling algorithms, configurations, and scripts to Xmonad, a
-tiling window manager for X.")
-    (license license:bsd-3)))
+        (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
+    (arguments
+     `(#:cabal-revision
+       ("1" "0vimkby2gq6sgzxzbvz67caba609xqlv2ii2gi8a1cjrnn6ib011")
+       ,@(package-arguments ghc-xmonad-contrib-next)))
+    (native-inputs '())
+    (propagated-inputs
+     (list ghc-old-time
+           ghc-random
+           ghc-utf8-string
+           ghc-extensible-exceptions
+           ghc-semigroups
+           ghc-x11
+           ghc-x11-xft
+           xmonad))))
 
 (define-public evilwm
   (package
J
J
John Kehayias wrote on 15 Jan 19:49 +0100
(name . Lars-Dominik Braun)(address . lars@6xq.net)(address . 52784@debbugs.gnu.org)
fQ2LTSbCDOdUr3GFsNHK2ZhqUeXEGie3ebWvHS3d8iSIKEEX6GStloi-3xLg2eQhOdcCRvBjtUQNx8tcRlaH2HYti16MS6dDaRhKSPwxQns=@protonmail.com
Hi Lars,

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Saturday, January 15th, 2022 at 5:38 AM, Lars-Dominik Braun wrote:

Toggle quote (10 lines)
> Hi,
>
> > Here is version two of the patch (number 4/5) this time adding the updated xmonad and xmonad-contrib versions as new variables. I kept in the previous commit message of the changes relative to the current version (0.16), but wasn't sure if that was appropriate. The xmonad compile patch was added as a new patch and added to local.mk.
>
> It would be nice if we could use inheritance to avoid duplicated
> metadata. I implemented that on top of your changes in the attached patch,
> so when the time comes we can just delete xmonad and rename xmonad-next
> to xmonad. What do you think?
>

Yes, that makes more sense, let's go with that.

Toggle quote (5 lines)
> > I don't use xmobar and wasn't sure about that, doesn't seem to have explicit dependencies on xmonad or xmonad-contrib. So I've left it as is, though I'm guessing would need to be rebased due to the line changes?
>
> I tested it and the new version works fine for me.
>

Ah, good to know. (I've been using polybar but have a huge stack of packages to add taffybar. I've been putting off submitting it because it is a lot of packages that I need to figure where each goes, but I'll get to it. If you were interested in trying out taffybar, let me know and I can make the WIP patches available for testing.)

Thanks for your work on this, I'll have to try moving my xmonad cabal setup to just Guix now.

John
L
L
Lars-Dominik Braun wrote on 17 Jan 20:32 +0100
(name . John Kehayias)(address . john.kehayias@protonmail.com)(address . 52784-done@debbugs.gnu.org)
YeXEPXqz7NweZV8J@noor.fritz.box
Hi John,

Toggle quote (1 lines)
> Yes, that makes more sense, let's go with that.
I merged your patches as 5387a9c00ef2f972c32ab4430a3f1879131b1652 and
following. Thank you!

Toggle quote (1 lines)
> Ah, good to know. (I've been using polybar but have a huge stack of packages to add taffybar. I've been putting off submitting it because it is a lot of packages that I need to figure where each goes, but I'll get to it. If you were interested in trying out taffybar, let me know and I can make the WIP patches available for testing.)
Sure, I can try out taffybar.

Cheers,
Lars
Closed
?
Your comment

This issue is archived.

To comment on this conversation send email to 52784@debbugs.gnu.org