]>
Commit | Line | Data |
---|---|---|
1 | # This file defines the options that can be used both for the Apache | |
2 | # main server configuration, and for the virtual hosts. (The latter | |
3 | # has additional options that affect the web server as a whole, like | |
4 | # the user/group to run under.) | |
5 | ||
6 | { forMainServer, lib }: | |
7 | ||
8 | with lib; | |
9 | ||
10 | { | |
11 | ||
12 | hostName = mkOption { | |
13 | type = types.str; | |
14 | default = "localhost"; | |
15 | description = "Canonical hostname for the server."; | |
16 | }; | |
17 | ||
18 | serverAliases = mkOption { | |
19 | type = types.listOf types.str; | |
20 | default = []; | |
21 | example = ["www.example.org" "www.example.org:8080" "example.org"]; | |
22 | description = '' | |
23 | Additional names of virtual hosts served by this virtual host configuration. | |
24 | ''; | |
25 | }; | |
26 | ||
27 | port = mkOption { | |
28 | type = types.int; | |
29 | default = 0; | |
30 | description = '' | |
31 | Port for the server. Option will be removed, use <option>listen</option> instead. | |
32 | ''; | |
33 | }; | |
34 | ||
35 | listen = mkOption { | |
36 | type = types.listOf (types.submodule ( | |
37 | { | |
38 | options = { | |
39 | port = mkOption { | |
40 | type = types.int; | |
41 | description = "port to listen on"; | |
42 | }; | |
43 | ip = mkOption { | |
44 | type = types.string; | |
45 | default = "*"; | |
46 | description = "Ip to listen on. 0.0.0.0 for ipv4 only, * for all."; | |
47 | }; | |
48 | }; | |
49 | } )); | |
50 | description = '' | |
51 | List of { /* ip: "*"; */ port = 80;} to listen on | |
52 | ''; | |
53 | ||
54 | default = []; | |
55 | }; | |
56 | ||
57 | enableSSL = mkOption { | |
58 | type = types.bool; | |
59 | default = false; | |
60 | description = "Whether to enable SSL (https) support."; | |
61 | }; | |
62 | ||
63 | # Note: sslServerCert and sslServerKey can be left empty, but this | |
64 | # only makes sense for virtual hosts (they will inherit from the | |
65 | # main server). | |
66 | ||
67 | sslServerCert = mkOption { | |
68 | type = types.nullOr types.path; | |
69 | default = null; | |
70 | example = "/var/host.cert"; | |
71 | description = "Path to server SSL certificate."; | |
72 | }; | |
73 | ||
74 | sslServerKey = mkOption { | |
75 | type = types.path; | |
76 | example = "/var/host.key"; | |
77 | description = "Path to server SSL certificate key."; | |
78 | }; | |
79 | ||
80 | sslServerChain = mkOption { | |
81 | type = types.nullOr types.path; | |
82 | default = null; | |
83 | example = "/var/ca.pem"; | |
84 | description = "Path to server SSL chain file."; | |
85 | }; | |
86 | ||
87 | adminAddr = mkOption ({ | |
88 | type = types.nullOr types.str; | |
89 | example = "admin@example.org"; | |
90 | description = "E-mail address of the server administrator."; | |
91 | } // (if forMainServer then {} else {default = null;})); | |
92 | ||
93 | documentRoot = mkOption { | |
94 | type = types.nullOr types.path; | |
95 | default = null; | |
96 | example = "/data/webserver/docs"; | |
97 | description = '' | |
98 | The path of Apache's document root directory. If left undefined, | |
99 | an empty directory in the Nix store will be used as root. | |
100 | ''; | |
101 | }; | |
102 | ||
103 | servedDirs = mkOption { | |
104 | type = types.listOf types.attrs; | |
105 | default = []; | |
106 | example = [ | |
107 | { urlPath = "/nix"; | |
108 | dir = "/home/eelco/Dev/nix-homepage"; | |
109 | } | |
110 | ]; | |
111 | description = '' | |
112 | This option provides a simple way to serve static directories. | |
113 | ''; | |
114 | }; | |
115 | ||
116 | servedFiles = mkOption { | |
117 | type = types.listOf types.attrs; | |
118 | default = []; | |
119 | example = [ | |
120 | { urlPath = "/foo/bar.png"; | |
121 | file = "/home/eelco/some-file.png"; | |
122 | } | |
123 | ]; | |
124 | description = '' | |
125 | This option provides a simple way to serve individual, static files. | |
126 | ''; | |
127 | }; | |
128 | ||
129 | extraConfig = mkOption { | |
130 | type = types.lines; | |
131 | default = ""; | |
132 | example = '' | |
133 | <Directory /home> | |
134 | Options FollowSymlinks | |
135 | AllowOverride All | |
136 | </Directory> | |
137 | ''; | |
138 | description = '' | |
139 | These lines go to httpd.conf verbatim. They will go after | |
140 | directories and directory aliases defined by default. | |
141 | ''; | |
142 | }; | |
143 | ||
144 | extraSubservices = mkOption { | |
145 | type = types.listOf types.unspecified; | |
146 | default = []; | |
147 | description = "Extra subservices to enable in the webserver."; | |
148 | }; | |
149 | ||
150 | enableUserDir = mkOption { | |
151 | type = types.bool; | |
152 | default = false; | |
153 | description = '' | |
154 | Whether to enable serving <filename>~/public_html</filename> as | |
155 | <literal>/~<replaceable>username</replaceable></literal>. | |
156 | ''; | |
157 | }; | |
158 | ||
159 | globalRedirect = mkOption { | |
160 | type = types.nullOr types.str; | |
161 | default = null; | |
162 | example = http://newserver.example.org/; | |
163 | description = '' | |
164 | If set, all requests for this host are redirected permanently to | |
165 | the given URL. | |
166 | ''; | |
167 | }; | |
168 | ||
169 | logFormat = mkOption { | |
170 | type = types.str; | |
171 | default = "common"; | |
172 | example = "combined"; | |
173 | description = '' | |
174 | Log format for Apache's log files. Possible values are: combined, common, referer, agent. | |
175 | ''; | |
176 | }; | |
177 | ||
178 | robotsEntries = mkOption { | |
179 | type = types.lines; | |
180 | default = ""; | |
181 | example = "Disallow: /foo/"; | |
182 | description = '' | |
183 | Specification of pages to be ignored by web crawlers. See <link | |
184 | xlink:href='http://www.robotstxt.org/'/> for details. | |
185 | ''; | |
186 | }; | |
187 | ||
188 | } |