at 18.09-beta 4.8 kB view raw
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 8with 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}