How do you guys quickly sync your settings (especially bash aliases and ssh keys) across your machines?
Ideally i want a simple script to run on every new server I work with. Any suggestions?
How do you guys quickly sync your settings (especially bash aliases and ssh keys) across your machines?
Ideally i want a simple script to run on every new server I work with. Any suggestions?
Dotfiles go in git, SSH keys are state.
I'm looking to migrate to home-manager though because I use Nix on all my devices anyways.
Home manager is great
I also have multiple versions of by bash_profile with syntax specific to the OS. It checks if we're on MacOS or Linux with a kernel check and then reads the appropriate ancillary bash_profile for that platform. Anything that can live in the main bash_profile with the same command on both platforms lives there and anything that needs to be system-specific is in the other one.
I have all my important functions as individual files that get loaded with the following:
function loadfuncs() { local funcdir="$HOME/.dotfiles/functions/" [ -e "${funcdir}".DS_Store ] && rm "$HOME/.dotfiles/functions/.DS_Store" local n=0 for i in "${funcdir}"*; do source "$(realpath $i)" n=$(( n + 1 )) done } loadfuncs
Interesting way to go about it. Though when I'm at the point where I need differences between linux and darwin, I'm probably going to do that at the home-manager level.
Just for fun, here's how I'm checking that (this was written in 2016 and may require adjusting as I haven't been keeping up on Linux for a while):
function oscheck() { if [[ "$(uname -s)" == 'Darwin' ]]; then # echo Darwin osType=Darwin return 0 elif [[ "$(uname -s)" == 'Linux' ]]; then # echo Linux osType=Linux grep CentOS /etc/os-release > /dev/null if [[ "$?" == 0 ]]; then # echo "CentOS" export theDistro=CentOS return 0 else : fi grep Ubuntu /etc/os-release > /dev/null if [[ "$?" == 0 ]]; then export theDistro=Ubuntu return 0 else : # echo "Not Ubuntu" fi printf " %s\n" "Error: osType tested true for Linux, but did not find CentOS or Ubuntu." "" return 1 else osType=Unknown return 1 fi } oscheck
Checking for Ubuntu or CentOS is a tad limiting given the amount of distros there are ;)
Yeah, but those were the two I was using. I didn't mean to suggest that the code, as is, was correct for everyone. ;-)