Should I include translated sources into version control, to let people build my project without Nim install?
I can't decide what is better, and what underwater stones I'll have in both cases.
Maybe nim should have an option to build a makefile + C files.
This would be easier packaging than the workarounds used in pakku, a package manager for Archlinux written in Nim. They use make to more easily control the installation prefix.
However this might be more trouble than it's worth, especially with packages that wrap header files and use currentSourcePath. It would probably be better to have a tool that deal with packaging Nim applications/library for distributions, it can just be nimble deploy bin=/usr/bin lib=/usr/lib.
Some distro like Debian or Archlinux like to run sanity checks on the final binary, postinstall tests would be valuable. (Those are different than unittesting, they can only test the high-level API.)
new Nim compiler version produces different nimcache sources from the same .nim sources, so which ones are the "real" ones now?
This is a feature rather than a problem. The .nim files are the "real" sources and the .c files are artifacts. If you commit the .c sources you can then inspect how they change when a new compiler is used.