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 shellwill try to automatically loadguix.scmfirst andmanifest.scmsecondguix.scmshould contain a definition which returns a packagemanifest.scmcontains 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?