Personal dotfiles setup using dotbot. Also setting other preferences, e.g. Firefox, iTerm2, macOS keybindings.
For more instructions, check this blog post out. This section will briefly detail common flows.
- Copy into this repo (no leading dot!), & make backup
cd dotfiles
# dotfile
cp ~/.dotfile ./dotfile
mv ~/.dotfile ~/.dotfile-backup
# dotdir
cp -r ~/.dotdir ./dotdir
mv ~/.dotdir ~/.dotdir-backup- Add into
install.conf.yaml. Note that there are OS-specific sections & instructions inside that file.
- link:
# dotfile
~/.dotfile: dotfile
# dotdir
~/.dotdir:
create: true # optional
force: true # optional
path: dotdir- Run
installscript, & delete backup if successful
./install
...
==> All tasks executed successfully
# dotfile
rm ~/.dotfile-backup
# dotdir
rm -r ~/.dotdir-backup- (Optional) Add file mapping in
.gitattributesto enable correct syntax highlighting on Github.
- Clone & install dotfiles
git clone https://github.com/izzygomez/dotfiles --recursive
cd dotfiles
./install- Install new dotfile updates
git pull
./installIdeally, this dotfiles setup should work out-of-the-box on any machine, regardless of OS & availability of packages. In order to accomplish this, config dotfiles should be split & organized in such a way that settings are only applied for certain machine specs & depending on package availability.
This effort is a 🚧 work in progress 🚧. As an example, see usage of methods in zsh/checkers.sh to see how this can be accomplished.
This repo uses pre-commit to automatically format & lint files before they are committed, & also as part of the required checks before a PR can be merged via pre-commit.ci. See .pre-commit-config.yaml for configuration details.
Update a submodule to track its remote's default branch, & commit the changes:
git submodule update --remote {submodule}
git add {submodule} && git commit -m "updated submodule {submodule}" && git pushTo revert submodule pointers to what's currently committed, run git submodule update --init.
- Consider writing a script that can be run to enumerate dot files in
~that need to be ported into this repo & output diff to console output. Can create some sort of "ignore" list to not print out, e.g..zsh_history. - Figure out how to synchronize
tmuxplugins across machines, i.e. automate the following currently-manual steps of having to install plugins the first timetmuxis run:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
tmux source ~/.tmux.conf
# in tmux, press C-a (prefix) + I (capital "i")- Speaking of
tmux, enforce using my PR branch for thetmux-resurrectplugin (at least until it's merged):
cd ~/.tmux/plugins/tmux-resurrect
git fetch origin pull/502/head:izzygomez/add-confirm-option-for-save-and-restore
gco izzygomez/add-confirm-option-for-save-and-restoreemacs,undo-treepackage: currently setting up undo tree history files to be saved in~/.emacs.d/undo-tree-histories, but there's no mechanism to delete history files for files that have been deleted (or possibly even handle cases where files are renamed?). Investigate this & fix.emacsis not working well on raspi setup: thediff-hl-moderelated code for uncommitted changes is not working well (something related to theadd-hookline?).- Seems like "Save Changes" setting on iTerm2 > Settings > General > Preferences is not configurable via
defaults(see this commit for usage example), so TODO here is to set value of this setting to "Automatically" via some other method; for the moment, am doing this via anechostatement inzshrc_macos. - This README is a bit bulky & verbose, consider editing it down to something more streamlined like this.
- Address all TODOs littered throughout code. Consider using LLM to enumerate.
- Figure out how to add em-dashes when typing in
emacs. Some leads here: 1, 2, 3. - Consider adding
zsh-completionspackage. For context, tried adding it while setting upngrok completionstuff in.zshrc, but I found out that the ordering of initializingzsh-completions&ngrokmattered, & I'd need to refactor dotfiles to get this working. Also, perzsh-completionsREADME, it is also worth considering installing via something likeantigeninstead of, say,brewso that it can be setup on any OS. rectangle.config.jsonis not automatically updated if settings are changed, need to manually export. Fix this. Might require upgrading to pro version.- Consider adding VSCode/Cursor settings in here.
- Make loading
zshrcfaster - Consider installing dotbot as a Homebrew package & remove as submodule. Would have to update
installscript.