My disaster recovery plan.
This repository contains most of my base configuration for bash shells, but is primarily focused on OSX. These files make it simple to configure a new machine from scratch as well as keep it up-to-date over time.
git
must be installedbash
should be configured as the preferred shell
bash -c "$(curl -fsSL https://raw.githubusercontent.com/travi/dotfiles/master/setup/bootstrap.sh)"
setup/init.sh
presents two options:
- Environment configuration
- Software Installation/Update
- Creates a symlink for
~/.files
in the home directory - Symlinks dotfiles from each folder under
~/.files
into the home directory - Symlinks dotfiles from each folder under
~/.files.extra
into the home directory - Symlinks maven plugins into global plugins directory
- Symlinked
.bash_profile
sources several files in order to:- Define environment variables
- Define aliases
- Enable my custom prompt
- Source additional files from
~/.files/osx/
and~/.files/windows/
- Source
~/.files.extra/bash/source.sh
- Configures OSX defaults
- Updates global NPM packages
- Installs/Updates VIM plugins
- Installs Homebrew
- Installs the applications defined in:
~/.files/osx/Brewfile
~/.files.extra/osx/Brewfile
The following environments are the ones that this configuration has been tested in by me, in order from most often to least often used.
- Terminal.app on macOS (Catalina is my primary)
- SSH sessions into Ubuntu
- GitBash on Windows
With Vagrant available, you can run the full verification locally:
rake --rakefile=test/Rakefile
If Vagrant isn't installed, or you want to only run the lint checks:
rake --rakefile=test/Rakefile lint
The provided config file defines tasks for the pre-commit tool
Run pre-commit install
to install the tool into the git hooks for this
project. Update to the latest version of the config by running
pre-commit autoupdate
.
pre-commit run --all-files
-
Lint
- Shellcheck for shell scripts
- Markdownlint for markdown files
-
Behavioral tests
- TestKitchen to verify that a fresh machine would be configured appropriately (coverage is sparse for these tests at this point)
Strongly influenced by: