Home

Awesome

DevStrap

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, install.sh --env-only is an option to skip package selection and installation, only setup the dotfiles.

PRs are welcome. :smile:

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 https://github.com/ray-g/devstrap.git ~/.devstrap
~/.devstrap/install.sh

Snapshots

Package Select Dialog

<img src="https://github.com/ray-g/devstrap/blob/master/docs/snapshots/package_box.PNG" width="600" height="400">

Installing Result

<img src="https://github.com/ray-g/devstrap/blob/master/docs/snapshots/installing.PNG" width="600" height="400">

Sample UI with Tmux

<img src="https://github.com/ray-g/devstrap/blob/master/docs/snapshots/layout.PNG" width="600" height="400">

Git Log

<img src="https://github.com/ray-g/devstrap/blob/master/docs/snapshots/git_log.PNG" width="600" height="400">

Command Line Options

./install.sh -h
Usage: ./install.sh [options]
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

Customize

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

~/.zshrc.local

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:

#!/bin/bash

# Set local aliases.
alias starwars="telnet towel.blinkenlights.nl"

# Set PATH additions.
PATH="$PATH:$HOME/projects/bin"
export PATH

~/.zshrc.theme.local

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

~/.vimrc.local

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

~/.gitconfig

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.:

[commit]
    # Sign commits using GPG.
    # https://help.github.com/articles/signing-commits-using-gpg/

    gpgsign = true

[user]
    name = John Doe
    email = john.doe@example.com
    signingkey = XXXXXXXX

Acknowledgements

Inspiration and code was taken from many sources, including:

License

The code is available under the MIT License