Guix is a handy tool for developers;
guix shell, in
particular, gives a standalone development environment for your package,
no matter what language(s) it’s written in (see Invoking guix
shell in GNU Guix Reference Manual). To benefit from it, you
have to initially write a package definition and have it either in Guix
proper, or in a channel, or directly in your project’s source tree as a
guix.scm file. This last option is appealing: all developers
have to do to get set up is clone the project’s repository and run
guix shell, with no arguments.
Development needs go beyond development environments though. How can developers perform continuous integration of their code in Guix build environments? How can they deliver their code straight to adventurous users? This chapter describes a set of files developers can add to their repository to set up Guix-based development environments, continuous integration, and continuous delivery—all at once1.