X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=modules%2Fwebsites%2Fdefault.nix;h=6ba0d687d2069c38b08a8df81c0b087914a1edb4;hb=9a414bd66ff06cade504ac34f13dbeddac48150a;hp=043fc6ecf619c0a51e8d57133649188af8afe777;hpb=253c6f8a634bdcde3e13a2c79f1fd479bb181cbf;p=perso%2FImmae%2FConfig%2FNix.git diff --git a/modules/websites/default.nix b/modules/websites/default.nix index 043fc6e..6ba0d68 100644 --- a/modules/websites/default.nix +++ b/modules/websites/default.nix @@ -86,6 +86,17 @@ in }; }; }; + vhostNoSSLConfs = mkOption { + default = {}; + description = "List of no ssl vhosts to define for Apache"; + type = attrsOf (submodule { + options = { + hosts = mkOption { type = listOf string; }; + root = mkOption { type = nullOr path; }; + extraConfig = mkOption { type = listOf lines; default = []; }; + }; + }); + }; vhostConfs = mkOption { default = {}; description = "List of vhosts to define for Apache"; @@ -177,6 +188,15 @@ in documentRoot = vhostConf.root; extraConfig = builtins.concatStringsSep "\n" vhostConf.extraConfig; }; + toVhostNoSSL = ips: vhostConf: { + enableSSL = false; + logFormat = "combinedVhost"; + listen = map (ip: { inherit ip; port = 80; }) ips; + hostName = builtins.head vhostConf.hosts; + serverAliases = builtins.tail vhostConf.hosts or []; + documentRoot = vhostConf.root; + extraConfig = builtins.concatStringsSep "\n" vhostConf.extraConfig; + }; in attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair icfg.httpdName (mkIf icfg.enable { enable = true; @@ -190,6 +210,7 @@ in extraConfig = builtins.concatStringsSep "\n" icfg.extraConfig; virtualHosts = [ (toVhost icfg.ips icfg.fallbackVhost) ] ++ optionals (icfg.nosslVhost.enable) [ (nosslVhost icfg.ips icfg.nosslVhost) ] + ++ (attrsets.mapAttrsToList (n: v: toVhostNoSSL icfg.ips v) icfg.vhostNoSSLConfs) ++ (attrsets.mapAttrsToList (n: v: toVhost icfg.ips v) icfg.vhostConfs) ++ [ (redirectVhost icfg.ips) ]; })