Specifically programs.steam.enable = true
sets up the direct rendering and 32-bit libraries that you generally need.
I was confused at first about how to install wine runners in Lutris or in Bottles. It turns out you do it the same way as in any other distro, through the app.
It would make sense for the terminal to handle syntax highlighting since that would match how editors work. But the convention is that the shell handles highlighting, not the terminal. You can check which shell you are running with the command,
It's done that way because the shell is a running program that is capable of telling the terminal which colors to show (by mixing color escape sequences into text). Compare that to code in an editor which is text, not a running program so the only option is for the editor to handle highlighting[1]. Editors need syntax files to configure highlighting for all the different programming languages, while terminals don't need this because the shell tells them what colors to show.
[1] setting aside the "semantic highlighting" LSP capability - that was invented long after syntax highlighting conventions were established