Settings and Preferences for transfer between machines
Dotfiles are a way for people to store settings and preferences to make setting up a new computer that much easier. I use both my laptop, desktop and work machine almost every day, and want them to be setup in an almost identical way.
Most people store their dotfiles in version control. This is a great solution as it's possible to add authentication before accessing them, and stores a complete version history.
My Dotfiles are built using puppet, which is designed to allow fast setup of servers from declarative configuration. This is fairly overkill for what I'm using it for, but it works really nicely, and supports everything I could possibly need.
I synchronise these files with git, and publish them on GitHub.
Things like SSH config and private environment variables can't go onto GitHub, for obvious reasons. For this, I use my nextcloud server to sync a private directory to my machines, and depend on those files in the puppet config.