about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/wpc
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2019-10-09T11·13+0100
committerWilliam Carroll <wpcarro@gmail.com>2019-12-24T15·21+0000
commit6b456c1b7a4f6899f063a6e65355af51901d9c7a (patch)
treecfc70d74818ae9fabdbbfb0cf16cce092e4c1a09 /configs/shared/emacs/.emacs.d/wpc
parenta7c72adb2ebec1e497fc040eaf3551d564d61a5b (diff)
Massive configuration overhaul
Currently paying the price of months of non-diligent git usage.

Here's what has changed.

- Theming support in Gvcci and wpgtk
- Dropping support for i3
- Supporting EXWM
- Many Elisp modules
- Collapsed redundant directories in ./configs
Diffstat (limited to 'configs/shared/emacs/.emacs.d/wpc')
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/casing.el46
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/fs-functions.el24
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/functions.el210
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/macros.el28
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el51
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el24
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el22
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el16
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el15
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el14
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el56
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el88
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el139
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el48
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el205
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el12
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el76
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el27
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el22
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el162
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/string-functions.el48
-rw-r--r--configs/shared/emacs/.emacs.d/wpc/variables.el26
22 files changed, 0 insertions, 1359 deletions
diff --git a/configs/shared/emacs/.emacs.d/wpc/casing.el b/configs/shared/emacs/.emacs.d/wpc/casing.el
deleted file mode 100644
index 9f8e8a231851..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/casing.el
+++ /dev/null
@@ -1,46 +0,0 @@
-;; casing.el --- Helper functions for formatting text -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; These functions are intended to be bound to KBDs for daily use and
-;; refactoring.
-
-;;; Code:
-
-;; todo - grab the string at point and replace it with the output of
-;; each fn
-
-(defun caps->kebab (x)
-  "Change the casing of X from CAP_CASE to kebab-case."
-  (->> x
-       s-downcase
-       (s-replace "_" "-")))
-
-(defun kebab->caps (x)
-  "Change the casing of X from CAP_CASE to kebab-case."
-  (->> x
-       s-upcase
-       (s-replace "-" "_")))
-
-(defun lower->caps (x)
-  "Change the casing of X from lowercase to CAPS_CASE."
-  (->> x
-       s-upcase
-       (s-replace " " "_")))
-
-(defun lower->kebab (x)
-  "Change the casing of X from lowercase to kebab-case"
-  (s-replace " " "-" x))
-
-;;; Tests:
-
-(ert-deftest caps->kebab-test ()
-  (should (string= (caps->kebab "CAPS_CASE_STRING")
-                   "caps-case-string")))
-
-(ert-deftest kebab->caps-test ()
-  (should (string= (kebab->caps "kebab-case-string")
-                   "KEBAB_CASE_STRING")))
-
-(provide 'casing)
-;;; casing.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/fs-functions.el b/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
deleted file mode 100644
index 9ca970c242c3..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/fs-functions.el
+++ /dev/null
@@ -1,24 +0,0 @@
-;;; fs-functions.el --- Functions to make working with the filesystem easier. -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts ergonomic functions for working with a filesystem.
-
-;;; Code:
-(defun ensure-file-path (path)
-  "Ensure that a file and its directories in PATH exist.
-Will error for inputs with a trailing slash."
-  (when (s-ends-with? "/" path)
-    (error (format "Input path has trailing slash: %s" path)))
-  (let ((dirs (->> path f-dirname f-split)))
-    (apply #'f-mkdir dirs)
-    (f-touch path)))
-
-(defun ensure-dir-path (path)
-  "Ensures that a directory and its ancestor directories in PATH exist."
-  (->> path
-       f-split
-       (apply #'f-mkdir)))
-
-(provide 'fs-functions)
-;;; fs-functions.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/functions.el b/configs/shared/emacs/.emacs.d/wpc/functions.el
deleted file mode 100644
index f734c13d9a4b..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/functions.el
+++ /dev/null
@@ -1,210 +0,0 @@
-;; functions.el --- Helper functions for my Emacs development -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This file hopefully contains friendly APIs that making ELisp development more enjoyable.
-
-;;; Code:
-(defun wpc/evil-window-vsplit-right ()
-  (interactive)
-  (evil-window-vsplit)
-  (windmove-right))
-
-(defun wpc/evil-window-split-down ()
-  (interactive)
-  (evil-window-split)
-  (windmove-down))
-
-(defun wpc/reindent-defun-and-align-clojure-map ()
-  (interactive)
-  (call-interactively #'paredit-reindent-defun)
-  (call-interactively #'clojure-align))
-
-(defun wpc/find-file ()
-  "Prefer project-based file-finding if inside of project; otherwise gracefully fallback."
-  (interactive)
-  (with-current-buffer (current-buffer)
-    (if (projectile-project-p)
-        (call-interactively #'projectile-find-file)
-      (call-interactively #'find-file))))
-
-(defun wpc/find-or-create-js-test ()
-  (->> buffer-file-name
-       (s-chop-suffix ".js")
-       (s-append ".test.js")
-       (find-file)))
-
-(defun wpc/find-or-create-js-module ()
-  (->> buffer-file-name
-       (s-chop-suffix ".test.js")
-       (s-append ".js")
-       (find-file)))
-
-(defun wpc/find-or-create-js-store ()
-  (->> buffer-file-name
-       (s-replace "index.js" "store.js")
-       (find-file)))
-
-(defun wpc/find-or-create-js-component ()
-  (->> buffer-file-name
-       (s-replace "store.js" "index.js")
-       (find-file)))
-
-(defun wpc/bind-ido-keys ()
-  "Adds custom KBDs for ido. This function is recommended in the ido source code."
-  (define-key ido-completion-map (kbd "<tab>") #'ido-next-match)
-  (define-key ido-completion-map (kbd "<backtab>") #'ido-prev-match))
-
-(defun wpc/toggle-between-js-test-and-module ()
-  "Toggle between a Javascript test or module."
-  (interactive)
-  (if (s-ends-with? ".test.js" buffer-file-name)
-      (wpc/find-or-create-js-module)
-    (if (s-ends-with? ".js" buffer-file-name)
-        (wpc/find-or-create-js-test)
-      (message "Not in a Javascript file. Exiting..."))))
-
-(defun wpc/toggle-between-js-component-and-store ()
-  "Toggle between a React component and its Redux store."
-  (interactive)
-  (if (s-ends-with? "index.js" buffer-file-name)
-      (wpc/find-or-create-js-store)
-    (if (or (s-ends-with? "store.js" buffer-file-name)
-            (s-ends-with? "store.test.js" buffer-file-name))
-        (wpc/find-or-create-js-component)
-      (message "Not in a React/Redux file. Exiting..."))))
-
-(defun wpc/read-file-as-string (filename)
-  (with-temp-buffer
-    (insert-file-contents filename)
-    (s-trim (buffer-string))))
-
-(defun wpc/create-snippet ()
-  "Creates a window split and then opens the Yasnippet editor."
-  (interactive)
-  (evil-window-vsplit)
-  (call-interactively #'yas-new-snippet))
-
-(defun wpc/find-file-split (filename)
-  "Creates a window split and then edits `filename'."
-  (interactive)
-  (evil-window-vsplit)
-  (find-file filename))
-
-(defun wpc/jump-to-parent-file ()
-  "Jumps to a React store or component's parent file. Useful for store or index file."
-  (interactive)
-  (-> buffer-file-name
-      f-dirname
-      (f-join "..")
-      (f-join (f-filename buffer-file-name))
-      find-file))
-
-(defun wpc/tmux-emacs-windmove (dir)
-  "Move windows in a Tmux-friendly way."
-  (let* ((dir->opts '((left . ("-L" . windmove-left))
-                      (right . ("-R" . windmove-right))
-                      (above . ("-U" . windmove-up))
-                      (below . ("-D" . windmove-down))))
-         (opts (alist-get dir dir->opts))
-         (tmux-opt (car opts))
-         (emacs-fn (cdr opts)))
-    (if (window-in-direction dir)
-        (funcall emacs-fn)
-      (shell-command (format "tmux select-pane %s" tmux-opt)))))
-
-(defun wpc/tmux-emacs-windmove-left ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'left))
-
-(defun wpc/tmux-emacs-windmove-right ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'right))
-
-(defun wpc/tmux-emacs-windmove-up ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'above))
-
-(defun wpc/tmux-emacs-windmove-down ()
-  (interactive)
-  (wpc/tmux-emacs-windmove 'below))
-
-(defun wpc/get-window-by-buffername (buffername)
-  "Finds a window by the name of the buffer it's hosting."
-  (let ((buffer (get-buffer buffername)))
-    (when buffer
-        (get-buffer-window buffer))))
-
-(defun wpc/add-earmuffs (x)
-  "Returns X surrounded by asterisks."
-  (format "*%s*" x))
-
-(defun wpc/get-default-shell ()
-  (or explicit-shell-file-name
-      (getenv "SHELL")
-      (getenv "ESHELL")))
-
-(defun wpc/find-terminal-buffer ()
-  (get-buffer (wpc/add-earmuffs wpc/terminal-name)))
-
-(defun wpc/find-terminal-window ()
-  (wpc/get-window-by-buffername (wpc/add-earmuffs wpc/terminal-name)))
-
-(defun wpc/create-terminal-session ()
-  (wpc/evil-window-vsplit-right)
-  (ansi-term (wpc/get-default-shell) wpc/terminal-name))
-
-(defun wpc/toggle-terminal ()
-  "Toggles a custom terminal session in Emacs."
-  (interactive)
-  (let ((window (wpc/find-terminal-window)))
-    (if window
-        (delete-window window)
-      (wpc/find-or-create-terminal))))
-
-(defun wpc/find-or-create-terminal ()
-  (let ((buffer (wpc/find-terminal-buffer)))
-    (if buffer
-        (display-buffer buffer)
-      (wpc/create-terminal-session))))
-
-(defun wpc/put-file-name-on-clipboard ()
-  "Put the current file name on the clipboard"
-  (interactive)
-  (let ((filename (if (equal major-mode 'dired-mode)
-                      default-directory
-                    (buffer-file-name))))
-    (when filename
-      (with-temp-buffer
-        (insert filename)
-        (clipboard-kill-region (point-min) (point-max)))
-      (message filename))))
-
-(defun wpc/evil-replace-under-point ()
-  "Faster than typing %s//thing/g"
-  (interactive)
-  (save-excursion
-    (evil-ex (concat "%s/\\b" (symbol-name (symbol-at-point)) "\\b/"))))
-
-(defun wpc/disable-linum-mode ()
-  "Convenience function defined to make adding hooks easier without a lambda."
-  (linum-mode -1))
-
-(defun wpc/disable-company-mode ()
-  "Convenience function defined to make adding hooks easier without a lambda."
-  (company-mode -1))
-
-(defun wpc/toggle-term-mode ()
-  "Toggle between term-line-mode and temr-char-mode."
-  (if (term-in-line-mode)
-      (term-char-mode)
-    (term-line-mode)))
-
-(defun buffer-dirname ()
-  "Return the directory name of the current buffer as a string."
-  (->> buffer-file-name
-       f-dirname
-       f-filename))
-
-(provide 'functions)
-;;; functions.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/macros.el b/configs/shared/emacs/.emacs.d/wpc/macros.el
deleted file mode 100644
index 02d7501b224d..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/macros.el
+++ /dev/null
@@ -1,28 +0,0 @@
-;;; macros.el --- Helpful variables for making my ELisp life more enjoyable -*- lexical-binding: t -*-
-;; Authpr: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This file contains helpful variables that I use in my ELisp development.
-
-;;; Code:
-(defmacro xi (&rest FORMS)
-  `(lambda ,(--filter (s-contains? (symbol-name it)
-                                   (prin1-to-string FORMS))
-                      '(x1 x2 x3 x4 x5))
-     ,FORMS))
-
-(defmacro enable (mode)
-  "Helper for enabling MODE. Useful in `add-hook' calls."
-  `#'(lambda nil (,mode 1)))
-
-(defmacro disable (mode)
-  "Helper for disabling MODE. Useful in `add-hook' calls."
-  `#'(lambda nil (,mode -1)))
-
-(defmacro add-hooks (modes)
-  "Add multiple MODES for the CALLBACK."
-  `(dolist (mode ,modes)
-     (add-hook (symbol/ensure-hookified mode) ,callback)))
-
-(provide 'macros)
-;;; macros.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el
deleted file mode 100644
index 1939d3ecedb1..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-clojure.el
+++ /dev/null
@@ -1,51 +0,0 @@
-;;; clojure.el --- My Clojure preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosting my Clojure tooling preferences
-
-;;; Code:
-
-;; Helper functions
-(defun wpc/buffer-name-for-clojure-mode (mode)
-  (let* ((project-name (projectile-project-name))
-         (cljs-name (concat "*cider-repl CLJS " project-name "*"))
-         (clj-name  (concat "*cider-repl " project-name "*")))
-    (cond ((eq mode 'clojurescript-mode) cljs-name)
-          ((eq mode 'clojure-mode) clj-name)
-          ((eq mode 'clojurec-mode) cljs-name))))
-
-(defun wpc/repl-function-for-clojure-mode (mode)
-  (let ((project-name (projectile-project-name))
-        (cljs-fn #'cider-jack-in-clojurescript)
-        (clj-fn  #'cider-jack-in))
-    (cond ((eq mode 'clojurescript-mode) cljs-fn)
-          ((eq mode 'clojure-mode) clj-fn)
-          ((eq mode 'clojurec-mode) cljs-fn))))
-
-(defun wpc/find-or-create-clojure-or-clojurescript-repl ()
-  (interactive)
-  (with-current-buffer (current-buffer)
-    (let ((buffer-name   (wpc/buffer-name-for-clojure-mode major-mode))
-          (repl-function (wpc/repl-function-for-clojure-mode major-mode)))
-      (if (get-buffer buffer-name)
-          (switch-to-buffer buffer-name)
-        (funcall repl-function)))))
-
-(use-package cider
-  :config
-  (general-define-key
-    :keymaps 'cider-repl-mode-map
-    "C-l"    #'cider-repl-clear-buffer
-    "C-u"    #'kill-whole-line
-    "<up>"   #'cider-repl-previous-input
-    "<down>" #'cider-repl-next-input
-    "C-c 'j" #'wpc/find-or-create-clojure-or-clojurescript-repl)
-  (setq cider-cljs-lein-repl
-        "(do (require 'figwheel-sidecar.repl-api)
-             (figwheel-sidecar.repl-api/start-figwheel!)
-             (figwheel-sidecar.repl-api/cljs-repl))"
-        cider-prompt-for-symbol nil))
-
-(provide 'wpc-clojure)
-;;; wpc-clojure.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el
deleted file mode 100644
index e4507031a1e0..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-company.el
+++ /dev/null
@@ -1,24 +0,0 @@
-;;; company.el --- Autocompletion package, company, preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my company mode preferences
-
-;;; Code:
-
-;; autocompletion client
-(use-package company
-  :config
-  (general-define-key
-    :keymaps 'company-active-map
-    "C-j" #'company-select-next
-    "C-n" #'company-select-next
-    "C-k" #'company-select-previous
-    "C-p" #'company-select-previous
-    "C-d" #'company-show-doc-buffer)
-  (setq company-idle-delay 0)
-  (setq company-minimum-prefix-length 2)
-  (global-company-mode))
-
-(provide 'wpc-company)
-;;; wpc-company.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el
deleted file mode 100644
index 6639ea530604..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-dired.el
+++ /dev/null
@@ -1,22 +0,0 @@
-;;; dired.el --- My dired preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my attempts at configuring dired
-
-;;; Code:
-
-(require 'dired)
-(general-nmap
-  :keymaps 'dired-mode-map
-  "c" #'find-file
-  "f" #'wpc/find-file
-  "-" #'dired-up-directory)
-(general-unbind
-  :keymaps 'dired-mode-map
-  "s")
-(general-add-hook 'dired-mode-hook (list (enable dired-hide-details-mode)
-                                         #'auto-revert-mode))
-
-(provide 'wpc-dired)
-;;; wpc-dired.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el
deleted file mode 100644
index 270eaec6fe4c..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-docker.el
+++ /dev/null
@@ -1,16 +0,0 @@
-;;; docker.el --- Docker preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; My Docker preferences and configuration
-
-;;; Code:
-
-(use-package docker
-  :config
-  (setenv "DOCKER_TLS_VERIFY" "1")
-  (setenv "DOCKER_HOST" "tcp://10.11.12.13:2376")
-  (setenv "DOCKER_MACHINE_NAME" "name"))
-
-(provide 'wpc-docker)
-;;; wpc-docker.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el
deleted file mode 100644
index fd3c178ebae8..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-elixir.el
+++ /dev/null
@@ -1,15 +0,0 @@
-;;; wpc-elixir.el --- Elixir / Erland configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; My preferences for working with Elixir / Erlang projects
-
-;;; Code:
-(use-package elixir-mode
-  :config
-  (general-add-hook 'elixir-mode-hook
-                    (lambda ()
-                      (add-hook 'before-save-hook #'elixir-format nil t))))
-
-(provide 'wpc-elixir)
-;;; wpc-elixir.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el
deleted file mode 100644
index d7bb834a6257..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-flycheck.el
+++ /dev/null
@@ -1,14 +0,0 @@
-;;; flycheck.el --- My flycheck configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my Flycheck preferences
-
-;;; Code:
-
-(use-package flycheck
-  :config
-  (global-flycheck-mode))
-
-(provide 'wpc-flycheck)
-;;; wpc-flycheck.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el
deleted file mode 100644
index 6fc98b31e77f..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-haskell.el
+++ /dev/null
@@ -1,56 +0,0 @@
-;;; haskell.el --- My Haskell preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my Haskell development preferences
-
-;;; Code:
-
-;; Haskell support
-
-;; font-locking, glyph support, etc
-(use-package haskell-mode
-  :config
-  (let ((m-symbols
-         '(("`mappend`" . "⊕")
-           ("<>"        . "⊕"))))
-    (dolist (item m-symbols) (add-to-list 'haskell-font-lock-symbols-alist item)))
-  (setq haskell-font-lock-symbols t)
-  (add-hook 'before-save-hook #'haskell-align-imports))
-
-;; LSP support
-(use-package lsp-haskell
-  :after (haskell-mode)
-  :config
-  (setq lsp-haskell-process-path-hie "hie-wrapper")
-  (add-hook 'haskell-mode-hook #'lsp-haskell-enable)
-  (add-hook 'haskell-mode-hook #'flycheck-mode))
-
-;; Test toggling
-(defun haskell/module->test ()
-  "Jump from a module to a test."
-  (let ((filename (->> buffer-file-name
-                       (s-replace "/src/" "/test/")
-                       (s-replace ".hs" "Test.hs")
-                       find-file)))
-    (make-directory (f-dirname filename) t)
-    (find-file filename)))
-
-(defun haskell/test->module ()
-  "Jump from a test to a module."
-  (let ((filename (->> buffer-file-name
-                       (s-replace "/test/" "/src/")
-                       (s-replace "Test.hs" ".hs")
-                       )))
-    (make-directory (f-dirname filename) t)
-    (find-file filename)))
-
-(defun haskell/test<->module ()
-  "Toggle between test and module in Haskell."
-  (interactive)
-  (if (s-contains? "/src/" buffer-file-name)
-      (haskell/module->test)
-    (haskell/test->module)))
-
-(provide 'wpc-haskell)
-;;; wpc-haskell.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el
deleted file mode 100644
index d341c2b580db..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-javascript.el
+++ /dev/null
@@ -1,88 +0,0 @@
-;; wpc-javascript.el --- My Javascript preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This module hosts my Javascript tooling preferences
-
-;;; Code:
-
-;; Constants
-(defconst wpc/js-hooks
-  '(js-mode-hook js2-mode-hook rjsx-mode-hook)
-  "All of the commonly used hooks for Javascript buffers.")
-
-(defconst wpc/frontend-hooks
-  (-insert-at 0 'css-mode-hook wpc/js-hooks)
-  "All of the commonly user hooks for frontend development.")
-
-
-;; Helper functions
-(defun wpc/insert-flow-annotation ()
-  "Insert a flow type annotation to the beginning of a buffer."
-  (interactive)
-  (save-excursion
-    (goto-char (point-min))
-    (insert "// @flow\n")))
-
-;; frontend indentation settings
-(setq js-indent-level 2
-      css-indent-offset 2)
-
-;; ;; javascript
-;; (evil-leader/set-key-for-mode 'rjsx-mode "t" #'wpc/toggle-between-js-test-and-module)
-;; (evil-leader/set-key-for-mode 'rjsx-mode "x" #'wpc/toggle-between-js-component-and-store)
-;; (evil-leader/set-key-for-mode 'rjsx-mode "u" #'wpc/jump-to-parent-file)
-
-;; Flow for Javascript
-(use-package add-node-modules-path
-  :config
-  (general-add-hook wpc/js-hooks #'add-node-modules-path))
-
-(use-package flow-minor-mode
-  :requires evil-leader
-  :config
-  (general-add-hook wpc/js-hooks #'flow-minor-mode)
-  (evil-leader/set-key-for-mode 'rjsx-mode "F" #'wpc/insert-flow-annotation))
-
-(use-package web-mode
-  :mode "\\.html\\'"
-  :config
-  (setq web-mode-css-indent-offset 2)
-  (setq web-mode-code-indent-offset 2)
-  (setq web-mode-markup-indent-offset 2))
-
-;; Shouldn't need this once LSP is setup properly
-;; (use-package company-flow
-;;   :after (company)
-;;   :config
-;;   (add-to-list 'company-flow-modes 'rjsx-mode)
-;;   (add-to-list 'company-backends 'company-flow))
-
-;; Shouldn't need this once LSP is setup properly
-;; (use-package flycheck-flow
-;;   :after (flycheck)
-;;   :config
-;;   (flycheck-add-mode 'javascript-flow 'rjsx-mode)
-;;   (flycheck-add-mode 'javascript-flow 'flow-minor-mode)
-;;   (flycheck-add-mode 'javascript-eslint 'flow-minor-mode)
-;;   (flycheck-add-next-checker 'javascript-flow 'javascript-eslint))
-
-;; JSX highlighting
-(use-package rjsx-mode
-  :mode "\\.js\\'"
-  :config
-  (general-unbind rjsx-mode-map "<" ">" "C-d")
-  (general-nmap
-    :keymaps 'rjsx-mode-map
-    "K" #'flow-minor-type-at-pos)
-  (setq js2-mode-show-parse-errors nil
-        js2-mode-show-strict-warnings nil))
-
-;; JS autoformatting
-(use-package prettier-js
-  :after (rjsx-mode)
-  :config
-  (general-add-hook wpc/frontend-hooks #'prettier-js-mode))
-
-(provide 'wpc-javascript)
-;;; wpc-javascript.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el
deleted file mode 100644
index a01505a041ef..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-keybindings.el
+++ /dev/null
@@ -1,139 +0,0 @@
-;;; keybindings.el --- My Evil preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This module hosts my Evil preferences
-;;
-;; Wish List:
-;; - drop support for `evil-leader' library in favor of `general.el'
-;; - restore support for concise (n <kbd> <function>) instead of `general-mmap'
-;; - restore support for `general-unbind'
-
-;;; Code:
-
-(use-package evil
-  :init
-  (setq evil-want-integration nil)
-  (general-evil-setup)
-  :config
-  (general-mmap
-    :keymaps 'override
-    "RET" #'evil-goto-line
-    "H"   #'evil-first-non-blank
-    "L"   #'evil-end-of-line
-    "-"   #'dired-jump
-    "sl"  #'wpc/evil-window-vsplit-right
-    "sh"  #'evil-window-vsplit
-    "sk"  #'evil-window-split
-    "sj"  #'wpc/evil-window-split-down)
-  (general-nmap
-    :keymaps 'override
-    "gd"  #'xref-find-definitions)
-  (general-unbind 'motion "M-." "C-p")
-  (general-unbind 'normal "s"   "M-.")
-  (general-unbind 'insert "C-d" "C-a" "C-e" "C-n" "C-p" "C-k")
-  (setq evil-symbol-word-search t)
-  (evil-mode 1))
-
-;; evil keybindings
-(use-package evil-collection
-  :after (evil)
-  :config
-  (evil-collection-init))
-
-;; expose a leader key
-(use-package evil-leader
-  :after (evil counsel)
-  :config
-  (global-evil-leader-mode)
-  (evil-leader/set-leader "<SPC>")
-  ;; global
-  (evil-leader/set-key
-    "i"  #'counsel-semantic-or-imenu
-    "j"  #'jump-to-register
-    "h"  #'help
-    "a"  #'wpc/toggle-terminal
-    "="  #'align
-    "p"  #'flycheck-previous-error
-    "P"  #'counsel-git-grep
-    "f"  #'wpc/find-file
-    "n"  #'flycheck-next-error
-    "N"  #'smerge-next
-    "P"  #'smerge-prev
-    "b"  #'ivy-switch-buffer
-    "gs" #'magit-status
-
-    "es" #'wpc/create-snippet
-    "ev" (lambda () (interactive) (wpc/find-file-split "~/.config/nvim/init.vim"))
-    "ee" (lambda () (interactive) (wpc/find-file-split "~/.emacs.d/init.el"))
-    "ez" (lambda () (interactive) (wpc/find-file-split "~/.zshrc"))
-    "ea" (lambda () (interactive) (wpc/find-file-split "~/aliases.zsh"))
-    "ef" (lambda () (interactive) (wpc/find-file-split "~/functions.zsh"))
-    "el" (lambda () (interactive) (wpc/find-file-split "~/variables.zsh"))
-    "ex" (lambda () (interactive) (wpc/find-file-split "~/.Xresources"))
-    "ei" (lambda () (interactive) (wpc/find-file-split "~/.config/i3/config.shared"))
-    "em" (lambda () (interactive) (wpc/find-file-split "~/.tmux.conf"))
-
-    "B"  #'magit-blame
-    "w"  #'save-buffer
-    "x"  #'evil-save-and-close
-    "W"  #'save-all-buffers
-    "r"  #'wpc/evil-replace-under-point
-    ))
-
-;; create comments easily
-(use-package evil-commentary
-  :after (evil)
-  :config
-  (evil-commentary-mode))
-
-;; evil surround
-(use-package evil-surround
-  :after (evil)
-  :config
-  (global-evil-surround-mode 1))
-
-(defun wpc/ensure-kbds (_ignore)
-  "Try to ensure that my keybindings retain priority over other minor modes."
-  (unless (eq (caar minor-mode-map-alist) 'wpc/kbds-minor-mode)
-    (let ((mykbds (assq 'wpc/kbds-minor-mode minor-mode-map-alist)))
-      (assq-delete-all 'wpc/kbds-minor-mode minor-mode-map-alist)
-      (add-to-list 'minor-mode-map-alist mykbds))))
-
-;; Custom minor mode that ensures that my kbds are available no matter which
-;; major or minor modes are active.
-(add-hook 'after-load-functions #'wpc/ensure-kbds)
-
-(defvar wpc/kbds
-  (let ((map (make-sparse-keymap)))
-    (bind-keys :map map
-               ("M-q" . delete-window)
-               ("C-x C-;" . comment-or-uncomment-region)
-               ("C-x h" . help)
-               ("<s-return>" . toggle-frame-fullscreen)
-               ("<down-mouse-1>" . ffap-other-window)
-               ("M-h"  . wpc/tmux-emacs-windmove-left)
-               ("M-l"  . wpc/tmux-emacs-windmove-right)
-               ("M-k"  . wpc/tmux-emacs-windmove-up)
-               ("M-j"  . wpc/tmux-emacs-windmove-down)
-               ("M--"  . wpc/evil-window-split-down)
-               ("M-\\" . wpc/evil-window-vsplit-right)
-               ("M-q"  . delete-window))
-    map)
-  "William Carroll's keybindings that should have the highest precedence.")
-
-(define-minor-mode wpc/kbds-minor-mode
-  "A minor mode so that my key settings override annoying major modes."
-  :init-value t
-  :lighter " wpc/kbds"
-  :keymap wpc/kbds)
-
-;; allow jk to escape
-(use-package key-chord
-  :after (evil)
-  :config
-  (key-chord-mode 1)
-  (key-chord-define evil-insert-state-map "jk" 'evil-normal-state))
-
-(provide 'wpc-keybindings)
-;;; wpc-keybindings.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el
deleted file mode 100644
index cebe7b265761..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-lisp.el
+++ /dev/null
@@ -1,48 +0,0 @@
-;;; lisp.el --- Generic LISP preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This hosts things like Paredit settings
-;;
-;; Here is some of the thinking behind some of the keybindings:
-;;
-;; slurp    s
-;; barf     S
-;; forward  )
-;; backward (
-;;
-;; Known concession: s and S eclipse Vim bindings.  There is a precedent already
-;; for eclipsing the s binding for window splitting.  Shift-s feel appropriate
-;; for barfing, since eclisping the b KBD feels less acceptable than eclisping
-;; the s KBD.
-
-;;; Code:
-
-(defconst wpc/lisp-mode-hooks
-  '(emacs-lisp-mode-hook
-    clojure-mode-hook
-    clojurescript-mode-hook))
-
-;; Elisp
-(use-package elisp-slime-nav
-  :config
-  (general-add-hook 'emacs-lisp-mode #'ielm-mode))
-
-;; paredit LISP editing
-(use-package paredit
-  :config
-  (general-unbind
-    :keymaps 'paredit-mode-map
-    "C-j"
-    "M-q")
-  (general-nmap
-    :keymaps 'paredit-mode-map
-     "s)" #'paredit-forward-slurp-sexp
-     "s(" #'paredit-backward-slurp-sexp
-     "S)" #'paredit-forward-barf-sexp
-     "S(" #'paredit-backward-barf-sexp
-     "gr" #'paredit-raise-sexp)
-  (general-add-hook wpc/lisp-mode-hooks #'enable-paredit-mode))
-
-(provide 'wpc-lisp)
-;;; wpc-lisp.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el
deleted file mode 100644
index e60b97323307..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-misc.el
+++ /dev/null
@@ -1,205 +0,0 @@
-;;; misc.el --- Hosting miscellaneous configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This is the home of any configuration that couldn't find a better home.
-
-;;; Code:
-
-;; disable custom variable entries from being written to ~/.emacs.d/init.el
-(setq custom-file "~/.emacs.d/custom.el")
-(load custom-file 'noerror)
-
-;; integrate Emacs with X11 clipboard
-(setq x-select-enable-primary t)
-(setq x-select-enable-clipboard t)
-(general-def 'insert
-  "s-v" #'x-clipboard-yank
-  "C-S-v" #'x-clipboard-yank)
-
-;; transparently edit compressed files
-(auto-compression-mode t)
-
-;; autowrap when over the fill-column
-(add-hook 'fundamental-mode-hook 'turn-on-auto-fill)
-
-;; link to Emacs source code
-(setq find-function-C-source-directory "~/programming/emacs/src")
-
-;; change emacs prompts from "yes or no" -> "y or n"
-(fset 'yes-or-no-p 'y-or-n-p)
-
-;; open photos in Emacs
-(auto-image-file-mode 1)
-
-;; disable line-wrapping
-(setq-default truncate-lines 1)
-
-;; shell file indentation
-(setq sh-basic-offset 2)
-(setq sh-indentation 2)
-
-;; disable company mode when editing markdown
-;; TODO: move this out of wpc-misc.el and into a later file to call
-;; `(disable company-mode)'
-(add-hook 'markdown-mode-hook (company-mode -1))
-
-;; create file bookmarks
-(set-register ?e '(file . "~/.emacs.d/wpc/packages"))
-(set-register ?n '(file . "~/programming/nixify/configuration.nix"))
-(set-register ?d '(file . "~/Dropbox/dotfiles"))
-(set-register ?s '(file . "~/.slate.js"))
-(set-register ?D '(file . "~/Dropbox"))
-(set-register ?o '(file . "~/Dropbox/org/")) ;; TODO: change this to `(getenv "ORG_DIRECTORY")'
-
-(set-register ?v '(file . "~/.config/nvim/init.vim"))
-(set-register ?e '(file . "~/.emacs.d/init.el"))
-(set-register ?z '(file . "~/.zshrc"))
-(set-register ?a '(file . "~/aliases.zsh"))
-(set-register ?f '(file . "~/functions.zsh"))
-(set-register ?l '(file . "~/variables.zsh"))
-(set-register ?x '(file . "~/.Xresources"))
-(set-register ?i '(file . "~/.config/i3/config.shared"))
-(set-register ?m '(file . "~/.tmux.conf"))
-
-(set-register ?p `(file . ,wpc/current-project))
-
-;; persist history etc b/w Emacs sessions
-(setq desktop-save 'if-exists)
-(desktop-save-mode 1)
-(setq desktop-globals-to-save
-      (append '((extended-command-history . 30)
-                (file-name-history        . 100)
-                (grep-history             . 30)
-                (compile-history          . 30)
-                (minibuffer-history       . 50)
-                (query-replace-history    . 60)
-                (read-expression-history  . 60)
-                (regexp-history           . 60)
-                (regexp-search-ring       . 20)
-                (search-ring              . 20)
-                (shell-command-history    . 50)
-                tags-file-name
-                register-alist)))
-
-;; config Emacs to use $PATH values
-(use-package exec-path-from-shell
-  :if (memq window-system '(mac ns))
-  :config
-  (exec-path-from-shell-initialize))
-
-;; Emacs autosave, backup, interlocking files
-(setq auto-save-default nil
-      make-backup-files nil
-      create-lockfiles nil)
-
-;; ensure code wraps at 80 characters by default
-(setq-default fill-column wpc/fill-column)
-
-(put 'narrow-to-region 'disabled nil)
-
-;; trim whitespace on save
-(add-hook 'before-save-hook #'delete-trailing-whitespace)
-
-;; use tabs instead of spaces
-(setq-default indent-tabs-mode nil)
-
-;; automatically follow symlinks
-(setq vc-follow-symlinks t)
-
-;; fullscreen settings
-(setq ns-use-native-fullscreen nil)
-
-;; auto-close parens, brackets, quotes
-(electric-pair-mode 1)
-
-(use-package oauth2
-  :init
-  ;; necessary to remove warnings: https://emacs.stackexchange.com/questions/37036/where-are-these-variables-defined-bytecomp-warnings
-  (defvar url-http-extra-headers ())
-  (defvar oauth--token-data ())
-  (defvar url-callback-function ())
-  (defvar url-callback-arguments ()))
-
-; (use-package smex
-;   :config
-;   (general-define-key "M-x" #'smex)
-;   (general-add-hook 'ido-setup-hook #'wpc/bind-ido-keys)
-;   (smex-initialize))
-
-(use-package flx-ido
-  :after (smex)
-  :config
-  (flx-ido-mode 1)
-  (setq ido-enable-flex-matching t
-        ido-use-faces nil))
-
-(use-package swiper
-  :config
-  (general-define-key
-    "C-s" #'swiper
-    "C-r" #'swiper))
-
-(use-package yasnippet
-  :config
-  (yas-global-mode 1))
-
-(use-package ace-window
-  :config
-  (general-define-key "C-x o" #'ace-window)
-  (setq aw-keys '(?a ?s ?d ?f ?j ?k ?k ?\;)))
-
-(use-package projectile
-  :config
-  (projectile-mode t))
-
-(use-package counsel
-  :config
-  (defun wpc/counsel-git-grep ()
-    (interactive)
-    (let ((maybe-symbol (wpc/string-symbol-at-point)))
-      (if (string= maybe-symbol "nil")
-          (counsel-git-grep)
-        (counsel-git-grep nil maybe-symbol)))))
-
-;; search Google, Stackoverflow from within Emacs
-(use-package engine-mode
-  :config
-  (defengine google
-    "http://www.google.com/search?ie=utf-8&oe=utf-8&q=%s"
-    :keybinding "g")
-  (defengine stack-overflow
-    "https://stackoverflow.com/search?q=%s"
-    :keybinding "s"))
-
-;; Microsoft's Language Server Protocol (LSP)
-(use-package lsp-ui
-  :config
-  (add-hook 'lsp-mode-hook #'lsp-ui-mode))
-(use-package company-lsp
-  :config
-  (push 'company-lsp company-backends))
-
-(defun wpc/frame-name ()
-  "Return the name of the current frame."
-  (frame-parameter nil 'name))
-
-;; Having difficulty starting the server using systemd or calling
-;; `emacs --daemon' in ~/.profile, ~/.xsessionrc, and similar files.
-
-;; systemd has issues syncing the socket-name, so it becomes messy. I also
-;; experienced strange initialization where things like wpc-org and other
-;; modules wouldn't get loaded.
-;;
-;; Even if I resolved the socket-name resolution issue, I couldn't find an
-;; elegant way to reuse GUI frames. GUIs for me have the advantage of supporting
-;; True Color, support additional keys for KBDs (i.e. super), and aren't limited
-;; by the terminal for rendering certain things.
-;;
-;; For these reasons, it seems preferable to start the server from here. I'm
-;; considering starting emacs in my ~/.xsessionrc so that the server will be
-;; running after X initializes.
-(server-start)
-
-(provide 'wpc-misc)
-;;; wpc-misc.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el
deleted file mode 100644
index af439c442d63..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-nix.el
+++ /dev/null
@@ -1,12 +0,0 @@
-;;; wpc-nix.el --- Nix support -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Configuration to support working with Nix.
-
-;;; Code:
-(use-package nix-mode
-  :mode "\\.nix\\'")
-
-(provide 'wpc-nix)
-;;; wpc-nix.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el
deleted file mode 100644
index 03b52ba27247..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-org.el
+++ /dev/null
@@ -1,76 +0,0 @@
-;;; org.el --- My org preferences -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts my org mode preferences
-
-;;; Code:
-
-;; TODO: figure out how to nest this in (use-package org ...)
-(setq org-capture-templates
-      `(
-
-        ("w" "work" entry (file+headline
-                           ,(f-join (getenv "ORG_DIRECTORY") "work.org")
-                           "Tasks")
-         "* TODO %?")
-
-        ("p" "personal" entry (file+headline
-                               ,(f-join (getenv "ORG_DIRECTORY") "personal.org")
-                               "Tasks")
-         "* TODO %? ")
-
-        ("i" "ideas" entry (file+headline
-                            ,(f-join (getenv "ORG_DIRECTORY") "ideas.org")
-                            "Tasks")
-         "* %? ")
-
-        ("s" "shopping list" entry (file+headline
-                            ,(f-join (getenv "ORG_DIRECTORY") "shopping.org")
-                            "Items")
-         "* TODO %? ")
-
-        ))
-(evil-set-initial-state 'org-mode 'insert)
-
-(use-package org
-  :config
-  (general-add-hook 'org-mode-hook
-                    ;; TODO: consider supporting `(disable (list linum-mode company-mode))'
-                    (list (disable linum-mode)
-                          (disable company-mode)))
-  (general-define-key :prefix "C-c"
-           "l" #'org-store-link
-           "a" #'org-agenda
-           "c" #'org-capture)
-  (setq org-todo-keywords
-        '((sequence "TODO" "BLOCKED" "DONE")))
-  (setq org-default-notes-file (f-join (getenv "ORG_DIRECTORY") "notes.org"))
-  (setq org-agenda-files (list (f-join (getenv "ORG_DIRECTORY") "work.org")
-                               (f-join (getenv "ORG_DIRECTORY") "personal.org")))
-  ;; TODO: troubleshoot why `wpc/kbds-minor-mode', `wpc/ensure-kbds' aren't
-  ;; enough to override the following KBDs. See this discussion for more context
-  ;; on where the idea came from:
-  ;; https://stackoverflow.com/questions/683425/globally-override-key-binding-in-emacs
-  (general-unbind 'normal org-mode-map "M-h" "M-j" "M-k" "M-l"))
-
-(use-package org-bullets
-  :after (org)
-  :config
-  (general-add-hook 'org-mode-hook (enable org-bullets-mode)))
-
-;; i3, `org-mode' integration
-;; Heavily influenced by: https://somethingsomething.us/post/i3_and_orgmode/
-(defadvice org-switch-to-buffer-other-window
-    (after supress-window-splitting activate)
-  "Delete the extra window if we're in a capture frame."
-  (if (equal "org-protocol-capture" (wpc/frame-name))
-      (delete-other-windows)))
-
-(add-hook 'org-capture-after-finalize-hook
-          (lambda ()
-            (when (equal "org-protocol-capture" (wpc/frame-name))
-                (delete-frame))))
-
-(provide 'wpc-org)
-;;; wpc-org.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el
deleted file mode 100644
index 6f43330ecb1a..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-package.el
+++ /dev/null
@@ -1,27 +0,0 @@
-;;; package.el --- My package configuration -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This module hosts all of the settings required to work with ELPA,
-;; MELPA, QUELPA, and co.
-
-;;; Code:
-
-(require 'package)
-(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
-(package-initialize)
-
-(unless (package-installed-p 'use-package)
-  (package-refresh-contents)
-  (package-install 'use-package))
-(eval-when-compile
-  (require 'use-package))
-(setq use-package-always-ensure t)
-(use-package general)
-
-(add-to-list 'load-path "~/.emacs.d/vendor/")
-(add-to-list 'load-path "~/.emacs.d/wpc/")
-(add-to-list 'load-path "~/.emacs.d/wpc/packages")
-
-(provide 'wpc-package)
-;;; wpc-package.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el
deleted file mode 100644
index aa76fde6a16b..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-terminal.el
+++ /dev/null
@@ -1,22 +0,0 @@
-;;; terminal.el --- My cobbled together terminal -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; My attempts at creating a sane Emacs terminal
-;;
-;; This module previously contained more logic, which has since been stripped.
-;;
-;; If the variable `explicit-shell-file-name' is `nil', Emacs will use the value
-;; for the $SHELL environment variable.  When running on NixOS, since binaries
-;; like `zsh' won't be available at `/bin/zsh' or other common places, we need
-;; to ensure that `explicit-shell-file-name' remain `nil'.
-;;
-;; Wish List:
-;; - prevent Emacs from asking: "Run program: /run/current-system/sw/bin/zsh"
-
-;;; Code:
-
-(setq wpc/terminal-name "wpc/terminal")
-
-(provide 'wpc-terminal)
-;;; wpc-terminal.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el b/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el
deleted file mode 100644
index 8cbcf3248f71..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/packages/wpc-ui.el
+++ /dev/null
@@ -1,162 +0,0 @@
-;;; wpc-ui.el --- Any related to the UI/UX goes here -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; Hosts font settings, scrolling, color schemes.
-
-;;; Code:
-
-;; increase line height
-(setq-default line-spacing 4)
-
-;; change font
-(add-to-list 'default-frame-alist '(font . "Operator Mono Book-9"))
-
-(defconst wpc/font-size-step 10
-  "The amount (%) by which to increase or decrease a font.")
-
-(defun wpc/increase-font ()
-  "Increase font size."
-  (interactive)
-  (->> (face-attribute 'default :height)
-       (+ wpc/font-size-step)
-       (set-face-attribute 'default (selected-frame) :height)))
-
-(defun wpc/decrease-font ()
-  "Decrease font size."
-  (interactive)
-  (->> (face-attribute 'default :height)
-       (+ (- wpc/font-size-step))
-       (set-face-attribute 'default (selected-frame) :height)))
-
-(general-define-key "s-j" #'wpc/decrease-font)
-(general-define-key "s-k" #'wpc/increase-font)
-
-;; smooth scrolling settings
-(setq scroll-step 1
-      scroll-conservatively 10000)
-
-;; theme mgt
-(use-package cycle-themes
-  :after (doom-themes)
-  :config
-  ;; NOTE: may want to use `defconst' here
-  (setq wpc/doom-themes
-        (->> (custom-available-themes)
-             (-map #'symbol-name)
-             (-filter (-partial #'s-starts-with? "doom-"))
-             (-map #'intern)))
-  (setq cycle-themes-theme-list wpc/doom-themes))
-
-;; clean up modeline
-(use-package diminish
-  :after (yasnippet ivy which-key)
-  :config
-  (diminish 'evil-commentary-mode)
-  (diminish 'flycheck-mode "Flycheck")
-  (diminish 'company-mode "Company")
-  (diminish 'auto-revert-mode)
-  (diminish 'which-key-mode)
-  (diminish 'yas-minor-mode)
-  (diminish 'ivy-mode))
-
-;; disable startup screen
-(setq inhibit-startup-screen t)
-
-;; disable toolbar
-(tool-bar-mode -1)
-
-;; enable line numbers
-(general-add-hook '(prog-mode-hook
-                    text-mode-hook
-                    conf-mode-hook)
-                  (enable linum-mode))
-;;(add-hook 'after-init-hook (lambda () (set-face-foreground 'linum "#da5468")))
-
-;; set default buffer for Emacs
-(setq initial-buffer-choice wpc/current-project)
-
-;; transparent Emacs
-(set-frame-parameter (selected-frame) 'alpha '(90 . 90))
-(setq frame-transparent? t)
-
-(defun wpc/toggle-transparency ()
-  "Toggle the frame transparency."
-  (interactive)
-  (set-frame-parameter (selected-frame) 'alpha '(90 . 90))
-  (let ((alpha (if frame-transparent? 100 90)))
-    (set-frame-parameter (selected-frame) 'alpha `(,alpha . ,alpha)))
-  (setq frame-transparent? (not frame-transparent?)))
-
-(general-define-key "s-u" #'wpc/toggle-transparency)
-
-;; premium Emacs themes
-(use-package doom-themes
-  :config
-  (setq doom-themes-enable-bold t
-        doom-themes-enable-italic t)
-  (load-theme 'doom-one t)
-  (doom-themes-visual-bell-config)
-  (doom-themes-org-config))
-
-;; kbd discovery
-(use-package which-key
-  :config
-  (setq which-key-idle-delay 0.25)
-  (which-key-mode))
-
-;; completion framework
-(use-package ivy
-  :config
-  (ivy-mode t))
-
-;; icons for Ivy
-(use-package all-the-icons-ivy
-  :after (ivy)
-  :config
-  (all-the-icons-ivy-setup))
-
-;; disable menubar
-(menu-bar-mode -1)
-(when (string-equal system-type "darwin")
-  (setq ns-auto-hide-menu-bar t))
-
-;; reduce noisiness of auto-revert-mode
-(setq auto-revert-verbose nil)
-
-;; highlight lines that are over 100 characters long
-(use-package whitespace
-  :config
-  (setq whitespace-line-column wpc/fill-column)
-  (setq whitespace-style '(face lines-tail))
-  (add-hook 'prog-mode-hook #'whitespace-mode))
-
-
-
-;; rebalance emacs windows after splits are created
-(defadvice split-window-below (after rebalance-windows activate)
-  (balance-windows))
-
-(defadvice split-window-right (after rebalance-windows activate)
-  (balance-windows))
-
-(defadvice delete-window (after rebalance-window activate)
-  (balance-windows))
-
-;; dirname/filename instead of filename<dirname>
-(setq uniquify-buffer-name-style 'forward)
-
-;; highlight matching parens, brackets, etc
-(show-paren-mode 1)
-
-;; hide the scroll-bars in the GUI
-(scroll-bar-mode -1)
-
-;; GUI alerts in emacs
-(use-package alert
-  :commands (alert)
-  :config
-  (setq alert-default-style 'notifier))
-
-(provide 'wpc-ui)
-;;; wpc-ui.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/string-functions.el b/configs/shared/emacs/.emacs.d/wpc/string-functions.el
deleted file mode 100644
index 2ddd22b223c4..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/string-functions.el
+++ /dev/null
@@ -1,48 +0,0 @@
-;; functions.el --- String helper functions for my Emacs development -*- lexical-binding: t -*-
-;; Author: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; String & Symbol helpers!
-
-;;; Code:
-
-;; Strings
-(defun string/hookify (x)
-  "Append \"-hook\" to X."
-  (s-append "-hook" x))
-
-(defun symbol->string (symbol)
-  "Alias for `symbol-name' with SYMBOL, since I can never remember that
-function's name."
-  (symbol-name symbol))
-
-(defun string->symbol (string)
-  "Alias for `intern' for STRING since I can never remember that function's
-  name."
-  (intern string))
-
-(defun string/ensure-hookified (x)
-  "Ensure that X has \"-hook\" appended to it."
-  (if (s-ends-with? "-hook" x)
-      x
-    (string/hookify x)))
-
-;; Symbols
-(defun symbol/as-string (callback x)
-  "Treat the symbol, X, as a string while applying CALLBACK to it.
-Coerce back to a symbol on the way out."
-  (->> x
-       symbol-name
-       callback
-       intern))
-
-(defun symbol/hookify (x)
-  "Append \"-hook\" to X when X is a symbol."
-  (symbol/as-string #'string/hookify x))
-
-(defun symbol/ensure-hookified (x)
-  "Ensure that X has \"-hook\" appended to it when X is a symbol."
-  (symbol/as-string #'string/ensure-hookified x))
-
-(provide 'string-functions)
-;;; string-functions.el ends here
diff --git a/configs/shared/emacs/.emacs.d/wpc/variables.el b/configs/shared/emacs/.emacs.d/wpc/variables.el
deleted file mode 100644
index 39007a6493fb..000000000000
--- a/configs/shared/emacs/.emacs.d/wpc/variables.el
+++ /dev/null
@@ -1,26 +0,0 @@
-;;; variables.el --- Helpful variables for making my ELisp life more enjoyable -*- lexical-binding: t -*-
-;; Authpr: William Carroll <wpcarro@gmail.com>
-
-;;; Commentary:
-;; This file contains helpful variables that I use in my ELisp development.
-
-;;; Code:
-
-(defconst wpc/current-project
-  "~/programming"
-  "Variable holding the directory for my currently active project.")
-
-(defvar wpc/mouse-kbds
-  '([mouse-1] [down-mouse-1] [drag-mouse-1] [double-mouse-1] [triple-mouse-1]
-    [mouse-2] [down-mouse-2] [drag-mouse-2] [double-mouse-2] [triple-mouse-2]
-    [mouse-3] [down-mouse-3] [drag-mouse-3] [double-mouse-3] [triple-mouse-3]
-    [mouse-4] [down-mouse-4] [drag-mouse-4] [double-mouse-4] [triple-mouse-4]
-    [mouse-5] [down-mouse-5] [drag-mouse-5] [double-mouse-5] [triple-mouse-5])
-  "This variable stores all of the mouse-related keybindings that Emacs recognizes.")
-
-(defconst wpc/fill-column
-  80
-  "Variable used to set the defaults for wrapping, highlighting, etc.")
-
-(provide 'variables)
-;;; variables.el ends here