# Add package `go-ethereum` These patches add the [go-ethereum][5] package and a small workaround that allows experimental module support. ## [Checklist][1] 1. Code authentication: all the code is being pulled from Git repositories and Go packages, so there isn't any specific code signature we can verify. 2. Synopsis and description: built from the official documentation and around the style guidelines. 3. Results for `guix lint`: everything seems to be fine, and it seems to have scheduled a [Software Heritage][2] archival (?). 4. Native build check: the package builds correctly on my platform (x86-64), using `guix build` package. 5. Cross-build check: package was not tested on any other supported platform because `go-build-system` [doesn't seem to support cross-compilation][3]. 6. Package deduplication: dependencies are being pulled from their respective module repositories at build time; there isn't practically any overlap between the package code and the Guix repositories. 7. Package size: as per `guix size`, this package requires a total of 418.7 MiB, with a package (self) size of 282.4 MiB. 8. Dependent packages: this is a freshly added package with no dependent items. 9. Deterministic build: this package is fully deterministic and has fixed hashes for both the initial download and the build derivation. 10. Inclusive language: documentation was written with neutrality in mind and there isn't any obvious bias, though it might need proofreading. 11. Patch atomicity: this patch contains only one set of related changes, though modifications affect two files. 12. Code formatting: added lines were formatted by using `indent-code.el`. 13. Source consistency: all the involved downloads are being pulled along with a Git tag or commit, so results should be consistent enough. 14. Guix build: these changes don't affect Guix builds nor introduce any warning. 15. Guix consistency: these changes do not break Guix in any obvious way. ## Desiderata It would be great to have easier ways to replace Go module management system with Guix in a seamless and painless way. Rust build system for Guix has a cleaner implementation, majorly due to the existence of a [centralized package registry][4]. [1]: https://guix.gnu.org/manual/en/html_node/Submitting-Patches.html [2]: https://www.softwareheritage.org/ [3]: https://git.savannah.gnu.org/cgit/guix.git/tree/guix/build-system/go.scm#n60 [4]: https://crates.io [5]: https://github.com/ethereum/go-ethereum [6]: https://gist.github.com/0x2b3bfa0/1805037bf5efa2655fa71d32e69fdd14