diff mbox series

[bug#50077,v2,3/3] gnu: Add emacs-notmuch.

Message ID a9fb50394ef7ee48836a808ed2b3fc7d7aeb92e0.1630748355.git.public@yoctocell.xyz
State Accepted
Headers show
Series Improvements to Notmuch | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Xinglu Chen Sept. 4, 2021, 9:42 a.m. UTC
* gnu/packages/mail.scm (notmuch)[arguments]: Remove Emacs-related stuff.
* gnu/packages/emacs-xyz.scm (emacs-consult-notmuch)[propagated-inputs]: Add
‘emacs-notmuch’.
(emacs-counsel-notmuch)[propagated-inputs]: Use ‘emacs-notmuch’ instead of
‘notmuch’.
(emacs-helm-notmuch): Likewise.
(emacs-notmuch-maildir): Likewise.
---
 gnu/packages/emacs-xyz.scm |  8 +++---
 gnu/packages/mail.scm      | 52 +++++++++++++++++++++++---------------
 2 files changed, 37 insertions(+), 23 deletions(-)

Comments

Andrew Tropin Sept. 14, 2021, 7:22 a.m. UTC | #1
On 2021-09-04 11:42, Xinglu Chen wrote:

> * gnu/packages/mail.scm (notmuch)[arguments]: Remove Emacs-related stuff.
> * gnu/packages/emacs-xyz.scm (emacs-consult-notmuch)[propagated-inputs]: Add
> ‘emacs-notmuch’.
> (emacs-counsel-notmuch)[propagated-inputs]: Use ‘emacs-notmuch’ instead of
> ‘notmuch’.
> (emacs-helm-notmuch): Likewise.
> (emacs-notmuch-maildir): Likewise.
> ---
>  gnu/packages/emacs-xyz.scm |  8 +++---
>  gnu/packages/mail.scm      | 52 +++++++++++++++++++++++---------------
>  2 files changed, 37 insertions(+), 23 deletions(-)
>
> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
> index 030809f5ac..67ba8bf523 100644
> --- a/gnu/packages/emacs-xyz.scm
> +++ b/gnu/packages/emacs-xyz.scm
> @@ -8304,7 +8304,7 @@ list of candidates.")
>      (build-system emacs-build-system)
>      (propagated-inputs
>       `(("emacs-consult" ,emacs-consult)
> -       ("notmuch" ,notmuch)))
> +       ("emacs-notmuch" ,emacs-notmuch)))
>      (home-page "https://codeberg.org/jao/consult-notmuch")
>      (synopsis "Search and preview Notmuch emails using Consult")
>      (description
> @@ -9490,6 +9490,8 @@ queries using counsel.")
>         `(("emacs-counsel" ,emacs-counsel)
>           ("notmuch" ,notmuch)
>           ("emacs-s" ,emacs-s)))
> +      (propagated-inputs
> +       `(("emacs-notmuch" ,emacs-notmuch)))
>        (home-page "https://github.com/fuxialexander/counsel-notmuch")
>        (synopsis "Search emails in Notmuch asynchronously with Ivy")
>        (description
> @@ -23952,7 +23954,7 @@ workspaces with a LSP-compliant server running.")
>      (build-system emacs-build-system)
>      (propagated-inputs
>       `(("emacs-helm" ,emacs-helm)
> -       ("notmuch" ,notmuch)))
> +       ("emacs-notmuch" ,emacs-notmuch)))
>      (synopsis "Search emails with Emacs Notmuch and Helm")
>      (description
>       "This package can be used to search emails in Emacs, searching result
> @@ -23975,7 +23977,7 @@ real search.")
>                  "0pmikf1djkr07067nkgmdcxyn7l7ibswx6qlnai8v1v51f9h1g9q"))))
>      (build-system emacs-build-system)
>      (propagated-inputs
> -     `(("notmuch" ,notmuch)))
> +     `(("emacs-notmuch" ,emacs-notmuch)))
>      (home-page "https://git.sr.ht/~tarsius/notmuch-maildir")
>      (synopsis "Visualize maildirs as a tree")
>      (description
> diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
> index 173982cb12..729e47cb95 100644
> --- a/gnu/packages/mail.scm
> +++ b/gnu/packages/mail.scm
> @@ -167,6 +167,7 @@
>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system go)
>    #:use-module (guix build-system guile)
> +  #:use-module (guix build-system emacs)
>    #:use-module (guix build-system meson)
>    #:use-module (guix build-system perl)
>    #:use-module (guix build-system python)
> @@ -1342,31 +1343,18 @@ invoking @command{notifymuch} from the post-new hook.")
>                  "1myylb19hj5nb1vriqng252vfjwwkgbi3gxj93pi2q1fzyw7w2lf"))))
>      (build-system gnu-build-system)
>      (arguments
> -     `(#:modules ((guix build gnu-build-system)
> -                  ((guix build emacs-build-system) #:prefix emacs:)
> -                  (guix build utils))
> -       #:imported-modules (,@%gnu-build-system-modules
> -                           (guix build emacs-build-system)
> -                           (guix build emacs-utils))
> -       #:make-flags
> +     `(#:make-flags
>         (list "V=1"                      ; verbose test output
>               "NOTMUCH_TEST_TIMEOUT=1h") ; don't fail on slow machines
>         #:phases (modify-phases %standard-phases
> -                  (add-after 'unpack 'patch-notmuch-lib.el
> -                    (lambda _
> -                      (substitute* "emacs/notmuch-lib.el"
> -                        (("/bin/sh") (which "sh")))))
>                    (replace 'configure
>                      (lambda* (#:key outputs #:allow-other-keys)
>                        (setenv "CC" ,(cc-for-target))
>                        (setenv "CONFIG_SHELL" (which "sh"))
> -
> -                      (let* ((out (assoc-ref outputs "out"))
> -                             (elisp (emacs:elpa-directory out)))
> +                      (let* ((out (assoc-ref outputs "out")))
>                          (invoke "./configure"
>                                  (string-append "--prefix=" out)
> -                                (string-append "--emacslispdir=" elisp)
> -                                (string-append "--emacsetcdir=" elisp)))))
> +                                "--without-emacs"))))
>                    (add-before 'check 'disable-failing-tests
>                      ;; FIXME: Investigate why these tests are failing,
>                      ;; and try removing this for notmuch versions > 0.31.
> @@ -1378,12 +1366,9 @@ invoking @command{notifymuch} from the post-new hook.")
>                        (setenv "TEST_CC" ,(cc-for-target))
>                        ;; Patch various inline shell invocations.
>                        (substitute* (find-files "test" "\\.sh$")
> -                        (("/bin/sh") (which "sh")))))
> -                  (add-after 'install 'make-autoloads
> -                    (assoc-ref emacs:%standard-phases 'make-autoloads)))))
> +                        (("/bin/sh") (which "sh"))))))))
>      (native-inputs
>       `(("bash-completion" ,bash-completion)
> -       ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
>         ("pkg-config" ,pkg-config)
>         ("python" ,python)
>         ("python-docutils" ,python-docutils)
> @@ -1391,6 +1376,7 @@ invoking @command{notifymuch} from the post-new hook.")
>         ("texinfo" ,texinfo)
>  
>         ;; The following are required for tests only.
> +       ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
>         ("which" ,which)
>         ("dtach" ,dtach)
>         ("gnupg" ,gnupg)
> @@ -1409,6 +1395,32 @@ invoking @command{notifymuch} from the post-new hook.")
>  ing, and tagging large collections of email messages.")
>      (license license:gpl3+)))
>  
> +(define-public emacs-notmuch
> +  (package
> +    (inherit notmuch)
> +    (name "emacs-notmuch")
> +    (build-system emacs-build-system)
> +    (native-inputs '())
> +    (inputs
> +     `(("notmuch" ,notmuch)))
> +    (arguments
> +     `(#:exclude (cons* "make-deps.el" "rstdoc.el" %default-exclude)
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'chdir
> +           (lambda _
> +             (chdir "emacs")))
> +         (add-after 'chdir 'patch-paths
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (let ((notmuch (assoc-ref inputs "notmuch")))
> +               (substitute* "notmuch-lib.el"
> +                 (("\"notmuch\"")
> +                  (string-append "\"" notmuch "/bin/notmuch\"")))))))))

Not sure if we need to hardcode the path to notmuch binary (some people
can use guix for managing emacs packages, but not system), but I think
it's a rare case and this default is reasonable and easily fixable by
simple `(setq notmuch-command "notmuch")` in the cases, when notmuch
itslef provided by other package manager.

> +    (synopsis "Run Notmuch within Emacs")
> +    (description
> +     "This package provides an Emacs-based interface to the Notmuch mail
> +system.")))
> +
>  (define-public notmuch-addrlookup-c
>    (package
>      (name "notmuch-addrlookup-c")

Overall, LGTM.
Xinglu Chen Sept. 14, 2021, 3:29 p.m. UTC | #2
On Tue, Sep 14 2021, Andrew Tropin wrote:

> On 2021-09-04 11:42, Xinglu Chen wrote:
>
>> * gnu/packages/mail.scm (notmuch)[arguments]: Remove Emacs-related stuff.
>> * gnu/packages/emacs-xyz.scm (emacs-consult-notmuch)[propagated-inputs]: Add
>> ‘emacs-notmuch’.
>> (emacs-counsel-notmuch)[propagated-inputs]: Use ‘emacs-notmuch’ instead of
>> ‘notmuch’.
>> (emacs-helm-notmuch): Likewise.
>> (emacs-notmuch-maildir): Likewise.
>> ---
>>  gnu/packages/emacs-xyz.scm |  8 +++---
>>  gnu/packages/mail.scm      | 52 +++++++++++++++++++++++---------------
>>  2 files changed, 37 insertions(+), 23 deletions(-)
>>
>> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
>> index 030809f5ac..67ba8bf523 100644
>> --- a/gnu/packages/emacs-xyz.scm
>> +++ b/gnu/packages/emacs-xyz.scm
>> @@ -8304,7 +8304,7 @@ list of candidates.")
>>      (build-system emacs-build-system)
>>      (propagated-inputs
>>       `(("emacs-consult" ,emacs-consult)
>> -       ("notmuch" ,notmuch)))
>> +       ("emacs-notmuch" ,emacs-notmuch)))
>>      (home-page "https://codeberg.org/jao/consult-notmuch")
>>      (synopsis "Search and preview Notmuch emails using Consult")
>>      (description
>> @@ -9490,6 +9490,8 @@ queries using counsel.")
>>         `(("emacs-counsel" ,emacs-counsel)
>>           ("notmuch" ,notmuch)
>>           ("emacs-s" ,emacs-s)))
>> +      (propagated-inputs
>> +       `(("emacs-notmuch" ,emacs-notmuch)))
>>        (home-page "https://github.com/fuxialexander/counsel-notmuch")
>>        (synopsis "Search emails in Notmuch asynchronously with Ivy")
>>        (description
>> @@ -23952,7 +23954,7 @@ workspaces with a LSP-compliant server running.")
>>      (build-system emacs-build-system)
>>      (propagated-inputs
>>       `(("emacs-helm" ,emacs-helm)
>> -       ("notmuch" ,notmuch)))
>> +       ("emacs-notmuch" ,emacs-notmuch)))
>>      (synopsis "Search emails with Emacs Notmuch and Helm")
>>      (description
>>       "This package can be used to search emails in Emacs, searching result
>> @@ -23975,7 +23977,7 @@ real search.")
>>                  "0pmikf1djkr07067nkgmdcxyn7l7ibswx6qlnai8v1v51f9h1g9q"))))
>>      (build-system emacs-build-system)
>>      (propagated-inputs
>> -     `(("notmuch" ,notmuch)))
>> +     `(("emacs-notmuch" ,emacs-notmuch)))
>>      (home-page "https://git.sr.ht/~tarsius/notmuch-maildir")
>>      (synopsis "Visualize maildirs as a tree")
>>      (description
>> diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
>> index 173982cb12..729e47cb95 100644
>> --- a/gnu/packages/mail.scm
>> +++ b/gnu/packages/mail.scm
>> @@ -167,6 +167,7 @@
>>    #:use-module (guix build-system gnu)
>>    #:use-module (guix build-system go)
>>    #:use-module (guix build-system guile)
>> +  #:use-module (guix build-system emacs)
>>    #:use-module (guix build-system meson)
>>    #:use-module (guix build-system perl)
>>    #:use-module (guix build-system python)
>> @@ -1342,31 +1343,18 @@ invoking @command{notifymuch} from the post-new hook.")
>>                  "1myylb19hj5nb1vriqng252vfjwwkgbi3gxj93pi2q1fzyw7w2lf"))))
>>      (build-system gnu-build-system)
>>      (arguments
>> -     `(#:modules ((guix build gnu-build-system)
>> -                  ((guix build emacs-build-system) #:prefix emacs:)
>> -                  (guix build utils))
>> -       #:imported-modules (,@%gnu-build-system-modules
>> -                           (guix build emacs-build-system)
>> -                           (guix build emacs-utils))
>> -       #:make-flags
>> +     `(#:make-flags
>>         (list "V=1"                      ; verbose test output
>>               "NOTMUCH_TEST_TIMEOUT=1h") ; don't fail on slow machines
>>         #:phases (modify-phases %standard-phases
>> -                  (add-after 'unpack 'patch-notmuch-lib.el
>> -                    (lambda _
>> -                      (substitute* "emacs/notmuch-lib.el"
>> -                        (("/bin/sh") (which "sh")))))
>>                    (replace 'configure
>>                      (lambda* (#:key outputs #:allow-other-keys)
>>                        (setenv "CC" ,(cc-for-target))
>>                        (setenv "CONFIG_SHELL" (which "sh"))
>> -
>> -                      (let* ((out (assoc-ref outputs "out"))
>> -                             (elisp (emacs:elpa-directory out)))
>> +                      (let* ((out (assoc-ref outputs "out")))
>>                          (invoke "./configure"
>>                                  (string-append "--prefix=" out)
>> -                                (string-append "--emacslispdir=" elisp)
>> -                                (string-append "--emacsetcdir=" elisp)))))
>> +                                "--without-emacs"))))
>>                    (add-before 'check 'disable-failing-tests
>>                      ;; FIXME: Investigate why these tests are failing,
>>                      ;; and try removing this for notmuch versions > 0.31.
>> @@ -1378,12 +1366,9 @@ invoking @command{notifymuch} from the post-new hook.")
>>                        (setenv "TEST_CC" ,(cc-for-target))
>>                        ;; Patch various inline shell invocations.
>>                        (substitute* (find-files "test" "\\.sh$")
>> -                        (("/bin/sh") (which "sh")))))
>> -                  (add-after 'install 'make-autoloads
>> -                    (assoc-ref emacs:%standard-phases 'make-autoloads)))))
>> +                        (("/bin/sh") (which "sh"))))))))
>>      (native-inputs
>>       `(("bash-completion" ,bash-completion)
>> -       ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
>>         ("pkg-config" ,pkg-config)
>>         ("python" ,python)
>>         ("python-docutils" ,python-docutils)
>> @@ -1391,6 +1376,7 @@ invoking @command{notifymuch} from the post-new hook.")
>>         ("texinfo" ,texinfo)
>>  
>>         ;; The following are required for tests only.
>> +       ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
>>         ("which" ,which)
>>         ("dtach" ,dtach)
>>         ("gnupg" ,gnupg)
>> @@ -1409,6 +1395,32 @@ invoking @command{notifymuch} from the post-new hook.")
>>  ing, and tagging large collections of email messages.")
>>      (license license:gpl3+)))
>>  
>> +(define-public emacs-notmuch
>> +  (package
>> +    (inherit notmuch)
>> +    (name "emacs-notmuch")
>> +    (build-system emacs-build-system)
>> +    (native-inputs '())
>> +    (inputs
>> +     `(("notmuch" ,notmuch)))
>> +    (arguments
>> +     `(#:exclude (cons* "make-deps.el" "rstdoc.el" %default-exclude)
>> +       #:phases
>> +       (modify-phases %standard-phases
>> +         (add-after 'unpack 'chdir
>> +           (lambda _
>> +             (chdir "emacs")))
>> +         (add-after 'chdir 'patch-paths
>> +           (lambda* (#:key inputs #:allow-other-keys)
>> +             (let ((notmuch (assoc-ref inputs "notmuch")))
>> +               (substitute* "notmuch-lib.el"
>> +                 (("\"notmuch\"")
>> +                  (string-append "\"" notmuch "/bin/notmuch\"")))))))))
>
> Not sure if we need to hardcode the path to notmuch binary (some people
> can use guix for managing emacs packages, but not system), but I think
> it's a rare case and this default is reasonable and easily fixable by
> simple `(setq notmuch-command "notmuch")` in the cases, when notmuch
> itslef provided by other package manager.

Yeah, this default should work for most people, and as you said, people
who haven’t installed Notmuch via Guix can just set to the
‘notmuch-command’ to the appropriate value.  It’s Emacs after all... ;-)

Also, since there was a consensus that Emacs packages that were included
in “regular” packages should be packaged as separate ‘emacs-’ packages,
I think it would be a good idea to add a paragraph about that in the
manual.
Simon Tournier Sept. 14, 2021, 3:35 p.m. UTC | #3
Hi,

On Tue, 14 Sep 2021 at 17:29, Xinglu Chen <public@yoctocell.xyz> wrote:
> On Tue, Sep 14 2021, Andrew Tropin wrote:
>> On 2021-09-04 11:42, Xinglu Chen wrote:

>> Not sure if we need to hardcode the path to notmuch binary (some people
>> can use guix for managing emacs packages, but not system), but I think
>> it's a rare case and this default is reasonable and easily fixable by
>> simple `(setq notmuch-command "notmuch")` in the cases, when notmuch
>> itslef provided by other package manager.
>
> Yeah, this default should work for most people, and as you said, people
> who haven’t installed Notmuch via Guix can just set to the
> ‘notmuch-command’ to the appropriate value.  It’s Emacs after all... ;-)
>
> Also, since there was a consensus that Emacs packages that were included
> in “regular” packages should be packaged as separate ‘emacs-’ packages,
> I think it would be a good idea to add a paragraph about that in the
> manual.

I agree.  For references, this question appears here:

   <http://issues.guix.gnu.org/issue/49457>
   <http://issues.guix.gnu.org/issue/50231>

so it seems something is missing in the manual. :-)


All the best,
simon
Xinglu Chen Sept. 14, 2021, 7:20 p.m. UTC | #4
On Tue, Sep 14 2021, zimoun wrote:

> Hi,
>
> On Tue, 14 Sep 2021 at 17:29, Xinglu Chen <public@yoctocell.xyz> wrote:
>> On Tue, Sep 14 2021, Andrew Tropin wrote:
>>> On 2021-09-04 11:42, Xinglu Chen wrote:
>
>>> Not sure if we need to hardcode the path to notmuch binary (some people
>>> can use guix for managing emacs packages, but not system), but I think
>>> it's a rare case and this default is reasonable and easily fixable by
>>> simple `(setq notmuch-command "notmuch")` in the cases, when notmuch
>>> itslef provided by other package manager.
>>
>> Yeah, this default should work for most people, and as you said, people
>> who haven’t installed Notmuch via Guix can just set to the
>> ‘notmuch-command’ to the appropriate value.  It’s Emacs after all... ;-)
>>
>> Also, since there was a consensus that Emacs packages that were included
>> in “regular” packages should be packaged as separate ‘emacs-’ packages,
>> I think it would be a good idea to add a paragraph about that in the
>> manual.
>
> I agree.  For references, this question appears here:
>
>    <http://issues.guix.gnu.org/issue/49457>
>    <http://issues.guix.gnu.org/issue/50231>
>
> so it seems something is missing in the manual. :-)

