# Dotfiles Manages dotfiles across multiple machines via symlinks, with per-host and per-group overrides. ## Quick start curl https://git.capella.pro/capella/dotfiles/raw/master/start | bash -s -- sync Or if already installed: dotsync ## Usage start sync [--machine|--group ] [dot_file] start list start status ## Multi-host Each host is identified by its hostname (`uname -n`). ### File overrides dots/ # common dotfiles (all hosts) dots./ # host-specific overrides (entire files) dots.@/ # group-level overrides Resolution order (last wins): common -> groups (alphabetical) -> host. ### Sync lists to_sync # files synced to all hosts to_sync. # additional files for a specific host to_sync.@ # additional files for a group ### Groups groups. # one group name per line Example `groups.jellyfish`: wayland Hosts in the same group share `to_sync.@` and `dots.@/`. ### In-file markers For files that are mostly shared with a few per-host differences, use markers instead of duplicating the whole file: # @host jellyfish set $mod Mod4 # @end # @host tompot set $mod Mod1 # @end # @group wayland exec waybar # @end - Lines between `@host ` and `@end` are included only on that host - Lines between `@group ` and `@end` are included for hosts in that group - Lines outside any markers are always included - The comment prefix (`#`, `//`, `;`, etc.) is auto-detected - Files with markers are processed and written (not symlinked) - Files without markers are symlinked as usual ## Adding dotfiles # Add to common (all hosts): dotsync sync .config/foo # Add for this host only: dotsync sync --machine .config/bar # Add for a group: dotsync sync --group wayland .config/baz