raspi-config does is editing a few configuration files, which you can also edit with a script. Check the
sed manual to see how such edits can be efficiently done.
If you have a lot of changes to apply in this way, I would consider setting up a clean RPi image the way you want,
diff its complete filesystem* against a vanilla image, and then apply the changes with
patch when you need to set up a new installation.
Finally, take a look at tools such as
etckeeper - those are specifically designed to manipulate configuration changes and are able to track subtle changes a simple
diff would miss, such as permissions. Note that contrary to its name,
etckeeper is not restricted to
/etc, e.g. running
etckeeper -d /boot init; etckeeper -d /boot commit will make a backup of the files in
(*) Apparently it isn't obvious, so to clear all misunderstandings, I mean you should run something like
diff -r /etc /mnt/vanilla_root/etc > etc.diff and
diff -r /boot /mnt/vanilla_boot > boot.diff, not
diff my.img vanilla.img.