Skip to content
 
 

Repository files navigation

forked from holman/dotfiles 🍴

Your dotfiles are how you personalize your system. These are mine.

I was a little tired of having long alias files and everything strewn about > (which is extremely common on other dotfiles projects, too). That led to this > project being much more topic-centric. I realized I could split a lot of things > up into the main areas I used (Ruby, git, system libraries, and so on), so I > structured the project accordingly.

If you're interested in the philosophy behind why projects like these are > awesome, you might want to read my post on the subject.

Topical 🎩

Everything's built around topic areas. If you're adding a new area to your forked dotfiles — say, "Java" — you can simply add a java directory and put files in there. Anything with an extension of .zsh will get automatically included into your shell. Anything named *.symlink is linked into $HOME without the extension and with a leading dot when you run script/bootstrap.

  • A file named gitconfig.symlink becomes ~/.gitconfig.
  • A directory named cursor.symlink targets ~/.cursor, and bootstrap recurses into it: intermediate directories are created as real directories and leaf files are linked individually. This keeps directories that a tool also writes to — ~/.cursor/plugins, ~/.config — out of the repo.
  • Inside such a tree, a nested entry ending in .symlink is linked whole without recursion, and a file named X.link creates a symlink at X pointing to the path on its first line ($HOME and $DOTFILES are expanded).
  • A .link-children file in a directory links each of that directory's children whole, leaving the directory itself real.
  • A .local/ directory inside a *.symlink tree is merged into the same target as its parent and is gitignored. The target never contains a .local path. Use this for directory-shaped content that must stay in the working tree but must not be committed.

Only the link root gains a leading dot; nested paths map verbatim, so config.symlink/opencode/opencode.json becomes ~/.config/opencode/opencode.json.

What's inside? 👀

A lot of stuff. Seriously, a lot of stuff. Check them out in the file browser above and see what components may mesh up with you.

Fork Holman's dotfiles, remove what you don't use, and build on what you do use.

Components 🏗️

There's a few special files in the hierarchy.

  • bin/: Anything in bin/ will get added to your $PATH and be made available everywhere.
  • */*.zsh: Any files ending in .zsh get loaded into your environment.
  • */path.zsh: Any file named path.zsh is loaded first and is expected to setup $PATH or similar.
  • */completion.zsh: Any file named completion.zsh is loaded last and is expected to setup autocomplete.
  • */install.sh: Any file named install.sh is executed when you run script/install. To avoid being loaded automatically, its extension is .sh, not .zsh.
  • */*.symlink: Any file ending in *.symlink gets symlinked into your $HOME. This is so you can keep all of those versioned in your dotfiles but still keep those autoloaded files in your home directory. These get symlinked in when you run script/bootstrap.

Install ⚙️

Run this:

git clone https://github.com/strativd/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
script/bootstrap

Screenshot of terminal window after running bootstrap script

This will symlink the appropriate files in .dotfiles to your home directory. Everything is configured and tweaked within ~/.dotfiles.

The main file you'll want to change right off the bat is zsh/zshrc.symlink, which sets up a few paths that'll be different on your particular machine.

defaults, and so on. Tweak this script, and occasionally run dot from time to time to keep your environment fresh and up-to-date. You can find this script in bin/. dot is a simple script for managing your dotfiles and system setup. Run dot from time to time to keep your environment fresh and up-to-date. You can find this script in bin/.

dot commands

dot [options]

Options:
  -e, --edit       Open dotfiles directory for editing
  -r, --reload     Reload the current terminal session
  -h, --help       Show this help message and exit
  -m, --macos      Set the defaults for macOS
  -b, --brew       Install/update Homebrew on the system
  -i, --install    Run all install scripts in dot repo
  -B, --bootstrap  Sync dotfiles from dot repo to system
  -S, --start      Start a new laptop setup (bootstrap + install)

Each option runs the corresponding setup or management script from your dotfiles repo. See the script for details.

Thanks 🤍

I forked Ryan Bates' excellent dotfiles for a couple years before the weight of my changes and tweaks inspired me to finally roll my own. But Ryan's dotfiles were an easy way to get into bash customization, and then to jump ship to zsh a bit later. A decent amount of the code in these dotfiles stem or are inspired from Ryan's original project.

Holman 🙏

About

@strativd dotfiles

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages