Wanted to suggest an RFC for it but not sure if the reason for the lack of a formal Nix language specification is a deliberate choice or the lack of human-power to keep it maintained.
Totally missed this, thanks!
Thanks for the reminder regarding Nickel; there is also this thread you may be interested in:
Just wanted to point out that the latest Tvix update mentions work on a specification, which hasn’t been released yet AFAIK:
Finishing our language specification. Based on what we’ve learned, we’re writing a specification of the Nix language that captures its various behaviours in all their tricky subtlety and subtle trickery.
There is also nixel, which is a spec written in rust. According to the docs, it uses the same algorithms as the C++ code, so it should be correct.
Then there is also the tree-sitter grammar which might be a nice high level view of the language. I learned about let {} syntax thanks to this, for example.