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?

  • @some_guy@lemmy.sdf.org
    link
    fedilink
    19 months ago

    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
    
    
    • Atemu
      link
      fedilink
      19 months ago

      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.

      • @some_guy@lemmy.sdf.org
        link
        fedilink
        19 months ago

        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