nixpkgs/nixos/modules/services/development/athens.md
Janne Heß fcc95ff817 treewide: Fix all Nix ASTs in all markdown files
This allows for correct highlighting and maybe future automatic
formatting. The AST was verified to work with nixfmt only.
2024-03-28 09:28:12 +01: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.