*Observed Behavior:* Invoking `guix deploy my-config.scm` will store `my-config.scm` in the deployed server's store, and links that as `/run/current-system/configuration.scm`.
*Expected Behavior* I expected the deployed server to only be made aware of the requested `operating-system` declaration. In other words, `my-config.scm` contains a list of machines, and each machine has an `operating-system` declaration. I would expect each deployed machine to only have a copy of their, and only their, `operating-system` declaration, fully resolved from Guile variables into strings and such. *Justification* `guix deploy` expects a file that "evaluates to a list of machine objects". Because of this, it is expected that multiple machines are declared in a single file. These machines may not be related to each other, and they may even have information that should be kept from one another. Therefore, deploying the entire file's contents to a deployed machine's remote store is incorrect behavior. Further, `guix deploy` works if the file given does something like `(load "my-private-stuff.scm")`. It will resolve the Guile variables before deploying, and everything will work. But the `configuration.scm` on the deployed server will only have a reference to the `load` which won't be in the store. The unresolved Guile variables will be listed where they are used. *Workaround* Each machine can reside in a separate file, and then `guix deploy` can be executed for each file with: find . -iregex '.*\.scm' -print -execdir guix deploy "{}" \; -- Katherine