Install applications and development environment on a macOS or Linux machine.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.atom
.complete
.config
.dlv
.httpie
.log-ninja @ 3d6b90d
.tufte-css @ 58d3cf8
.tufte-pandoc-css @ 76e7b68
.zprezto @ 1ed5331
Library
bin
env
.CFUserTextEncoding
.bash_profile
.bashrc
.condarc
.dircolors
.docker_functions
.gitconfig
.gitconfig-user
.gitflow_export
.gitignore
.gitignore_global
.gitmodules
.hgignore
.hgignore_global
.hgrc
.hushlogin
.inputrc
.isort.cfg
.jsbeautifyrc
.mkshrc
.profile
.profile_invision
.profile_uacf
.pythonrc.py
.rubocop.yml
.shell_control Allow run and show to take more than one arg. Aug 17, 2017
.toprc
.vimrc
.vimrc_background
.zlogin
.zlogout
.zpreztorc
.zprofile
.zshenv
.zshrc
LICENSE
README.md

README.md

Synopsis

I hate installing, configuring, and updating software on my computer. For example when I'm using a new machine, or sshing into a remote system. I've automated as much of that process as I can, keeping everything as lightweight as possible.

Do everything

Configure and install everything:

cd && curl -LOks https://github.com/lexicalunit/dotfiles/tarball/master
tar xvzf master --strip 1 -C . && rm master
bin/setup -f all

Usage

  1. Clone this repository into your home directory.
  2. Source your new environment by opening a new terminal or running . ~/.profile.
  3. Execute the command setup all to step through configuration of system settings, installation of applications, and creation of your complete developer environment.

You can also use the tool bin/deploy_dotfiles to automatically export these settings to a remote machine.

Maintenance

  • Your home directory is a git repository now! Track changes and commit updates as needed.
  • There are some git hooks in env that generate certain files for you.
  • Re-run setup all periodically to update applications and configuration.
  • Don't forget to git pull any updates!

Environment: ~/env

  • Solarized Light.itermcolors and Solarized Light xterm-256color.terminal themes to use in Terminal.app or iTerm.app.
  • com.googlecode.iterm2.plist are my settings for iTerm.app.
  • Rio.jpg is my favorite Desktop image.
  • Inconsolata.otf is my favorite font for writing code, it's automatically installed during the bin/setup env step.
  • The post-commit and pre-commit files are git hooks use to maintain this repository. They're also installed as part of the bin/setup env step.
  • prompt_lexical_setup is my prezto prompt theme, installed as part of the bin/setup env step.
  • nice.css is a nice style sheet useful for overriding annoying websites.
  • dircolors_examples.tgz is used by bin/show_dircolors.

Utilities: ~/bin

Installed into your ~/bin directory, these tools will be on your PATH. For detailed usage documentation see the README.md for ~/bin, or of course run any of the tools with the argument --help.

Tool Usage
alert Provides shell level windowed alerting system.
backmost Send the current frontmost windowed macOS application to the back.
capture_x Creates a screenshot of selected window on X11.
cht [X] open section
codeclimate Runs Code Climate on the current working directory.
colortest Prints out an entire color palette of terminal color codes.
daemons Finds and removes unwanted daemons and agents.
deploy_dotfiles Installs bin and env from this repository to remote server via ssh.
die Kills processes based on process name.
doc Builds HTML output from Markdown file.
faff Sleeps for the given number of seconds, showing a progress bar.
flip Flips input upside down.
fs Tweak ripgrep to easily search codebases with committed files and f...
git_authors Git script for discovering who wrote the code at the current workin...
git_ltr Lists (a-la 'ls -ltr') git controlled source files in current direc...
git_name_change Clones a repo then changes the name and email address in entire his...
git_parent Finds the direct parent of the current branch in git.
git_pretty_log Git script for printing beautiful logs.
git_push_topic Force updates remote topic branch with local branch.
git_reauthor In git, change the author name and/or email of a single commit.
git_sync Fetch and fast-forward to the latest for origin/master.
git_up Rebase branch on the latest changes for the remote parent branch.
golist Lists all user installed go packages.
install_odbc Sets up ODBC.
jsc Symbolic link to '/System/Library/Frameworks/JavaScriptCore.framewo...
macosver Prints current macOS version information.
nopw Enables password-less ssh TO username@remotehost FROM localhost.
prettier Symbolic link to '/usr/local/bin/prettier'
root Prints the root of the current repository.
set_wallpaper Uses Cocoa classes via PyObjC to set a desktop wallpaper on all scr...
setup Install applications and development environment on an macOS or Lin...
share Easy way to manage temporary web shares.
shfmt Symbolic link to '/usr/local/bin/shfmt'
show_dircolors Shows example output based on current dircolors settings.
slept Get time macOS system last went to sleep.
smongo Opens mongo shell to master node.
uninstall_homebrew Uninstalls Homebrew.
usages Prints out documentation and usages for utilities.
weather Show the current weather directly in your terminal.
whereami Prints your current city name using your geoip location.
woke Get time macOS system last woke from sleep.
xdie Kills processes based on their window title.
xf Extract common file formats.
yaml2json Converts yaml input to json output.
youtube2mp3 Downloads the audio from a youtube video given the URL.

