In his video, guix shell: Overview, Andrew talks about guix.scm
and manifest.scm
files…
What’s the difference between these files? When would I use one over the other? They kinda seem like they do a similar thing…
Andrew says:
guix shell
will try to automatically loadguix.scm
first andmanifest.scm
secondguix.scm
should contain a definition which returns a packagemanifest.scm
contains a manifest with a few packages
The 7.1 Getting Started section of the cookbook mainly focuses guix.scm
. However a manifest.scm
is briefly mentioned in 7.6 Bonus: Build manifest. (Although, I’m not sure if this manifest is the same manifest Andrew talks about.)
Ultimately, my objective is to create a reproducible development environment. I’m testing/playing with a very simple “Hello, World” Go app. I want to share an environment that has Go and GNU Make installed. I would also like to pin the versions of these tools. (I think I need Inferiors for this?)
For reproducible environments, Andrew also mentions using guix time-machine
in his video. However 3 years later, now in 2025, is this still the way to get reproducible environments? Or would this section be replaced with Inferiors? (Futurile also mentions time-machine
approach here.)
Should I create a guix.scm
or manifest.scm
in my project root?