Personal dotfiles managed with the local dot-link.sh script.
Each top-level folder is a package that symlinks files into $HOME.
Examples:
zsh/.zshrc->~/.zshrcgit/.gitconfig->~/.gitconfigneovim/.config/nvim->~/.config/nvim
The Neovim setup is a local LazyVim config, not because I'm lazy, but because I take doing absolutely nothing very seriously.
Warning: these are personal dotfiles. If you want to try them, fork the repository, review the code, and remove anything you do not want or need. Do not blindly run someone else's shell configuration unless you know what it changes.
The installer clones or updates the repository, then opens an interactive picker so you can choose which packages to link:
curl -fsSL https://raw.githubusercontent.com/juanramirezc2/dotfiles/master/install.sh | bashTo skip the picker, provide a comma-separated package list:
curl -fsSL https://raw.githubusercontent.com/juanramirezc2/dotfiles/master/install.sh \
| DOTFILES_PACKAGES=zsh,git,neovim,tmux bashOptional environment variables:
DOTFILES_DIR: where to clone the repo; defaults to~/dotfilesDOTFILES_REPO: repository URLDOTFILES_BRANCH: branch to cloneDOTFILES_PACKAGES: packages to link without the interactive pickerDOTFILES_ADOPT=1: usedot-link.sh --adoptto absorb existing files
Clone the repository wherever you want. I usually keep it at ~/dotfiles:
git clone git@github.com:juanramirezc2/dotfiles.git ~/dotfiles
cd ~/dotfilesThen link the packages you want:
./dot-link.sh zsh git neovim tmuxThe executable bit is required on dot-link.sh. If it's missing after cloning, restore it before first use:
chmod +x dot-link.shTo update, pull the latest changes and rerun the installer or link command:
cd ~/dotfiles
git pull --ff-only
./install.shOr link specific packages directly:
./dot-link.sh zsh git neovim tmuxLink a single package:
./dot-link.sh ghosttyPreview changes before linking:
./dot-link.sh --dry-run zsh git neovim tmuxAbsorb existing files into the repo before linking:
./dot-link.sh --adopt zsh git neovim tmuxThis repo does not currently source a private override file. Keep machine-specific changes in untracked local files, or fork and edit the packages intentionally.
Optional common routines I run on a daily basis. Currently:
binaries/.local/bin/update.sh— upgrades Homebrew formulae and casks, then npm globals.
Linking the binaries package symlinks each script into ~/.local/bin/, which is on $PATH, so you can call it by name (e.g. update.sh) from any shell.
The executable bit is required. If it's missing after cloning, restore it before first use:
chmod +x ~/dotfiles/binaries/.local/bin/*.shWhen setting up a new Mac, you may want to apply the macOS defaults:
./.macosReview the script before running it. It changes system and application preferences.
After installing Homebrew, install common command-line tools and apps:
./brew.zshSome shell and editor features assume these tools are installed, so review brew.zsh if you prefer to install dependencies manually.
Suggestions and improvements are welcome.
Juan Ramirez
