Begin supporting notmuch in Emacs

I'm borrowing from @tazjin's dotfiles, which are stored in Git on Borg. When you
call `nix-build ~/briefcase/mail`, result will output a systemd units, which you
should move to ~/.config/systemd/user/.

The path to `gmi`, which is Lieer's executable, exists in /nix/store, and you
can read it from the systemd unit file (i.e. lieer-google.service). Lieer
synchronizes notmuch with Gmail and Gmail with notmuch.

Here's a general sequence of commands that I ran to set everything up. Special
thank you to @tazjin for helping me with all of this. These steps are not
certified as a tutorial; I'm recalling them from memory. When I set this up
things didn't work as expected immediately and I had to troubleshoot.

```shell
> mkdir -p ~/mail/account.google
> cd ~/mail/account.google
> nix-env -iA nixpkgs.notmuch
> notmuch setup
> nix-build ~/briefcase/mail
> cp ./result/lieer-google.{service,timer} ~/.config/systemd/user
> rm ./result
> systemctl --user cat lieer-google
...copy the /nix/store path to gmi...
> notmuch new
> /nix/store/gmi init
...follow the OAuth login flow...
>
```

Unknowns?
- Do I need to call `systemctl --user start lieer-google` at startup? Or should
  I move these units to user/default.target.wants?
- Can I send email from notmuch?
- How do I use notmuch to delete email? To respond to emails? To do anything?

Todo:
- Once this configuration stabilizes, I should package everything with Nix.
This commit is contained in:
William Carroll 2020-02-13 18:32:26 +00:00
parent 9fa97eab67
commit 3677a7a39e
3 changed files with 22 additions and 0 deletions

View file

@ -0,0 +1,7 @@
[Unit]
Description=Lieer sync for account 'google'
[Service]
Type=oneshot
ExecStart=/nix/store/n6c4pr4fyrsjfksspkapb7yqc6fzl166-corp-lieer/bin/gmi sync
WorkingDirectory=%h/mail/account.google

View file

@ -0,0 +1,9 @@
[Unit]
Description=Run lieer sync for account 'google'
[Timer]
OnActiveSec=1
OnUnitActiveSec=120
[Install]
WantedBy=timers.target

6
mail/default.nix Normal file
View file

@ -0,0 +1,6 @@
{ depot ? import <depot> {}, ... }:
let
inherit (builtins) fetchGit;
tazjdots = import (fetchGit "sso://user/tazjin/dotfiles") { pkgs = depot; };
in tazjdots.services.lieer