/dotfiles

:computer: Personal dotfiles orchestrated with GNU Stow and Ansible with a healthy splash of Docker

Primary LanguageShell

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

screenshots

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 https://github.com/math0ne/dotfiles.git ~/.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:

  roles:
    - core
    # - tmux # tmux disabled

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

  roles:
    # - 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

Credits

This config was inspired / built upon the work of:

TODO

  • 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