Awesome Open Source
Awesome Open Source

Dotfiles organized using Ansible and GNU stow with a healthy splash of Docker


My config is based on Ansible roles that can be enabled or disabled based on the needs at hand. The roles contain application installation scripts and configuration data. The current included roles are:

  • core - git and stow
  • emacs - spacemacs configuration and custom theme with integrated nerd font powered features
  • htop - custom theme
  • irssi - custom theme and setup
  • ranger - custom theme
  • tmux - tmux-next installation with custom theme and nerd font integration
  • zsh - zsh terminal powered by the powerlevel9k framework with custom theme, awesome aliases, and prompt featuring nerd font symbols throughout
  • bin - fun binary command line games utilities and screensavers
  • docker - installation and helper utilies and application library
  • node.js - node development enviroment
  • ruby - ruby development setup and global bundler install

The configuration trys to provide common features through the supported roles:

  • unified color themes through applications using base16 variation
  • nerd font symbols everywhere
  • configuration symlinks powered by gnu stow
  • included putty / mintty configurations

Currently Supported Operating Systems:

  • Ubuntu 16

Installation Instructions

Warning: Must be run as a non root user, if necessary create and add a user

1. Install Ansible

sudo apt-get -y install ansible git

2. Clone the project and customise your Ansible roles

git clone ~/.dotfiles

Optional: Now you can disable any of the main roles you don't need by commenting them out in the .dotfiles/playbooks/main.yml file, eg:

    - core
    # - tmux # tmux disabled

Optional: Additional Ansible Galaxy roles have to be added or removed from both the .dotfiles/playbooks/main.yml file:

    # - nickjj.docker # docker disabled
    - your.role # added custom role

Optional: And the .dotfiles/playbooks/requirements.yml file:

# - src: nickjj.docker # docker disabled
- src: your.role # added custom role

3. Install the galaxy powered roles

sudo ansible-galaxy install --roles-path=~/.dotfiles/playbooks_galaxy/roles -r ~/.dotfiles/playbooks_galaxy/requirements.yml
sudo ansible-playbook -i ~/.dotfiles/.inventory -K ~/.dotfiles/playbooks_galaxy/main.yml -e "localuser=$USER"

4. Install the main project roles

sudo ansible-playbook -i ~/.dotfiles/.inventory -K ~/.dotfiles/playbooks/main.yml --e "localuser=$USER"

5. Close the ssh session and log back in


This config was inspired / built upon the work of:


  • powerlevel9k needs to move to stowed, updated have broken my theme

Upcoming roles:

  • node.js - development enviroment install
  • ruby - development enviroment install
  • ircserver - bitlbee powered local bnc setup

Upcoming features:

  • icdiff install
  • secret management
  • emacs org directory syncing
Alternatives To Dotfiles
Select To Compare

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,536
Docker (97,002
Theme (43,579
Ansible (21,211
Role (17,712
Dotfiles (10,714
Emacs (9,820
Zsh (7,211
Ansible Roles (5,283
Tmux (3,870
Zsh Configuration (95
Tmux Configs (89