+++ /dev/null
-# 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, lib }:
-
-with lib;
-
-{
-
- hostName = mkOption {
- type = types.str;
- default = "localhost";
- description = "Canonical hostname for the server.";
- };
-
- serverAliases = mkOption {
- type = types.listOf types.str;
- 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 {
- type = types.int;
- default = 0;
- description = ''
- Port for the server. Option will be removed, use <option>listen</option> instead.
- '';
- };
-
- listen = mkOption {
- type = types.listOf (types.submodule (
- {
- options = {
- port = mkOption {
- type = types.int;
- description = "port to listen on";
- };
- ip = mkOption {
- type = types.string;
- default = "*";
- description = "Ip to listen on. 0.0.0.0 for ipv4 only, * for all.";
- };
- };
- } ));
- description = ''
- List of { /* ip: "*"; */ port = 80;} to listen on
- '';
-
- default = [];
- };
-
- enableSSL = mkOption {
- type = types.bool;
- 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 {
- type = types.nullOr types.path;
- default = null;
- example = "/var/host.cert";
- description = "Path to server SSL certificate.";
- };
-
- sslServerKey = mkOption {
- type = types.path;
- example = "/var/host.key";
- description = "Path to server SSL certificate key.";
- };
-
- sslServerChain = mkOption {
- type = types.nullOr types.path;
- default = null;
- example = "/var/ca.pem";
- description = "Path to server SSL chain file.";
- };
-
- adminAddr = mkOption ({
- type = types.nullOr types.str;
- example = "admin@example.org";
- description = "E-mail address of the server administrator.";
- } // (if forMainServer then {} else {default = null;}));
-
- documentRoot = mkOption {
- type = types.nullOr types.path;
- 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 {
- type = types.listOf types.attrs;
- default = [];
- example = [
- { urlPath = "/nix";
- dir = "/home/eelco/Dev/nix-homepage";
- }
- ];
- description = ''
- This option provides a simple way to serve static directories.
- '';
- };
-
- servedFiles = mkOption {
- type = types.listOf types.attrs;
- default = [];
- example = [
- { urlPath = "/foo/bar.png";
- file = "/home/eelco/some-file.png";
- }
- ];
- description = ''
- This option provides a simple way to serve individual, static files.
- '';
- };
-
- extraConfig = mkOption {
- type = types.lines;
- 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 {
- type = types.listOf types.unspecified;
- default = [];
- description = "Extra subservices to enable in the webserver.";
- };
-
- enableUserDir = mkOption {
- type = types.bool;
- default = false;
- description = ''
- Whether to enable serving <filename>~/public_html</filename> as
- <literal>/~<replaceable>username</replaceable></literal>.
- '';
- };
-
- globalRedirect = mkOption {
- type = types.nullOr types.str;
- default = null;
- example = http://newserver.example.org/;
- description = ''
- If set, all requests for this host are redirected permanently to
- the given URL.
- '';
- };
-
- logFormat = mkOption {
- type = types.str;
- default = "common";
- example = "combined";
- description = ''
- Log format for Apache's log files. Possible values are: combined, common, referer, agent.
- '';
- };
-
- robotsEntries = mkOption {
- type = types.lines;
- default = "";
- example = "Disallow: /foo/";
- description = ''
- Specification of pages to be ignored by web crawlers. See <link
- xlink:href='http://www.robotstxt.org/'/> for details.
- '';
- };
-
-}
{ lib, pkgs, config, myconfig, ... }:
let
aten_dev = pkgs.callPackage ./aten.nix {
- inherit (pkgs.private.webapps) aten;
+ inherit (pkgs.webapps) aten;
config = myconfig.env.websites.aten.integration;
};
aten_prod = pkgs.callPackage ./aten.nix {
- inherit (pkgs.private.webapps) aten;
+ inherit (pkgs.webapps) aten;
config = myconfig.env.websites.aten.production;
};
{ lib, pkgs, config, myconfig, ... }:
let
chloe_dev = pkgs.callPackage ./chloe.nix {
- inherit (pkgs.private.webapps) chloe;
+ inherit (pkgs.webapps) chloe;
config = myconfig.env.websites.chloe.integration;
};
chloe_prod = pkgs.callPackage ./chloe.nix {
- inherit (pkgs.private.webapps) chloe;
+ inherit (pkgs.webapps) chloe;
config = myconfig.env.websites.chloe.production;
};
{ lib, pkgs, config, myconfig, ... }:
let
connexionswing_dev = pkgs.callPackage ./connexionswing.nix {
- inherit (pkgs.private.webapps) connexionswing;
+ inherit (pkgs.webapps) connexionswing;
config = myconfig.env.websites.connexionswing.integration;
};
connexionswing_prod = pkgs.callPackage ./connexionswing.nix {
- inherit (pkgs.private.webapps) connexionswing;
+ inherit (pkgs.webapps) connexionswing;
config = myconfig.env.websites.connexionswing.production;
};
'';
};
global = {
- extraConfig = ''
- ErrorDocument 500 /maintenance_immae.html
- ErrorDocument 501 /maintenance_immae.html
- ErrorDocument 502 /maintenance_immae.html
- ErrorDocument 503 /maintenance_immae.html
- ErrorDocument 504 /maintenance_immae.html
- Alias /maintenance_immae.html ${www_root}/maintenance_immae.html
- ProxyPass /maintenance_immae.html !
-
- AliasMatch "(.*)/googleb6d69446ff4ca3e5.html" ${www_root}/googleb6d69446ff4ca3e5.html
- <Directory ${www_root}>
- AllowOverride None
- Require all granted
- </Directory>
- '';
+ extraConfig = (pkgs.webapps.apache-default.override { inherit www_root;}).apacheConfig;
};
apaxy = {
extraConfig = (pkgs.webapps.apache-theme.override { inherit theme_root; }).apacheConfig;
adminer = pkgs.callPackage ./commons/adminer.nix {};
in ''
mkdir -p $out/webapps
- ln -s ${../../www} $out/webapps/_www
+ ln -s ${pkgs.webapps.apache-default.www} $out/webapps/_www
ln -s ${pkgs.webapps.apache-theme.theme} $out/webapps/_theme
ln -s ${adminer.webRoot} $out/webapps/${adminer.apache.webappName}
'';
{ lib, pkgs, config, myconfig, ... }:
let
ludivinecassal_dev = pkgs.callPackage ./ludivinecassal.nix {
- inherit (pkgs.private.webapps) ludivinecassal;
+ inherit (pkgs.webapps) ludivinecassal;
config = myconfig.env.websites.ludivinecassal.integration;
};
ludivinecassal_prod = pkgs.callPackage ./ludivinecassal.nix {
- inherit (pkgs.private.webapps) ludivinecassal;
+ inherit (pkgs.webapps) ludivinecassal;
config = myconfig.env.websites.ludivinecassal.production;
};
{ lib, pkgs, config, myconfig, ... }:
let
piedsjaloux_dev = pkgs.callPackage ./piedsjaloux.nix {
- inherit (pkgs.private.webapps) piedsjaloux;
+ inherit (pkgs.webapps) piedsjaloux;
config = myconfig.env.websites.piedsjaloux.integration;
};
piedsjaloux_prod = pkgs.callPackage ./piedsjaloux.nix {
- inherit (pkgs.private.webapps) piedsjaloux;
+ inherit (pkgs.webapps) piedsjaloux;
config = myconfig.env.websites.piedsjaloux.production;
};
adminer = pkgs.callPackage ../commons/adminer.nix {};
tellesflorian_dev = pkgs.callPackage ./tellesflorian.nix {
- inherit (pkgs.private.webapps) tellesflorian;
+ inherit (pkgs.webapps) tellesflorian;
config = myconfig.env.websites.tellesflorian.integration;
};
bitlbee-mastodon = callPackage ./bitlbee-mastodon {};
composerEnv = callPackage ./composer-env {};
- webapps = callPackage ./webapps { inherit mylibs composerEnv; };
+ webapps = callPackage ./webapps { inherit mylibs composerEnv private; };
private = if builtins.pathExists (./. + "/private")
then import ./private { inherit pkgs; }
--- /dev/null
+{ www_root ? null }:
+rec {
+ www = ./www;
+ apacheConfig = let
+ www_root' = if isNull www_root then www else www_root;
+ in ''
+ ErrorDocument 500 /maintenance_immae.html
+ ErrorDocument 501 /maintenance_immae.html
+ ErrorDocument 502 /maintenance_immae.html
+ ErrorDocument 503 /maintenance_immae.html
+ ErrorDocument 504 /maintenance_immae.html
+ Alias /maintenance_immae.html ${www_root'}/maintenance_immae.html
+ ProxyPass /maintenance_immae.html !
+
+ AliasMatch "(.*)/googleb6d69446ff4ca3e5.html" ${www_root'}/googleb6d69446ff4ca3e5.html
+ <Directory ${www_root'}>
+ AllowOverride None
+ Require all granted
+ </Directory>
+ '';
+}
{ callPackage, mylibs, composerEnv, lib, spip }:
rec {
+ apache-default = callPackage ./apache-default {};
+
aten = callPackage ./aten { inherit composerEnv mylibs; };
chloe = callPackage ./chloe { inherit mylibs spip; };
connexionswing = callPackage ./connexionswing { inherit composerEnv mylibs;};
{ theme_root ? null }:
rec {
theme = ./theme;
- apacheConfig = ''
+ apacheConfig = let
+ theme_root' = if isNull theme_root then theme else theme_root;
+ in ''
<Macro Apaxy %{folder} %{ignored}>
- Alias /theme ${if isNull theme_root then theme else theme_root}
- <Directory ${if isNull theme_root then theme else theme_root}>
+ Alias /theme ${theme_root'}
+ <Directory ${theme_root'}>
Options -Indexes
AllowOverride None
Require all granted
-{ callPackage, mylibs, composerEnv, lib }:
+{ callPackage, mylibs, composerEnv, lib, private }:
rec {
adminer = callPackage ./adminer {};
apache-theme = callPackage ./apache-theme {};
in
lib.attrsets.genAttrs names
(name: callPackage (./yourls/plugins + "/${name}") { inherit mylibs; });
-}
+} // private.webapps