Skip to content

izzygomez/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Izzy's Dotfiles

Personal dotfiles setup using dotbot. Also setting other preferences, e.g. Firefox, iTerm2, macOS keybindings.

Usage

For more instructions, check this blog post out. This section will briefly detail common flows.

Adding a dotfile or dotdir

  1. 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
  1. 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
  1. Run install script, & delete backup if successful
./install
  ...
  ==> All tasks executed successfully
# dotfile
rm ~/.dotfile-backup
# dotdir
rm -r ~/.dotdir-backup
  1. (Optional) Add file mapping in .gitattributes to enable correct syntax highlighting on Github.

Installing dotfiles on new machine

  1. Clone & install dotfiles
git clone https://github.com/izzygomez/dotfiles --recursive
cd dotfiles
./install
  1. Install new dotfile updates
git pull
./install

Misc

Machine-specific configuration

Ideally, 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.

Pre-commit

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.

Submodules

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 push

To revert submodule pointers to what's currently committed, run git submodule update --init.

TODOs

  • 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 tmux plugins across machines, i.e. automate the following currently-manual steps of having to install plugins the first time tmux is 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 the tmux-resurrect plugin (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-restore
  • emacs, undo-tree package: 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.
  • emacs is not working well on raspi setup: the diff-hl-mode related code for uncommitted changes is not working well (something related to the add-hook line?).
  • 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 an echo statement in zshrc_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-completions package. For context, tried adding it while setting up ngrok completion stuff in .zshrc, but I found out that the ordering of initializing zsh-completions & ngrok mattered, & I'd need to refactor dotfiles to get this working. Also, per zsh-completions README, it is also worth considering installing via something like antigen instead of, say, brew so that it can be setup on any OS.
  • rectangle.config.json is 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 zshrc faster
  • Consider installing dotbot as a Homebrew package & remove as submodule. Would have to update install script.

About

my dotfiles, powered by dotbot 🤖

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published