overlay filesystem
"/"
VFS
flower supports a "poor man's overlay filesystem", which it calls a "virtual filesystem" or "VFS". For example, if you have both a file named .build/defaults/build.clj and a file named build.clj, flower will use your build.clj. But if you don't have your own build.clj, it will fallback to .build/defaults/build.clj.
This .build/defaults directory is generated during flower new. See architecture for more detailed information.
virtual and materialized files
Some defaults are never hidden in .build/defaults. For example, flower.edn is always placed into your top-level directory so that flower can recognize it as a flower site. Such defaults are called "materialized files", because they really do exist on disk, and are overridden just by editing them in place. By contrast, defaults that are not materialized are called "virtual files".
To avoid flower generating "hidden" pages, it will always materialize the pages/ and static/ directories. Currently, flower always materializes the templates/ directory, but that may change in the future.
overriding defaults
Right now, the set of operations you can do with the virtual defaults are quite limited: basically the only thing you can do is override them. You may find it useful to look at the default file you are overriding to get ideas; you can do so by looking in the .build/defaults directory that flower new generates.
future plans
I plan to add a flower edit command in the future that makes it simpler to override defaults. I also plan to add flower upgrade to make it possible to upgrade to a newer version of flower's defaults. I plan to move .build/defaults to defaults/ so that it's tracked by git. Finally, I plan to add support for "presets" (often called "themes" in other SSGs) that use the same VFS mechanismm. See #74 for more info.