Skip to content

Ansible playbook to setup a similar dev machine in multiple operating systems

Notifications You must be signed in to change notification settings

andreoliwa/dotfiles

 
 

Repository files navigation

dotfiles

sloria's dotfiles, rewritten as Ansible roles. Sets up a full local development environment with a single command.

Fully supports macOS. Red Hat and Debian support is good but not as complete.

a few neat features

  • xonsh (Python-powered shell)
  • zsh configured with prezto.
  • nice fonts for the terminal and coding.
  • iterm2 profile (w/ hotkey, themes, etc.)
  • python2, python3, pyenv (for managing Python versions), and pyenv-virtualenv (for managing virtualenvs)
  • alternative Python configuration with pyenv, pip, virtualenv
  • a tmux.conf that's pretty neat.
  • tmuxp for tmux session management
  • vim with vim-plug for plugin management. All configuration in a single file .vimrc.
  • pluggable. Everything is optional. Fork this. Remove what you don't use. Configure what you do use.
  • Mac packages installed with homebrew. Mac apps installed with homebrew-cask.
  • Useful git aliases
  • Optional git commit signing with GPG
  • Preview the setup on Linux machines using Vagrant's virtual machines

prerequisites (install these first)

  • macOS: upgrade to the latest version possible
  • HomeBrew: macOS requirements first (e.g.: xcode-select --install)
  • Install HomeBrew
  • ansible >= 2.4:
  • Other tools to start working on this repo: brew install fzf
  • If you're installing a new computer, copy or create these files/directories:
    • GPG config: ~/.gnupg/
    • Env variables: ~/.config/dotfiles/local.env, set export COMPANY_LAPTOP= variable (set any value on the company laptop)
    • Ansible Vault password: ~/.config/dotfiles/vault_password.txt

install

  • Fork this repo.
  • Clone your fork.
    # Replace git url with your fork
    # NOTE: It is important that you clone to ~/dotfiles
    git clone https://github.com/YOU/dotfiles.git ~/dotfiles
    cd ~/dotfiles
  • Update the following variables in group_vars/local (at a minimum)
    • git_personal.user_name: Your name, which will be attached to commit messages, e.g. "Steven Loria"
    • github_username: Your Github username.
    • git_personal.user_email: Your git email address.
  • Optional, but recommended: Update group_vars/local with the programs you want installed by homebrew, homebrew-cask, and npm.
    • mac_homebrew_packages: Utilities that don't get installed by the roles.
    • mac_cask_packages: Mac Apps you want installed with homebrew-cask.
  • Edit playbook_local.yml as you see fit. Remove any roles you don't use. Edit roles that you do use.
  • Run the installation script. Comment out private roles (they will fail on first execution).
    ~/dotfiles/bin/dotfiles-setup --galaxy --bootstrap

updating your local environment

Once you have the dotfiles installed you can run the following command to rerun the ansible playbook:

dotfiles-setup

You can optionally pass role names

dotfiles-setup git python

updating your dotfiles repo

To keep your fork up to date with the sloria fork:

git remote add sloria https://github.com/sloria/dotfiles.git
git pull sloria master

command

There is a script dotfiles-setup in the bin directory for setting up and updating development environments:

  • bootstrap/updates the local environment
  • install Galaxy roles
  • run Ansible on Vagrant VMs

Type dotfiles-setup -h to see all possibilities.

special files

All configuration is done in ~/dotfiles. Each role may contain (in addition to the typical ansible directories and files) a number of special files

  • role/*.zsh: Any files ending in .zsh get loaded into your environment.
  • for xonsh: role/*.xsh: Any files ending in .xsh get loaded into your environment.
  • bin/: Anything in bin/ will get added to your $PATH and be made available everywhere.

notes

iterm2

To import the iterm2 profile, go to your iterm2 preferences, and enable "Load preferences from custom folder" and select the iterm2 folder in the misc/ directory.

iterm2 profile

macOS keyboard settings

There are a few keyboard customizations that must be done manually:

  • Turning repeat speed up to 11.

Keyboard settings

  • Mapping Caps Lock to Ctrl.

Modifier keys

what if I only want your vim?

First make sure you have a sane vim compiled. On macOS, the following will do:

brew install macvim --HEAD --with-override-system-vim

The following commands will install vim-plug and download my .vimrc.

After backing up your ~/.vim directory and ~/.vimrc:

mkdir -p ~/.vim/autoload
curl -fLo ~/.vim/autoload/plug.vim https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
curl -fLo ~/.vimrc https://raw.githubusercontent.com/sloria/dotfiles/master/roles/vim/files/vimrc

You will now be able to open vim and run :PlugInstall to install all plugins.

troubleshooting

If you get an error about Xcode command-line tools, you may need to run

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

todo

  • Full Debian and Red Hat support

license

MIT Licensed.

About

Ansible playbook to setup a similar dev machine in multiple operating systems

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 59.4%
  • Lua 11.4%
  • Python 9.0%
  • Vim Script 7.3%
  • Vim Snippet 3.8%
  • Xonsh 3.3%
  • Other 5.8%