dotfiles icon indicating copy to clipboard operation
dotfiles copied to clipboard

OS X dotfiles and user settings

** Quick Start

: mkdir Projects & cd Projects : git clone https://github.com/gonsie/dotfiles.git : cd dotfiles : ./synch.sh

/Return later and change the remote to use ssh protocol/.

*** Details: How to use this repo

All the magic of this setup is in the ~synch.sh~ script. This script will install the dotfiles the first time through. Subsequent runs will perform a diff between the installed files and the repo copy of the files.

  1. Clone this repo into a projects directory (I use =~/Projects=).
  2. Run =synch.sh=. If ~$install_dir~ does not exist, the script will create it and install all of the dot files, essentially mirroring this repo. Any items listed in a ~$link_file~ file are sym-linked to =~=.
  3. Any machine-specific configurations (or private information) should be stored in a ~.extra~ file outside of this repo or the ~$install_dir~ hierarchy. Be sure to source the extra files from appropriate place.
  4. Make changes to the locally installed configuration files (stored in ~$install_dir~). To synchronize changes back to the repo, rerun the =synch.sh= script. The script will present diffs between the local install and the cloud (repo) versions of the files. It will not make any commits, just move changed files into place.

These settings can be changed at the top of the =synch.sh= script:

  • =install_dir=~/.config=
  • =link_file=links=

** Emacs My emacs configuration uses a hierarchy of files, as described in [[http://www.gonsie.com/blorg/emacs-v22.html][this blog post]].

** Machine-Specific Settings *** Bash (~.extra~) : source ~/.config/bash/bashmarks.sh

*** Fish (~.extra.fish~) : # local homebrew settings : set -x PATH /Users/elsa/homebrew/bin $PATH : : # if vf is installed : eval (python3 -m virtualfish) : : # local git settings : GIT_AUTHOR_NAME="Elsa" : GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME" : git config --global user.name "$GIT_AUTHOR_NAME" : GIT_AUTHOR_EMAIL="[email protected]" : GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL" : git config --global user.email "$GIT_AUTHOR_EMAIL"

*** Eshell (~.emacs.d/custom-MACHINE.el~) : (setq shell-command-switch "-C") : (setq ispell-program-name "/opt/homebrew/bin/aspell") : (setq ispell-list-command "--list") : (add-hook 'eshell-mode-hook (lambda () (eshell/addpath "/opt/homebrew/bin"))) : (setq shell-file-name "/opt/homebrew/bin/fish")

** Setting up a new machine

There are two kinds of new machines:

  • Brand-new front end systems
  • SSH-accessable servers

New front end systems require additional applicaitons and manual preference configuration. See the [[NewSystem.md][~NewSystem.md~]] file for more details.

** Synchronizing /See =synch.sh=/

** Inspiration

There are a ton of great dotfiles repos out there, but here were the ones I found that originally inspired this repo.

*** Other dotfile repositories

  • https://github.com/mathiasbynens/dotfiles
  • https://github.com/necolas/dotfiles

*** Emacs addons - https://github.com/tlh/workgroups.el - http://autopair.googlecode.com