Just sent a patch for it.  :-)

  <https://issues.guix.gnu.org/issue/50589>
diff mbox series

Patch

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 030809f5ac..67ba8bf523 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -8304,7 +8304,7 @@  list of candidates.")
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-consult" ,emacs-consult)
-       ("notmuch" ,notmuch)))
+       ("emacs-notmuch" ,emacs-notmuch)))
     (home-page "https://codeberg.org/jao/consult-notmuch")
     (synopsis "Search and preview Notmuch emails using Consult")
     (description
@@ -9490,6 +9490,8 @@  queries using counsel.")
        `(("emacs-counsel" ,emacs-counsel)
          ("notmuch" ,notmuch)
          ("emacs-s" ,emacs-s)))
+      (propagated-inputs
+       `(("emacs-notmuch" ,emacs-notmuch)))
       (home-page "https://github.com/fuxialexander/counsel-notmuch")
       (synopsis "Search emails in Notmuch asynchronously with Ivy")
       (description
@@ -23952,7 +23954,7 @@  workspaces with a LSP-compliant server running.")
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-helm" ,emacs-helm)
-       ("notmuch" ,notmuch)))
+       ("emacs-notmuch" ,emacs-notmuch)))
     (synopsis "Search emails with Emacs Notmuch and Helm")
     (description
      "This package can be used to search emails in Emacs, searching result
@@ -23975,7 +23977,7 @@  real search.")
                 "0pmikf1djkr07067nkgmdcxyn7l7ibswx6qlnai8v1v51f9h1g9q"))))
     (build-system emacs-build-system)
     (propagated-inputs
-     `(("notmuch" ,notmuch)))
+     `(("emacs-notmuch" ,emacs-notmuch)))
     (home-page "https://git.sr.ht/~tarsius/notmuch-maildir")
     (synopsis "Visualize maildirs as a tree")
     (description
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 173982cb12..729e47cb95 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -167,6 +167,7 @@ 
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system go)
   #:use-module (guix build-system guile)
