[PATCH 1/3] gnu: Add ghc-hsyslog.

  • Open
  • quality assurance status badge
Details
One participant
  • pinoaffe
Owner
unassigned
Submitted by
pinoaffe
Severity
normal
P
P
pinoaffe wrote on 14 Sep 2023 12:39
(address . guix-patches@gnu.org)
874jjxhwbi.fsf@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-hsyslog): New variable.
---
gnu/packages/haskell-xyz.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (49 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index c02fd007f9..6d540aee54 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -33,6 +33,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1422,6 +1423,32 @@ (define-public ghc-case-insensitive
the resulting type will be insensitive to cases.")
(license license:bsd-3)))
+(define-public ghc-hsyslog
+ (package
+ (name "ghc-hsyslog")
+ (version "5.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "hsyslog" version))
+ (sha256
+ (base32
+ "1kkypn0dd92aqv8dr112bhkr9k9r9mchnyyvy41kvhj2zg447v1y"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "hsyslog")))
+ (arguments
+ `(#:cabal-revision ("1"
+ "0k1j46nk3z64zw4bqmvw5lgy16ih200m66rv4b6ygjqv7nglqq0b")))
+ (home-page "https://github.com/peti/hsyslog")
+ (synopsis "FFI interface to syslog(3) from POSIX.1-2008")
+ (description
+ "This package provides a Haskell interface to @code{syslog} as specified
+in POSIX.1-2008. The entire public API lives in @code{System.Posix.Syslog}.
+There is a set of exposed modules available underneath that one, which contain
+various implementation details that may be useful to other developers who want
+to implement syslog-related functionality. Users of @code{syslog}, however,
+do not need them.")
+ (license license:bsd-3)))
+
(define-public ghc-cassava
(package
(name "ghc-cassava")

base-commit: cf5cb0875b06b5823e9de8bbd01ddd8c0b0d15a7
--
2.41.0
P
P
pinoaffe wrote on 14 Sep 2023 12:42
[PATCH 2/3] gnu: Add ghc-twain.
(address . 65976@debbugs.gnu.org)
87zg1pghnc.fsf@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-twain): New variable.
---
gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (50 lines)
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 75b84b10a7..14cf16681c 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2022 Alice Brenon <alice.brenon@ens-lyon.fr>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -483,6 +484,35 @@ (define-public ghc-wai
communication between web applications and web servers.")
(license license:bsd-3)))
+(define-public ghc-twain
+ (package
+ (name "ghc-twain")
+ (version "2.1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "twain" version))
+ (sha256
+ (base32
+ "1hkzp2g671dagmv1qznkf3mw3l2mslckg7h0a8x8633h6i3j6br0"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "twain")))
+ (inputs (list ghc-aeson
+ ghc-case-insensitive
+ ghc-cookie
+ ghc-either
+ ghc-http-types
+ ghc-http2
+ ghc-vault
+ ghc-wai
+ ghc-wai-extra))
+ (native-inputs (list ghc-hspec ghc-hspec-discover ghc-hspec-wai))
+ (home-page "https://github.com/alexmingoia/twain#readme")
+ (synopsis "Tiny web application framework for WAI.")
+ (description
+ "Twain is tiny web application framework for WAI. It provides routing, parameter
+parsing, and an either-like monad for composing responses.")
+ (license license:bsd-3)))
+
(define-public ghc-wai-logger
(package
(name "ghc-wai-logger")
--
2.41.0
P
P
pinoaffe wrote on 14 Sep 2023 12:43
[PATCH 3/3] gnu: Add mailctl.
(address . 65976@debbugs.gnu.org)
87v8cdghm8.fsf@gmail.com
* gnu/packages/mail.scm (mailctl): New variable.
---
gnu/packages/mail.scm | 56 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)

Toggle diff (90 lines)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index ecaab1c7cd..a64da6a328 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -52,6 +52,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -112,6 +113,7 @@ (define-module (gnu packages mail)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
#:use-module (gnu packages haskell-xyz)
+ #:use-module (gnu packages haskell-web)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages language)
@@ -176,6 +178,7 @@ (define-module (gnu packages mail)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system guile)
+ #:use-module (guix build-system haskell)
#:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system pyproject)
@@ -1145,6 +1148,59 @@ (define-public offlineimap3
(define-public offlineimap
(deprecated-package "offlineimap" offlineimap3))
+(define-public mailctl
+ (package
+ (name "mailctl")
+ (version "0.8.8")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pdobsan/mailctl")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0zj1hcipb4d42rq3xl9qdx0ra94xlz6572y35m7f9bgkc35plnv8"))))
+ (build-system haskell-build-system)
+ (home-page "https://github.com/pdobsan/mailctl")
+ (arguments `(#:phases (modify-phases %standard-phases
+ ;; The mailctl.cabal file specifies a minimum cabal
+ ;; version of 3.8 (which is newer than the cabal
+ ;; packaged in guix), but doesn't use any new
+ ;; features and it builds with 3.6.
+ (add-after 'unpack 'patch-cabal-version
+ (lambda _
+ (substitute* "mailctl.cabal"
+ (("3.8") "3.6")))))))
+ (inputs (list ghc-aeson
+ ghc-hsyslog
+ ghc-http-conduit
+ ghc-network-uri
+ ghc-optparse-applicative
+ ghc-pretty-simple
+ ghc-twain
+ ghc-utf8-string
+ ghc-warp
+ ghc-yaml))
+ (synopsis "Authorize and renew OAuth2 credentials for IMAP/SMTP clients")
+ (description "@code{mailctl} provides IMAP/SMTP clients with the
+capabilities of renewal and authorization of OAuth2 credentials.
+
+Many IMAP/SMTP clients, like @code{offlineimap}, @code{msmtp}, @code{fdm},
+@code{isync}, @code{neomutt} or @code{mutt} can use OAuth2 access tokens but
+lack the ability to renew and/or authorize OAuth2 credentials. The purpose of
+@code{mailctl} is to provide these missing capabilities by acting as a kind of
+smart password manager. In particular, access token renewal happens
+automatically in the background transparent to the user.
+
+If an IMAP/SMTP client cannot use an OAuth2 access token itself it may be
+\"wrapped\" with @code{fdm} and @code{msmtp} with the help of @code{mailctl}.
+
+@code{mailctl} also has some functionalities to manage the orchestration of a
+mailing system comprised of @code{msmtp}, @code{fdm}, and @code{mutt} or
+similar ones.")
+ (license license:bsd-3)))
+
(define-public emacs-mew
(let ((commit "35772ee0b44dd7e56b0f3899b27fa545b2bc6f03")
(revision "1"))
--
2.41.0
P
P
pinoaffe wrote on 25 Sep 2023 22:21
[PATCH v3 2/4] gnu: Add ghc-twain.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
8af1311eb4d516ae2c74f7d6e4601523cf42aabe.1695671343.git.pinoaffe@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-twain): New variable.
---
gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (50 lines)
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 75b84b10a7..95f2669586 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2022 Alice Brenon <alice.brenon@ens-lyon.fr>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -483,6 +484,35 @@ (define-public ghc-wai
communication between web applications and web servers.")
(license license:bsd-3)))
+(define-public ghc-twain
+ (package
+ (name "ghc-twain")
+ (version "2.1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "twain" version))
+ (sha256
+ (base32
+ "1hkzp2g671dagmv1qznkf3mw3l2mslckg7h0a8x8633h6i3j6br0"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "twain")))
+ (inputs (list ghc-aeson
+ ghc-case-insensitive
+ ghc-cookie
+ ghc-either
+ ghc-http-types
+ ghc-http2
+ ghc-vault
+ ghc-wai
+ ghc-wai-extra))
+ (native-inputs (list ghc-hspec ghc-hspec-discover ghc-hspec-wai))
+ (home-page "https://github.com/alexmingoia/twain#readme")
+ (synopsis "Tiny web application framework for WAI")
+ (description
+ "Twain is tiny web application framework for WAI. It provides routing,
+parameter parsing, and an either-like monad for composing responses.")
+ (license license:bsd-3)))
+
(define-public ghc-wai-logger
(package
(name "ghc-wai-logger")
--
2.41.0
P
P
pinoaffe wrote on 25 Sep 2023 22:21
[PATCH v3 1/4] gnu: Add ghc-hsyslog.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
6ed1b70e5e02a6c46aedf8912ed8d3d5bfa247a8.1695671343.git.pinoaffe@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-hsyslog): New variable.
---
gnu/packages/haskell-xyz.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (49 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index c02fd007f9..6d540aee54 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -33,6 +33,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1422,6 +1423,32 @@ (define-public ghc-case-insensitive
the resulting type will be insensitive to cases.")
(license license:bsd-3)))
+(define-public ghc-hsyslog
+ (package
+ (name "ghc-hsyslog")
+ (version "5.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "hsyslog" version))
+ (sha256
+ (base32
+ "1kkypn0dd92aqv8dr112bhkr9k9r9mchnyyvy41kvhj2zg447v1y"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "hsyslog")))
+ (arguments
+ `(#:cabal-revision ("1"
+ "0k1j46nk3z64zw4bqmvw5lgy16ih200m66rv4b6ygjqv7nglqq0b")))
+ (home-page "https://github.com/peti/hsyslog")
+ (synopsis "FFI interface to syslog(3) from POSIX.1-2008")
+ (description
+ "This package provides a Haskell interface to @code{syslog} as specified
+in POSIX.1-2008. The entire public API lives in @code{System.Posix.Syslog}.
+There is a set of exposed modules available underneath that one, which contain
+various implementation details that may be useful to other developers who want
+to implement syslog-related functionality. Users of @code{syslog}, however,
+do not need them.")
+ (license license:bsd-3)))
+
(define-public ghc-cassava
(package
(name "ghc-cassava")

base-commit: cf5cb0875b06b5823e9de8bbd01ddd8c0b0d15a7
--
2.41.0
P
P
pinoaffe wrote on 25 Sep 2023 22:21
[PATCH v3 3/4] gnu: Add ghc-strings.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
2535d7312efd2da5c6032cf4ec49b4502399db3d.1695671343.git.pinoaffe@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-strings): New variable.
---
gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 6d540aee54..4328363a01 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -15961,6 +15961,32 @@ (define-public ghc-base64
(additional support for RFC 7049 standards)")
(license license:bsd-3)))
+(define-public ghc-strings
+ (package
+ (name "ghc-strings")
+ (version "1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "strings" version))
+ (sha256
+ (base32
+ "1xz9v3w5s13yhk7iy9dw6i8s2jc6c0b1ci96dwmcq9a1n3l3ng4v"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "strings")))
+ (arguments
+ `(#:cabal-revision ("1"
+ "0jk1g71yzc5wpkr3vvhnxak61nqvisc5n90ggv6lmz4wqpqzdd0v")))
+ (home-page "https://hub.darcs.net/scravy/strings")
+ (synopsis
+ "Functions for working with strings, including Text and ByteString")
+ (description
+ "This package provides various functions for working with strings, such
+as @code{join}, @code{split}, @code{toUppercase}, et cetera. The functions in
+this package work with all kinds of strings such as @code{Text},
+@code{ByteString}, @code{S tring}, and their respective lazy counter parts.
+There is also an interface which is agnostic of the underlying string type.")
+ (license license:expat)))
+
(define-public ghc-ordered-containers
(package
(name "ghc-ordered-containers")
--
2.41.0
P
P
pinoaffe wrote on 25 Sep 2023 22:21
[PATCH v3 4/4] gnu: Add mailctl.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
150f319bd7c6926ae3a6c9e0352852526357cfa5.1695671343.git.pinoaffe@gmail.com
* gnu/packages/mail.scm (mailctl): New variable.
---
gnu/packages/mail.scm | 58 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)

Toggle diff (92 lines)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index ecaab1c7cd..4fd3e80d90 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -52,6 +52,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -112,6 +113,7 @@ (define-module (gnu packages mail)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
#:use-module (gnu packages haskell-xyz)
+ #:use-module (gnu packages haskell-web)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages language)
@@ -176,6 +178,7 @@ (define-module (gnu packages mail)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system guile)
+ #:use-module (guix build-system haskell)
#:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system pyproject)
@@ -1145,6 +1148,61 @@ (define-public offlineimap3
(define-public offlineimap
(deprecated-package "offlineimap" offlineimap3))
+(define-public mailctl
+ (package
+ (name "mailctl")
+ (version "0.9.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pdobsan/mailctl")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "18mjlvf8h0afirlr2pw30p9cpcyhfw4g41c0liqbsan684cj3dk1"))))
+ (build-system haskell-build-system)
+ (home-page "https://github.com/pdobsan/mailctl")
+ (arguments `(#:phases (modify-phases %standard-phases
+ ;; The mailctl.cabal file specifies a minimum cabal
+ ;; version of 3.8 (which is newer than the cabal
+ ;; packaged in guix), but doesn't use any new
+ ;; features and it builds with 3.6.
+ (add-after 'unpack 'patch-cabal-version
+ (lambda _
+ (substitute* "mailctl.cabal"
+ (("3.8") "3.6")))))))
+ (inputs (list ghc-aeson
+ ghc-hsyslog
+ ghc-http-conduit
+ ghc-network-uri
+ ghc-optparse-applicative
+ ghc-pretty-simple
+ ghc-twain
+ ghc-base64
+ ghc-strings
+ ghc-utf8-string
+ ghc-warp
+ ghc-yaml))
+ (synopsis "Authorize and renew OAuth2 credentials for IMAP/SMTP clients")
+ (description "@code{mailctl} provides IMAP/SMTP clients with the
+capabilities of renewal and authorization of OAuth2 credentials.
+
+Many IMAP/SMTP clients, like @code{offlineimap}, @code{msmtp}, @code{fdm},
+@code{isync}, @code{neomutt} or @code{mutt} can use OAuth2 access tokens but
+lack the ability to renew and/or authorize OAuth2 credentials. The purpose of
+@code{mailctl} is to provide these missing capabilities by acting as a kind of
+smart password manager. In particular, access token renewal happens
+automatically in the background transparent to the user.
+
+If an IMAP/SMTP client cannot use an OAuth2 access token itself it may be
+\"wrapped\" with @code{fdm} and @code{msmtp} with the help of @code{mailctl}.
+
+@code{mailctl} also has some functionalities to manage the orchestration of a
+mailing system comprised of @code{msmtp}, @code{fdm}, and @code{mutt} or
+similar ones.")
+ (license license:bsd-3)))
+
(define-public emacs-mew
(let ((commit "35772ee0b44dd7e56b0f3899b27fa545b2bc6f03")
(revision "1"))
--
2.41.0
P
P
pinoaffe wrote on 24 Oct 2023 11:24
[PATCH v4 1/4] gnu: Add ghc-twain.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
4149766749298f89bf699a9484b0ce8c5755083a.1698139370.git.pinoaffe@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-twain): New variable.
---
gnu/packages/haskell-web.scm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

Toggle diff (52 lines)
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 75b84b10a7..95f2669586 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2022 Alice Brenon <alice.brenon@ens-lyon.fr>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -483,6 +484,35 @@ (define-public ghc-wai
communication between web applications and web servers.")
(license license:bsd-3)))
+(define-public ghc-twain
+ (package
+ (name "ghc-twain")
+ (version "2.1.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "twain" version))
+ (sha256
+ (base32
+ "1hkzp2g671dagmv1qznkf3mw3l2mslckg7h0a8x8633h6i3j6br0"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "twain")))
+ (inputs (list ghc-aeson
+ ghc-case-insensitive
+ ghc-cookie
+ ghc-either
+ ghc-http-types
+ ghc-http2
+ ghc-vault
+ ghc-wai
+ ghc-wai-extra))
+ (native-inputs (list ghc-hspec ghc-hspec-discover ghc-hspec-wai))
+ (home-page "https://github.com/alexmingoia/twain#readme")
+ (synopsis "Tiny web application framework for WAI")
+ (description
+ "Twain is tiny web application framework for WAI. It provides routing,
+parameter parsing, and an either-like monad for composing responses.")
+ (license license:bsd-3)))
+
(define-public ghc-wai-logger
(package
(name "ghc-wai-logger")

base-commit: 7383d15641f17af5a8c656a4ad592138abc7d5ec
--
2.41.0
P
P
pinoaffe wrote on 24 Oct 2023 11:24
[PATCH v4 2/4] gnu: Add ghc-hsyslog.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
4557f517b38aa8072dba0ec1edd1f9d5abd0c59c.1698139370.git.pinoaffe@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-hsyslog): New variable.
---
gnu/packages/haskell-xyz.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)

Toggle diff (47 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index c02fd007f9..6d540aee54 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -33,6 +33,7 @@
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2023 zamfofex <zamfofex@twdb.moe>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1422,6 +1423,32 @@ (define-public ghc-case-insensitive
the resulting type will be insensitive to cases.")
(license license:bsd-3)))
+(define-public ghc-hsyslog
+ (package
+ (name "ghc-hsyslog")
+ (version "5.0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "hsyslog" version))
+ (sha256
+ (base32
+ "1kkypn0dd92aqv8dr112bhkr9k9r9mchnyyvy41kvhj2zg447v1y"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "hsyslog")))
+ (arguments
+ `(#:cabal-revision ("1"
+ "0k1j46nk3z64zw4bqmvw5lgy16ih200m66rv4b6ygjqv7nglqq0b")))
+ (home-page "https://github.com/peti/hsyslog")
+ (synopsis "FFI interface to syslog(3) from POSIX.1-2008")
+ (description
+ "This package provides a Haskell interface to @code{syslog} as specified
+in POSIX.1-2008. The entire public API lives in @code{System.Posix.Syslog}.
+There is a set of exposed modules available underneath that one, which contain
+various implementation details that may be useful to other developers who want
+to implement syslog-related functionality. Users of @code{syslog}, however,
+do not need them.")
+ (license license:bsd-3)))
+
(define-public ghc-cassava
(package
(name "ghc-cassava")
--
2.41.0
P
P
pinoaffe wrote on 24 Oct 2023 11:24
[PATCH v4 3/4] gnu: Add ghc-strings.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
91ec946613afc7f9259354c043b4fd6ced4242ef.1698139370.git.pinoaffe@gmail.com
* gnu/packages/haskell-xyz.scm (ghc-strings): New variable.
---
gnu/packages/haskell-xyz.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (39 lines)
diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm
index 6d540aee54..4328363a01 100644
--- a/gnu/packages/haskell-xyz.scm
+++ b/gnu/packages/haskell-xyz.scm
@@ -15961,6 +15961,32 @@ (define-public ghc-base64
(additional support for RFC 7049 standards)")
(license license:bsd-3)))
+(define-public ghc-strings
+ (package
+ (name "ghc-strings")
+ (version "1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (hackage-uri "strings" version))
+ (sha256
+ (base32
+ "1xz9v3w5s13yhk7iy9dw6i8s2jc6c0b1ci96dwmcq9a1n3l3ng4v"))))
+ (build-system haskell-build-system)
+ (properties '((upstream-name . "strings")))
+ (arguments
+ `(#:cabal-revision ("1"
+ "0jk1g71yzc5wpkr3vvhnxak61nqvisc5n90ggv6lmz4wqpqzdd0v")))
+ (home-page "https://hub.darcs.net/scravy/strings")
+ (synopsis
+ "Functions for working with strings, including Text and ByteString")
+ (description
+ "This package provides various functions for working with strings, such
+as @code{join}, @code{split}, @code{toUppercase}, et cetera. The functions in
+this package work with all kinds of strings such as @code{Text},
+@code{ByteString}, @code{S tring}, and their respective lazy counter parts.
+There is also an interface which is agnostic of the underlying string type.")
+ (license license:expat)))
+
(define-public ghc-ordered-containers
(package
(name "ghc-ordered-containers")
--
2.41.0
P
P
pinoaffe wrote on 24 Oct 2023 11:24
[PATCH v4 4/4] gnu: Add mailctl.
(address . 65976@debbugs.gnu.org)(name . pinoaffe)(address . pinoaffe@gmail.com)
455fe91144c3e9bb8337523c5ccf525b54277043.1698139370.git.pinoaffe@gmail.com
* gnu/packages/mail.scm (mailctl): New variable.
---
gnu/packages/mail.scm | 58 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)

Toggle diff (92 lines)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 9f410047e2..78bff0546c 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -54,6 +54,7 @@
;;; Copyright © 2023 Timo Wilken <guix@twilken.net>
;;; Copyright © 2023 Arjan Adriaanse <arjan@adriaan.se>
;;; Copyright © 2023 Wilko Meyer <w@wmeyer.eu>
+;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -115,6 +116,7 @@ (define-module (gnu packages mail)
#:use-module (gnu packages guile)
#:use-module (gnu packages guile-xyz)
#:use-module (gnu packages haskell-xyz)
+ #:use-module (gnu packages haskell-web)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages language)
@@ -179,6 +181,7 @@ (define-module (gnu packages mail)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system guile)
+ #:use-module (guix build-system haskell)
#:use-module (guix build-system meson)
#:use-module (guix build-system perl)
#:use-module (guix build-system pyproject)
@@ -1148,6 +1151,61 @@ (define-public offlineimap3
(define-public offlineimap
(deprecated-package "offlineimap" offlineimap3))
+(define-public mailctl
+ (package
+ (name "mailctl")
+ (version "0.9.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pdobsan/mailctl")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "18mjlvf8h0afirlr2pw30p9cpcyhfw4g41c0liqbsan684cj3dk1"))))
+ (build-system haskell-build-system)
+ (home-page "https://github.com/pdobsan/mailctl")
+ (arguments `(#:phases (modify-phases %standard-phases
+ ;; The mailctl.cabal file specifies a minimum cabal
+ ;; version of 3.8 (which is newer than the cabal
+ ;; packaged in guix), but doesn't use any new
+ ;; features and it builds with 3.6.
+ (add-after 'unpack 'patch-cabal-version
+ (lambda _
+ (substitute* "mailctl.cabal"
+ (("3.8") "3.6")))))))
+ (inputs (list ghc-aeson
+ ghc-hsyslog
+ ghc-http-conduit
+ ghc-network-uri
+ ghc-optparse-applicative
+ ghc-pretty-simple
+ ghc-twain
+ ghc-base64
+ ghc-strings
+ ghc-utf8-string
+ ghc-warp
+ ghc-yaml))
+ (synopsis "Authorize and renew OAuth2 credentials for IMAP/SMTP clients")
+ (description "@code{mailctl} provides IMAP/SMTP clients with the
+capabilities of renewal and authorization of OAuth2 credentials.
+
+Many IMAP/SMTP clients, like @code{offlineimap}, @code{msmtp}, @code{fdm},
+@code{isync}, @code{neomutt} or @code{mutt} can use OAuth2 access tokens but
+lack the ability to renew and/or authorize OAuth2 credentials. The purpose of
+@code{mailctl} is to provide these missing capabilities by acting as a kind of
+smart password manager. In particular, access token renewal happens
+automatically in the background transparent to the user.
+
+If an IMAP/SMTP client cannot use an OAuth2 access token itself it may be
+\"wrapped\" with @code{fdm} and @code{msmtp} with the help of @code{mailctl}.
+
+@code{mailctl} also has some functionalities to manage the orchestration of a
+mailing system comprised of @code{msmtp}, @code{fdm}, and @code{mutt} or
+similar ones.")
+ (license license:bsd-3)))
+
(define-public emacs-mew
(let ((commit "35772ee0b44dd7e56b0f3899b27fa545b2bc6f03")
(revision "1"))
--
2.41.0
?