evcc: 0.131.8 -> 0.131.10 (#364658)
[NixPkgs.git] / nixos / modules / services / development / athens.md
blob6f8181561913ac1852965b9e298d4882fcc82eda
1 # Athens {#module-athens}
3 *Source:* {file}`modules/services/development/athens.nix`
5 *Upstream documentation:* <https://docs.gomods.io/>
7 [Athens](https://github.com/gomods/athens)
8 is a Go module datastore and proxy
10 The main goal of Athens is providing a Go proxy (`$GOPROXY`) in regions without access to `https://proxy.golang.org` or to
11 improve the speed of Go module downloads for CI/CD systems.
13 ## Configuring {#module-services-development-athens-configuring}
15 A complete list of options for the Athens module may be found
16 [here](#opt-services.athens.enable).
18 ## Basic usage for a caching proxy configuration {#opt-services-development-athens-caching-proxy}
20 A very basic configuration for Athens that acts as a caching and forwarding HTTP proxy is:
21 ```nix
23     services.athens = {
24       enable = true;
25     };
27 ```
29 If you want to prevent Athens from writing to disk, you can instead configure it to cache modules only in memory:
31 ```nix
33     services.athens = {
34       enable = true;
35       storageType = "memory";
36     };
38 ```
40 To use the local proxy in Go builds (outside of `nix`), you can set the proxy as environment variable:
42 ```nix
44   environment.variables = {
45     GOPROXY = "http://localhost:3000";
46   };
48 ```
50 To also use the local proxy for Go builds happening in `nix` (with `buildGoModule`), the nix daemon can be configured to pass the GOPROXY environment variable to the `goModules` fixed-output derivation.
52 This can either be done via the nix-daemon systemd unit:
54 ```nix
56   systemd.services.nix-daemon.environment.GOPROXY = "http://localhost:3000";
58 ```
60 or via the [impure-env experimental feature](https://nix.dev/manual/nix/2.24/command-ref/conf-file#conf-impure-env):
62 ```nix
64   nix.settings.experimental-features = [ "configurable-impure-env" ];
65   nix.settings.impure-env = "GOPROXY=http://localhost:3000";
67 ```