I use this to quickly configure a GNU/Linux system with the software I generally use and the configuration I like.
The setup currently understands laptop (desktop) configuration and cloud VMs (Ubuntu 16.x).
If configured for cloud features, you also get:
Additional formulas, my own or third parties, which can be used in your own salt setups:
If you can use cloud-init (EC2 and some other providers), you can upload cloud-init/user-data.payload.gz when creating the VM (Advanced Details, User data in the Launch Instance Wizard).
Otherwise run the scripts in order from cloud-init/scripts once you have a shell (as root).
You will need to customize (or skip) 30_flavor, depending what you default username is and if you want to configure the cloud or desktop version.