mirror of
https://github.com/tweag/gomod2nix.git
synced 2024-11-05 01:59:08 +00:00
Convert applications using Go modules to Nix expressions
cf42f710c1
As creator of small tools, my flakes might often end up in other peoples projects. Overlays are a performance problem in those use cases because I would kept re-instantiating nixpkgs instances. Of course I could also expose my stuff as overlays as well. In that case I would need to merge downstream dependencies like go2modnix as well, which would polute their nixpkgs instance with unrelated stuff and also make it harder for my users to tell what random attributes came from which place. |
||
---|---|---|
.assets | ||
.github/workflows | ||
builder | ||
docs | ||
internal | ||
templates/app | ||
tests | ||
.envrc | ||
.gitignore | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
go.mod | ||
go.sum | ||
gomod2nix.toml | ||
LICENSE | ||
main.go | ||
overlay.nix | ||
README.md | ||
shell.nix |
Gomod2nix
Convert applications using Go modules -> Nix
Usage
From the Go project directory execute:
$ gomod2nix
This will create gomod2nix.toml
that's used like so
let
pkgs = import <nixpkgs> {
overlays = [
(self: super: {
buildGoApplication = super.callPackage ./builder { };
})
];
};
in pkgs.buildGoApplication {
pname = "gomod2nix-example";
version = "0.1";
src = ./.;
modules = ./gomod2nix.toml;
}
For more in-depth usage check the Getting Started and the Nix API reference docs.
Motivation
The announcement blog post contains comparisons with other Go build systems for Nix and additional notes on the design choices made.
License
This project is licensed under the MIT License. See the LICENSE file for details.
About the project
The developmentent of Trustix (which Gomod2nix is a part of) has been sponsored by Tweag I/O and funded by the NLNet foundation and the European Commission’s Next Generation Internet programme through the NGI Zero PET (privacy and trust enhancing technologies) fund.