Convert applications using Go modules -> Nix
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.
Vgo2nix was built on top of the old Nixpkgs build abstraction buildGoPackage
, this abstraction was built pre-modules and suffered from some fundamental design issues with modules, such as only allowing a single version of a Go package path inside the same build closure, something that Go itself allows for.
We need a better build abstraction that takes Go modules into account, while remaining import from derivation-free.
Yes. Once the API is considered stable.
The announcement blog post contains comparisons with other Go build systems for Nix and additional notes on the design choices made.
This project is licensed under the MIT License. See the LICENSE file for details.