This is a simple pair of scripts that are set up to provision a Linux machine following the local Linux machine's setup (both your user and the root user), without relying on putting all of your dotfiles somewhere and remembering what packages you need to install and whatnot.
First, make a files package to ship off.
~$ bash ./get_current_setup.shThis creates a .zip file for you to copy over. Copy this and the setup.sh
file over to your target machine, and then execute the script to provision the
system.
~$ bash ./setup.shIn theory, this script should support the major flavors of Linux package
managers (apt and dnf), though right now the autodetection stuff only
recognizes Ubuntu, Debian, AlmaLinux, and Arch for the giggles.
You can modify the packages you want installed by default by modifying
setup.sh's TOOLS array. If you need a tool set up in a custom way, add a
catch for it at the bottom of setup.sh, following the templates provided by
other tools that need manual setups. Otherwise the detected package manager
will be used to install your tool entry as a system package.
You can also configure what files are copied around by modifying the
get_current_setup.sh file, in the SOURCES array. Do note that
files/directories that have strange paths (ex. .config/subdir/desired_path)
will require modifying both scripts to support. Most of the time you should be
good, but potentially good to know.