What does setup all install?

Glad you asked! setup all will go through the following steps one by one. For the steps that install packages/formulas/casks/whatever, see below for the list of included items.

Step Description
xcode Ensure that Xcode Command Line Tools are installed
dotfiles Ensure home directory is a git repository for dotfiles
java Ensure that Apple's java for macOS is installed
brew Ensure Homebrew installed and formulas upgraded
cask Ensure Homebrew Casks are installed
zsh Ensure shell is latest version of zsh from Homebrew
env Update environment configuration and submodules
python Upgrade/Install Anaconda, pip packages, and conda packages
node Ensure Node modules are installed via npm
go Ensure Go packages are installed
cargo Ensure Rust packages are installed via cargo
gem Upgrade/Install gem packages and rubygems-update package
atom Ensure Atom installed via Homebrew Cask and apm packages are upgraded
code Ensure VS Code installed via Homebrew Cask and its packages are installed
osx Override macOS "defaults" settings and configuration

Homebrew Formulas: adns, autoconf, automake, bash, clang-format, cmake, colordiff, coreutils, csv-fix, diff-so-fancy, docker, doxygen, exa, faac, fasd, ffmpeg, flake8, fontconfig, freetype, gd, gdbm, geoip, gettext, ghostscript, gifsicle, git, git-flow, git-review, git-secrets, glib, gmp, gnu-sed, gnu-tar, gnupg, gnutls, hub, icu4c, id3lib, imagemagick@6, isl, jasper, jbig2dec, jez/formulae/pandoc-sidenote, jhead, jo, jpeg, jq, kafkacat, lame, libassuan, libevent, libffi, libgcrypt, libgpg-error, libidn2, libksba, libmpc, libogg, libpng, librdkafka, libssh2, libtasn1, libtiff, libtool, libunistring, libusb, libusb-compat, libvo-aacenc, libvorbis, libvpx, libyaml, little-cms2, lz4, lzlib, makedepend, md5sha1sum, memcached, mpfr, mtr, mysql, ncftp, ncurses, net-snmp, nettle, nginx, no-more-secrets, node, npth, nvm, onepass, oniguruma, openssl, opus, ossp-uuid, p11-kit, pandoc, pcre, pcre2, pidof, pinentry, pkg-config, plotutils, pngquant, postgresql, pyenv, pyenv-virtualenv, pyenv-virtualenvwrapper, python, readline, redis, ripgrep, rlwrap, rust, sdl2, shellcheck, shfmt, snappy, sqlite, theora, tree, v8, vegeta, vramsteg, watch, wdiff, webp, wget, x264, x265, xvid, xz, yajl, yaml-cpp, youtube-dl, zsh

Homebrew Casks: 1password, atom, atom-beta, battle-net, caffeine, clamxav, dbvisualizer, disk-inventory-x, docker, dropbox, fantastical, firefox, flux, google-chrome, google-hangouts, iexplorer, istumbler, iterm2, java, kaleidoscope, lingon-x, mactex, mcgimp-std, mysqlworkbench, silverlight, skype, slack, snes9x, sourcetree, spectacle, spotify, steam, sublime-text, texstudio, transmission, vagrant, virtualbox, visual-studio-code, vlc, whatsapp, xquartz

