Awesome Open Source
Awesome Open Source


Build Status

Quickly add necessary packages and a set of dotfiles to bootstrap your development environments.

Currently it only supports Ubuntu now. But this framework should work on MacOS and any other Linux.

For platforms other than Ubuntu, --env-only is an option to skip package selection and installation, only setup the dotfiles.

PRs are welcome. 😄

The packages and settings are based on my personal favorite, but they are customizable during installation via an interactive whiptail dialog.

And some dotfiles are also custmizable after installation. Details are here ~/.zshrc.local, ~/.zshrc.theme.local, ~/.vimrc.local, ~/.gitconfig.

Quick Start

git clone ~/.devstrap


Package Select Dialog

Installing Result

Sample UI with Tmux

Git Log

Command Line Options

./ -h
Usage: ./ [options]
-h | --help       print this help
-d | --debug      enable debug mode
-r | --dryrun     enable dryrun mode
     --all-yes    install all packages without selecting
-n | --sel-none   select none packages in box
     --env-only   setup environments only


The dotfiles can be easily extended to suit additional local requirements by using the following files:


The ~/.zshrc.local file will be automatically sourced after all the other shell related files, thus, allowing its content to add to or overwrite the existing aliases, settings, PATH, etc.

Here is a very simple example of a ~/.zshrc.local file:


# Set local aliases.
alias starwars="telnet"

# Set PATH additions.
export PATH


The ~/.zshrc.theme.local file will be automatically sourced before oh-my-zsh setting up theme. Thus, allowing you to set your favorite oh-my-zsh theme. By default I have set it to a fence one ys


The ~/.vimrc.local file will be automatically sourced after ~/.vimrc, thus, allowing its content to add or overwrite the settings from ~/.vimrc.


The ~/.gitconfig file will automatically included ~/.gitconfig.devstrap first, which contains a set of git configs out of the box. Then any configurations can be written here ~/.gitconfig, thus, allowing its content to overwrite or add to the existing git configurations without touch the devstrap git repo.

Note: Use ~/.gitconfig to store sensitive information such as the git user credentials, e.g.:

    # Sign commits using GPG.

    gpgsign = true

    name = John Doe
    email = [email protected]
    signingkey = XXXXXXXX


Inspiration and code was taken from many sources, including:


The code is available under the MIT License

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Shell (169,789
Git (34,430
Bootstrap (27,541
Vim (18,649
Dotfiles (10,723
Emacs (9,824
Zsh (7,213
Dialog (6,862
Tmux (3,866