From 8f904d0d982684e8e66dfc5d9123712eb96bf16e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Isma=C3=ABl=20Bouya?= Date: Sun, 12 May 2019 17:57:20 +0200 Subject: [PATCH] Refactor a bit httpd/webapps configuration: - alias private to pkgs - move default apache vhost to pkgs --- .../websites/apache/per-server-options.nix | 188 ------------------ nixops/modules/websites/aten/default.nix | 4 +- nixops/modules/websites/chloe/default.nix | 4 +- .../websites/connexionswing/default.nix | 4 +- nixops/modules/websites/default.nix | 18 +- nixops/modules/websites/ludivine/default.nix | 4 +- .../modules/websites/piedsjaloux/default.nix | 4 +- .../websites/tellesflorian/default.nix | 2 +- pkgs/default.nix | 2 +- .../webapps/apache-default/default.nix | 21 ++ .../www/googleb6d69446ff4ca3e5.html | 0 .../webapps/apache-default}/www/index.htm | 0 .../www/maintenance_immae.html | 0 .../webapps/apache-default}/www/nossl.html | 0 pkgs/private/webapps/default.nix | 2 + pkgs/webapps/apache-theme/default.nix | 8 +- pkgs/webapps/default.nix | 4 +- 17 files changed, 44 insertions(+), 221 deletions(-) delete mode 100644 nixops/modules/websites/apache/per-server-options.nix create mode 100644 pkgs/private/webapps/apache-default/default.nix rename {nixops => pkgs/private/webapps/apache-default}/www/googleb6d69446ff4ca3e5.html (100%) rename {nixops => pkgs/private/webapps/apache-default}/www/index.htm (100%) rename {nixops => pkgs/private/webapps/apache-default}/www/maintenance_immae.html (100%) rename {nixops => pkgs/private/webapps/apache-default}/www/nossl.html (100%) diff --git a/nixops/modules/websites/apache/per-server-options.nix b/nixops/modules/websites/apache/per-server-options.nix deleted file mode 100644 index 4bbd041..0000000 --- a/nixops/modules/websites/apache/per-server-options.nix +++ /dev/null @@ -1,188 +0,0 @@ -# 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 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 = '' - - Options FollowSymlinks - AllowOverride All - - ''; - 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 ~/public_html as - /~username. - ''; - }; - - 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 for details. - ''; - }; - -} diff --git a/nixops/modules/websites/aten/default.nix b/nixops/modules/websites/aten/default.nix index 0b2ce69..70bb34b 100644 --- a/nixops/modules/websites/aten/default.nix +++ b/nixops/modules/websites/aten/default.nix @@ -1,11 +1,11 @@ { 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; }; diff --git a/nixops/modules/websites/chloe/default.nix b/nixops/modules/websites/chloe/default.nix index ea984ae..ce67bed 100644 --- a/nixops/modules/websites/chloe/default.nix +++ b/nixops/modules/websites/chloe/default.nix @@ -1,11 +1,11 @@ { 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; }; diff --git a/nixops/modules/websites/connexionswing/default.nix b/nixops/modules/websites/connexionswing/default.nix index e31a574..b19af7e 100644 --- a/nixops/modules/websites/connexionswing/default.nix +++ b/nixops/modules/websites/connexionswing/default.nix @@ -1,11 +1,11 @@ { 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; }; diff --git a/nixops/modules/websites/default.nix b/nixops/modules/websites/default.nix index 891d917..8bbb344 100644 --- a/nixops/modules/websites/default.nix +++ b/nixops/modules/websites/default.nix @@ -288,21 +288,7 @@ in ''; }; 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 - - AllowOverride None - Require all granted - - ''; + extraConfig = (pkgs.webapps.apache-default.override { inherit www_root;}).apacheConfig; }; apaxy = { extraConfig = (pkgs.webapps.apache-theme.override { inherit theme_root; }).apacheConfig; @@ -336,7 +322,7 @@ in 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} ''; diff --git a/nixops/modules/websites/ludivine/default.nix b/nixops/modules/websites/ludivine/default.nix index 69c5720..df75eff 100644 --- a/nixops/modules/websites/ludivine/default.nix +++ b/nixops/modules/websites/ludivine/default.nix @@ -1,11 +1,11 @@ { 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; }; diff --git a/nixops/modules/websites/piedsjaloux/default.nix b/nixops/modules/websites/piedsjaloux/default.nix index 97f9557..10c1f6c 100644 --- a/nixops/modules/websites/piedsjaloux/default.nix +++ b/nixops/modules/websites/piedsjaloux/default.nix @@ -1,11 +1,11 @@ { 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; }; diff --git a/nixops/modules/websites/tellesflorian/default.nix b/nixops/modules/websites/tellesflorian/default.nix index da4b5a6..93ee023 100644 --- a/nixops/modules/websites/tellesflorian/default.nix +++ b/nixops/modules/websites/tellesflorian/default.nix @@ -3,7 +3,7 @@ let 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; }; diff --git a/pkgs/default.nix b/pkgs/default.nix index 26b32e1..8ea65a5 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -38,7 +38,7 @@ rec { 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; } diff --git a/pkgs/private/webapps/apache-default/default.nix b/pkgs/private/webapps/apache-default/default.nix new file mode 100644 index 0000000..92f558e --- /dev/null +++ b/pkgs/private/webapps/apache-default/default.nix @@ -0,0 +1,21 @@ +{ 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 + + AllowOverride None + Require all granted + + ''; +} diff --git a/nixops/www/googleb6d69446ff4ca3e5.html b/pkgs/private/webapps/apache-default/www/googleb6d69446ff4ca3e5.html similarity index 100% rename from nixops/www/googleb6d69446ff4ca3e5.html rename to pkgs/private/webapps/apache-default/www/googleb6d69446ff4ca3e5.html diff --git a/nixops/www/index.htm b/pkgs/private/webapps/apache-default/www/index.htm similarity index 100% rename from nixops/www/index.htm rename to pkgs/private/webapps/apache-default/www/index.htm diff --git a/nixops/www/maintenance_immae.html b/pkgs/private/webapps/apache-default/www/maintenance_immae.html similarity index 100% rename from nixops/www/maintenance_immae.html rename to pkgs/private/webapps/apache-default/www/maintenance_immae.html diff --git a/nixops/www/nossl.html b/pkgs/private/webapps/apache-default/www/nossl.html similarity index 100% rename from nixops/www/nossl.html rename to pkgs/private/webapps/apache-default/www/nossl.html diff --git a/pkgs/private/webapps/default.nix b/pkgs/private/webapps/default.nix index 14fd544..e9aa13c 100644 --- a/pkgs/private/webapps/default.nix +++ b/pkgs/private/webapps/default.nix @@ -1,5 +1,7 @@ { 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;}; diff --git a/pkgs/webapps/apache-theme/default.nix b/pkgs/webapps/apache-theme/default.nix index b679afe..4b5755a 100644 --- a/pkgs/webapps/apache-theme/default.nix +++ b/pkgs/webapps/apache-theme/default.nix @@ -1,10 +1,12 @@ { theme_root ? null }: rec { theme = ./theme; - apacheConfig = '' + apacheConfig = let + theme_root' = if isNull theme_root then theme else theme_root; + in '' - Alias /theme ${if isNull theme_root then theme else theme_root} - + Alias /theme ${theme_root'} + Options -Indexes AllowOverride None Require all granted diff --git a/pkgs/webapps/default.nix b/pkgs/webapps/default.nix index 8151b8d..8c3eb0e 100644 --- a/pkgs/webapps/default.nix +++ b/pkgs/webapps/default.nix @@ -1,4 +1,4 @@ -{ callPackage, mylibs, composerEnv, lib }: +{ callPackage, mylibs, composerEnv, lib, private }: rec { adminer = callPackage ./adminer {}; apache-theme = callPackage ./apache-theme {}; @@ -111,4 +111,4 @@ rec { in lib.attrsets.genAttrs names (name: callPackage (./yourls/plugins + "/${name}") { inherit mylibs; }); -} +} // private.webapps -- 2.41.0