I use various devices running macOS, Windows (with WSL) and various Linux Distors on a daily bases for work and in my spare time. Keeping my work environment consitant becomes annoying and error prune, when hopping devices. Additionally, I take this as a chance for a lerning investment in a keyboard focused work flow, deep dive into the TUI rabbit hole and have some fun in the terminal.
One of the best tools for automated infrastructure provisioning is Ansible. I happen to have used Ansible to deploy various applications and infrastuctures in the past, so why not deploy my own work environment with it?
Currently only are tested:
- macOS
- 14 Sonoma
- Linux
- Fedora 40 KDE Wayland
git clone https://github.com/FreddyFunk/dotfiles.git ~/dotfiles
echo "SuperSecurePassword" > ~/dotfiles/vaultpw
sh ~/dotfiles/init.sh
Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Mission Control
fromctrl + ↑
toctrl + cmd + ↑
Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Application windows
fromctrl + ↓
toctrl + cmd + ↓
Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Mission Control -> Move left a space
fromctrl + ←
toctrl + cmd + ←
Settings -> Keyboard -> Keyboard Shortcuts... -> Mission Control -> Mission Control -> Move right a space
fromctrl + →
toctrl + cmd + →
Amethyst is used as the Window Manager. While alternatives like yabai are arguably more powerful, Amethyst can run while keeping macOS System Integrety Protection enabled, which is desired for company devices.
Please make sure to manually Update the Accessibilty and Mission Control settings, after manually starting Amethyst for the first time. More details can be found in the Amethyst documentation.
Once the init.sh
script was executed, you can do a full update of the dotfiles running the following simple command:
dotu
All kind of credentials like keys
, tokens
and passwords
are securely stored as AES256 encrypted variables using Ansible Vault.
Securing sensitive data like personal or work related e-mail addresses are also rather important, since this repository available to the public. Therefore, all sensitive data is also encrypted.
It is expected that the user manually stores the Ansible Vault password in a plain file located at ~/dotfiles/vaultpw
.
To add encrypt values do the following:
# string
ansible-vault encrypt_string $HOME/dotfiles/vaultpw "mynewsecret" --name "MY_SECRET_VAR"
# file
cat myfile.conf | ansible-vault encrypt_string $HOME/dotfiles/vaultpw --stdin-name "myfile"
You can pipe the output of ansible-vault directly to the clipboard by appending the following command:
- macOS:
| pbcopy
- Linux:
| xclip -selection clipboard
dotu "role_name"
# example for role "chromium"
dotu chromium
# example for running multiple roles
dotu system,ssh,git,chromium
This setup is heavily inspired by:
- @techdufus (https://github.com/techdufus/dotfiles)
- @mischavandenburg (https://github.com/mischavandenburg/dotfiles)