Gnu Stow is something I've often heard referenced. Disclaimer: I have no experience using it.
Simple usecase:
cd ~
mkdir -p dotfiles && cd dotfiles
mkdir -p bash && cd bash
touch .bashrc
cd ~
stow bash # Deploys ~/.bashrc symlinked from ~/dotfiles/bash/
# More packages, version control:
cd ~/dotfiles
git init && git commit -am "Initial commit"
mkdir -p ~/dotfiles/git/
touch ~/dotfiles/git/.gitconfig
# deploy git package
cd ~ && stow git
# revert bash "package deployment"
stow -D bash
I've gone a bit overboard myself (many packages, litterate programming declaration of emacs config, Vagrant VM with Ansible deployment etc), see https://github.com/OverkillGuy/jibyconf