]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Refactor a bit httpd/webapps configuration:
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 12 May 2019 15:57:20 +0000 (17:57 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 12 May 2019 15:58:22 +0000 (17:58 +0200)
- alias private to pkgs
- move default apache vhost to pkgs

17 files changed:
nixops/modules/websites/apache/per-server-options.nix [deleted file]
nixops/modules/websites/aten/default.nix
nixops/modules/websites/chloe/default.nix
nixops/modules/websites/connexionswing/default.nix
nixops/modules/websites/default.nix
nixops/modules/websites/ludivine/default.nix
nixops/modules/websites/piedsjaloux/default.nix
nixops/modules/websites/tellesflorian/default.nix
pkgs/default.nix
pkgs/private/webapps/apache-default/default.nix [new file with mode: 0644]
pkgs/private/webapps/apache-default/www/googleb6d69446ff4ca3e5.html [moved from nixops/www/googleb6d69446ff4ca3e5.html with 100% similarity]
pkgs/private/webapps/apache-default/www/index.htm [moved from nixops/www/index.htm with 100% similarity]
pkgs/private/webapps/apache-default/www/maintenance_immae.html [moved from nixops/www/maintenance_immae.html with 100% similarity]
pkgs/private/webapps/apache-default/www/nossl.html [moved from nixops/www/nossl.html with 100% similarity]
pkgs/private/webapps/default.nix
pkgs/webapps/apache-theme/default.nix
pkgs/webapps/default.nix

diff --git a/nixops/modules/websites/apache/per-server-options.nix b/nixops/modules/websites/apache/per-server-options.nix
deleted file mode 100644 (file)
index 4bbd041..0000000
+++ /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 <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.
-    '';
-  };
-
-}
index 0b2ce6977a1965fa71ebf81f93b84b97e1243d16..70bb34b5830e488c3e6fa4884cc0b163ee14d266 100644 (file)
@@ -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;
   };
 
index ea984aef0b8cbaf2fa2509f8cfa87ae6d5ac9916..ce67bedd5d83875369e8fd9c097990d86c6636ba 100644 (file)
@@ -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;
   };
 
index e31a5746e9aaa305dbc9dbef44926fb585b1a3ef..b19af7e01801d1b618648c3aad78aecdc2d3f52e 100644 (file)
@@ -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;
   };
 
index 891d917467a1672805b3d4e395fe5e54ad4ed245..8bbb344c8ee9e83b89c3d973092ce310a1e3dd51 100644 (file)
@@ -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
-          <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;
@@ -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}
       '';
index 69c572036c6bd3c195479a3739556f7abf8e495c..df75eff35fae20ee8f11c772b332b3f90dcd50dd 100644 (file)
@@ -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;
     };
 
index 97f955708d11c4eaf2d166817bd3f52f022ed215..10c1f6c91eb31d18c464029daeac4287a8195809 100644 (file)
@@ -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;
   };
 
index da4b5a608edbaacfd690c3267207e96191457d09..93ee02308f1b24423f1ef1211907574983a7aa29 100644 (file)
@@ -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;
   };
 
index 26b32e1ba3e72d33d16cd41ca7401d1301585134..8ea65a5ce1f6c601804eff073228686b28c73168 100644 (file)
@@ -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 (file)
index 0000000..92f558e
--- /dev/null
@@ -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
+      <Directory ${www_root'}>
+        AllowOverride None
+        Require all granted
+      </Directory>
+    '';
+}
index 14fd544d7faee28a278e062be9af67c49135a033..e9aa13cecc4d6b22c7a32fe4767403b2d3442709 100644 (file)
@@ -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;};
index b679afe583f5b7d8d13b2e3528164011a9966d27..4b5755a83a45895bcdb297ebe723a7884e655915 100644 (file)
@@ -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 ''
     <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
index 8151b8d4f4ffa809b9b3c9cde387485c69769461..8c3eb0efaf7bc4548bef84e4a9ea52fee7b92f7b 100644 (file)
@@ -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