This repo is a dotfiles management system.
- A
docs/directory keeps some extra notes - Agent instructions document the shared agent resources and skills
update_dotfiles.shsymlinks everything underhome/into$HOMECHACHI_PATHenvironment variable points to this repositoryCHACHI_OVERRIDES_PATHis an optional environment variable that points to a parallel repository which machine-specific files (aka "local overrides").mdfiles spreaded through the repo can help understand specific parts
The first steps I follow when installing a new system, is cleaning up unnecessary applications, and also adding some essential ones:
- Choose a nice wallpaper, theme and font
- Configure some browser and terminal emulator
- Add
CHACHI_PATHenvironment variable and reboot - Clone this repo in
$CHACHI_PATH - (Optional) Add
CHACHI_OVERRIDES_PATHenvironment variable and reboot - (Optional) Clone my overrides repo in
$CHACHI_OVERRIDES_PATH - Install ssh keys
- Install some utils that are always available:
cmake curl fzf git nano ripgrep tmux jq - Run
update_dotfiles.sh - Go through the following paths in order to setup my development environment:
lib/is a set of utils used byupdate_dotfiles.shtest.shruns some unit tests on these utilities- If
update_dotfiles.shor any script inlib/needs to be updated, tests should be run and updated accordingly
Any file ending in .local or .local.* is machine-specific and never committed (gitignored). The override system works by:
- Placing a file at
$CHACHI_OVERRIDES_PATH/home/<path>(e.g.home/.config/shell/200-env.sh) update_dotfiles.shsymlinks it to$HOME/<path>.local(e.g.~/.config/shell/200-env.local.sh)- Shell config files
sourcetheir.localcounterpart when it exists
If you need to add machine-specific logic, use .local files, never edit the base files for machine-specific concerns.