Convert applications using Go modules to Nix expressions
Find a file
Jörg Thalheim cf42f710c1 expose flake interface that does not rely on overlays
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.
2023-09-13 08:24:13 +02:00
.assets Add logos and acknowledgements of project sponsors 2022-08-25 23:07:29 +12:00
.github/workflows Github actions: Bump install-nix-action 2022-06-14 17:58:17 +08:00
builder Merge pull request #96 from martinbaillie/master 2023-02-27 13:54:07 +13:00
docs Parameterise modules file in mkGoEnv 2022-09-26 19:58:36 +10:00
internal Remove usage of deprecated ioutil package 2022-09-02 15:59:32 +12:00
templates/app expose flake interface that does not rely on overlays 2023-09-13 08:24:13 +02:00
tests Add test for repo using vendored modules 2022-08-24 15:01:08 +08:00
.envrc Add python test script 2020-12-03 16:23:39 +01:00
.gitignore Add package generation for non development packages 2022-06-14 05:15:43 +08:00
default.nix Remove generic builder expression 2022-09-02 16:14:39 +12:00
flake.lock requires a newer Apple SDK on macOS 2022-07-21 09:40:17 +08:00
flake.nix expose flake interface that does not rely on overlays 2023-09-13 08:24:13 +02:00
go.mod Change package name from github.com/tweag/gomod2nix to github.com/nix-community/gomod2nix 2022-08-28 06:33:04 +12:00
go.sum Add package generation for non development packages 2022-06-14 05:15:43 +08:00
gomod2nix.toml requires a newer Apple SDK on macOS 2022-07-21 09:40:17 +08:00
LICENSE Add README file 2020-12-03 16:23:39 +01:00
main.go Change package name from github.com/tweag/gomod2nix to github.com/nix-community/gomod2nix 2022-08-28 06:33:04 +12:00
overlay.nix Remove generic builder expression 2022-09-02 16:14:39 +12:00
README.md Add clarification about Gomod2nix and it's relationship to Trustix 2022-08-25 23:10:07 +12:00
shell.nix expose flake interface that does not rely on overlays 2023-09-13 08:24:13 +02: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;
}

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 Commissions Next Generation Internet programme through the NGI Zero PET (privacy and trust enhancing technologies) fund.

NGI0 logo NLNet banner Tweag logo