What specific criteria are hashed to make a block? How is the block-hash evaluated?

I have been trying to find out what inputs go into the block-hash, as far as I can tell:

VRF for the epoch
A private key from the pool operator
slot number
What else?

I would expect the prior block-hash, and the transaction hashes, anything else?

How then is the hash evaluated, I guess there is no difficulty, but some kind of target for the hash must be set, how does that work?

Links to each element in the code-base would be great too.