Note: this question is not about syncing data in a Dropbox-like way (files, folders), it is more about syncing configurations.
I would like to have exactly the same version of Ubuntu with all the software installed and configured both on my Desktop PC and on my Laptop PC (and maybe on my small netbook PC) without using Ubuntu Sync and with minimal maintenance effort (setup once, run for a long time).
The use case is the following:
I work on my Laptop PC and do some changes to software configuration, for example:
configure vim to have a new plugin
update the Search Tracker / Recoll file search index
configure Thunderbird to have an additional IMAP account ('remember password')
add some new bookmarks in Firefox/Chrome
change the desktop background image
install new software with apt-get install
build and install new software with checkinstall
etc.
I do some 'sync' operation
I switch to my Desktop PC and get all the changes from (1) working on the Desktop PC
I work on my Desktop PC and do some changes to software configuration, for example:
add new directory to the list of directories to be backed up by DejaDup
add a new check spelling dictionary to the Libreoffice Writer
configure the Terminator software to have colored fonts
install new font into the Ubuntu system
configure Ekiga to make phone calls
etc.
I do some 'sync' operation
I switch to my Laptop PC and get all the changes from (1) and (4) working on the Laptop PC.
Question: What free/open-source software can I use to sync both machines' Ubuntu systems, installed software and configurations? Is it possible to do that without any cloud services?
Complementary question: It is obvious that the Desktop PC and the Laptop PC have different hardware configurations. How does the 'sync software' in question deal with video drivers, wlan drivers and their configurations?
Note: I do not need all the PCs to be synced at the same time, because I work with only one single machine at once.
Note: I considered to use Chef to solve the problem, but it seems that it might be really cumbersome to maintain such a setup.
Note: I also considered using a bootable USB with Ubuntu installed (portable Linux), but I am not sure that the video drivers will work then.