summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--.global_ignore1
-rw-r--r--.muttrc25
-rw-r--r--.wgetpaste.conf1
-rw-r--r--.zshrc56
-rw-r--r--Makefile23
-rw-r--r--gdb/.config/gdb/gdbearlyinit1
-rw-r--r--gdb/.config/gdb/gdbinit4
-rw-r--r--git/.gitconfig (renamed from .gitconfig)12
-rw-r--r--git/.global_ignore2
-rw-r--r--git/projects/gentoo/.gitconfig12
-rw-r--r--mpv/.mpv/config (renamed from .mpv/config)0
-rw-r--r--msmtp/.msmtprc (renamed from .msmtprc)0
-rw-r--r--mutt/.mutt/aliases3
-rw-r--r--mutt/.mutt/colors.muttrc100
-rw-r--r--mutt/.mutt/mailcap84
-rw-r--r--mutt/.mutt/muttrc184
-rw-r--r--nvim/.config/nvim/coc-settings.json89
-rw-r--r--nvim/.config/nvim/coc.vim160
-rw-r--r--nvim/.config/nvim/fzf.vim5
-rw-r--r--nvim/.config/nvim/init.vim7
-rw-r--r--nvim/.config/nvim/markdown-preview.vim98
-rw-r--r--nvim/.config/nvim/plugins.vim23
-rw-r--r--nvim/.vimrc (renamed from .vimrc)4
-rw-r--r--tmux/.tmux.conf (renamed from .tmux.conf)2
-rw-r--r--wgetpaste/.wgetpaste.conf1
-rwxr-xr-xzsh/.zshrc35
27 files changed, 846 insertions, 87 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a4db410
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+mpv/.mpv/cache/
diff --git a/.global_ignore b/.global_ignore
deleted file mode 100644
index 6e92f57..0000000
--- a/.global_ignore
+++ /dev/null
@@ -1 +0,0 @@
-tags
diff --git a/.muttrc b/.muttrc
deleted file mode 100644
index 5c25aa6..0000000
--- a/.muttrc
+++ /dev/null
@@ -1,25 +0,0 @@
-set realname="Matt Turner"
-set from="mattst88@gmail.com"
-
-### PGP
-set pgp_sign_as=0x974CA72A
-set pgp_auto_decode = yes
-set pgp_use_gpg_agent = yes
-set pgp_autosign=yes
-set pgp_replyencrypt=yes
-
-set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
-set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
-set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
-set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
-set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
-set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x974CA72A -- -r %r -- %f"
-set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x974CA72A -- -r %r -- %f"
-set pgp_import_command="gpg --no-verbose --import -v %f"
-set pgp_export_command="gpg --no-verbose --export --armor %r"
-set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
-set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
-set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
-
-set pgp_timeout=1800
-set pgp_good_sign="^gpg: Good signature from"
diff --git a/.wgetpaste.conf b/.wgetpaste.conf
deleted file mode 100644
index 6255cc8..0000000
--- a/.wgetpaste.conf
+++ /dev/null
@@ -1 +0,0 @@
-DEFAULT_SERVICE=dpaste
diff --git a/.zshrc b/.zshrc
deleted file mode 100644
index 8e91869..0000000
--- a/.zshrc
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/zsh
-
-autoload -U compinit
-compinit
-
-zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
-zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'
-
-unsetopt correctall
-unsetopt equals
-
-autoload -U promptinit
-promptinit
-
-prompt gentoo
-
-export HISTSIZE=5000
-export HISTFILE="$HOME/.history"
-export SAVEHIST=$HISTSIZE
-setopt hist_ignore_all_dups
-setopt hist_ignore_space
-
-# Breaks "eix ^asdf"
-# setopt extendedglob
-
-bindkey "^[[H" beginning-of-line
-bindkey "^[[1~" beginning-of-line
-bindkey "^[OH" beginning-of-line
-bindkey "^[[F" end-of-line
-bindkey "^[[4~" end-of-line
-bindkey "^[OF" end-of-line
-bindkey ' ' magic-space # also do history expansion on space
-bindkey '^R' history-incremental-search-backward
-
-bindkey "^[[1;5C" forward-word
-bindkey "^[[1;5D" backward-word
-
-bindkey '^[[Z' reverse-menu-complete
-
-# Make the delete key (or Fn + Delete on the Mac) work instead of outputting a ~
-bindkey '^?' backward-delete-char
-bindkey "^[[3~" delete-char
-bindkey "^[3;5~" delete-char
-bindkey "\e[3~" delete-char
-
-export PATH=:$PATH:~/bin
-
-if [ -f "${HOME}/.gpg-agent-info" ]; then
- . "${HOME}/.gpg-agent-info"
- export GPG_AGENT_INFO
- export SSH_AUTH_SOCK
-fi
-export GPG_TTY=$(tty)
-
-[ -e /etc/profile.d/autojump.sh ] && . /etc/profile.d/autojump.sh
-[ -e /etc/profile.d/vte-2.91.sh ] && . /etc/profile.d/vte-2.91.sh
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e4bb7af
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,23 @@
+stow_dirs = $(wildcard */)
+.PHONY : stow
+stow :
+ stow --target $(HOME) --verbose $(stow_dirs)
+
+.PHONY : stow-verbose
+# verbosity goes from 0 to 4
+VERBOSITY=1
+stow-verbose :
+ stow --verbose $(VERBOSITY) --target $(HOME) --verbose $(stow_dirs)
+
+.PHONY : dry-run
+dry-run :
+ stow --no --target $(HOME) --verbose $(stow_dirs)
+
+.PHONY : restow
+restow :
+ stow --target $(HOME) --verbose --restow $(stow_dirs)
+
+# Do this *before* moving to another directory.
+.PHONY : delete
+delete :
+ stow --target $(HOME) --verbose --delete $(stow_dirs)
diff --git a/gdb/.config/gdb/gdbearlyinit b/gdb/.config/gdb/gdbearlyinit
new file mode 100644
index 0000000..b73aa96
--- /dev/null
+++ b/gdb/.config/gdb/gdbearlyinit
@@ -0,0 +1 @@
+set startup-quietly on
diff --git a/gdb/.config/gdb/gdbinit b/gdb/.config/gdb/gdbinit
new file mode 100644
index 0000000..71fb88e
--- /dev/null
+++ b/gdb/.config/gdb/gdbinit
@@ -0,0 +1,4 @@
+set history save on
+set history remove-duplicates unlimited
+set history filename ~/.gdb_history
+set disassembly-flavor intel
diff --git a/.gitconfig b/git/.gitconfig
index f686288..474e0ee 100644
--- a/.gitconfig
+++ b/git/.gitconfig
@@ -1,13 +1,18 @@
[user]
email = mattst88@gmail.com
name = Matt Turner
- signingkey = 0xED2ED19F85B3682C
+ signingkey = 0xACEB29740C9A4E97!
+[includeIf "gitdir:~/projects/gentoo/"]
+ path = ~/projects/gentoo/.gitconfig
[color]
ui = auto
[rebase]
autosquash = true
[core]
excludesfile = /home/mattst88/.global_ignore
+ autocrlf = false
+ filemode = false
+ pager = less -+F
[diff]
renames = true
[push]
@@ -15,5 +20,10 @@
[alias]
fixes = show -s --pretty='format:Fixes: %h (\"%s\")'
co = checkout
+ br = branch
shwo = show
grpe = grep
+ lgo = log
+ last-commit-to = log -n 1 --pretty=format:%H
+[init]
+ defaultBranch = main
diff --git a/git/.global_ignore b/git/.global_ignore
new file mode 100644
index 0000000..25b4c59
--- /dev/null
+++ b/git/.global_ignore
@@ -0,0 +1,2 @@
+.ccls-cache
+compile_commands.json
diff --git a/git/projects/gentoo/.gitconfig b/git/projects/gentoo/.gitconfig
new file mode 100644
index 0000000..79cffde
--- /dev/null
+++ b/git/projects/gentoo/.gitconfig
@@ -0,0 +1,12 @@
+[user]
+ email = mattst88@gentoo.org
+[pull]
+ ff = only
+ rebase = merges
+[push]
+ default = simple
+ gpgsign = if-asked
+[commit]
+ gpgsign = 1
+[sendemail]
+ to = gentoo-dev@lists.gentoo.org
diff --git a/.mpv/config b/mpv/.mpv/config
index 1e00302..1e00302 100644
--- a/.mpv/config
+++ b/mpv/.mpv/config
diff --git a/.msmtprc b/msmtp/.msmtprc
index 7b050b3..7b050b3 100644
--- a/.msmtprc
+++ b/msmtp/.msmtprc
diff --git a/mutt/.mutt/aliases b/mutt/.mutt/aliases
new file mode 100644
index 0000000..6074ce0
--- /dev/null
+++ b/mutt/.mutt/aliases
@@ -0,0 +1,3 @@
+alias gentoo-dev gentoo-dev@lists.gentoo.org
+alias gentoo-dev-announce gentoo-dev-announce@lists.gentoo.org
+alias gentoo-project gentoo-project@lists.gentoo.org
diff --git a/mutt/.mutt/colors.muttrc b/mutt/.mutt/colors.muttrc
new file mode 100644
index 0000000..c7e5679
--- /dev/null
+++ b/mutt/.mutt/colors.muttrc
@@ -0,0 +1,100 @@
+# vim: filetype=muttrc
+
+# basic colors ---------------------------------------------------------
+
+color normal white default
+color error brightred default
+#color tilde color235 default
+#color message brightblack default
+#color markers red color254
+#color attachment color254 default
+color search brightwhite default
+color status brightwhite blue
+color indicator black brightgreen
+color tree brightblue default
+
+# basic monocolor screen
+mono bold bold
+mono underline underline
+mono indicator reverse
+mono error bold
+
+# index ----------------------------------------------------------------
+
+##color index red default "~D(!~p|~p)" # deleted
+##color index color235 default ~F # flagged
+##color index color166 default ~= # duplicate messages
+##color index color240 default "~A!~N!~T!~p!~Q!~F!~D!~P" # the rest
+##color index J_base default "~A~N!~T!~p!~Q!~F!~D" # the rest, new
+#color index red default "~A" # all messages
+#color index color166 default "~E" # expired messages
+color index white default "~N" # new messages
+#color index white default "~O" # old messages
+#color index color61 default "~Q" # messages that have been replied to
+color index default default "~R" # read messages
+color index white default "~U" # unread messages
+#color index white default "~U~$" # unread, unreferenced messages
+#color index brightblack default "~v" # messages part of a collapsed thread
+#color index brightblack default "~P" # messages from me
+#color index color37 default "~p!~F" # messages to me
+#color index color37 default "~N~p!~F" # new messages to me
+#color index color37 default "~U~p!~F" # unread messages to me
+#color index color240 default "~R~p!~F" # messages to me
+#color index red default "~F" # flagged messages
+#color index red default "~F~p" # flagged messages to me
+#color index red default "~N~F" # new flagged messages
+#color index red default "~N~F~p" # new flagged messages to me
+#color index red default "~U~F~p" # new flagged messages to me
+color index brightblack red "~D" # deleted messages
+color index default default "~v~(!~N)" # collapsed thread with no unread
+color index brightwhite default "~v~(~N)" # collapsed thread with some unread
+## statusbg used to indicated flagged when foreground color shows other status
+## for collapsed thread
+#color index red color235 "~v~(~F)!~N" # collapsed thread with flagged, no unread
+#color index color136 color235 "~v~(~F~N)" # collapsed thread with some unread & flagged
+#color index color64 color235 "~N~v~(~F~N)" # collapsed thread with unread parent & flagged
+#color index color64 color235 "~N~v~(~F)" # collapsed thread with unread parent, no unread inside, but some flagged
+#color index color37 color235 "~v~(~p)" # collapsed thread with unread parent, no unread inside, some to me directly
+color index brightblack red "~v~(~D)" # thread with deleted (doesn't differentiate between all or partial)
+##color index color136 default "~(~N)" # messages in threads with some unread
+##color index color64 default "~S" # superseded messages
+##color index red default "~T" # tagged messages
+##color index color166 red "~=" # duplicated messages
+#
+# message headers ------------------------------------------------------
+
+color header brightwhite default "^(From|Subject):"
+
+# body -----------------------------------------------------------------
+
+color quoted default default
+#color quoted1 color37 default
+#color quoted2 color136 default
+#color quoted3 red default
+#color quoted4 color166 default
+#
+#color signature color240 default
+#color bold color235 default
+#color underline color235 default
+#color normal color244 default
+
+## PGP
+
+color body brightblack default "^gpg: "
+color body brightgreen default "^gpg: Good signature .*"
+color body brightwhite red "^gpg: BAD signature from.*"
+mono body bold "^gpg: Good signature"
+mono body bold "^gpg: BAD signature from.*"
+
+## Patches
+#color body green default "^\+.*"
+#color body red default "^-.*"
+#color body yellow default "^@@@.*"
+color body brightwhite default "^>?diff \-.*"
+color body brightwhite default "^>?index [a-f0-9].*"
+color body brightwhite default "^>?\-\-\- .*"
+color body brightwhite default "^>?[\+]{3} .*"
+color body green default "^>?[\+][^\+]+.*"
+color body green default "^>?[\+]$"
+color body red default "^>?\-[^\-]+.*"
+color body cyan default "^>?@@ .*"
diff --git a/mutt/.mutt/mailcap b/mutt/.mutt/mailcap
new file mode 100644
index 0000000..637f214
--- /dev/null
+++ b/mutt/.mutt/mailcap
@@ -0,0 +1,84 @@
+text/calendar; vcalendar %s; copiousoutput;
+
+# Plain text
+text/plain; vim %s
+
+#text/html; w3m -I %{charset} -dump %s; nametemplate=%s.html; copiousoutput
+text/html; lynx -dump -width=78 %s | sed 's/^ //'; copiousoutput; needsterminal; nametemplate=%s.html
+
+image/jpg; eog %s
+image/jpeg; eog %s
+image/pjpeg; eog %s
+image/png; eog %s
+image/gif; eog %s
+
+application/pdf; evince %s
+
+application/pgp-encrypted; gpg --decrypt; copiousoutput
+
+# LibreOffice stuff
+application/vnd.oasis.opendocument.database; libreoffice --nologo --base '%s'; edit=libreoffice --nologo --base '%s'; test=test -n "$DISPLAY"; description="OpenDocument Database"; nametemplate=%s.odb
+application/vnd.oasis.opendocument.chart; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Chart"; nametemplate=%s.odc
+application/vnd.oasis.opendocument.spreadsheet; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet"; nametemplate=%s.ods
+application/vnd.oasis.opendocument.spreadsheet-template; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="OpenDocument Spreadsheet Template"; nametemplate=%s.ots
+application/vnd.oasis.opendocument.graphics; libreoffice --nologo --draw '%s'; edit=libreoffice --nologo --draw '%s'; test=test -n "$DISPLAY"; description="OpenDocument Drawing"; nametemplate=%s.odg
+application/vnd.oasis.opendocument.graphics-template; libreoffice --nologo --draw '%s'; edit=libreoffice --nologo --draw '%s'; test=test -n "$DISPLAY"; description="OpenDocument Drawing Template"; nametemplate=%s.otg
+application/vnd.oasis.opendocument.presentation; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="OpenDocument Presentation"; nametemplate=%s.odp
+application/vnd.oasis.opendocument.presentation-template; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="OpenDocument Presentation Template"; nametemplate=%s.otp
+application/vnd.oasis.opendocument.formula; libreoffice --nologo --math '%s'; edit=libreoffice --nologo --math '%s'; test=test -n "$DISPLAY"; description="OpenDocument Formula"; nametemplate=%s.odf
+application/vnd.oasis.opendocument.text; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Text Document"; nametemplate=%s.odt
+application/vnd.oasis.opendocument.text-master; libreoffice --nologo -global '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Master Document"; nametemplate=%s.odm
+application/vnd.oasis.opendocument.text-template; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="OpenDocument Text Document Template"; nametemplate=%s.ott
+application/vnd.oasis.opendocument.text-web; libreoffice --nologo -web '%s'; edit=libreoffice --nologo -web '%s'; test=test -n "$DISPLAY"; description="OpenDocument HTML Document Template"; nametemplate=%s.oth
+application/vnd.sun.xml.base; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; description="OpenOffice.org Database"; nametemplate=%s.sdb
+application/vnd.sun.xml.calc; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet"; nametemplate=%s.sxc
+application/vnd.sun.xml.calc.template; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Spreadsheet Template"; nametemplate=%s.stc
+application/vnd.sun.xml.draw; libreoffice --nologo --draw '%s'; edit=libreoffice --nologo --draw '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing"; nametemplate=%s.sxd
+application/vnd.sun.xml.draw.template; libreoffice --nologo --draw '%s'; edit=libreoffice --nologo --draw '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Drawing Template"; nametemplate=%s.std
+application/vnd.stardivision.calc; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="StarCalc 5.0"; nametemplate=%s.sdc
+application/vnd.stardivision.chart; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="StarChart 5.0"; nametemplate=%s.sds
+application/vnd.stardivision.draw; libreoffice --nologo --draw '%s'; edit=libreoffice --nologo --draw '%s'; test=test -n "$DISPLAY"; description="StarDraw 5.0"; nametemplate=%s.sda
+application/vnd.stardivision.impress; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="StarImpress 5.0"; nametemplate=%s.sdd
+application/vnd.stardivision.math; libreoffice --nologo --math '%s'; edit=libreoffice --nologo --math '%s'; test=test -n "$DISPLAY"; description="StarMath 5.0"; nametemplate=%s.sdf
+application/vnd.stardivision.writer-global; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="StarWriter 5.0 Master Document"; nametemplate=%s.sgl
+application/vnd.stardivision.writer; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="StarWriter 5.0"; nametemplate=%s.sdw
+application/vnd.sun.xml.impress; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation"; nametemplate=%s.sxi
+application/vnd.sun.xml.impress.template; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Presentation Template"; nametemplate=%s.sti
+application/vnd.sun.xml.math; libreoffice --nologo --math '%s'; edit=libreoffice --nologo --math '%s'; test=test -n "$DISPLAY"; description="OpenOffice.org Formula"; nametemplate=%s.sxm
+application/vnd.sun.xml.writer; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; description="OpenOffice.org Text Document"; nametemplate=%s.sxw
+application/vnd.sun.xml.writer.global; libreoffice --nologo -global '%s'; edit=libreoffice --nologo --writer '%s'; description="OpenOffice.org Master Document"; nametemplate=%s.sxg
+application/vnd.sun.xml.writer.template; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; description="OpenOffice.org Text Document Template"; nametemplate=%s.stw
+text/csv; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="CSV Document"; nametemplate=%s.csv
+text/spreadsheet; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Spreadsheet Interchange Document"; nametemplate=%s.slk
+application/x-quattropro; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Quattro Pro 6 for Windows Spreadsheet"; nametemplate=%s.wb2
+application/x-dbf; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf
+application/vnd.ms-excel.sheet.macroEnabled.12; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet with Macros Enabled"; nametemplate=%s.xlsm
+application/vnd.ms-excel.template.macroEnabled.12; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template with Macros Enabled"; nametemplate=%s.xltm
+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet"; nametemplate=%s.xlsx
+application/vnd.openxmlformats-officedocument.spreadsheetml.template; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Office Open XML Spreadsheet Template"; nametemplate=%s.xltx
+application/vnd.lotus-1-2-3; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Lotus 1-2-3 spreadsheet"; nametemplate=%s.123
+application/vnd.ms-excel; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls
+application/msexcel; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="Microsoft Excel Document"; nametemplate=%s.xls
+application/x-dbase; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="xBase Document"; nametemplate=%s.dbf
+text/x-csv; libreoffice --nologo --calc '%s'; edit=libreoffice --nologo --calc '%s'; test=test -n "$DISPLAY"; description="CSV Document"; nametemplate=%s.csv
+application/vnd.ms-powerpoint.presentation.macroEnabled.12; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation with Macros Enabled"; nametemplate=%s.pptm
+application/vnd.ms-powerpoint.slideshow.macroEnabled.12; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show with Macros Enabled"; nametemplate=%s.ppsm
+application/vnd.ms-powerpoint.template.macroEnabled.12; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template with Macros Enabled"; nametemplate=%s.potm
+application/vnd.openxmlformats-officedocument.presentationml.presentation; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation"; nametemplate=%s.pptx
+application/vnd.openxmlformats-officedocument.presentationml.slideshow; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Slide Show"; nametemplate=%s.ppsx
+application/vnd.openxmlformats-officedocument.presentationml.template; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Office Open XML Presentation Template"; nametemplate=%s.potx
+application/vnd.ms-powerpoint; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt
+application/mspowerpoint; libreoffice --nologo --impress '%s'; edit=libreoffice --nologo --impress '%s'; test=test -n "$DISPLAY"; description="Microsoft PowerPoint Document"; nametemplate=%s.ppt
+text/mathml; libreoffice --nologo --math '%s'; edit=libreoffice --nologo --math '%s'; test=test -n "$DISPLAY"; description="MathML Formula"; nametemplate=%s.mml
+application/rtf; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf
+#application/x-extension-txt; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Plain Text Document"; nametemplate=%s.txt
+application/x-t602; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="T602 Document"; nametemplate=%s.602
+application/vnd.wordperfect; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp
+application/vnd.ms-word.document.macroEnabled.12; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document with Macros Enabled"; nametemplate=%s.docm
+application/vnd.ms-word.template.macroEnabled.12; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document Template with Macros Enabled"; nametemplate=%s.dotm
+application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document"; nametemplate=%s.docx
+application/vnd.openxmlformats-officedocument.wordprocessingml.template; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Office Open XML Document Template"; nametemplate=%s.dotx
+application/vnd.ms-works; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Microsoft Works Document"; nametemplate=%s.wps
+application/msword; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Microsoft Word Document"; nametemplate=%s.doc
+application/wordperfect; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="WordPerfect Document"; nametemplate=%s.wp
+text/rtf; libreoffice --nologo --writer '%s'; edit=libreoffice --nologo --writer '%s'; test=test -n "$DISPLAY"; description="Rich Text Format"; nametemplate=%s.rtf
diff --git a/mutt/.mutt/muttrc b/mutt/.mutt/muttrc
new file mode 100644
index 0000000..1714354
--- /dev/null
+++ b/mutt/.mutt/muttrc
@@ -0,0 +1,184 @@
+# vim: ft=muttrc
+
+set realname="Matt Turner"
+set from="mattst88@gmail.com"
+
+macro generic "<esc>1" ":set from=mattst88@gmail.com"
+macro generic "<esc>2" ":set from=mattst88@gentoo.org"
+
+alternative_order text/plain text/enriched text/html
+auto_view text/x-vcard text/html text/enriched
+
+set mbox_type = Maildir
+set folder = "~/.mail"
+#set mbox = "+intel/Inbox"
+#set record = "+intel/Inbox"
+set postponed = "+mattst88@gmail.com/Drafts"
+set spoolfile = "+mattst88@gmail.com/INBOX"
+set trash = "+archive-mattst88@gmail.com/Trash"
+
+named-mailboxes "Inbox" =mattst88@gmail.com/INBOX
+named-mailboxes "Drafts" =mattst88@gmail.com/Drafts
+named-mailboxes "Sent" =mattst88@gmail.com/Sent
+named-mailboxes "alpha-contacts" =mattst88@gmail.com/alpha-contacts
+named-mailboxes "craigslist" =mattst88@gmail.com/craigslist
+named-mailboxes "forum-notifications" =mattst88@gmail.com/forum-notification
+named-mailboxes "gentoo-comrel" =mattst88@gmail.com/gentoo-comrel
+named-mailboxes "gentoo-core" =mattst88@gmail.com/gentoo-core
+named-mailboxes "gentoo-council" =mattst88@gmail.com/gentoo-council
+named-mailboxes "to-vacuum" =mattst88@gmail.com/to-vacuum
+
+set header_cache=~/.mutt/hcache
+set mail_check_stats
+
+# sidebar
+#set sidebar_width=15
+set sidebar_short_path = yes
+set sidebar_format="%B%* %N"
+set sidebar_visible = yes
+bind index,pager B sidebar-toggle-visible
+bind index,pager \ck sidebar-prev
+bind index,pager \cj sidebar-next
+bind index,pager \Co sidebar-open
+
+set sendmail="/usr/bin/msmtp"
+
+#set record=~/.mail/Sent
+#set spoolfile=~/.mail/INBOX
+
+# needed for maildir format
+# IMAP and INBOX (this should map to any existing IMAP folders)
+#mailboxes = +intel/INBOX +intel/Sent
+#=Drafts \
+#=Junk \
+#=Trash \
+#=Lastfolder
+
+set crypt_use_gpgme=yes
+
+### PGP
+set pgp_sign_as=0x3BB639E56F861FA2E86505690FDD682D974CA72A
+#set pgp_auto_decode = yes
+#set pgp_use_gpg_agent = yes
+#set pgp_autosign=yes
+#set pgp_replyencrypt=yes
+#
+#set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f"
+#set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f"
+#set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f"
+#set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f"
+#set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f"
+#set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x974CA72A -- -r %r -- %f"
+#set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x974CA72A -- -r %r -- %f"
+#set pgp_import_command="gpg --no-verbose --import -v %f"
+#set pgp_export_command="gpg --no-verbose --export --armor %r"
+#set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r"
+#set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r"
+#set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r"
+#
+#set pgp_timeout=1800
+#set pgp_good_sign="^gpg: Good signature from"
+#
+#folder-hook . `rm -f /tmp/mutt/*`
+
+# Basic Options --------------------------------------
+set wait_key = no # shut up, mutt
+set timeout = 3 # idle time before scanning
+set mail_check = 0 # minimum time between scans
+unset move # gmail does that
+set delete # don't ask, just do
+unset confirmappend # don't ask, just do!
+set quit # don't ask, just do!!
+unset mark_old # read/new is good enough for me
+set beep_new # bell on new mails
+set pipe_decode # strip headers and eval mimes when piping
+set thorough_search # strip headers and eval mimes before searching
+set recall = no # don't ask if I want to recall a postponed message
+
+# Status Bar -----------------------------------------
+set status_chars = " *%A"
+set status_format = "───[ Folder: %f ]───[%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]───%>─%?p?( %p postponed )?───"
+
+# Index View Options ---------------------------------
+set date_format = "%m/%d"
+set sort = threads # like gmail
+set sort_aux = reverse-last-date-received # like gmail
+set uncollapse_jump # don't collapse on an unread message
+set sort_re # thread based on regex
+set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
+
+# Format for index list
+# [message status flags]
+# Date sent (in my timezone)
+# 20 characters of who it's from
+# Number of attachment (if > 0)
+# Subject
+#set index_format = "[%Z] %D %-20.20F %?X?%X& ? %?M?[%M]->&?%s"
+set index_format = "[%Z] %D %-20.20F %s"
+set index_format="%4C %Z %?GI?%GI& ? %[%d/%b] %-16.15F %?M?(%3M)& ? %s %> %?g?%g?"
+
+macro index F "<shell-escape>mbsync -a<enter>" "run mbsync to sync all mail"
+
+# Index Key Bindings ---------------------------------
+bind index g noop
+bind index gg first-entry
+bind index G last-entry
+bind index R group-reply
+bind index <tab> sync-mailbox
+bind index P recall-message
+
+# Pager View Options ---------------------------------
+set pager_index_lines = 10 # number of index lines to show
+set pager_context = 3 # number of context lines to show
+set pager_stop # don't go to next message automatically
+set menu_scroll # scroll in menus
+set tilde # show tildes like in vim
+unset markers # no ugly plus signs
+auto_view text/html
+set strict_threads # Don't thread by message subjec
+alternative_order text/html text/enriched text/plain
+
+set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
+alternative_order text/plain text/enriched text/html
+
+# Header Options -------------------------------------
+ignore * # ignore all headers
+unignore from: to: cc: date: subject: # show only these
+unhdr_order * # some distros order things by default
+hdr_order from: to: cc: date: subject: # and in this order
+
+# Pager Key Bindings ---------------------------------
+bind pager k previous-line
+bind pager j next-line
+bind pager g noop
+bind pager gg top
+bind pager G bottom
+bind pager R group-reply
+
+# View attachments properly.
+bind attach <return> view-mailcap
+
+# Compose View Options -------------------------------
+set envelope_from # which from?
+set sig_dashes # dashes before sig
+set edit_headers # show headers when composing
+set fast_reply # skip to compose when replying
+unset reply_self # don't include myself when replying
+unset askcc # don't ask for CC:
+set fcc_attach # save attachments with the body
+unset mime_forward # forward attachments as part of body
+set forward_format = "Fwd: %s" # format of subject when forwarding
+set forward_decode # decode when forwarding
+set attribution = "On %d, %n wrote:" # format of quoting header
+set reply_to # reply to Reply to: field
+set reverse_name # reply as whomever it was to
+set include # include message in replies
+set forward_quote # include message in forwards
+set editor = "vim" # Use terminal Vim to compose email.
+set text_flowed = yes # Flow text instead of using line breaks
+set sig_on_top # puts signature above quoted text
+# set display_filter = ~/.mutt/display_filter.sh
+set copy = yes
+
+source ~/.mutt/colors.muttrc
+source ~/.mutt/aliases
diff --git a/nvim/.config/nvim/coc-settings.json b/nvim/.config/nvim/coc-settings.json
new file mode 100644
index 0000000..18223ed
--- /dev/null
+++ b/nvim/.config/nvim/coc-settings.json
@@ -0,0 +1,89 @@
+{
+ "python.linting.pylintEnabled": true,
+ "python.linting.flake8Enabled": false,
+ "python.linting.enabled": true,
+ "python.pythonPath": "/usr/bin/python",
+
+ "languageserver": {
+ "ccls": {
+ "command": "ccls",
+ "filetypes": ["c", "cpp", "cuda", "objc", "objcpp"],
+ "rootPatterns": [".ccls-root", ".git/"],
+ "initializationOptions": {
+ "highlight": {
+ "lsRanges": true
+ },
+ "cache": {
+ "directory": ".ccls-cache"
+ }
+ }
+ },
+ "python": {
+ "command": "python",
+ "args": [
+ "-mpylsp",
+ "-vv",
+ "--log-file",
+ "/tmp/lsp_python.log"
+ ],
+ "trace.server": "verbose",
+ "filetypes": [
+ "python"
+ ],
+ "settings": {
+ "pyls": {
+ "enable": true,
+ "trace": {
+ "server": "verbose"
+ },
+ "commandPath": "",
+ "configurationSources": [
+ "pycodestyle"
+ ],
+ "plugins": {
+ "jedi_completion": {
+ "enabled": true
+ },
+ "jedi_hover": {
+ "enabled": true
+ },
+ "jedi_references": {
+ "enabled": true
+ },
+ "jedi_signature_help": {
+ "enabled": true
+ },
+ "jedi_symbols": {
+ "enabled": true,
+ "all_scopes": true
+ },
+ "mccabe": {
+ "enabled": true,
+ "threshold": 15
+ },
+ "preload": {
+ "enabled": true
+ },
+ "pycodestyle": {
+ "enabled": true
+ },
+ "pydocstyle": {
+ "enabled": false,
+ "match": "(?!test_).*\\.py",
+ "matchDir": "[^\\.].*"
+ },
+ "pyflakes": {
+ "enabled": true
+ },
+ "rope_completion": {
+ "enabled": true
+ },
+ "yapf": {
+ "enabled": true
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/nvim/.config/nvim/coc.vim b/nvim/.config/nvim/coc.vim
new file mode 100644
index 0000000..abfdffd
--- /dev/null
+++ b/nvim/.config/nvim/coc.vim
@@ -0,0 +1,160 @@
+" May need for Vim (not Neovim) since coc.nvim calculates byte offset by count
+" utf-8 byte sequence
+set encoding=utf-8
+" Some servers have issues with backup files, see #649
+set nobackup
+set nowritebackup
+
+" Having longer updatetime (default is 4000 ms = 4s) leads to noticeable
+" delays and poor user experience
+set updatetime=300
+
+" Always show the signcolumn, otherwise it would shift the text each time
+" diagnostics appear/become resolved
+set signcolumn=yes
+
+" Use tab for trigger completion with characters ahead and navigate
+" NOTE: There's always complete item selected by default, you may want to enable
+" no select by `"suggest.noselect": true` in your configuration file
+" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by
+" other plugin before putting this into your config
+inoremap <silent><expr> <TAB>
+ \ coc#pum#visible() ? coc#pum#next(1) :
+ \ CheckBackspace() ? "\<Tab>" :
+ \ coc#refresh()
+inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
+
+" Make <CR> to accept selected completion item or notify coc.nvim to format
+" <C-g>u breaks current undo, please make your own choice
+inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
+ \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
+
+function! CheckBackspace() abort
+ let col = col('.') - 1
+ return !col || getline('.')[col - 1] =~# '\s'
+endfunction
+
+" Use <c-space> to trigger completion
+if has('nvim')
+ inoremap <silent><expr> <c-space> coc#refresh()
+else
+ inoremap <silent><expr> <c-@> coc#refresh()
+endif
+
+" Use `[g` and `]g` to navigate diagnostics
+" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list
+nmap <silent> [g <Plug>(coc-diagnostic-prev)
+nmap <silent> ]g <Plug>(coc-diagnostic-next)
+
+" GoTo code navigation
+nmap <silent> gd <Plug>(coc-definition)
+nmap <silent> gy <Plug>(coc-type-definition)
+nmap <silent> gi <Plug>(coc-implementation)
+nmap <silent> gr <Plug>(coc-references)
+
+" Use K to show documentation in preview window
+nnoremap <silent> K :call ShowDocumentation()<CR>
+
+function! ShowDocumentation()
+ if CocAction('hasProvider', 'hover')
+ call CocActionAsync('doHover')
+ else
+ call feedkeys('K', 'in')
+ endif
+endfunction
+
+" Highlight the symbol and its references when holding the cursor
+autocmd CursorHold * silent call CocActionAsync('highlight')
+
+" Symbol renaming
+nmap <leader>rn <Plug>(coc-rename)
+
+" Formatting selected code
+xmap <leader>f <Plug>(coc-format-selected)
+nmap <leader>f <Plug>(coc-format-selected)
+
+augroup mygroup
+ autocmd!
+ " Setup formatexpr specified filetype(s)
+ autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
+ " Update signature help on jump placeholder
+ autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
+augroup end
+
+" Applying code actions to the selected code block
+" Example: `<leader>aap` for current paragraph
+xmap <leader>a <Plug>(coc-codeaction-selected)
+nmap <leader>a <Plug>(coc-codeaction-selected)
+
+" Remap keys for applying code actions at the cursor position
+nmap <leader>ac <Plug>(coc-codeaction-cursor)
+" Remap keys for apply code actions affect whole buffer
+nmap <leader>as <Plug>(coc-codeaction-source)
+" Apply the most preferred quickfix action to fix diagnostic on the current line
+nmap <leader>qf <Plug>(coc-fix-current)
+
+" Remap keys for applying refactor code actions
+nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
+xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
+nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
+
+" Run the Code Lens action on the current line
+nmap <leader>cl <Plug>(coc-codelens-action)
+
+" Map function and class text objects
+" NOTE: Requires 'textDocument.documentSymbol' support from the language server
+xmap if <Plug>(coc-funcobj-i)
+omap if <Plug>(coc-funcobj-i)
+xmap af <Plug>(coc-funcobj-a)
+omap af <Plug>(coc-funcobj-a)
+xmap ic <Plug>(coc-classobj-i)
+omap ic <Plug>(coc-classobj-i)
+xmap ac <Plug>(coc-classobj-a)
+omap ac <Plug>(coc-classobj-a)
+
+" Remap <C-f> and <C-b> to scroll float windows/popups
+if has('nvim-0.4.0') || has('patch-8.2.0750')
+ nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
+ nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
+ inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
+ inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
+ vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
+ vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
+endif
+
+" Use CTRL-S for selections ranges
+" Requires 'textDocument/selectionRange' support of language server
+nmap <silent> <C-s> <Plug>(coc-range-select)
+xmap <silent> <C-s> <Plug>(coc-range-select)
+
+" Add `:Format` command to format current buffer
+command! -nargs=0 Format :call CocActionAsync('format')
+
+" Add `:Fold` command to fold current buffer
+command! -nargs=? Fold :call CocAction('fold', <f-args>)
+
+" Add `:OR` command for organize imports of the current buffer
+command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport')
+
+" Add (Neo)Vim's native statusline support
+" NOTE: Please see `:h coc-status` for integrations with external plugins that
+" provide custom statusline: lightline.vim, vim-airline
+set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
+
+" Mappings for CoCList
+" Show all diagnostics
+nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr>
+" Manage extensions
+nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr>
+" Show commands
+nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr>
+" Find symbol of current document
+nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
+" Search workspace symbols
+nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr>
+" Do default action for next item
+nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR>
+" Do default action for previous item
+nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR>
+" Resume latest coc list
+nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
diff --git a/nvim/.config/nvim/fzf.vim b/nvim/.config/nvim/fzf.vim
new file mode 100644
index 0000000..cef3936
--- /dev/null
+++ b/nvim/.config/nvim/fzf.vim
@@ -0,0 +1,5 @@
+map <leader>b :Buffers<cr>
+
+nnoremap <silent> <Leader>gr :Rg<CR>
+nnoremap <silent> <Leader>gg :GFiles<CR>
+nnoremap <silent> <Leader>gf :Files<CR>
diff --git a/nvim/.config/nvim/init.vim b/nvim/.config/nvim/init.vim
new file mode 100644
index 0000000..1c4cc70
--- /dev/null
+++ b/nvim/.config/nvim/init.vim
@@ -0,0 +1,7 @@
+set runtimepath^=~/.vim runtimepath+=~/.vim/after
+let &packpath = &runtimepath
+source ~/.vimrc
+source ~/.config/nvim/coc.vim
+source ~/.config/nvim/fzf.vim
+source ~/.config/nvim/markdown-preview.vim
+source ~/.config/nvim/plugins.vim
diff --git a/nvim/.config/nvim/markdown-preview.vim b/nvim/.config/nvim/markdown-preview.vim
new file mode 100644
index 0000000..e83515e
--- /dev/null
+++ b/nvim/.config/nvim/markdown-preview.vim
@@ -0,0 +1,98 @@
+" set to 1, nvim will open the preview window after entering the markdown buffer
+" default: 0
+let g:mkdp_auto_start = 0
+
+" set to 1, the nvim will auto close current preview window when change
+" from markdown buffer to another buffer
+" default: 1
+let g:mkdp_auto_close = 1
+
+" set to 1, the vim will refresh markdown when save the buffer or
+" leave from insert mode, default 0 is auto refresh markdown as you edit or
+" move the cursor
+" default: 0
+let g:mkdp_refresh_slow = 0
+
+" set to 1, the MarkdownPreview command can be use for all files,
+" by default it can be use in markdown file
+" default: 0
+let g:mkdp_command_for_global = 0
+
+" set to 1, preview server available to others in your network
+" by default, the server listens on localhost (127.0.0.1)
+" default: 0
+let g:mkdp_open_to_the_world = 0
+
+" use custom IP to open preview page
+" useful when you work in remote vim and preview on local browser
+" more detail see: https://github.com/iamcco/markdown-preview.nvim/pull/9
+" default empty
+let g:mkdp_open_ip = ''
+
+" specify browser to open preview page
+" for path with space
+" valid: `/path/with\ space/xxx`
+" invalid: `/path/with\\ space/xxx`
+" default: ''
+let g:mkdp_browser = '/usr/bin/firefox'
+
+" set to 1, echo preview page url in command line when open preview page
+" default is 0
+let g:mkdp_echo_preview_url = 0
+
+" a custom vim function name to open preview page
+" this function will receive url as param
+" default is empty
+let g:mkdp_browserfunc = ''
+
+" options for markdown render
+" mkit: markdown-it options for render
+" katex: katex options for math
+" uml: markdown-it-plantuml options
+" maid: mermaid options
+" disable_sync_scroll: if disable sync scroll, default 0
+" sync_scroll_type: 'middle', 'top' or 'relative', default value is 'middle'
+" middle: mean the cursor position alway show at the middle of the preview page
+" top: mean the vim top viewport alway show at the top of the preview page
+" relative: mean the cursor position alway show at the relative positon of the preview page
+" hide_yaml_meta: if hide yaml metadata, default is 1
+" sequence_diagrams: js-sequence-diagrams options
+" content_editable: if enable content editable for preview page, default: v:false
+" disable_filename: if disable filename header for preview page, default: 0
+let g:mkdp_preview_options = {
+ \ 'mkit': {},
+ \ 'katex': {},
+ \ 'uml': {},
+ \ 'maid': {},
+ \ 'disable_sync_scroll': 0,
+ \ 'sync_scroll_type': 'middle',
+ \ 'hide_yaml_meta': 1,
+ \ 'sequence_diagrams': {},
+ \ 'flowchart_diagrams': {},
+ \ 'content_editable': v:false,
+ \ 'disable_filename': 0,
+ \ 'toc': {}
+ \ }
+
+" use a custom markdown style must be absolute path
+" like '/Users/username/markdown.css' or expand('~/markdown.css')
+let g:mkdp_markdown_css = ''
+
+" use a custom highlight style must absolute path
+" like '/Users/username/highlight.css' or expand('~/highlight.css')
+let g:mkdp_highlight_css = ''
+
+" use a custom port to start server or empty for random
+let g:mkdp_port = ''
+
+" preview page title
+" ${name} will be replace with the file name
+let g:mkdp_page_title = '「${name}」'
+
+" recognized filetypes
+" these filetypes will have MarkdownPreview... commands
+let g:mkdp_filetypes = ['markdown']
+
+" set default theme (dark or light)
+" By default the theme is define according to the preferences of the system
+let g:mkdp_theme = 'dark'
diff --git a/nvim/.config/nvim/plugins.vim b/nvim/.config/nvim/plugins.vim
new file mode 100644
index 0000000..779e970
--- /dev/null
+++ b/nvim/.config/nvim/plugins.vim
@@ -0,0 +1,23 @@
+call plug#begin()
+Plug 'airblade/vim-rooter'
+Plug 'bogado/file-line'
+Plug 'editorconfig/editorconfig-vim'
+Plug 'google/vim-searchindex'
+Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' }
+Plug 'igankevich/mesonic'
+Plug 'jackguo380/vim-lsp-cxx-highlight'
+Plug 'jamessan/vim-gnupg'
+Plug 'javier-lopez/sprunge.vim'
+Plug 'junegunn/fzf.vim'
+Plug 'neoclide/coc.nvim', {'branch': 'release'}
+Plug 'preservim/nerdcommenter'
+Plug 'preservim/nerdtree'
+Plug 'saltstack/salt-vim'
+Plug 'tmsvg/pear-tree'
+Plug 'tpope/vim-eunuch'
+Plug 'tpope/vim-fugitive'
+Plug 'tpope/vim-surround'
+Plug 'vim-scripts/AnsiEsc.vim'
+Plug 'vim-scripts/git_patch_tags.vim'
+Plug 'Yggdroot/indentLine'
+call plug#end()
diff --git a/.vimrc b/nvim/.vimrc
index 369f6e1..3aa7046 100644
--- a/.vimrc
+++ b/nvim/.vimrc
@@ -1,8 +1,6 @@
autocmd BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl,*.shader_test set syntax=glsl
autocmd BufNewFile,BufRead /home/mattst88/projects/mesa/* set expandtab tabstop=8 softtabstop=3 shiftwidth=3
-autocmd BufNewFile,BufRead /home/mattst88/projects/mesa/src/glsl/glcpp/* set noexpandtab tabstop=8 softtabstop=8 shiftwidth=8
-autocmd BufNewFile,BufRead /home/mattst88/projects/mesa/src/glsl/glsl_parser.yy set noexpandtab tabstop=8 shiftwidth=8
autocmd BufNewFile,BufRead /home/mattst88/projects/piglit/* set noexpandtab tabstop=8 softtabstop=8 shiftwidth=8
autocmd BufNewFile,BufRead Makefile* set noexpandtab tabstop=8 softtabstop=8 shiftwidth=8
autocmd BufNewFile,BufRead *.mk set noexpandtab tabstop=8 softtabstop=8 shiftwidth=8
@@ -11,3 +9,5 @@ autocmd BufNewFile,BufRead *.py set tabstop=4 softtabstop=4 shiftwidth=4 textwid
set bg=dark
set modeline
+set number relativenumber
+set colorcolumn=+0
diff --git a/.tmux.conf b/tmux/.tmux.conf
index 0bd7996..6979591 100644
--- a/.tmux.conf
+++ b/tmux/.tmux.conf
@@ -1,4 +1,4 @@
-#set -s exit-empty off
+set-option -g default-shell $SHELL
set -g prefix C-a
unbind-key C-b
bind-key C-a send-prefix
diff --git a/wgetpaste/.wgetpaste.conf b/wgetpaste/.wgetpaste.conf
new file mode 100644
index 0000000..5db2281
--- /dev/null
+++ b/wgetpaste/.wgetpaste.conf
@@ -0,0 +1 @@
+DEFAULT_SERVICE=0x0
diff --git a/zsh/.zshrc b/zsh/.zshrc
new file mode 100755
index 0000000..f242497
--- /dev/null
+++ b/zsh/.zshrc
@@ -0,0 +1,35 @@
+#!/bin/zsh
+
+export ZSH="$HOME/.oh-my-zsh"
+
+ZSH_THEME="gentoo"
+
+plugins=(
+ autojump
+ colored-man-pages
+ fzf
+ git
+ gpg-agent
+ mosh
+ pass
+ ripgrep
+)
+
+source $ZSH/oh-my-zsh.sh
+
+export FZF_TMUX=1
+export FZF_TMUX_OPTS='-p90%,80%'
+export EDITOR=nvim
+export HISTSIZE=5000
+export HISTFILE="$HOME/.history"
+export SAVEHIST=$HISTSIZE
+setopt hist_ignore_all_dups
+setopt hist_ignore_space
+setopt share_history
+
+export PATH=:$PATH:~/bin
+
+alias pkgdiff="pkgdiff-mg"
+alias grpe="grep"
+alias gti="git"
+alias sl="ls"