forked from DGNum/infrastructure
92 lines
2.2 KiB
Nix
92 lines
2.2 KiB
Nix
{ lib, config, ... }:
|
|
|
|
let
|
|
retired_host = "retired.dgnum.eu";
|
|
|
|
mkRetired =
|
|
hosts:
|
|
builtins.listToAttrs (
|
|
builtins.map (name: {
|
|
inherit name;
|
|
value = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations."/".return = "301 https://${retired_host}/${name}";
|
|
};
|
|
}) hosts
|
|
);
|
|
|
|
mkSub = domain: builtins.map (s: "${s}.${domain}");
|
|
mkSubs = attrs: builtins.concatLists (builtins.attrValues (builtins.mapAttrs mkSub attrs));
|
|
|
|
mkRedirection =
|
|
_:
|
|
{ to }:
|
|
{
|
|
globalRedirect = to;
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
};
|
|
|
|
cfg = config.dgn-redirections;
|
|
in
|
|
{
|
|
options.dgn-redirections = {
|
|
redirections = lib.mkOption {
|
|
type =
|
|
with lib.types;
|
|
attrsOf (submodule {
|
|
options.to = lib.mkOption { type = str; };
|
|
});
|
|
default = { };
|
|
};
|
|
retired = lib.mkOption {
|
|
type = with lib.types; listOf str;
|
|
default = [ ];
|
|
};
|
|
};
|
|
config = {
|
|
dgn-redirections = {
|
|
redirections = {
|
|
"calendrier.eleves.ens.fr".to = "calendrier.dgnum.eu";
|
|
"docs.beta.rz.ens.wtf".to = "pads.dgnum.eu";
|
|
"git.rz.ens.wtf".to = "git.dgnum.eu";
|
|
"notion.rz.ens.wtf".to = "docs.dgnum.eu";
|
|
"nuage.beta.rz.ens.wtf".to = "cloud.dgnum.eu";
|
|
"rdv.dgnum.eu".to = "meet.dgnum.eu";
|
|
"www.bda.ens.fr".to = "bda.ens.fr";
|
|
"bda.wp.dgnum.eu".to = "bda.ens.fr";
|
|
"www.tuteurs.ens.fr".to = "tuteurs.ens.fr";
|
|
"www.interq.ens.fr".to = "interq.ens.fr";
|
|
"www.lanuit.ens.fr".to = "lanuit.ens.fr";
|
|
};
|
|
|
|
retired = mkSubs {
|
|
"ens.fr" = [
|
|
"alevins"
|
|
"www.climatenavigator"
|
|
];
|
|
"ens.wtf" = [ "photos" ];
|
|
"rz.ens.wtf" = [
|
|
"s3"
|
|
"cdn"
|
|
];
|
|
"beta.rz.ens.wtf" = [
|
|
"todo"
|
|
"minecraft"
|
|
"factorio"
|
|
"home"
|
|
"pads"
|
|
"api.pads"
|
|
"files.pads"
|
|
"sandbox.pads"
|
|
"jurisprudens"
|
|
"rstudio"
|
|
];
|
|
};
|
|
};
|
|
services.nginx.virtualHosts = {
|
|
${retired_host}.default = true;
|
|
} // (builtins.mapAttrs mkRedirection cfg.redirections) // (mkRetired cfg.retired);
|
|
};
|
|
}
|