summary refs log tree commit diff
path: root/configs/rcs
diff options
context:
space:
mode:
Diffstat (limited to 'configs/rcs')
-rw-r--r--configs/rcs/Makefile40
-rw-r--r--configs/rcs/aspell.en.pws15
-rwxr-xr-xconfigs/rcs/bashrc39
-rw-r--r--configs/rcs/ctags25
-rw-r--r--configs/rcs/emacs.d/config/fcuny-base.el69
-rw-r--r--configs/rcs/emacs.d/config/fcuny-basic-settings.el53
-rw-r--r--configs/rcs/emacs.d/config/fcuny-darwin.el16
-rw-r--r--configs/rcs/emacs.d/config/fcuny-editor.el160
-rw-r--r--configs/rcs/emacs.d/config/fcuny-linux.el8
-rw-r--r--configs/rcs/emacs.d/config/fcuny-prog.el161
-rw-r--r--configs/rcs/emacs.d/config/fcuny-serializers.el38
-rw-r--r--configs/rcs/emacs.d/config/fcuny-text.el30
-rw-r--r--configs/rcs/emacs.d/init.el37
-rw-r--r--configs/rcs/gitconfig20
-rw-r--r--configs/rcs/gitignore24
-rw-r--r--configs/rcs/rcs/aliases15
-rw-r--r--configs/rcs/rcs/twitter10
17 files changed, 760 insertions, 0 deletions
diff --git a/configs/rcs/Makefile b/configs/rcs/Makefile
new file mode 100644
index 0000000..2b78a51
--- /dev/null
+++ b/configs/rcs/Makefile
@@ -0,0 +1,40 @@
+INTO      = $(HOME)
+
+
+INSTALL = \
+	aspell.en.pws \
+	bashrc \
+	ctags \
+	emacs.d \
+	gitconfig \
+	gitignore
+
+
+INSTALLED = $(patsubst %,$(INTO)/.%,$(INSTALL))
+LN        = @ln -sf
+
+$(INTO)/.% : %
+	@[ ! -e $@ ] || [ -h $@ ] || mv -f $@ $@.bak
+	$(LN) $(PWD)/$< $@
+
+$(HOME)/.ssh/authorized_keys:
+	@curl https://github.com/fcuny.keys -o $(HOME)/.ssh/authorized_keys
+
+$(HOME)/workspace:
+	@mkdir -p $(HOME)/workspace/
+
+.PHONY: git
+git:
+	@git config --local user.email "franck.cuny@gmail.com"
+	@git config --local user.name "Franck Cuny"
+
+.PHONY: check-dead
+check-dead:
+	@find ~ -maxdepth 1 -name '.*' -type l -exec test ! -e {} \; -print
+
+.PHONY: clean-dead
+clean-dead:
+	@find ~ -maxdepth 1 -name '.*' -type l -exec test ! -e {} \; -delete
+
+.PHONY: install
+install: $(INSTALLED) $(HOME)/workspace $(HOME)/.ssh/authorized_keys
diff --git a/configs/rcs/aspell.en.pws b/configs/rcs/aspell.en.pws
new file mode 100644
index 0000000..c0ca9b6
--- /dev/null
+++ b/configs/rcs/aspell.en.pws
@@ -0,0 +1,15 @@
+personal_ws-1.1 en 14 
+IP
+distributedlog
+DistributedLog
+filesystems
+DeferredRPC
+Cuny
+koalabird
+cql
+lumberjaph
+mesos
+easyviz
+DHCPD
+EventBus
+SRE
diff --git a/configs/rcs/bashrc b/configs/rcs/bashrc
new file mode 100755
index 0000000..c4fb2a1
--- /dev/null
+++ b/configs/rcs/bashrc
@@ -0,0 +1,39 @@
+export EDITOR="emacsclient"
+export HISTFILE=
+export LANG="en_US.UTF-8"
+export LC_ALL="$LANG"
+export LC_CTYPE="$LANG"
+export PAGER="less"
+export TZ=America/Los_Angeles
+export GOPATH="${HOME}/workspace/go"
+
+[ -z "$PS1" ] && return
+
+# prompts
+export PS1="\h:\w % "
+
+RC_DIR=$(dirname $(readlink ${BASH_SOURCE[0]}))
+
+[[ -s "${RC_DIR}/rcs/aliases" ]] && source "${RC_DIR}/rcs/aliases"
+[[ -s "${RC_DIR}/rcs/twitter" ]] && source "${RC_DIR}/rcs/twitter"
+
+# finally, build the path and source a few files
+__add_to_path_if_exists() {
+  [ -d "$1" ] && export PATH="$1:$PATH"
+}
+
+__source_file_if_exists() {
+  [ -s "$1" ] && source "$1"
+}
+
+__add_to_path_if_exists "${HOME}/workspace/bin"
+__add_to_path_if_exists "${GOPATH}/bin"
+
+__source_file_if_exists "/opt/google-cloud-sdk/path.bash.inc"
+__source_file_if_exists "/opt/google-cloud-sdk/completion.bash.inc"
+
+# Twitter paths
+__add_to_path_if_exists "${HOME}/workspace/git.twitter.biz/source/dist"
+__add_to_path_if_exists "/opt/twitter/opt/go/libexec/bin"
+__add_to_path_if_exists "/opt/twitter/bin"
+__source_file_if_exists "/opt/twitter/rvm/scripts/rvm"
diff --git a/configs/rcs/ctags b/configs/rcs/ctags
new file mode 100644
index 0000000..3d83cd1
--- /dev/null
+++ b/configs/rcs/ctags
@@ -0,0 +1,25 @@
+--recurse=yes
+--exclude=.git,.pants.d
+--exclude=log
+--languages=-javascript,-html
+--append
+--tag-relative=yes
+
+--langdef=Go
+--langmap=Go:.go
+--regex-Go=/func([ \t]+\([^)]+\))?[ \t]+([a-zA-Z0-9_]+)/\2/d,func/
+--regex-Go=/type[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,type/
+--regex-Go=/var[ \t]+([a-zA-Z_][a-zA-Z0-9_]+)/\1/d,var/
+
+--langdef=scala
+--langmap=scala:.scala
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*class[ \t]+([a-zA-Z0-9_]+)/\4/c,classes/
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*object[ \t]+([a-zA-Z0-9_]+)/\4/c,objects/
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*case class[ \t]+([a-zA-Z0-9_]+)/\6/c,case classes/
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*case object[ \t]+([a-zA-Z0-9_]+)/\4/c,case objects/
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy)[ \t]*)*(private[^ ]*|protected)?[ \t]*trait[ \t]+([a-zA-Z0-9_]+)/\4/t,traits/
+--regex-scala=/^[ \t]*type[ \t]+([a-zA-Z0-9_]+)/\1/T,types/
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|private[^ ]*(\[[a-z]*\])*|protected)[ \t]*)*def[ \t]+([a-zA-Z0-9_]+)/\4/m,methods/
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|private[^ ]*|protected)[ \t]*)*val[ \t]+([a-zA-Z0-9_]+)/\3/l,constants/
+--regex-scala=/^[ \t]*((abstract|final|sealed|implicit|lazy|private[^ ]*|protected)[ \t]*)*var[ \t]+([a-zA-Z0-9_]+)/\3/l,variables/
+--regex-scala=/^[ \t]*package[ \t]+([a-zA-Z0-9_.]+)/\1/p,packages/
diff --git a/configs/rcs/emacs.d/config/fcuny-base.el b/configs/rcs/emacs.d/config/fcuny-base.el
new file mode 100644
index 0000000..bca68c8
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-base.el
@@ -0,0 +1,69 @@
+(defvar fcuny-path-home (getenv "HOME")
+  "Path to the user's home directory.")
+
+(defvar fcuny-path-workspace (expand-file-name "workspace" fcuny-path-home)
+  "Path to the workspace.")
+
+(defvar fcuny-path-go (expand-file-name "go" fcuny-path-workspace)
+  "Path to GOPATH.")
+
+(defvar fcuny-path-go-bin (expand-file-name "bin" fcuny-path-go)
+  "Path to the go binaries.")
+
+(defvar fcuny-path-git-twitter (expand-file-name "git.twitter.biz" fcuny-path-workspace)
+  "Path to twitter's git repositories.")
+
+(defvar fcuny-path-git-github (expand-file-name "github.com" fcuny-path-workspace)
+  "Path to github's git repositories.")
+
+(defvar fcuny-path-svn-twitter (expand-file-name "svn.twitter.biz" fcuny-path-workspace)
+  "Path to twitter's SVN repositories.")
+
+(defvar fcuny-path-puppet-linter-svn (expand-file-name "twitter-ops/utilities/puppet/.puppet-lint.rc"
+                                                       fcuny-path-svn-twitter)
+  "Path to the linter's configuration for twitter-ops.")
+
+(defvar fcuny-path-emacs-var (expand-file-name "var" user-emacs-directory)
+  "Path to some files for Emacs.")
+
+(defvar fcuny-path-emacs-elpa (expand-file-name "elpa" fcuny-path-emacs-var)
+  "Path to elpa's local files.")
+
+(defvar fcuny-projects-ignored-dirs '(".git" ".svn" "target" "elpa")
+  "Ignore the following directories when browsing with projectile.")
+
+(defvar fcuny-bookmarks-dir (expand-file-name "bookmarks" fcuny-path-emacs-var)
+  "Path to save the bookmarks")
+
+(defvar fcuny-custom-settings (expand-file-name "emacs-custom.el" fcuny-path-emacs-var)
+  "Path to emacs custom variables.")
+
+(defun fcuny-rename-this-buffer-and-file ()
+  "Renames current buffer and file it is visiting."
+  (interactive)
+  (let ((name (buffer-name))
+        (filename (buffer-file-name))
+        (read-file-name-function 'read-file-name-default))
+    (if (not (and filename (file-exists-p filename)))
+        (error "Buffer '%s' is not visiting a file!" name)
+      (let ((new-name (read-file-name "New name: " filename)))
+        (cond ((get-buffer new-name)
+               (error "A buffer named '%s' already exists!" new-name))
+              (t
+               (rename-file filename new-name 1)
+               (rename-buffer new-name)
+               (set-visited-file-name new-name)
+               (set-buffer-modified-p nil)
+               (message "File '%s' successfully renamed to '%s'" name (file-name-nondirectory new-name))))))))
+
+(defun fc/check-work-machine-p ()
+  "Returns t if this is a work machine"
+  (string-match "tw-mbp.*" (system-name)))
+
+(defun fc/check-source-p ()
+  "Finds if the current python file is in the `source' repository."
+  (and (executable-find "check.pex")
+       (buffer-file-name)
+       (string-match "src/source/.*\.py$" (buffer-file-name))))
+
+(provide 'fcuny-base)
diff --git a/configs/rcs/emacs.d/config/fcuny-basic-settings.el b/configs/rcs/emacs.d/config/fcuny-basic-settings.el
new file mode 100644
index 0000000..a3469a8
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-basic-settings.el
@@ -0,0 +1,53 @@
+(eval-when-compile
+  (require 'use-package))
+
+;; set utf-8 as the default encoding
+(prefer-coding-system 'utf-8-unix)
+(set-terminal-coding-system 'utf-8)
+(set-keyboard-coding-system 'utf-8)
+
+;; alias yes-or-no to y-or-n
+(fset 'yes-or-no-p 'y-or-n-p)
+
+(setq auto-save-default nil)                   ;; don't auto save files
+(setq auto-save-list-file-prefix nil)          ;; no backups
+(setq create-lockfiles nil)                    ;; don't use a lock file
+(setq custom-file fcuny-custom-settings)       ;; where to save custom settings
+(setq inhibit-startup-message t)               ;; Skip the default splash screen
+(setq inhibit-startup-screen t)                ;; I don't want a startup screen
+(setq make-backup-files nil)                   ;; really no backups
+(setq minibuffer-message-timeout 0.5)          ;; How long to display an echo-area message
+(setq next-screen-context-lines 5)             ;; scroll 5 lines at a time
+(setq require-final-newline t)                 ;; ensure newline exists at the end of the file
+(setq ring-bell-function 'ignore)              ;; really no bell
+(setq tab-always-indent 'complete)             ;; when using TAB, always indent
+(setq visible-bell nil)                        ;; no bell
+
+(setq-default indent-tabs-mode nil)            ;; turn off tab indentation
+(setq-default cursor-type 'hbar)               ;; cursor is a horizontal bar
+
+;; size of the fringe
+(fringe-mode '(8 . 8))
+
+;; show column number in the mode line
+(setq column-number-mode t)
+
+;; Remap join-line to M-j where it's easier to get to.
+(global-set-key (kbd "M-j") 'join-line)
+
+(use-package tool-bar
+  :config
+  (tool-bar-mode -1))
+
+(use-package scroll-bar
+  :config
+  (scroll-bar-mode -1))
+
+(use-package frame
+  :bind ("<s-return>" . toggle-frame-fullscreen)
+  :config
+  (blink-cursor-mode -1)
+  (when (eq system-type 'darwin)
+    (setq ns-use-native-fullscreen nil)))
+
+(provide 'fcuny-basic-settings)
diff --git a/configs/rcs/emacs.d/config/fcuny-darwin.el b/configs/rcs/emacs.d/config/fcuny-darwin.el
new file mode 100644
index 0000000..a699cf0
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-darwin.el
@@ -0,0 +1,16 @@
+(eval-when-compile
+  (require 'use-package))
+
+;; Set default font.
+(set-face-attribute 'default nil :height 160 :weight 'normal :width 'normal)
+
+(use-package exec-path-from-shell
+  :ensure t
+  :config
+  (exec-path-from-shell-initialize)
+  (if (fc/check-work-machine-p)
+      (dolist (var '("GEM_HOME" "GEM_PATH" "MY_RUBY_HOME"))
+        (unless (getenv var)
+          (exec-path-from-shell-copy-env var)))))
+
+(provide 'fcuny-darwin)
diff --git a/configs/rcs/emacs.d/config/fcuny-editor.el b/configs/rcs/emacs.d/config/fcuny-editor.el
new file mode 100644
index 0000000..5af1ac8
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-editor.el
@@ -0,0 +1,160 @@
+(eval-when-compile
+  (require 'use-package))
+
+(use-package bookmark
+  :custom
+  (bookmark-default-file fcuny-bookmarks-dir)
+  (bookmark-save-flag 1))
+
+(use-package autorevert
+  :config
+  (global-auto-revert-mode t))
+
+(use-package midnight
+  :config
+  (midnight-mode t))
+
+(use-package autorevert
+  :config
+  (setq global-auto-revert-non-file-buffers t)
+  (setq auto-revert-verbose nil)
+  (global-auto-revert-mode t))
+
+(use-package recentf
+  :config
+  (setq recentf-save-file (expand-file-name "var/recentf" user-emacs-directory)))
+
+(use-package server
+  :if window-system
+  :init
+  (add-hook 'after-init-hook 'server-start))
+
+(use-package hl-line
+  :config
+  (global-hl-line-mode t))
+
+(use-package tramp
+  :custom
+  (tramp-default-method "ssh")
+  (tramp-persistency-file-name (expand-file-name "var/tramp" user-emacs-directory)))
+
+(use-package whitespace
+  :custom
+  (whitespace-style '(face trailing))
+  (show-trailing-whitespace t)
+  :hook (whitespace-mode))
+
+(use-package counsel
+  :ensure t
+  :bind
+  (("M-x"     . counsel-M-x)
+   ("C-s"     . counsel-grep-or-swiper)
+   ("C-x C-f" . counsel-find-file)
+   ("C-x C-r" . counsel-recentf)
+   ("C-c f"   . counsel-git)
+   ("C-c s"   . counsel-git-grep)
+   ("C-c /"   . counsel-ag))
+  :custom
+  (counsel-find-file-at-point t)
+  :config
+  (use-package swiper :ensure t)
+  (use-package counsel-projectile :ensure t))
+
+(use-package ivy
+  :ensure t
+  :diminish (ivy-mode . "")
+  :bind ("C-c m" . ivy-switch-project)
+  :config
+  (ivy-mode 1)
+  (setq ivy-use-virtual-buffers t
+        ivy-height 10
+        ivy-count-format "(%d/%d) "
+        ivy-initial-inputs-alist nil
+        ivy-use-ignore-default 'always
+        ivy-ignore-buffers '("company-statistics-cache.el" "company-statistics-autoload.el")
+        ivy-re-builders-alist '((swiper . ivy--regex-ignore-order)
+                                (t      . ivy--regex-fuzzy)
+                                (t      . ivy--regex-ignore-order)))
+
+  (defun ivy-switch-project ()
+    (interactive)
+    (ivy-read
+     "Switch to project: "
+     (if (projectile-project-p)
+         (cons (abbreviate-file-name (projectile-project-root))
+               (projectile-relevant-known-projects))
+       projectile-known-projects)
+     :action #'projectile-switch-project-by-name))
+
+  (ivy-set-actions
+   'ivy-switch-project
+   '(("d" dired "Open Dired in project's directory")
+     ("v" counsel-projectile "Open project root in vc-dir or magit")
+     ("c" projectile-compile-project "Compile project")
+     ("r" projectile-remove-known-project "Remove project(s)"))))
+
+(use-package projectile
+  :ensure t
+  :diminish projectile-mode
+  :bind-keymap ("C-c p" . projectile-command-map)
+
+  :init
+  (add-hook 'after-init-hook #'projectile-mode)
+
+  :config
+  (setq projectile-switch-project-action 'projectile-dired
+        projectile-enable-caching t
+        projectile-completion-system 'ivy
+        projectile-known-projects-file (expand-file-name "var/projectile-bookmarks.eld" user-emacs-directory)
+        projectile-cache-file (expand-file-name "var/projectile.cache" user-emacs-directory)
+        projectile-globally-ignored-directories (append fcuny-projects-ignored-dirs
+                                                        projectile-globally-ignored-directories)
+        projectile-globally-ignored-files (append
+                                                  projectile-globally-ignored-files)))
+
+(use-package ag
+  :ensure t
+  :bind (:map ag-mode-map
+              ("p" . compilation-previous-error)
+              ("n" . compilation-next-error)
+              ("N" . compilation-next-file)
+              ("P" . compilation-previous-file))
+  :custom
+  (ag-highlight-search t)
+  (ag-reuse-buffers t)
+  (ag-reuse-window t))
+
+(use-package dired
+  :defer t
+  :bind ("C-x C-d"  . dired)
+  :init
+  (setq-default dired-dwim-target t)
+  (setq dired-recursive-deletes 'always)
+  (setq dired-recursive-copies 'always)
+
+  (let ((gls (executable-find "/opt/twitter/bin/gls")))
+    (when gls (setq insert-directory-program gls))))
+
+(use-package ibuffer
+  :ensure t
+  :bind ("C-x C-b" . ibuffer))
+
+(use-package flycheck
+  :ensure t
+  :config
+  (progn
+    (add-hook 'prog-mode-hook 'flycheck-mode)
+    (setq flycheck-highlighting-mode 'lines)
+    (setq flycheck-check-syntax-automatically '(mode-enabled save))
+    (setq flycheck-checkers (delq 'emacs-lisp-checkdoc flycheck-checkers))
+    (if (fc/check-work-machine-p)
+      (flycheck-define-checker fc/twitter-source-check
+        "A syntax checker for python source code in Source, using `check.pex'"
+        :command ("check.pex" source)
+        :error-patterns ((error line-start (id (1+ nonl)) ":ERROR" (1+ nonl) ":" line (message) line-end)
+                         (warning line-start (id (1+ nonl)) ":WARNING" (1+ nonl) ":" line (message) line-end))
+        :predicate fc/check-source-p
+        :modes (python-mode))
+      (add-to-list 'flycheck-checkers 'fc/twitter-source-check))))
+
+(provide 'fcuny-editor)
diff --git a/configs/rcs/emacs.d/config/fcuny-linux.el b/configs/rcs/emacs.d/config/fcuny-linux.el
new file mode 100644
index 0000000..f0d7c52
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-linux.el
@@ -0,0 +1,8 @@
+;; Set default font.
+(set-face-attribute 'default nil :height 130 :weight 'normal :width 'normal)
+
+(setenv "PATH" (concat fcuny-path-go-bin path-separator (getenv "PATH")))
+
+(add-to-list 'exec-path fcuny-path-go-bin)
+
+(provide 'fcuny-linux)
diff --git a/configs/rcs/emacs.d/config/fcuny-prog.el b/configs/rcs/emacs.d/config/fcuny-prog.el
new file mode 100644
index 0000000..c7d267c
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-prog.el
@@ -0,0 +1,161 @@
+(eval-when-compile
+  (require 'use-package))
+
+;; auto close bracket, parenthesis insertion
+(electric-pair-mode 1)
+
+(use-package paren
+  :custom
+  (show-paren-delay 0)
+  :config
+  (show-paren-mode 1))
+
+(use-package lisp-mode
+  :bind
+  (("C-c C-e" . eval-buffer)
+   ("C-c C-r" . eval-region)))
+
+(use-package eldoc
+  :ensure t
+  :hook (emacs-lisp-mode-hook))
+
+(use-package pants
+  :load-path (lambda () (expand-file-name  "github.com/fcuny/pants.el/" fcuny-path-workspace))
+  :custom
+  (pants-completion-system 'ivy)
+  (pants-source-tree-root (expand-file-name "git.twitter.biz/source" fcuny-path-workspace))
+  (pants-bury-compilation-buffer t)
+  (pants-extra-args "-q")
+  :bind (("C-c b" . pants-find-build-file)
+         ("C-c r" . pants-run-binary)
+         ("C-c t" . pants-run-test))
+  :init
+  (if (fc/check-work-machine-p)
+      (add-to-list 'auto-mode-alist '("BUILD" . python-mode))))
+
+(use-package make-mode
+  :ensure t
+  :config
+  (add-hook 'makefile-mode-hook (lambda () (setq-local tab-width 2))))
+
+(use-package company
+  :ensure t
+  :diminish company-mode
+  :config
+  (global-company-mode)
+  (setq company-global-modes '(not term-mode)
+        company-idle-delay 0.3
+        company-minimum-prefix-length 3
+        company-selection-wrap-around t
+        company-show-numbers t
+        company-tooltip-align-annotations t
+        company-require-match nil))
+
+(use-package magit
+  :ensure t
+  :mode (("differential-update-comments" . git-commit-mode)
+         ("new-commit"                   . git-commit-mode))
+  :bind (("C-x g s" . magit-status)
+         ("C-x g b" . magit-checkout))
+  :init
+  (progn
+    (setq magit-completing-read-function 'ivy-completing-read))
+
+  :config
+  (progn
+    (global-git-commit-mode)
+
+    ;; I don't care about other VC backend for work
+    (if (fc/check-work-machine-p)
+      (setf vc-handled-backends nil
+            vc-follow-symlinks t))
+
+    (use-package git-commit :ensure t)
+
+    (add-hook 'magit-log-edit-mode-hook
+              #'(lambda ()
+                  (set-fill-column 72)
+                  (flyspell-mode)))))
+
+(use-package go-mode
+  :ensure t
+  :after (company flycheck)
+  :preface
+  (defun fcuny/go-mode-setup ()
+    (add-hook 'go-mode-hook 'flycheck-mode)
+    (setq-default)
+    (setq tab-width 2))
+  :config
+  (add-hook 'go-mode-hook #'fcuny/go-mode-setup))
+
+(use-package go-eldoc
+  :after go-mode
+  :ensure t
+  :hook (go-mode . go-eldoc-setup))
+
+(use-package gotest
+  :ensure t)
+
+(use-package go-guru
+  :ensure t)
+
+(use-package go-imports
+  :ensure t)
+
+(use-package golint
+  :ensure t)
+
+(use-package go-projectile
+  :ensure t)
+
+(use-package company-go
+  :ensure t
+  :after (company go-mode)
+  :custom
+  (company-go-show-annotation t)
+  :config
+  (add-hook 'go-mode-hook 'company-mode)
+  (add-to-list 'company-backends 'company-go))
+
+(use-package python
+  :mode (("\\.py$" . python-mode))
+  :ensure t
+  :commands python-mode
+  :custom (python-indent-offset 2))
+
+(use-package anaconda-mode
+  :ensure t
+  :after python
+  :hook ((python-mode . anaconda-mode)
+         (python-mode . eldoc-mode))
+  :custom (anaconda-mode-eldoc-as-single-line t))
+
+(use-package company-anaconda
+  :ensure t
+  :after anaconda-mode
+  :init
+  (add-to-list 'company-backends 'company-anaconda))
+
+(use-package scala-mode :ensure t)
+
+(use-package sh-script
+  :mode ("bashrc" . sh-mode)
+  :config
+  (defun set-sh-mode-indent ()
+    (setq sh-basic-offset 2
+          sh-indentation 2))
+  (add-hook 'sh-mode-hook 'set-sh-mode-indent)
+  (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p))
+
+(use-package dockerfile-mode
+  :ensure t)
+
+(use-package puppet-mode
+  :ensure t
+  :mode ("\\.pp\\'" . puppet-mode)
+  ;:hook (flycheck-mode)
+  :config
+  (if (fc/check-work-machine-p)
+    (setq flycheck-puppet-lint-rc fcuny-path-puppet-linter-svn)))
+
+(provide 'fcuny-prog)
diff --git a/configs/rcs/emacs.d/config/fcuny-serializers.el b/configs/rcs/emacs.d/config/fcuny-serializers.el
new file mode 100644
index 0000000..76fa6c2
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-serializers.el
@@ -0,0 +1,38 @@
+(eval-when-compile
+  (require 'use-package))
+
+(use-package yaml-mode
+  :ensure t
+  :after (flycheck flyspell)
+  :mode (("\\.yml?\\'" . yaml-mode)
+         ("\\.yaml?\\'" . yaml-mode))
+  :hook ((yaml-mode . flycheck-mode)
+         (yaml-mode . flyspell-prog-mode)))
+
+(use-package json-mode
+  :ensure t
+  :after (flycheck flyspell)
+  :custom
+  (json-reformat:indent-width 2)
+  (js-indent-level 2)
+  :hook ((json-mode . flyspell-prog-mode)
+         (json-mode . flycheck-mode))
+  :init
+  (if (fc/check-work-machine-p)
+    (add-to-list 'auto-mode-alist '("\\.workflow$" . json-mode))))
+
+(use-package thrift
+  :ensure t
+  :after (flycheck flyspell)
+  :custom
+  (thrift-indent-level 2)
+  :hook ((thrift . flyspell-prog-mode)
+         (thrift . flycheck-mode)))
+
+(use-package protobuf-mode
+  :ensure t
+  :after (flycheck flyspell)
+  :hook ((protobuf-mode . flyspell-prog-mode)
+         (protobuf-mode . flycheck-mode)))
+
+(provide 'fcuny-serializers)
diff --git a/configs/rcs/emacs.d/config/fcuny-text.el b/configs/rcs/emacs.d/config/fcuny-text.el
new file mode 100644
index 0000000..3bcd17c
--- /dev/null
+++ b/configs/rcs/emacs.d/config/fcuny-text.el
@@ -0,0 +1,30 @@
+(eval-when-compile
+  (require 'use-package))
+
+(use-package ispell
+  :ensure t
+  :config
+  (when (executable-find "aspell")
+    (setq ispell-program-name "aspell"
+          ispell-list-command "--list")))
+
+(use-package flyspell-correct
+  :ensure t)
+
+(use-package flyspell
+  :ensure t
+  :hook ((text-mode-hook . flyspell-mode)
+         (prog-mode-hook . flyspell-prog-mode)))
+
+(use-package markdown-mode
+  :ensure t
+  :after (flyspell)
+  :mode (("\\.md\\'" . gfm-mode)
+         ("\\.markdown\\'" . gfm-mode))
+  :hook (markdown-mode . flyspell-mode)
+  :init (setq markdown-command "pandoc -f markdown_github -c https://goo.gl/OVmlwT --self-contained"
+              markdown-header-scaling 't)
+  :config
+  (add-hook 'gfm-mode-hook 'visual-line-mode))
+
+(provide 'fcuny-text)
diff --git a/configs/rcs/emacs.d/init.el b/configs/rcs/emacs.d/init.el
new file mode 100644
index 0000000..57a433b
--- /dev/null
+++ b/configs/rcs/emacs.d/init.el
@@ -0,0 +1,37 @@
+;; Initialise the package system first of all.
+(require 'package)
+(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
+
+(defvar fcuny-path-emacs-var (expand-file-name "var" user-emacs-directory)
+  "Path to some files for Emacs.")
+
+(defvar fcuny-path-emacs-elpa (expand-file-name "elpa" fcuny-path-emacs-var)
+  "Path to elpa's local files.")
+
+;; where to store the packages
+(setq package-user-dir fcuny-path-emacs-elpa)
+
+;; initialize it
+(package-initialize)
+
+(defun fcuny/init-load-path ()
+  "Load custom configurations."
+  (let* ((before load-path)
+         (config-dir (expand-file-name "config" user-emacs-directory)))
+    (dolist (path (append (list config-dir)))
+      (add-to-list 'load-path path)
+      (add-to-list 'Info-default-directory-list path))))
+
+(fcuny/init-load-path)
+
+(require 'use-package)
+
+(use-package fcuny-base)
+(use-package fcuny-basic-settings)
+(use-package fcuny-darwin :if (memq window-system '(mac ns)))
+(use-package fcuny-linux  :if (string-equal system-type "gnu/linux"))
+(use-package fcuny-editor)
+(use-package fcuny-text)
+(use-package fcuny-prog)
+(use-package fcuny-serializers)
+
diff --git a/configs/rcs/gitconfig b/configs/rcs/gitconfig
new file mode 100644
index 0000000..8914029
--- /dev/null
+++ b/configs/rcs/gitconfig
@@ -0,0 +1,20 @@
+[color]
+	ui = true
+
+[push]
+	default = simple
+
+[core]
+	whitespace = trailing-space,space-before-tab
+	excludesfile = ~/.gitignore
+
+[branch]
+	autosetuprebase = remote
+
+[include]
+	path = ~/.gitconfig.private
+
+[http]
+	postBuffer = 524288000
+[url "https://source.developers.google.com/p/fcuny-code/r/"]
+	insteadOf = gcloud:
diff --git a/configs/rcs/gitignore b/configs/rcs/gitignore
new file mode 100644
index 0000000..c8124cb
--- /dev/null
+++ b/configs/rcs/gitignore
@@ -0,0 +1,24 @@
+# osx stuff
+.DS_Store
+Icon
+
+# ide
+.idea
+*.iml
+/env/*
+
+# python stuff
+.flake8rc
+*pyc
+
+# ctags stuff
+TAGS
+tags
+
+# emacs stuff
+.projectile
+.dir-locals.el
+.pytest_cache/
+
+.reviewboardrc
+ui/package-lock.json
diff --git a/configs/rcs/rcs/aliases b/configs/rcs/rcs/aliases
new file mode 100644
index 0000000..6844528
--- /dev/null
+++ b/configs/rcs/rcs/aliases
@@ -0,0 +1,15 @@
+alias cp="cp -i"
+alias l="ls"
+alias la="ls -a"
+alias ll="ls -lh"
+alias lt="ls -lhtr"
+alias mv="mv -i"
+alias rm="rm -i"
+
+alias g="git"
+alias s="cd ~/workspace/git.twitter.biz/source"
+
+alias upload-transactions='smpl-transactions --project fcuny-finance --dataset finance'
+
+alias gohomedevbox="ssh -A 192.168.86.157"
+alias gobastion="gcloud compute ssh bastion"
diff --git a/configs/rcs/rcs/twitter b/configs/rcs/rcs/twitter
new file mode 100644
index 0000000..982c981
--- /dev/null
+++ b/configs/rcs/rcs/twitter
@@ -0,0 +1,10 @@
+alias gosmfipmi="ssh -A ipmibastion1.smf1.twitter.com"
+alias goatlipmi="ssh -A ipmibastion1.atla.twitter.com"
+alias gosmfnest="ssh -A nest.smfc.twitter.com"
+alias goatlnest="ssh -A nest.smfc.twitter.com"
+
+alias gotwdevbox="ssh -A 172.25.31.131"
+alias gomesosbuild="ssh -A smf1-egu-15-sr1.prod.twitter.com"
+
+alias smf1pending='curl -s https://aurora-smf1.twitter.biz/pendingtasks | jq .'
+alias atlapending='curl -s https://aurora-atla.twitter.biz/pendingtasks | jq .'