GoThe function buildGoPackage builds
standard Go packages.
buildGoPackage
net = buildGoPackage rec {
name = "go.net-${rev}";
goPackagePath = "golang.org/x/net";
subPackages = [ "ipv4" "ipv6" ];
rev = "e0403b4e005";
src = fetchFromGitHub {
inherit rev;
owner = "golang";
repo = "net";
sha256 = "1g7cjzw4g4301a3yqpbk8n1d4s97sfby2aysl275x04g0zh8jxqp";
};
goPackageAliases = [ "code.google.com/p/go.net" ];
propagatedBuildInputs = [ goPackages.text ];
buildFlags = "--tags release";
disabled = isGo13;
};
is an example expression using buildGoPackage,
the following arguments are of special significance to the function:
goPackagePath specifies the package's canonical Go import path.
subPackages limits the builder from building child packages that
have not been listed. If subPackages is not specified, all child
packages will be built.
In this example only code.google.com/p/go.net/ipv4 and
code.google.com/p/go.net/ipv6 will be built.
goPackageAliases is a list of alternative import paths
that are valid for this library.
Packages that depend on this library will automatically rename
import paths that match any of the aliases to goPackagePath.
In this example imports will be renamed from
code.google.com/p/go.net to
golang.org/x/net in every package that depend on the
go.net library.
propagatedBuildInputs is where the dependencies of a Go library are
listed. Only libraries should list propagatedBuildInputs. If a standalone
program is being built instead, use buildInputs. If a library's tests require
additional dependencies that are not propagated, they should be listed in buildInputs.
buildFlags is a list of flags passed to the go build command.
If disabled is true,
nix will refuse to build this package.
In this example the package will not be built for go 1.3. The isGo13
is an utility function that returns true if go used to build the
package has version 1.3.x.
Reusable Go libraries may be found in the goPackages set. You can test
build a Go package as follows:
$ nix-build -A goPackages.net
You may use Go packages installed into the active Nix profiles by adding
the following to your ~/.bashrc:
for p in $NIX_PROFILES; do
GOPATH="$p/share/go:$GOPATH"
done
To extract dependency information from a Go package in automated way use go2nix.