NOTE: I am not asking about difference between pointer and reference, and for this question it is completely irrelevant.

One thing I couldn't find explicitly stated -- what model does Nim use?

Like C++ -- where you have values and with new you create pointers to data (in such case the variable could hold pointer to a pointer to a pointer to... to data)?

Or like C# -- where you have POD types as values, but user defined objects with referenced (implicitly)?

I spotted only dereferencing is automatic, like in Go.

Rephrase. You define your new type, let's say Student (with name, university, address). You write:

var student ...?

to make student hold actual data (of Student type/class) to make student hold a pointer to the data to make student hold a pointer to a pointer to the data

Or some from those points are impossible?