swap should be on the ssd. It's a ram cache. It also has to have its own partition.
Wouldn't using the ssd as swap mean that I end up with regular writes to the ssd? I don't want to shorten its lifespan more than necessary. I don't expect to run out of ram too often at 12gig, but assume that some programs might just use /swap anyways. Does /usr, /opt and /home on one partition sound okay? Or should /home have its own partition (for upgrade reasons)?
swap is allocated by the kernel. If you have 12GiB of memory you're not in any danger of running out unless you're doing rendering or something, but some people like to have some just in case. also I would probably put /usr and /opt in the ssd, they are small and contain some executables/libraries.