[provisioning] Move mbsyncrc templating to recipe

This commit is contained in:
Correl Roush 2021-01-20 20:10:14 -05:00
parent 6760e58377
commit df841e6bd2
2 changed files with 89 additions and 81 deletions

View file

@ -1046,86 +1046,6 @@ Show linked org document sections inline.
(eshell/cd directory))) (eshell/cd directory)))
#+end_src #+end_src
* Email * Email
** MBSync
:PROPERTIES:
:header-args: :tangle no
:header-args:conf: :tangle ~/.mbsyncrc
:END:
*** Building Blocks
**** Locating the certificate file
#+name: mbsync-certificate-file
#+begin_src emacs-lisp :tangle no
(let ((prefixes '("/usr/local/etc/ssl"
"/usr/local/etc/openssl"
"/usr/local/etc/openssl@1.1"
"/etc/ssl"))
(certs '("cert.pem"
"certs/ca-certificates.crt")))
(seq-find #'file-exists-p
(cl-loop for prefix in prefixes
for certpaths = (mapcar (lambda (c) (concat prefix "/" c)) certs)
append certpaths)))
#+end_src
*** Personal Gmail Account
#+begin_src conf :noweb yes
IMAPAccount personal
Host imap.gmail.com
User correl@gmail.com
PassCmd "pass accounts.google.com/correl@gmail.com | grep ^isync: | awk '{print $2}'"
AuthMechs LOGIN
SSLType IMAPS
SSLVersions TLSv1.2
CertificateFile <<mbsync-certificate-file()>>
IMAPStore personal-remote
Account personal
MaildirStore personal-local
Subfolders Verbatim
Path ~/Mail/Personal/
Inbox ~/Mail/Personal/INBOX
Channel personal
Master :personal-remote:
Slave :personal-local:
MaxMessages 1000
ExpireUnread yes
Patterns "INBOX" "[Gmail]/Drafts" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" "[Gmail]/Chats" "[Gmail]/Trash"
Create Both
Expunge Both
SyncState *
#+end_src
*** AWeber Work Account
#+begin_src conf :noweb yes
IMAPAccount work
Host imap.gmail.com
User correlr@aweber.com
PassCmd "pass Work/aweber/accounts.google.com/correlr@aweber.com | grep ^isync: | awk '{print $2}'"
AuthMechs LOGIN
SSLType IMAPS
SSLVersions TLSv1.2
CertificateFile <<mbsync-certificate-file()>>
IMAPStore work-remote
Account work
MaildirStore work-local
Subfolders Verbatim
Path ~/Mail/Work/
Inbox ~/Mail/Work/INBOX
Channel work
Master :work-remote:
Slave :work-local:
MaxMessages 1000
ExpireUnread yes
Patterns "INBOX" "AWeber Times" "[Gmail]/Drafts" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" "[Gmail]/Chats" "[Gmail]/Trash"
Create Both
Expunge Both
SyncState *
#+end_src
** MU4E ** MU4E
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package! mu4e (use-package! mu4e

View file

@ -2,6 +2,88 @@
# Description: Email syncing tools plus the mu4e client # Description: Email syncing tools plus the mu4e client
set -e set -e
__MAXMESSAGES=100
function __certificatefile {
for path in \
/usr/local/etc/ssl \
/usr/local/etc/openssl \
/usr/local/etc/openssl@1.1 \
/etc/ssl \
/etc/openssl \
; do
for certfile in \
cert.pem \
certs/ca-certificates.crt \
; do
if test -f "${path}/${certfile}"; then
echo "${path}/${certfile}"
return
fi
done
done
}
function __mbsync_config {
cat > ${HOME}/.mbsyncrc <<EOF
IMAPAccount personal
Host imap.gmail.com
User correl@gmail.com
PassCmd "pass accounts.google.com/correl@gmail.com | grep ^isync: | awk '{print \$2}'"
AuthMechs LOGIN
SSLType IMAPS
SSLVersions TLSv1.2
CertificateFile $(__certificatefile)
IMAPStore personal-remote
Account personal
MaildirStore personal-local
Subfolders Verbatim
Path ~/Mail/Personal/
Inbox ~/Mail/Personal/INBOX
Channel personal
Master :personal-remote:
Slave :personal-local:
MaxMessages ${__MAXMESSAGES}
ExpireUnread yes
Patterns "INBOX" "[Gmail]/Drafts" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" "[Gmail]/Chats" "[Gmail]/Trash"
Create Both
Expunge Both
SyncState *
IMAPAccount work
Host imap.gmail.com
User correlr@aweber.com
PassCmd "pass Work/aweber/accounts.google.com/correlr@aweber.com | grep ^isync: | awk '{print \$2}'"
AuthMechs LOGIN
SSLType IMAPS
SSLVersions TLSv1.2
CertificateFile $(__certificatefile)
IMAPStore work-remote
Account work
MaildirStore work-local
Subfolders Verbatim
Path ~/Mail/Work/
Inbox ~/Mail/Work/INBOX
Channel work
Master :work-remote:
Slave :work-local:
MaxMessages ${__MAXMESSAGES}
ExpireUnread yes
Patterns "INBOX" "AWeber Times" "[Gmail]/Drafts" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail" "[Gmail]/Chats" "[Gmail]/Trash"
Create Both
Expunge Both
SyncState *
EOF
}
_recipe emacs _recipe emacs
case $_PLATFORM in case $_PLATFORM in
darwin) darwin)
@ -44,6 +126,12 @@ case $_PLATFORM in
;; ;;
esac esac
_run "[email] Creating mail directories" mkdir -p Mail/{Personal,Work,.attachments} _run "[email] Creating mail directories" mkdir -p ${HOME}/Mail/{Personal,Work,.attachments}
_run "[email] Configuring mbsync" __mbsync_config
_run "[email] Initializing mail database" mu init -m Mail \
--my-address=correl@gmail.com \
--my-address=correlr@aweber.com \
--my-address=correlr@aweber.net
_run "[email] Indexing mail" mu index
_recipe nvm _recipe nvm
_npm imapnotify _npm imapnotify