depot/third_party/nixpkgs/nixos/modules/services/development/athens.md
Default email 587713944a Project import generated by Copybara.
GitOrigin-RevId: 6143fc5eeb9c4f00163267708e26191d1e918932
2024-04-21 17:54:59 +02:00

1.5 KiB

Athens

Source: {file}modules/services/development/athens.nix

Upstream documentation: https://docs.gomods.io/

Athens is a Go module datastore and proxy

The main goal of Athens is providing a Go proxy ($GOPROXY) in regions without access to https://proxy.golang.org or to improve the speed of Go module downloads for CI/CD systems.

Configuring

A complete list of options for the Athens module may be found here.

Basic usage for a caching proxy configuration

A very basic configuration for Athens that acts as a caching and forwarding HTTP proxy is:

{
    services.athens = {
      enable = true;
    };
}

If you want to prevent Athens from writing to disk, you can instead configure it to cache modules only in memory:

{
    services.athens = {
      enable = true;
      storageType = "memory";
    };
}

To use the local proxy in Go builds, you can set the proxy as environment variable:

{
  environment.variables = {
    GOPROXY = "http://localhost:3000";
  };
}

It is currently not possible to use the local proxy for builds done by the Nix daemon. This might be enabled by experimental features, specifically configurable-impure-env, in upcoming Nix versions.