#+TITLE:   email/notmuch
#+DATE:    May 5, 2019
#+SINCE:   v2.0
#+STARTUP: inlineimages

* Table of Contents :TOC:
- [[#description][Description]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
  - [[#macos][MacOS]]
  - [[#arch-linux][Arch Linux]]
  - [[#nixos][NixOS]]
  - [[#opensuse][openSUSE]]
  - [[#debianubuntu][Debian/Ubuntu]]
- [[#features][Features]]
- [[#configuration][Configuration]]
  - [[#gmailier][Gmailier]]
  - [[#offlineimap][offlineimap]]
  - [[#mbsync][mbsync]]
  - [[#notmuch][notmuch]]
- [[#troubleshooting][Troubleshooting]]

* Description
This module makes Emacs an email client, using ~notmuch~.

** Module Flags
+ This module install no module flags.


** Plugins
+ [[https://notmuchmail.org/][notmuch]]
+ [[https://github.com/org-mime/org-mime][org-mime]]

* Prerequisites
This module requires:

+ Either ~gmailieer~ (default), ~mbsync~ or ~offlineimap~ (to sync mail with)
+ ~notmuch~, to index and tag your downloaded messages.
+ ~afew~, optionally to initially tag your downloaded messages.

** TODO MacOS

** TODO Arch Linux
** NixOS
#+BEGIN_SRC nix
environment.systemPackages = with pkgs; [
    notmuch
    # And one of the following
    gmailieer
    isync
    offlineimap
];
#+END_SRC

[[https://github.com/Emiller88/dotfiles/blob/319841bd3b89e59b01d169137cceee3183aba4fc/modules/shell/mail.nix][An example of setting up mbsync and notmuch with home-manager]]

** TODO openSUSE
** TODO Debian/Ubuntu
* TODO Features

* Configuration
** TODO Gmailier
** offlineimap
This module uses =Gmailier= by default. To use =offlineimap=, change ~+notmuch-sync-backend~:

#+BEGIN_SRC emacs-lisp
(setq +notmuch-sync-backend 'offlineimap)
#+END_SRC

Next, you need to write a configuration file for =offlineimap=. Mine can be found
[[https://github.com/hlissner/dotfiles/tree/master/shell/mu][in my dotfiles repository]]. It is configured to download mail to ~\~/.mail~. I
use [[https://www.passwordstore.org/][unix pass]] to securely store my login credentials. You can find a *very*
detailed configuration [[https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf][here]].

Next you can download your email with ~offlineimap -o~. This may take a while,
especially if you have thousands of mails.

You can now proceed with the [[*mu and mu4e][mu and mu4e]] section.

** mbsync
This module uses =Gmailier= by default. To use =mbsync=, change ~+notmuch-sync-backend~:

#+BEGIN_SRC emacs-lisp
(setq +notmuch-sync-backend 'mbsync)
#+END_SRC

The steps needed to set up =mu4e= with =mbsync= are very similar to the ones for
[[*offlineimap][offlineimap]].

Start with writing a ~\~/.mbsyncrc~. An example for GMAIL can be found on
[[http://pragmaticemacs.com/emacs/migrating-from-offlineimap-to-mbsync-for-mu4e/][pragmaticemacs.com]]. A non-GMAIL example is available as a gist [[https://gist.github.com/agraul/60977cc497c3aec44e10591f94f49ef0][here]]. The [[http://isync.sourceforge.net/mbsync.html][manual
page]] contains all needed information to set up your own.

Next you can download your email with ~mbsync --all~. This may take a while, but
should be quicker than =offlineimap= ;).

You can now proceed with the [[*mu and mu4e][mu and mu4e]] section.

** notmuch
You should have your email downloaded already. If you have not, you need to set
=Gmailier=, =offlineimap= or =mbsync= up before you proceed.

Before you can use =notmuch=, you need to index your email initially.

#+BEGIN_SRC sh
notmuch new
#+END_SRC

* Troubleshooting
