Hacking environment genetics
By Hive Tech
This README is also available in a friendly navigable format.
DNA is a community-driven compilation of dotfiles and projects, aimed at creating the most awesome and powerful development environment. We use it here at Hivetech to setup fresh new machines and provide our hivelab charm for the Unide project.
Installation is performed through famous configuration managers like ansible and salt (currently focused on ansible) as they obviously play nicely with a dotfiles repository, and allow you to configure in seconds thousands of machines, as well as simply your beloved local one.
If you are familiar with docker, you can test the environment this project can produce.
$ docker pull hivetech/lab
$ ID=$(docker run -d hivetech/lab)
$ PORT=$(docker port $ID 22)
$ ssh prototype@127.0.0.1 -p $PORT # Password: proto
** This is heavy work in progress. Right now I'm cleaning and moving here my previous repo (https://github.com/hackliff/Dotfiles)
-
Shell
- Oh-my-zsh - A community-driven framework for managing your zsh configuration
- Oh-my-fish - Framework for managing your fish shell configuration inspired by Oh My ZSH
- Fish-shell - The user-friendly command line shell
- Liquidprompt - A full-featured & carefully designed adaptive prompt for Bash & Zsh
- Bash-it - A community bash framework
- Stderred - Stderr output in red
- Cheat - cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember.
- An easy way to extend the configuration with hooks shell/customrc.sh and shell/custom-alias.sh
- Carefully designed and organized *rc files, screen and tmux configurations
- Fish shell like syntax highlighting for Zsh
- ZSH port of Fish shell's history search feature
-
Versioning
- Git flow - Git extensions to provide high-level repository operations for Vincent Driessen's branching model
- Gitignore.io - Generate useful .gitignore files for your project
- Git-extras - GIT utilities -- repo summary, repl, changelog population, author commit percentages and more
- Scm breeze - Adds numbered shortcuts to the output git status, and much more
- Octogit - giving git more tentacles
- Git-hub - Do GitHub operations from the
git
command
-
Dev
- Optparse - A BASH wrapper for getopts, for simple command line arguments
- Autopep8 - A tool that automatically formats Python code to conform to the PEP 8 style guide
- Virtual Burrito - One command to have a working virtualenv + virtualenvwrapper environment
- Gvm - Go Version Manager
- Pyenv - Simple Python version management, with pip-rehash, doctor, installer, pip-migrate, update and virtualenvs plugins
- Funcy - A fancy and practical functional tools
- Nvm - Node Version Manager - Simple bash script to manage multiple active node.js versions
- Pip-tools - A set of tools to keep your pinned Python dependencies fresh
- Tox - standardize testing in python
- Rbenv - Groom your app’s Ruby environment
- Ruby-build - Compile and install Ruby
- Rbenv-bundler - an rbenv plugin that makes shims aware of bundle installation paths
- Rbenv-gemset - Add excellent gem / gemset management to your rbenv!
- Rubocop - A robust Ruby code analyzer, based on the community Ruby style guide
- Gocode - An autocompletion daemon for the Go programming language
- Simple Defects - SD is a peer-to-peer bug tracker that’s built for sharing and use both online and offline
-
Plugins
- z - z is the new j, yo
- t - A command-line todo list manager for people that want to finish tasks, not organize them
- Bd - Quickly go back to a parent directory in linux
- Httpie - HTTPie is a CLI, cURL-like tool for humans
- Dropbox - A BASH script which can be used to upload, download, list or delete files from Dropbox
- View-doc - Use DocumentUp and Daux.io to browse your project doc
- Autoenv - Directory-based environments
- LaTex - A document preparation system
- jq - Command-line JSON processor
- Pyhn - Hacker news in your terminal
- Howdoi - Instant coding answers via the command line
$ export DNA_PATH=where/you/want/dna # Optional, default will be /opt/dna
$ export EDITOR=nano # Optional, default will be vim
$ wget -qO- https://raw.github.com/hivetech/dna/master/bootstrap.sh | bash
$ cd $DNA_PATH && rake -T
$ rake dna:synthetize # Default will setup your local machine
$ # Once installed
$ cheat lab
$ cheat <sub-command> # git-extras for example
Note the synthetize
action is idempotent.
You can test the project in a virtualize environment. Typical use case would be to enjoy a clean dev env while working in docker powered machines, or test your awesome fork.
$ ./synthetize --help
$ ./synthetize --action prototype --check --verbose # Changes won't be applied, just tested
$ ./synthetize --action target --port 49500 --image hivetech/prototype --user you
$ ./synthetize connect # Password is proto (set in dockerfile)
(Experimental) A Vagrantfile is provided and you can check out the documentation
for more informations. Make sure dna/provision/ansible/data.yml
suits
you and a vagrant section is present in dna/provision/ansible/hosts
.
You also have to modified hosts
variable in site.yml to vagrant
because of a weird vagrantfile bug.
Then just run vagrant up && vagrant ssh
.
For transparency and insight into our release cycle, and for striving to maintain backward compatibility, Dna will be maintained according to the Semantic Versioning guidelines as much as possible.
Releases will be numbered with the following format:
<major>.<minor>.<patch>-<build>
Constructed with the following guidelines:
- A new major release indicates a large change where backwards compatibility is broken.
- A new minor release indicates a normal change that maintains backwards compatibility.
- A new patch release indicates a bugfix or small change which does not affect compatibility.
- A new build release indicates this is a pre-release of the version.
From now on git commit messages will follow this Angular wise document. To sum up :
{{ type }} ({{ scope }}): {{ subject }}
{{ body }}
{{ footer }}
Where type = { feat | fix | doc | style | refactor | test | chore }
DNA is available under the Apache License, Version 2.0.
-
holger krekel
... among many, many more contributors on cited projects.