Hi all, Google Summer of Code requires a "work product submission" [1] publicly documenting the project's results, so I'm writing this to summarize the state of 'guix deploy' and to share my visions for next steps. GSoC-related patches accepted into 'master': [2] - Initial implementation of 'guix deploy'. - ssh: Add 'identity' keyword to 'open-ssh-session'. (a9b09ed776) - gnu: Add machine type for deployment specifications. (fa9edf09e9) - Add 'guix deploy'. (5cbb832fb1) - doc: Add section for 'guix deploy'. (02a962c8e0) - Remove references to non-existent 'tests/machine.scm'. (834b8a4110) - Refactoring to share code between 'guix deploy' and 'guix system reconfigure'. - guix system: Add 'reconfigure' module. (5c793753b3) - guix system: Reimplement 'reconfigure'. (5c8c8c4554) - tests: Add reconfigure system test. (d23a00b599) - Various bugfixes and improvements. - reconfigure: Reload all shepherd files when upgrading services. (1db6f137d9) - doc: Add note about signing keys. (5bc751925d) - machine: Rename 'system' field. (d97ce20400) - reconfigure: Fix GC root installation. (5f04e9f962) - machine: Implement safety checks. (fd3119db4f) - reconfigure: Improve tests for system activation. (ec12235ce2) - deploy: Use all machine modules when loading deployment (55e238f2ab) - machine: Add 'build-locally?' field for managed hosts. (d84e9b75b2) - remote: Build derivations appropriate for the remote's (2c8e04f136) - remote: Remove '--system' argument. (03cbd94d48) - machine: Allow non-root users to deploy. (5ea7537b9a) - machine: Implement 'roll-back-machine'. (9c70c460a0) - machine: Automatically authorize the coordinator's signing key. (3033d59ac9) - doc: Add description of 'build-locally?'. (3967a946c6) - remote: Use (%daemon-socket-uri) rather than hard-coded path. (5f32531770) - remote: Resolve missing 'G_'. (ddef146b89) - machine: Use 'become-command'. (4cc5e5204b) At this point, I feel the "simple case" of upgrading or configuring a remote machine that's already running the Guix system is reasonably well-supported. Assuming that you're running Guix from 'master', 'guix deploy' is right at your fingertips. More work is necessary if we want 'guix deploy' to be a proper DevOps tool, however. The most significant of those features is support for more advanced use-cases such as automatic provisioning of resources from Virtual Private Server providers (which I have made some progress on [3]). I feel the newly-generalized "reconfiguration code" could use some attention as well. Thanks for a great summer, guys. I'm excited to continue working on this. Regards, Jakob [1]: https://developers.google.com/open-source/gsoc/help/work-product [2]: https://git.savannah.gnu.org/cgit/guix.git/log/?qt=author&q=Jakob+L.+Kreuze [3]: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37083