+  #:use-module (guix build-system emacs)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
@@ -1342,31 +1343,18 @@  invoking @command{notifymuch} from the post-new hook.")
                 "1myylb19hj5nb1vriqng252vfjwwkgbi3gxj93pi2q1fzyw7w2lf"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:modules ((guix build gnu-build-system)
-                  ((guix build emacs-build-system) #:prefix emacs:)
-                  (guix build utils))
-       #:imported-modules (,@%gnu-build-system-modules
-                           (guix build emacs-build-system)
-                           (guix build emacs-utils))
-       #:make-flags
+     `(#:make-flags
        (list "V=1"                      ; verbose test output
              "NOTMUCH_TEST_TIMEOUT=1h") ; don't fail on slow machines
        #:phases (modify-phases %standard-phases
-                  (add-after 'unpack 'patch-notmuch-lib.el
-                    (lambda _
-                      (substitute* "emacs/notmuch-lib.el"
-                        (("/bin/sh") (which "sh")))))
                   (replace 'configure
                     (lambda* (#:key outputs #:allow-other-keys)
                       (setenv "CC" ,(cc-for-target))
                       (setenv "CONFIG_SHELL" (which "sh"))
-
-                      (let* ((out (assoc-ref outputs "out"))
-                             (elisp (emacs:elpa-directory out)))
+                      (let* ((out (assoc-ref outputs "out")))
                         (invoke "./configure"
                                 (string-append "--prefix=" out)
-                                (string-append "--emacslispdir=" elisp)
-                                (string-append "--emacsetcdir=" elisp)))))
+                                "--without-emacs"))))
                   (add-before 'check 'disable-failing-tests
                     ;; FIXME: Investigate why these tests are failing,
                     ;; and try removing this for notmuch versions > 0.31.
@@ -1378,12 +1366,9 @@  invoking @command{notifymuch} from the post-new hook.")
                       (setenv "TEST_CC" ,(cc-for-target))
                       ;; Patch various inline shell invocations.
                       (substitute* (find-files "test" "\\.sh$")
-                        (("/bin/sh") (which "sh")))))
-                  (add-after 'install 'make-autoloads
-                    (assoc-ref emacs:%standard-phases 'make-autoloads)))))
+                        (("/bin/sh") (which "sh"))))))))
     (native-inputs
      `(("bash-completion" ,bash-completion)
-       ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
        ("pkg-config" ,pkg-config)
        ("python" ,python)
        ("python-docutils" ,python-docutils)
@@ -1391,6 +1376,7 @@  invoking @command{notifymuch} from the post-new hook.")
        ("texinfo" ,texinfo)
 
        ;; The following are required for tests only.
+       ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
        ("which" ,which)
        ("dtach" ,dtach)
        ("gnupg" ,gnupg)
@@ -1409,6 +1395,32 @@  invoking @command{notifymuch} from the post-new hook.")
 ing, and tagging large collections of email messages.")
     (license license:gpl3+)))
 
+(define-public emacs-notmuch
+  (package
+    (inherit notmuch)
+    (name "emacs-notmuch")
+    (build-system emacs-build-system)
+    (native-inputs '())
+    (inputs
+     `(("notmuch" ,notmuch)))
+    (arguments
+     `(#:exclude (cons* "make-deps.el" "rstdoc.el" %default-exclude)
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'chdir
+           (lambda _
+             (chdir "emacs")))
+         (add-after 'chdir 'patch-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((notmuch (assoc-ref inputs "notmuch")))
+               (substitute* "notmuch-lib.el"
+                 (("\"notmuch\"")
+                  (string-append "\"" notmuch "/bin/notmuch\"")))))))))
+    (synopsis "Run Notmuch within Emacs")
+    (description
+     "This package provides an Emacs-based interface to the Notmuch mail
+system.")))
+
 (define-public notmuch-addrlookup-c
   (package
     (name "notmuch-addrlookup-c")