My personal dotfiles managed using dotdrop.
This repository handles syncing, templating, and deploying dotfiles across multiple setups and hosts.
Follow these steps to clone this repository, set up dotdrop, and install the dotfiles on a new machine.
Ensure you have the following installed on the target system:
- Git
- Python 3 and
pip
sudo pacman -Syu git python python-pip python-docopt python-jinjaClone this repository along with its submodules (since dotdrop is managed as a Git submodule):
git clone --recursive https://github.com/Nihhaar/Dots.git ~/Dots
cd ~/DotsIf you already cloned the repository without submodules, initialize and update them:
git submodule update --init --recursiveInstall the required Python dependencies for dotdrop:
pip3 install --user -r dotdrop/requirements.txtThis repository contains two main profiles configured in config.yaml:
ArchLinuxWSL- Minimal configuration suitable for WSL or headless Arch setups. Includes:- Fonts (
d_fonts) - Git configuration (
f_gitconfig) - Vim configuration (
f_vimrc) - Zim / Zsh configuration (
f_zimrc,f_zshrc)
- Fonts (
LoneRanger- Complete desktop environment configuration including window managers, bars, launchers, themes, and applications. Includes everything inArchLinuxWSLplus:- i3 WM (
d_i3) - Polybar (
d_polybar) - Rofi (
d_rofi) - Openbox (
d_openbox) - Alacritty (
f_alacritty.yml) - Compton (
f_compton.conf) - Themes & GTK settings (
d_themes,d_gtk-3.0,f_gtkrc-2.0) - MPD & ncmpcpp (
d_mpd,d_ncmpcpp) - Xresources / xbindkeys (
f_xresources,f_xbindkeysrc) - And more...
- i3 WM (
Before deploying, it is recommended to run a dry-run or compare to see what changes will be made to your local system.
See what changes dotdrop will make without actually modifying any files:
# For ArchLinuxWSL profile
./dotdrop.sh install -p ArchLinuxWSL --dry
# For LoneRanger profile
./dotdrop.sh install -p LoneRanger --dryCompare files currently on the filesystem with the versions stored in the repository:
./dotdrop.sh compare -p <profile-name>Once you are confident with the changes, install the dotfiles:
./dotdrop.sh install -p <profile-name>(Replace <profile-name> with ArchLinuxWSL or LoneRanger depending on your environment).
If you make configuration changes on your host or want to start tracking new files from a host and save them to this Git repository, use the following commands:
To start managing a new configuration file/directory that is not yet in the repository:
./dotdrop.sh import <path-to-file-or-directory>Dotdrop will copy the file into the dotfiles/ directory, register it in config.yaml, and prompt you to associate it with a profile.
If you have edited a dotfile locally on your host and want to copy those changes back into the repository:
- Update a specific file:
./dotdrop.sh update -p <profile-name> <dotfile-key>
- Update all files for a profile:
./dotdrop.sh update -p <profile-name>
To see what changes exist on your host compared to what is currently stored in the repository before importing or updating:
# Show difference between host files and Git repository
./dotdrop.sh compare -p <profile-name>
# View detailed status and diffs
./dotdrop.sh detailOnce imported or updated, don't forget to commit and push your changes to your Git remote:
git add .
git commit -m "Update dotfiles from host"
git push origin master- Automation: Add a helper alias in your shell configuration (e.g., in
.zshrc) to run dotdrop easily from anywhere:alias dots="~/Dots/dotdrop.sh"
- Templating: Dotdrop supports Jinja2 templating. You can use variables (defined under
variables:inconfig.yaml) to customize file contents based on hostnames or profiles.
For more advanced options and full documentation, refer to the Dotdrop Documentation.