You could do this the same way raspi-config
works, by running a boot service that disables itself after being run once.
If shell scripting isn't your thing, you may want to look into configuration tools such as puppet or chef.
we want to eventually provide a final Raspbian image that my school can take
This sounds like you instead want want to create a ready made image. If so, you can simply start with a fresh image on a running pi, install what you want, and then create a new image from the SD card. E.g., using another linux machine:
dd if=/dev/sdb of=my.img bs=4M count=???
Since this is copying from an entire device (and not just a partition), you will have to figure out how much to copy (count=???
) -- you probably do not want an image the size of the card itself. A complication here is that current versions of Raspbian enlarge themselves automatically when first run. You thus may need to:
Reverse the expand root FS
Or you could do a little digging and disable the auto-expansion on the card before using it. You can also do this with the image itself:
How can I mount a Raspberry Pi Linux distro image?
The above Q&A may help you understand the nature of multi-partition device images, as used with the Pi, if you do not already. Once this is clear to you creating a customized image should be straightforward.