Convert applications using Go modules to Nix expressions
Find a file
adisbladis a47254f93d
Merge pull request #37 from yihuang/ci-test
run the test script in CI
2022-05-20 18:17:58 +08:00
.github/workflows run the test script in CI 2022-05-20 14:48:28 +08:00
builder fix comments filter 2022-01-10 16:07:26 +08:00
fetch Fix pseudo version string regex 2022-02-15 18:10:22 +08:00
formats Fix relative paths inside sources 2020-10-29 13:26:17 +01:00
tests Add python test script 2020-12-03 16:23:39 +01: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 Add gitignore 2020-12-03 16:23:39 +01: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 Run a flake update to get a flake-utils with aarch64-darwin in default set 2022-03-26 14:10:01 -05:00
flake.nix Fix: flake overlay 2021-03-16 16:08:52 -07:00
go.mod Add comprehensive logging 2020-10-29 13:26:16 +01:00
go.sum Add comprehensive logging 2020-10-29 13:26:16 +01: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 Add comprehensive logging 2020-10-29 13:26:16 +01:00
Makefile Add python test script 2020-12-03 16:23:39 +01:00
overlay.nix Expose gomod2nix package in the overlay 2020-12-03 16:23:39 +01:00
README.md Add README file 2020-12-03 16:23:39 +01:00
shell.nix Add python test script 2020-12-03 16:23:39 +01: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.