Convert applications using Go modules to Nix expressions
Find a file
adisbladis d6c403a312 Put license before sponsors in readme
The current layout feels a bit odd in terms of how it flows.
2022-08-25 23:08:37 +12: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 Add passthru.updateScript when package is fully auto generated 2022-08-24 16:25:42 +08:00
docs docs: Add Nix API reference docs 2022-06-14 18:26:50 +08:00
internal Move internal packages to internal subdirectory 2022-06-14 17:10:32 +08:00
templates/app Align flake template with recent API changes and improvements 2022-06-14 17:35:19 +08: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 Bump version to 1.4.0 2022-08-25 20:21:38 +12:00
flake.lock requires a newer Apple SDK on macOS 2022-07-21 09:40:17 +08:00
flake.nix Refactor to generic builder expression 2022-08-23 22:48:09 +08:00
generic.nix Generate shell completions using process substitution 2022-08-24 11:57:43 +08:00
go.mod Add package generation for non development packages 2022-06-14 05:15:43 +08: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 Move internal packages to internal subdirectory 2022-06-14 17:10:32 +08:00
overlay.nix Refactor to generic builder expression 2022-08-23 22:48:09 +08:00
README.md Put license before sponsors in readme 2022-08-25 23:08:37 +12:00
shell.nix Fix Go compiler missing from mkGoEnv created environments 2022-08-23 21:11:28 +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;
}

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