nixos/preload: init
[NixPkgs.git] / nixos / modules / services / web-servers / caddy / vhost-options.nix
blob229b53efb49f763d2aca0cd48b0ed9c023270224
1 { cfg }:
2 { config, lib, name, ... }:
3 let
4   inherit (lib) literalExpression mkOption types;
5 in
7   options = {
9     hostName = mkOption {
10       type = types.str;
11       default = name;
12       description = lib.mdDoc "Canonical hostname for the server.";
13     };
15     serverAliases = mkOption {
16       type = with types; listOf str;
17       default = [ ];
18       example = [ "www.example.org" "example.org" ];
19       description = lib.mdDoc ''
20         Additional names of virtual hosts served by this virtual host configuration.
21       '';
22     };
24     listenAddresses = mkOption {
25       type = with types; listOf str;
26       description = lib.mdDoc ''
27         A list of host interfaces to bind to for this virtual host.
28       '';
29       default = [ ];
30       example = [ "127.0.0.1" "::1" ];
31     };
33     useACMEHost = mkOption {
34       type = types.nullOr types.str;
35       default = null;
36       description = lib.mdDoc ''
37         A host of an existing Let's Encrypt certificate to use.
38         This is mostly useful if you use DNS challenges but Caddy does not
39         currently support your provider.
41         *Note that this option does not create any certificates, nor
42         does it add subdomains to existing ones – you will need to create them
43         manually using [](#opt-security.acme.certs).*
44       '';
45     };
47     logFormat = mkOption {
48       type = types.lines;
49       default = ''
50         output file ${cfg.logDir}/access-${config.hostName}.log
51       '';
52       defaultText = ''
53         output file ''${config.services.caddy.logDir}/access-''${hostName}.log
54       '';
55       example = literalExpression ''
56         mkForce '''
57           output discard
58         ''';
59       '';
60       description = lib.mdDoc ''
61         Configuration for HTTP request logging (also known as access logs). See
62         <https://caddyserver.com/docs/caddyfile/directives/log#log>
63         for details.
64       '';
65     };
67     extraConfig = mkOption {
68       type = types.lines;
69       default = "";
70       description = lib.mdDoc ''
71         Additional lines of configuration appended to this virtual host in the
72         automatically generated `Caddyfile`.
73       '';
74     };
76   };