The fundamental basis of Nix is that it's a purely functional programming language without side effects. The whole thing breaks apart otherwise. And with a purpose-specific programming language, there's some big quality of life things (for example, low friction multiline strings with interpolation, the ability to use dashes in identifiers for package names, ...).
(and, when you can do without side effects, functional programming is really simple and productive!)