This repo contains my personal system configuration. I keep it synced with every machine I work on and It's the first thing I do when working on a new one (or at least that's the goal).
The setup is tailored for a macOS system (tested on 10.11
and 10.12
). The goal is to also have it work on other Unix systems.
Clone this repo to a convenient location (the examples use ~/dotfiles
):
cd ~
git clone https://github.com/stefan1niculae/dotfiles.git # HTTPS
git clone git@github.com:stefan1niculae/dotfiles.git # or SSH version (if you configured it already)
# or just download the zip from github.com/stefan1niculae/dotfiles
Run the bootstrapping script in the root:
cd ~/dotfiles
./bootstrap.sh
The script will do the following:
- Symlink dotfiles — editing
~/.aliases
will also reflect in this repo - Install Command Line Tools for Xcode — required by Homebrew and other applications (TODO: check if you need to install Xcode from the AppStore)
TODO: ss with terminal in use
TODO: ss with vim in use
Configs for:
-
zsh — better shell
-
vim — power-user text editor
-
git — source control
-
TODO: other programs
GUI applications:
-
iTerm
-
TODO: other apps
The setup reflects my usual toolchain:
-
Back-end: Python
-
Front-end: Node, CoffeeScript, Sass, React?
-
Design: Photoshop, Experience Design?
-
Productivity: Pages, Numbers, Keynote,
-
Editing: Texpad, Typora, Atom
-
Game Dev: Unity, Visual Studio Code
-
TODO: other areas
As you can tell, the project is WIP — the scripts and readme are riddled with TODOs.
- Git:
- generate public ssh key (if it doesn't exist) and instruct to enter it https://github.com/settings/keys [New SSH key]
- set global gitignore:
git config --global core.excludesfile ~/.gitignore
US+RO.keylayout
to~/Library/Keyboard Layouts
(for macOS) and instruct to activate- Vim
- install plugins
- install MacVim
- make the
vim
andvi
commands use MacVim's binary - install linters (ask before installing?): python, coffee, c#, css, html, md, json, sql, TODO: more linter languages
- install fonts
- change shell to zsh
- copy only custom theme for zsh (do not overwrite the whole
.oh-my-zsh
folder) - iTerm2 preferences and themes
- update git through brew (Apple git makes reset-terminal super slow, rendering the read-line unusable)
- programming languages (ask before installing?):
- Haskell: cabal, stack, ghc-mod and add them to
$PATH
- JavaScript: node, npm, coffee
- Haskell: cabal, stack, ghc-mod and add them to
- Scripts listed in right-click menu:
- BTT configs
- Karabiner-Elements
- Atom packages:
- file-icons
- highlight-selected
- Quick Look Plugins (
brew cask install <plugin-name>
):- Code
qlcolorcode
- Markdown
qlmarkdown
- JSON
quicklook-json
- Archives
betterzipql
- Text files without extension
qlstephen
- Image Size?
qlimagesize
- Videos
qlvideo
- pip:
pip install ipython virtualenvwrapper
- notebooks: https://github.com/tuxu/nbviewer-app
- Code
-
Useful applications (for macOS):
- BetterTouchTool — trackpad gestures and keyboard shortcuts
- BetterSnapTool — window snapping
- Bartender — status bar icons hider
- The Unarchiver — archive extractor
- Lightshot — screenshots
- TODO: other apps
-
Keyboard shortcuts (via BTT):
⇧⌥ key
app launching shortcuts- global trackpad gestures
- browser trackpad gestures
-
Keyboard keys:
⌥ key
diacritics,⇧⌥ key
uppercase diacritics⌥ key
useful symbols
-
Keyboard configuration:
- for external keyboard (mechanical / Apple)
Caps
isEsc
;⇧Caps
is regularCaps
⏏
isExpose
;F13
isLaunchpad
- TODO: keyrepeat - delay & rate
-
Text replacements (synced from iCloud account):
;key
emoji shortcuts@@
and@key
for email addresses##
for phone number
-
Vim:
- key-bindings
- plugins
- cheat-sheet (TODO: separate repo)
-
Fonts:
- Hack for monospaced
- Open Sans for sans-serif
- Palatino for serif
- TODO: more/other font choices?
-
Aliases:
- navigaton —
l
,ll
- git —
gcl
,gs
,gacp <message>
, etc - general —
thf
,et
, etc - coming from zsh —
...
, etc
- navigaton —
Task to check for updates every month. Something like this?
function f() { find . -iname "*$1*" ${@:2} }
function r() { grep "$1" ${@:2} -R . }
# Even better: use the silver searcher (brew install the_silver_searcher)
alias f="ag -g"
alias r=ag
Interesting plugins to try (from the github wiki):
- brew
- cabal?
- chucknorris
- coffee?
- common-aliases
- dirhistory/dircycle
- fasd
- git
- gitfast?
- git-extras
- npm
- osx
- pep8?
- pip
- pylint?
- python?
- tmux
- tmuxinator?
- vi-mode
- virtualenvwrapper
- wd
- github.com/zsh-users/zsh-syntax-highlighting
- https://github.com/unixorn/awesome-zsh-plugins
- prezto
- antigen-hs/zgen
- alf
- fresh?
- !something to auto-activate env when cd-ing into project folder