Hi Guix! I'm in the process of packaging IPFS. It has about 100 dependencies, most of which are currently missing in Guix, so that's gonna take me some hours :p Thankfully Go is rather straightforward to package so that should be alright. That said, the case of IPFS of particular: it uses it's own dependency manager "gx" which retrieves the specific versions of its deps over the IFPS protocol. The build recipe is as follows (from the project's Rules.mk): --8<---------------cut here---------------start------------->8--- install_unsupported: @echo "note: this command has yet to be tested to build in the system you are using" @echo "installing gx" go get -v -u github.com/whyrusleeping/gx go get -v -u github.com/whyrusleeping/gx-go @echo check gx and gx-go gx -v && gx-go -v @echo downloading dependencies gx install --global @echo "installing go-ipfs" go install -v -tags nofuse ./cmd/ipfs --8<---------------cut here---------------end--------------->8--- This raises a few questions: - IPFS is rather peculiar about its dependency versions. If I package all those dependencies in Guix, I should use the same versions. But then we should make sure that no one is going to update those packages independently, which would break the strict versioning of IPFS. Else I could package all those deps as usual (i.e. the latest version) and then for the IPFS package I would use the native inputs as follows: ("go-path" ,(package (inherit go-path) (version "1.1.9") (source (origin... (base32 ))))) I should probably define a function of PACKAGE VERSION BASE32 arguments. - gx retrieves the deps over IPFS: how important is this? Should we do the same? What about using "gx"? We could also implement a new "gx-fetch" method fully written in Guile. Thoughts? -- Pierre Neidhardt https://ambrevar.xyz/