Atom Packages: activate-power-mode, aesthetic-ui, atom-beautify, atom-isort, atom-language-avro, atom-notes, atom-typescript, auto-update-packages, autocomplete-python, base16-syntax, better-git-blame, busy-signal, column-select, cursor-indicator, docblockr, event-watch, file-icons, flatwhite-syntax, force-tab, format-shell, highlight-selected, hyperclick, indent-guide-improved, intentions, isotope-light-ui, isotope-ui, language-applescript, language-babel, language-cmake, language-diff, language-docker, language-dot, language-groovy, language-latex, language-markdown, language-protobuf, language-restructuredtext, language-rust, language-scala, language-stylus, line-length-break, linter, linter-clang, linter-coffeelint, linter-csslint, linter-docker, linter-erb, linter-eslint, linter-flake8, linter-jsonlint, linter-rubocop, linter-shellcheck, linter-tidy, linter-tslint, linter-ui-default, linter-write-good, markdown-preview-plus, minimap, minimap-find-and-replace, minimap-git-diff, minimap-highlight-selected, minimap-selection, multi-wrap-guide, native-ui, no-title-bar, pigments, prettier-atom, pretty-json, python-yapf, red-wavy-underline, ruby-block, set-syntax, soft-wrap-indicator, sort-lines, standard-formatter, tab-control, tabs-to-spaces, tinacious-design-syntax-purple, toggle-quotes, trailing-spaces, unity-ui

Code Packages: DavidAnson.vscode-markdownlint, HookyQR.beautify, dbaeumer.vscode-eslint, eg2.tslint, magicstack.MagicPython, ms-python.python, ms-vscode.Go, robertohuertasm.vscode-icons, spywhere.guides, streetsidesoftware.code-spell-checker, waderyan.gitblame

Pip Packages: git-sweep3k, glances, httpie, inflection, patch, python-json-logger, termcolor

Conda Packages: alabaster, appnope, asn1crypto, astroid, atomicwrites, attrs, babel, backcall, ca-certificates, certifi, cffi, chardet, conda, conda-env, coverage, cryptography, decorator, docutils, flake8, hypothesis, idna, imagesize, ipython, ipython_genutils, isort, jedi, jinja2, lazy-object-proxy, libcxx, libcxxabi, libedit, libffi, markupsafe, mccabe, more-itertools, ncurses, nose, numpydoc, openssl, packaging, parso, pep8, pexpect, pickleshare, pip, pluggy, prompt_toolkit, ptyprocess, py, pycodestyle, pycosat, pycparser, pyflakes, pygments, pylint, pympler, pyopenssl, pyparsing, pysocks, pytest, python-dateutil, python.app, pytz, pyyaml, readline, requests, ruamel_yaml, setuptools, simplegeneric, six, snowballstemmer, sphinx, sphinxcontrib, sphinxcontrib-websupport, sqlite, tk, traitlets, typing, urllib3, wcwidth, wheel, wrapt, xz, yaml, zlib, zope, zope.interface

Gem Packages: addressable, ast, backports, bigdecimal, bundler, bundler-unload, coffee-script, coffee-script-source, colorator, commander, concurrent-ruby, connection_pool, did_you_mean, em-websocket, ethon, eventmachine, execjs, executable-hooks, faraday, faraday_middleware, ffi, forwardable-extended, gem-wrappers, gh, highline, http_parser.rb, i18n, io-console, jaro_winkler, jekyll, jekyll-sass-converter, jekyll-watch, json, kramdown, launchy, liquid, listen, lolcat, manpages, mercenary, minitest, multi_json, multipart-post, net-http-persistent, net-http-pipeline, net-telnet, openssl, paint, parallel, parser, pathutil, power_assert, powerpack, psych, public_suffix, pusher-client, rainbow, rake, rb-fsevent, rb-inotify, rdoc, rouge, rubocop, ruby-progressbar, ruby_dep, rubygems-bundler, rvm, safe_yaml, sass, sass-listen, test-unit, travis, trollop, typhoeus, unicode-display_width, xmlrpc

Node Modules: JSON, all-contributors-cli, coffee-script, coffeelint, cson, decaffeinate, dockerlint, eslint, external-ip, generator-code, generator-generator, geoip-lite, js-beautify, json-stable-stringify, moment, nesh, npm-check-updates, prettier, raml2html, standard, tmpin, tslint, typescript, yo

Go Packages: github.com/acroca/go-symbols, github.com/cweill/gotests, github.com/davidrjenni/reftools, github.com/fatih/gomodifytags, github.com/golang/lint, github.com/haya14busa/goplay, github.com/josharian/impl, github.com/karrick/godirwalk, github.com/mdempsky/gocode, github.com/ramya-rao-a/go-outline, github.com/rogpeppe/godef, github.com/uudashr/gopkgs, golang.org/x/crypto, golang.org/x/lint, golang.org/x/net, golang.org/x/sys, golang.org/x/text, golang.org/x/tools

Cargo Packages: cargo-update, loc

License

Inconsolata font Created by Raph Levien using his own tools and FontForge.
Copyright 2006 Raph Levien. Released under the SIL Open Font License.


The MIT License (MIT)

Copyright (c) 2018, lexicalunit@lexicalunit.com

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.