Handling Opinionated Programming Languages
Hello everyone,
How do you guys handle programming in languages that want to package imports "their" way? I'm mainly referring to things like Python, Golang, or Rust. I'm in the middle of a small Golang project and need to import a uuid library that guix doesn't package on it's own. I could make the package which isn't difficult but that leads me down the tension between "Go project is more portable if I use go get ..." vs "Project is more reproducible if I use Guix".
How do you all do it?
Python is pretty easy. I don't know about guix but nix makes it easy to unvendor python dependencies.
Rust and go are basically impossible. Guix is doing some work:
https://guix.gnu.org/en/blog/2025/a-new-rust-packaging-model/
But they are the only people (afaik) who are doing work for rust. Most of the other similar projects (gentoo, debian) have given up.
Go is even worse. I don't know of anything like antioxidant or cargo2guix (linked in article above) but for go.
i wouldnt say they are impossible, unless you are specifically refering to doing everything by hand
Huh. I just checked and guix uncendors go. Very impressive.
It looks like they let you override cargo crate deps with different versipns but they haven't managed to compile without cargo or crates yet.
sorry what is "uncendors"?
ah ok probably meant to write "unvendors"
for example i packaged "regreet" in my channel and all i had to do was use the auto-import tool and then add the c dependencies to the gtk stuff
but yes having it compile without cargo at all would be super swell
the best way for these langs is to do as much as possible with the importer tool
guix importand i think future easing of the process would be good to carry out in the scope of this importer tool
at the minute it is quite quick for importing the skeleton of the project and then then things such as non internal-language dependencies can be manually fixed, but it does lack in the scope of updating these imports whilst avoiding repeated work imo
but there are a decent number of times when with python, rust or go, the auto import will work first try or with very minimal adjustment