Ansible-based dotfile setup for macOS systems that is really simple and easy to understand.
| iTerm | Visual Studio Code |
|---|---|
![]() |
- Dotfile wrapper based on Ansible, that takes care of...
- bash/zsh configuration files
- Homebrew and Cask packages
- Mac App Store apps
- Node
npmpackages - Ruby
gempackages - Python
pippackages - macOS
defaults(plist settings)
- Docker host cleanup/prune
- Vundle VIm plugin manager
- Fish-like auto autosuggestions in ZSH (zsh-autosuggestions plugin)
- Several additional, preconfigured ZSH plugins (using zplug):
- zsh-history-substring-search plugin
- zsh-notify plugin
- zsh-syntax-highlighting plugin
- zsh-autosuggestions plugin
- Configured GnuPG including
gpg-agentand enabled commit signatures in git - One Dark Pro themes for iTerm and VSCode (even though VSCode is currently controlled by the built-in sync)
Commented code, so you know what is actually going on(Not anymore, to be honest...)
-
Ensure Homebrew and Ansible are installed before proceeding:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" brew install ansible -
Fork this repository:
git clone https://github.com/frdmn/dotfiles ~/.dotfiles -
Copy and adjust the default configuration file:
cp ~/.dotfiles/config.defaults.yml ~/.dotfiles/config.yml vi ~/.dotfiles/config.yml
-
Run the dotfile wrapper with the
--bootstrapswitch to initially install and setup the dotfiles and its components:~/.dotfiles/dotfiles --bootstrap
# (Re-)apply dotfile related tasks
$ dotfiles
# (Re-)apply dotfile and bootstrap related tasks (by default only "dotfiles" will be execated when not specifying --botstrap)
$ dotfiles --bootstrap
# Apply a specific tag/task
# Eg: [dotfiles, brew, cask, mas, npm, pip]
$ dotfiles <tag>Explanation of the directories:
./files/
└── This directory contains all optional files that are not related to
Ansible roles in specific. For example: dotfile source files, iTerm
configuration files, etc.
./files/dotfiles/
└── This folder contains all the source dotfiles.
./files/iterm2/
└── This folder contains the iTerm 2 plist configuration.
./roles/
└── In this directory you will find all available Ansible roles that I
currently use within this project.
./roles/{rolename}/tasks/main.yml
└── This is the actual Ansible tasks that uses the variable (defaults)
file and proceeds with the role specific function.
./ansible.cfg
└── Ansible configuration file that is applied when executing the
dotfile wrapper / playbook.
./config.defaults.yml
└── This file contains variables to work with in the actual Ansible
tasks like package names/lists, configuration options, etc.
./config.yml
└── This (optional) file can be used to override the defaults (above)
as as desired, not tracked by git.
./dotfiles
└── Basically the base wrapper that I use to install and update the
dotfiles as well as interact with the `ansible-playbook` command.
./dotfiles.yml
└── The main Ansible playbook.
./hosts
└── The inventory file for Ansible, for now it only contains the
localhost machine
./requirements.yml
└── Ansible role and collection dependencies which are somehow in use by
this playbook.
2.0
