Convert applications using Go modules to Nix expressions
Find a file
adisbladis 4ffc0dfd48 Drop support for buildGoPackage format
It was buggy at best and will never really work out because of semantic differences, mainly around nested package handling.

We're better off focusing on a single format which can be well supported.
2022-05-26 19:07:06 +08:00
.github/workflows run the test script in CI 2022-05-20 14:48:28 +08:00
builder fix another edge case 2022-05-20 16:31:44 +08:00
fetch Drop support for buildGoPackage format 2022-05-26 19:07:06 +08:00
formats/gomod2nix Drop support for buildGoPackage format 2022-05-26 19:07:06 +08:00
tests reproduce the relPath issue 2022-05-20 17:41:57 +08:00
types Add vendorPath to correctly link the vendor directory in the nix build 2020-10-29 13:26:17 +01:00
.envrc Add python test script 2020-12-03 16:23:39 +01:00
.gitignore fix symlink nested package 2022-05-20 15:54:53 +08:00
check-fmt Expose gomod2nix package in the overlay 2020-12-03 16:23:39 +01:00
default.nix default.nix: Filter tests 2021-01-12 17:55:00 +01:00
flake.lock Bump flake.lock 2022-05-26 18:12:32 +08:00
flake.nix flake.nix: Update to latest flake schema 2022-05-26 18:31:19 +08:00
go.mod fix build with go 1.18 2022-05-20 17:41:24 +08:00
go.sum fix build with go 1.18 2022-05-20 17:41:24 +08:00
gomod2nix.toml Add gomod2nix.toml to repo 2020-12-03 16:23:39 +01:00
LICENSE Add README file 2020-12-03 16:23:39 +01:00
main.go Drop support for buildGoPackage format 2022-05-26 19:07:06 +08:00
Makefile Add python test script 2020-12-03 16:23:39 +01:00
overlay.nix flake.nix: Use overlay from separate overlay.nix expression 2022-05-26 18:17:02 +08:00
README.md Add README file 2020-12-03 16:23:39 +01:00
shell.nix shell.nix: Use pinned nixpkgs from flake.lock 2022-05-26 18:29:48 +08:00

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;
}

FAQ

Why not continue work on vgo2nix?

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.

Will this be included in Nixpkgs

Yes. Once the API is considered stable.

License

This project is licensed under the MIT License. See the LICENSE file for details.