Classically, software deployment is a process consisting of building the software, packaging it for distribution, and installing
it at the target site. This approach has two problems. First, a package must be annotated with dependency information and
other meta-data. This to some extent overlaps with component dependencies used in the build process. Second, the same source
system can often be built into an often very large number of variants. The distributor must decide which element(s) of the variant space will be packaged, reducing the flexibility for the receiver
of the package. In this paper we show how building and deployment can be integrated into a single formalism. We describe a
build manager called Maak that can handle deployment through a sufficiently general module system. Through the sharing of generated files, a source
distribution transparently turns into a binary distribution, removing the dichotomy between these two modes of deployment. In addition, the creation
and deployment of variants becomes easy through the use of a simple functional language as the build formalism.