nixos/applications/skynet.ie/skynet.ie.nix

118 lines
3 KiB
Nix
Raw Normal View History

{
config,
pkgs,
lib,
inputs,
...
}:
with lib; let
name = "website";
cfg = config.services.skynet."${name}";
in {
imports = [];
2023-07-23 02:08:56 +00:00
options.services.skynet."${name}" = {
enable = mkEnableOption "Skynet Main Website";
2023-07-23 02:08:56 +00:00
};
config = mkIf cfg.enable {
services.skynet.acme.domains = [
# the root one is already covered by teh certificate
"2017.skynet.ie"
"2009.skynet.ie"
2023-08-11 00:44:04 +00:00
"discord.skynet.ie"
2023-09-28 16:11:35 +00:00
"public.skynet.ie"
"renew.skynet.ie"
];
services.skynet.dns.records = [
2023-07-23 02:08:56 +00:00
# means root domain, so skynet.ie
{
record = "@";
r_type = "A";
value = config.services.skynet.host.ip;
}
{
record = "2017";
r_type = "CNAME";
value = config.services.skynet.host.name;
}
{
record = "2009";
r_type = "CNAME";
value = config.services.skynet.host.name;
}
{
record = "discord";
r_type = "CNAME";
value = config.services.skynet.host.name;
}
2023-09-27 23:26:32 +00:00
{
2023-09-28 16:11:35 +00:00
record = "public";
2023-09-27 23:26:32 +00:00
r_type = "CNAME";
value = config.services.skynet.host.name;
2023-09-27 23:26:32 +00:00
}
{
record = "renew";
r_type = "CNAME";
value = config.services.skynet.host.name;
}
2023-07-23 02:08:56 +00:00
];
services.nginx = {
2023-07-23 02:08:56 +00:00
virtualHosts = {
# main site
"skynet.ie" = {
forceSSL = true;
useACMEHost = "skynet";
locations = {
# this alwas points to teh current version of teh site
"/".root = "${inputs.skynet_website_2017.defaultPackage."x86_64-linux"}";
# this redirects old links to new format
"~* ~(?<username>[a-z_0-9]*)(?<files>\\S*)$" = {
priority = 1;
return = "307 https://$username.users.skynet.ie$files";
};
};
};
2023-07-23 02:08:56 +00:00
# 2017 to now
"2017.skynet.ie" = {
forceSSL = true;
useACMEHost = "skynet";
root = "${inputs.skynet_website_2017.defaultPackage."x86_64-linux"}";
};
# archive of teh site as it was ~2009 to 2017
"2009.skynet.ie" = {
2023-07-23 02:08:56 +00:00
forceSSL = true;
useACMEHost = "skynet";
root = "${inputs.skynet_website_2009.defaultPackage."x86_64-linux"}";
2023-07-23 02:08:56 +00:00
};
2023-08-11 00:44:04 +00:00
2023-09-27 23:26:32 +00:00
# a custom discord url, because we are too cheap otehrwise
2023-08-11 00:44:04 +00:00
"discord.skynet.ie" = {
forceSSL = true;
useACMEHost = "skynet";
locations."/".return = "307 https://discord.gg/mkuKJkCuyM";
2023-08-11 00:44:04 +00:00
};
2023-09-27 23:26:32 +00:00
2023-09-28 16:11:35 +00:00
"public.skynet.ie" = {
2023-09-27 23:26:32 +00:00
forceSSL = true;
useACMEHost = "skynet";
2023-09-28 16:11:35 +00:00
root = "${inputs.compsoc_public.packages.x86_64-linux.default}";
locations."/".extraConfig = "autoindex on;";
2023-09-27 23:26:32 +00:00
};
# for alumni members to renew their account
"renew.skynet.ie" = {
forceSSL = true;
useACMEHost = "skynet";
root = "${inputs.skynet_website_renew.defaultPackage."x86_64-linux"}";
};
2023-07-23 02:08:56 +00:00
};
};
};
}