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?

all 10 comments

sorted by: hot top controversial new old
[–] 2 points 5 months ago (6 children)

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.

  • source
  • hideshow 6 child comments
  • [–] 1 point 5 months ago (5 children)

    i wouldnt say they are impossible, unless you are specifically refering to doing everything by hand

  • source
  • parent
  • hideshow 5 child comments
  • [–] 2 points 4 months ago* (2 children)

    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.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 5 months ago* (2 children)

    the best way for these langs is to do as much as possible with the importer tool

    guix import

    and i think future easing of the process would be good to carry out in the scope of this importer tool

  • source
  • hideshow 2 child comments
  • [–] 1 point 5 months ago (1 child)

    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

  • source
  • parent
  • hideshow 1 child comment