Personal configuration files for Linux and macOS.
This repository contains my shell, editor, terminal, and development environment configuration. The setup is designed to be:
- Idempotent
- Safe by default (no destructive overwrites)
- Symlink-based (single source of truth)
- Backup-aware when replacing files
git clone https://github.com/boogy/dotfiles.git
cd dotfiles
./install.shThe installer will:
- Clone or update the repository into
~/dotfiles - Create symlinks for managed files
- Link
.configdirectories (with optional exclusions) - Link scripts into
/usr/local/bin - Configure Vim/NeoVim compatibility
- Copy
user.jsinto all Firefox profiles (if present)
By default, the installer does not overwrite existing files.
To replace existing managed files:
./install.sh YWhen Y is supplied:
- Existing files are backed up (not deleted)
- Backups are stored in:
~/.dotfiles_backup/<timestamp>/
Important:
If you pass Y, existing managed files will be replaced (backed up first).
Safe mode (no overwrite):
wget -qO - https://raw.githubusercontent.com/boogy/dotfiles/master/install.sh | bash -s NForce replace (with backup):
wget -qO - https://raw.githubusercontent.com/boogy/dotfiles/master/install.sh | bash -s YFiles managed by the installer are defined in the MANAGED_PATHS array inside install.sh.
Examples:
~/.zshrc~/.bash_aliases~/.vimrc~/.tmux.conf~/bin~/.config/*(with exclusions)
Some .config folders can be excluded from automatic linking.
These are defined in the CONFIG_EXCLUDE array in install.sh.
Example:
CONFIG_EXCLUDE=(
"scripts"
"sensitive"
)This allows keeping certain configuration directories local.
echo "source ~/.bash_aliases" >> ~/.bashrcecho "source ~/.bash_aliases" >> ~/.profile
# or
echo "source ~/.bash_aliases" >> ~/.bash_profile(The installer attempts to handle this automatically.)
bash ~/dotfiles/deploy/macos.shThis will:
- Install Homebrew (if missing)
- Install required packages and fonts
- Configure the macOS development environment
The Homebrew packages can be installed without running the full bootstrap by using:
brew bundle --file=~/dotfiles/BrewfileWhen updating your dotfiles:
cd ~/dotfiles
git pull
./install.sh