I had a couple people attempt this for the dev environment of <a href="https://www.oilshell.org/" rel="nofollow">https://www.oilshell.org/</a> with Nix, and it wasn't entirely successful. (Not Guix, but my understanding is that Guix would have the same issues)<p>As background, we've long had a set of evolving shell scripts that fetch and build dependencies at specific versions -- like bash/dash/zsh/mksh/busybox to test against, re2c to generate code, CommonMark, Python 3.10, MyPy with pip dependencies, and (bonus) R with CRAN dependencies.<p>I wrote about 2 problems here: <a href="https://lobste.rs/s/s5co2f/where_contributors_have_problems_with#c_ndbezz" rel="nofollow">https://lobste.rs/s/s5co2f/where_contributors_have_problems_...</a><p>1. OS X and libc, which is not really a problem since our existing scripts don't solve it either. It was just one motivation for Nix that didn't quite work out.<p>2. The file system layout becomes different, and Oil's shell tests rely on that. So containers ended up being easier. The whole build and test system runs in OCI containers under Docker and podman now, so it's pretty reproducible and automated.<p>But I still think it would be nice if someone who actually knows Nix and Guix (unlike me) tries again. The dependencies are more stable now than 2 years ago.<p>I think you have to write like 10 Nix or Guix expressions from scratch with the exact tarballs that we use. (Otherwise the tests will break even more, because Oil's tests are extremely detailed and find bugs in specific versions of specific shells.)<p>Right now we have a 134 line shell.nix that tries to reuse Oil's scripts, but I think it doesn't gibe with the way that Nix and Guix are meant to be used. Probably the real solution would be more like 1000 lines from scratch?<p>I remember that Nix Flakes was what I thought Nix was going to be, but at the time it wasn't ready. I thought Nix was supposed to solve the "it works on my machine" problem but it actually doesn't -- you still need a CI because it's possible to write .nix expressions in ways that break the sandboxing (unlike Bazel where you always get it).<p>I had ran this by someone who knows Guix and my takeaway was that Guix is basically the same in that regard.<p>A key problem is that, at least for awhile, I want it to work in parallel with our existing system ... not have a "big break".