;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
+;;; Copyright © 2016 ng0 <ngillmann@runbox.com>
;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016 John Darrington <jmd@gnu.org>
+;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages databases)
#:use-module (gnu packages dejagnu)
+ #:use-module (gnu packages dns)
+ #:use-module (gnu packages documentation)
#:use-module (gnu packages emacs)
#:use-module (gnu packages enchant)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages groff)
#:use-module (gnu packages gsasl)
#:use-module (gnu packages gtk)
#:use-module (gnu packages guile)
#:use-module (gnu packages flex)
#:use-module (gnu packages libcanberra)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages libidn)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages lua)
#:use-module (gnu packages m4)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages flex)
#:use-module (gnu packages gdb)
+ #:use-module (gnu packages man)
#:use-module (gnu packages samba)
+ #:use-module (gnu packages screen)
#:use-module (gnu packages tls)
#:use-module (gnu packages networking)
#:use-module (gnu packages web)
#:use-module ((guix licenses)
#:select (gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
non-copyleft (expat . license:expat) bsd-3
- public-domain))
+ public-domain bsd-4 isc (openssl . license:openssl)
+ bsd-2))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
(define-public mutt
(package
(name "mutt")
- (version "1.7.0")
+ (version "1.7.1")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-"
version ".tar.gz"))
(sha256
(base32
- "0idkamdiwj9fgqaz1vzkfg78cnmkzp74skv0ibw2xjfq6ds9hghx"))
+ "1pyns0xw52s4yma1a93pdcl4dirs55q2m1hd7w1r11nlhf7giip9"))
(patches (search-patches "mutt-store-references.patch"))))
(build-system gnu-build-system)
(inputs
(define-public offlineimap
(package
(name "offlineimap")
- (version "7.0.6")
+ (version "7.0.8")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1msg0v5i3v4mvjm2c5alzz91dk5y20h4xdr60lcz3507fv80407m"))))
+ "0smxh5ag3cbn92kp49jq950j5m2pivs9kr04prpd1lw62hy7gnhr"))))
(build-system python-build-system)
+ (native-inputs
+ `(("asciidoc" ,asciidoc)
+ ("libxslt" ,libxslt))) ; for xsltproc
(inputs `(("python2-pysqlite" ,python2-pysqlite)
("python2-six" ,python2-six)))
(arguments
#:tests? #f
#:phases
(modify-phases %standard-phases
- (add-after 'install 'wrap-binary
- (lambda* (#:key inputs outputs #:allow-other-keys)
+ (add-after 'build 'build-documentation
+ (lambda _
+ (substitute* "docs/Makefile"
+ ;; Prevent xmllint and xsltproc from downloading a DTD file.
+ (("a2x -v") "a2x --no-xmllint --xsltproc-opts=--nonet -v"))
+ (zero? (system* "make" "-C" "docs" "man"))))
+ (add-after 'install 'install-documentation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (man (string-append out "/share/man")))
+ (install-file "docs/offlineimap.1" (string-append man "/man1"))
+ (install-file "docs/offlineimapui.7" (string-append man "/man7"))
+ #t)))
+ (add-after 'install-documentation 'wrap-binary
+ (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin/offlineimap")))
(wrap-program bin
@code{notmuch} mail. It is written in Python using the @code{urwid} toolkit.")
(license gpl3+)))
+(define-public notifymuch
+ (let
+ ((commit "9d4aaf54599282ce80643b38195ff501120807f0")
+ (revision "1"))
+ (package
+ (name "notifymuch")
+ (version (string-append "0.1-" revision "." (string-take commit 7)))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kspi/notifymuch.git")
+ (commit commit)))
+ (sha256
+ (base32
+ "1lssr7iv43mp5v6nzrfbqlfzx8jcc7m636wlfyhhnd8ydd39n6k4"))
+ (file-name (string-append name "-" version "-checkout"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-notmuch" ,python-notmuch)
+ ("python-pygobject" ,python-pygobject)
+ ("gobject-introspection" ,gobject-introspection)
+ ("libnotify" ,libnotify)
+ ("gtk+" ,gtk+)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'wrap-binary
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin/notifymuch")))
+ (wrap-program bin
+ `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
+ `("GI_TYPELIB_PATH" ":" prefix
+ (,(getenv "GI_TYPELIB_PATH")
+ ,(string-append out "/lib/girepository-1.0")))))
+ #t)))))
+ (home-page "https://github.com/kspi/notifymuch")
+ (synopsis "Displays notifications for changes in the notmuch email database")
+ (description "notifymuch displays desktop notifications for messages in
+the notmuch database. The notifications are sent using libnotify to a
+notification daemon. The query to find messages to send a notification about
+is configurable, and a notification for the same message will not be send
+within a configurable period (defaults to 48 hours). To use notifymuch, run
+@command{notifymuch} after new mail is indexed, this can be automated by
+invoking @command{notifymuch} from the post-new hook.")
+ (license gpl3))))
+
(define-public notmuch
(package
(name "notmuch")
- (version "0.22.1")
+ (version "0.23.1")
(source (origin
(method url-fetch)
(uri (string-append "https://notmuchmail.org/releases/notmuch-"
version ".tar.gz"))
(sha256
(base32
- "0jwpda3q023dn3sp41n8648951i7iagfv8zzpriv7hpkjivlafg7"))))
+ "106ijsnilqf8760z4cq99rqzjsvyaw86d0lgnzz7v95gm4d2l0g8"))))
(build-system gnu-build-system)
(arguments
- '(#:tests? #f ; FIXME: 694 tests; 170 fail and 100 are skipped
- ; with perl input: 50 fail and 100 are skipped
+ '(#:make-flags (list "V=1") ; Verbose test output.
#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'patch-notmuch-lib.el
+ (lambda _
+ (substitute* "emacs/notmuch-lib.el"
+ (("/bin/sh") (which "sh")))
+ #t))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(setenv "CC" "gcc")
(let ((out (assoc-ref outputs "out")))
(zero? (system* "./configure"
- (string-append "--prefix=" out)))))))))
+ (string-append "--prefix=" out))))))
+ (add-before 'check 'prepare-test-environment
+ (lambda _
+ (setenv "TEST_CC" "gcc")
+ ;; Patch various inline shell invocations.
+ (substitute* (find-files "test" "\\.sh$")
+ (("/bin/sh") (which "sh")))
+ #t)))))
(native-inputs
`(("bash-completion" ,bash-completion)
- ("emacs" ,emacs-minimal)
+ ("emacs" ,emacs-no-x) ; Minimal lacks libxml, needed for some tests.
("pkg-config" ,pkg-config)
("python" ,python-2)
("python-docutils" ,python2-docutils)
- ("python-sphinx" ,python2-sphinx)))
+ ("python-sphinx" ,python2-sphinx)
+
+ ;; The following are required for tests only.
+ ("which" ,which)
+ ("dtach" ,dtach)
+ ("gnupg" ,gnupg)
+ ("man" ,man-db)
+ ("perl" ,perl)))
(inputs
`(("glib" ,glib)
("gmime" ,gmime)
("talloc" ,talloc)
("xapian" ,xapian)
("zlib" ,zlib)))
- (home-page "http://notmuchmail.org/")
+ (home-page "https://notmuchmail.org/")
(synopsis "Thread-based email index, search, and tagging")
(description
"Notmuch is a command-line based program for indexing, searching, read-
(define-public python-notmuch
(package
(name "python-notmuch")
- (version "0.22.1")
+ (version (package-version notmuch))
;; Notmuch python bindings are now unavailable on pypi. The
;; bindings are distributed via the notmuch release tarball.
(source (package-source notmuch))
(("libnotmuch\\.so\\.")
(string-append notmuch "/lib/libnotmuch.so.")))
#t))))))
- (home-page "http://notmuchmail.org/")
+ (home-page (package-home-page notmuch))
(synopsis "Python bindings of the Notmuch mail indexing library")
(description
"This package provides Python bindings to use the Notmuch mail indexing
#t)))
#:tests? #f)) ;; There are no tests indicating a successful
;; build. Some tests of basic locking mechanisms provided by the
- ;; filesystem are performed during 'make install'. However, these
+ ;; file system are performed during 'make install'. However, these
;; are performed before the actual build process.
(build-system gnu-build-system)
(inputs `(("exim" ,exim)))
etc; plus other capabilities including support for MIME and
powerful user customization features.")
(license gpl2+)))
+
+
+(define-public sendmail
+ (package
+ (name "sendmail")
+ (version "8.15.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "ftp://ftp.sendmail.org/pub/sendmail/sendmail."
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0fdl9ndmspqspdlmghzxlaqk56j3yajk52d7jxcg21b7sxglpy94"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'replace-/bin/sh
+ (lambda _
+ (substitute*
+ (append
+ (list "smrsh/smrsh.c" "sendmail/conf.c" "contrib/mailprio"
+ "contrib/mmuegel" "devtools/bin/configure.sh")
+ (find-files "." ".*\\.m4")
+ (find-files "." ".*\\.cf"))
+ (("/bin/sh") (which "bash")))
+
+ (substitute* "devtools/bin/Build"
+ (("SHELL=/bin/sh") (string-append "SHELL=" (which "bash"))))
+ #t))
+ (replace 'configure
+ (lambda _
+
+ ;; Render harmless any attempts to chown or chgrp
+ (substitute* "devtools/bin/install.sh"
+ (("owner=\\$2") "owner=''")
+ (("group=\\$2") "group=''"))
+
+ (with-output-to-file "devtools/Site/site.config.m4"
+ (lambda ()
+ (format #t "
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-g -O2')
+define(`confLIBS', `-lresolv')
+define(`confINSTALL', `~a/devtools/bin/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confINST_DEP', `')
+" (getcwd))))))
+ (replace 'build
+ (lambda _
+ (and (zero? (system* "sh" "Build"))
+ (with-directory-excursion "cf/cf"
+ (begin
+ (copy-file "generic-linux.mc" "sendmail.mc")
+ (zero? (system* "sh" "Build" "sendmail.cf")))))))
+ (add-before 'install 'pre-install
+ (lambda _
+ (let ((out (assoc-ref %outputs "out")))
+ (mkdir-p (string-append out "/usr/bin"))
+ (mkdir-p (string-append out "/usr/sbin"))
+ (mkdir-p (string-append out "/etc/mail"))
+ (setenv "DESTDIR" out)
+ (with-directory-excursion "cf/cf"
+ (zero? (system* "sh" "Build" "install-cf")))))))
+ ;; There is no make check. There are some post installation tests, but those
+ ;; require root privileges
+ #:tests? #f))
+ (inputs
+ `(("m4" ,m4)
+ ("perl" ,perl)))
+ (home-page "http://sendmail.org")
+ (synopsis
+ "Highly configurable Mail Transfer Agent (MTA)")
+ (description
+ "Sendmail is a mail transfer agent (MTA) originally developed by Eric
+Allman. It is highly configurable and supports many delivery methods and many
+transfer protocols.")
+ (license (non-copyleft "file://LICENSE"
+ "See LICENSE in the distribution."))))
+
+(define-public opensmtpd
+ (package
+ (name "opensmtpd")
+ (version "5.9.2p1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://www.opensmtpd.org/archives/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "07d7f1m5sxyz6mkk228rcm7fsf7350994ayvmhgph333q5rz48im"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("bdb" ,bdb)
+ ("libressl" ,libressl)
+ ("libevent" ,libevent)
+ ("libasr" ,libasr)
+ ("linux-pam" ,linux-pam)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("bison" ,bison)))
+ (arguments
+ `(#:configure-flags (list "--with-table-db" "--localstatedir=/var"
+ "--with-user-smtpd=smtpd" "--with-user-queue=smtpq"
+ "--with-group-queue=smtpq")
+ #:phases
+ (modify-phases %standard-phases
+ ;; OpenSMTPD provides a single utility smtpctl to control the daemon and
+ ;; the local submission subsystem. To accomodate systems that require
+ ;; historical interfaces such as sendmail, newaliases or makemap, the
+ ;; smtpctl utility can operate in compatibility mode if called with the
+ ;; historical name.
+ (add-after 'install 'install-compabilitymode
+ (lambda _
+ (let* ((out (assoc-ref %outputs "out"))
+ (sbin (string-append out "/sbin/")))
+ (for-each (lambda (cmd)
+ (symlink "smtpctl" (string-append sbin cmd)))
+ '("makemap" "sendmail" "send-mail"
+ "newaliases" "mailq")))
+ #t)))))
+ (synopsis "Lightweight SMTP daemon")
+ (description
+ "OpenSMTPD is an implementation of the server-side SMTP protocol, with
+some additional standard extensions. It allows ordinary machines to exchange
+e-mails with other systems speaking the SMTP protocol.")
+ (home-page "https://www.opensmtpd.org")
+ (license (list bsd-2 bsd-3 bsd-4 (non-copyleft "file://COPYING")
+ public-domain isc license:openssl))))
+
+(define-public opensmtpd-extras
+ (package
+ (name "opensmtpd-extras")
+ (version "5.7.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://www.opensmtpd.org/archives/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1kld4hxgz792s0cb2gl7m2n618ikzqkj88w5dhaxdrxg4x2c4vdm"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libressl" ,libressl)
+ ("libevent" ,libevent)
+ ("libasr" ,libasr)
+ ("python-2" ,python-2)
+ ("opensmtpd" ,opensmtpd)
+ ("perl" ,perl)
+ ("lua" ,lua)
+ ("postgresql" ,postgresql)
+ ("sqlite" ,sqlite)
+ ("linux-pam" ,linux-pam)))
+ (native-inputs
+ `(("bison" ,bison)
+ ("pkg-config" ,pkg-config)
+ ("groff" ,groff)
+ ("automake" ,automake)
+ ("autoconf" ,autoconf)))
+ (arguments
+ `(;; We have to configure it like this because the default checks for for example
+ ;; python in /usr/local/bin, /usr/bin and fails otherwise.
+ #:configure-flags (list
+ "--with-filter-clamav" "--with-filter-dkim-signer"
+ "--with-filter-dnsbl" "--with-filter-lua"
+ "--with-filter-monkey" "--with-filter-pause"
+ "--with-filter-perl" "--with-filter-python"
+ "--with-filter-regex" "--with-filter-spamassassin"
+ "--with-filter-stub" "--with-filter-trace"
+ "--with-filter-void"
+
+ "--with-queue-null" "--with-queue-python"
+ "--with-queue-ram" "--with-queue-stub"
+
+ "--with-scheduler-python" "--with-scheduler-ram"
+ "--with-scheduler-stub"
+
+ "--with-table-ldap" ; "--with-table-mysql"
+ "--with-table-passwd" "--with-table-postgres"
+ "--with-table-python" "--with-table-socketmap"
+ "--with-table-sqlite" "--with-table-stub"
+ ;;"--with-table-redis" ; TODO: package hiredis
+
+ "--with-user=smtpd" "--with-privsep-user=smtpd"
+ "--localstatedir=/var" "--sysconfdir=/etc"
+ "--with-lua-type=lua" ; can use lua or luajit
+
+ (string-append "--with-python="
+ (assoc-ref %build-inputs "python-2"))
+ (string-append "--with-lua="
+ (assoc-ref %build-inputs "lua")))))
+ (license (list bsd-2 bsd-3 bsd-4
+ public-domain isc license:openssl))
+ (synopsis "Extra tables, filters, and various other addons for OpenSMTPD")
+ (description
+ "This package provides extra tables, filters, and various other addons
+for OpenSMTPD to extend its functionality.")
+ (home-page "https://www.opensmtpd.org")))
+
+(define-public python-mailmanclient
+ (package
+ (name "python-mailmanclient")
+ (version "1.0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "mailmanclient" version))
+ (sha256
+ (base32
+ "1cfjh45fgbsax5hjj2inq9nk33dhdvh63xhysc8dhnqidgqgm8c5"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f)) ; Requires mailman running
+ (inputs
+ `(("python-six" ,python-six)
+ ("python-httplib2" ,python-httplib2)))
+ (home-page "https://launchpad.net/mailman.client")
+ (synopsis "Python bindings for the Mailman 3 REST API")
+ (description
+ "The mailmanclient library provides official Python bindings for
+the GNU Mailman 3 REST API.")
+ (properties `((python2-variant . ,(delay python2-mailmanclient))))
+ (license lgpl3+)))
+
+(define-public python2-mailmanclient
+ (let ((base (package-with-python2
+ (strip-python2-variant python-mailmanclient))))
+ (package (inherit base)
+ (native-inputs
+ `(("python2-setuptools" ,python2-setuptools))))))