I'm not totally sure of the point of using docker in this example. I don't really get what docker can do that can't be done better with pure nixos (and a simpler container system if you're in it for the supposed security benefits of docker)
Docker abstracts the operating system from the application layer, that's the only reason why I'm using Docker. I don't see the advantage of using NixOS to install my applications. With Docker your application is just fetched as a static binary blob as defined by your developers, so no worries :)
Yes, I'll make a followup blog post on this, but basically all your other config files are generated from configuration.nix as well. They try to have sane defaults, so that's why the default configuration file is so small. Near the bottom of the blog post I define systemd units. Those are turned into SystemD configuration files which are put in the right location so systemd sees them, NixOS does that for everything. For example my IRC client (irssi) is configured using a Nix configuration file as well.
> other config files are generated from configuration.nix
Ah, now I get it.
So if I have to use stuff like Zsh or Atom, the only reason they have their own configs is, that no one bothered to write a Nix expression to generate them with their packages?
Well it seems for atom there indeed isn't much done in the way of generating config files, but for example for zsh there's loads of things you can configure in the configuration.nix:
NixOS doesn't really tend to worry about user dotfiles, it's more for system configuration. In fact, home directories are one of the few places that are considered "stateful" and aren't managed by Nix.