summary refs log tree commit diff
path: root/modules/services/web-servers/apache-httpd/per-server-options.nix
blob: 8a2ee0e849a871ddbe9077d19138afc4a470b150 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# This file defines the options that can be used both for the Apache
# main server configuration, and for the virtual hosts.  (The latter
# has additional options that affect the web server as a whole, like
# the user/group to run under.)

{forMainServer, mkOption}:

{

  hostName = mkOption {
    default = "localhost";
    description = "
      Canonical hostname for the server.
    ";
  };

  serverAliases = mkOption {
    default = [];
    example = ["www.example.org" "www.example.org:8080" "example.org"];
    description = "
      Additional names of virtual hosts served by this virtual host configuration.
    ";
  };

  port = mkOption {
    default = 0;
    description = "
      Port for the server.  0 means use the default port: 80 for http
      and 443 for https (i.e. when enableSSL is set).
    ";
  };

  enableSSL = mkOption {
    default = false;
    description = "
      Whether to enable SSL (https) support.
    ";
  };

  # Note: sslServerCert and sslServerKey can be left empty, but this
  # only makes sense for virtual hosts (they will inherit from the
  # main server).
  
  sslServerCert = mkOption {
    default = ""; 
    example = "/var/host.cert";
    description = "
      Path to server SSL certificate.
    ";
  };

  sslServerKey = mkOption {
    default = "";
    example = "/var/host.key";
    description = "
      Path to server SSL certificate key.
    ";
  };

  adminAddr = mkOption ({
    example = "admin@example.org";
    description = "
      E-mail address of the server administrator.
    ";
  } // (if forMainServer then {} else {default = "";}));

  documentRoot = mkOption {
    default = null;
    example = "/data/webserver/docs";
    description = "
      The path of Apache's document root directory.  If left undefined,
      an empty directory in the Nix store will be used as root.
    ";
  };

  servedDirs = mkOption {
    default = [];
    example = [
      { urlPath = "/nix";
        dir = "/home/eelco/Dev/nix-homepage";
      }
    ];
    description = "
      This option provides a simple way to serve static directories.
    ";
  };

  servedFiles = mkOption {
    default = [];
    example = [
      { urlPath = "/foo/bar.png";
        dir = "/home/eelco/some-file.png";
      }
    ];
    description = "
      This option provides a simple way to serve individual, static files.
    ";
  };

  extraConfig = mkOption {
    default = "";
    example = ''
      <Directory /home>
        Options FollowSymlinks
        AllowOverride All
      </Directory>
    '';
    description = "
      These lines go to httpd.conf verbatim. They will go after
      directories and directory aliases defined by default.
    ";
  };

  extraSubservices = mkOption {
    default = [];
    description = "
      Extra subservices to enable in the webserver.
    ";
  };

  enableUserDir = mkOption {
    default = false;
    description = "
      Whether to enable serving <filename>~/public_html</filename> as
      <literal>/~<replaceable>username</replaceable></literal>.
    ";
  };

  globalRedirect = mkOption {
    default = "";
    example = http://newserver.example.org/;
    description = "
      If set, all requests for this host are redirected permanently to
      the given URL.
    ";
  };

}