2024-08-29 03:26:04 +02:00
|
|
|
{
|
|
|
|
config,
|
|
|
|
lib,
|
|
|
|
pkgs,
|
|
|
|
assets,
|
|
|
|
...
|
|
|
|
}:
|
2023-12-09 17:15:50 +01:00
|
|
|
let
|
|
|
|
# todo create flake for this
|
|
|
|
errorPages = pkgs.fetchFromGitHub {
|
|
|
|
owner = "mrvandalo";
|
|
|
|
repo = "http-errors";
|
|
|
|
rev = "74b8e4c1d9bbba3db6ad858b888e1867318af1f0";
|
|
|
|
sha256 = "0czdzafx4k76q773lyf3vsjm74g1995iz542dhw15kpy5xbivsrg";
|
|
|
|
};
|
|
|
|
error = {
|
|
|
|
extraConfig = ''
|
|
|
|
error_page 400 /errors/400.html;
|
|
|
|
error_page 401 /errors/401.html;
|
|
|
|
error_page 402 /errors/402.html;
|
|
|
|
error_page 403 /errors/403.html;
|
|
|
|
error_page 404 /errors/404.html;
|
|
|
|
error_page 405 /errors/405.html;
|
|
|
|
error_page 406 /errors/406.html;
|
|
|
|
error_page 500 /errors/500.html;
|
|
|
|
error_page 501 /errors/501.html;
|
|
|
|
error_page 502 /errors/502.html;
|
|
|
|
error_page 503 /errors/503.html;
|
|
|
|
error_page 504 /errors/504.html;
|
|
|
|
'';
|
|
|
|
locations."^~ /errors/" = {
|
|
|
|
extraConfig = "internal;";
|
|
|
|
root = "${errorPages}/";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
2024-08-29 03:26:04 +02:00
|
|
|
networking.firewall.allowedTCPPorts = [
|
|
|
|
80
|
|
|
|
443
|
|
|
|
];
|
|
|
|
networking.firewall.allowedUDPPorts = [
|
|
|
|
80
|
|
|
|
443
|
|
|
|
];
|
2023-12-09 17:15:50 +01:00
|
|
|
|
2024-11-08 13:21:45 +01:00
|
|
|
healthchecks.http."travel.ingolf-wagner.de" = {
|
|
|
|
url = "https://travel.ingolf-wagner.de";
|
|
|
|
expectedContent = "Tina & Palos Reiseblog";
|
|
|
|
};
|
|
|
|
|
|
|
|
healthchecks.http."tech.ingolf-wagner.de" = {
|
|
|
|
url = "https://tech.ingolf-wagner.de";
|
|
|
|
expectedContent = "Hey here are some articles about technical issues";
|
|
|
|
};
|
|
|
|
|
2023-12-09 17:15:50 +01:00
|
|
|
services.nginx = {
|
|
|
|
enable = true;
|
|
|
|
recommendedProxySettings = true;
|
|
|
|
virtualHosts = {
|
|
|
|
|
|
|
|
"ingolf-wagner.de" = {
|
|
|
|
forceSSL = true;
|
|
|
|
enableACME = true;
|
|
|
|
extraConfig = error.extraConfig;
|
|
|
|
locations = {
|
|
|
|
"/" = {
|
|
|
|
root = pkgs.landingpage.override {
|
|
|
|
jsonConfig = [
|
|
|
|
{
|
|
|
|
title = "Ingolf Wagner";
|
|
|
|
text = ''
|
|
|
|
I'm a freelancing mathematician, musician and programmer.
|
|
|
|
|
|
|
|
My PGP fingerprint is 42AC 51C9 482D 0834 CF48 8AF1 389E C2D6 4AC7 1EAC
|
|
|
|
'';
|
|
|
|
}
|
|
|
|
{
|
|
|
|
text = ''
|
|
|
|
Here are some of my projects you might enjoy:
|
|
|
|
'';
|
|
|
|
items = [
|
|
|
|
{
|
|
|
|
label = "terranix";
|
|
|
|
href = "https://terranix.org";
|
|
|
|
image = "https://raw.githubusercontent.com/terranix/terranix-artwork/main/terranix-logo.svg";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
label = "Sononym";
|
|
|
|
href = "https://www.sononym.net/";
|
|
|
|
image = "https://www.sononym.net/press/logos/sononym-logo-symbol-black.png";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
label = "LandingPage";
|
|
|
|
href = "https://github.com/mrVanDalo/landingpage";
|
|
|
|
image = "https://media.giphy.com/media/2vNGq1w3nsJri/giphy.gif";
|
|
|
|
}
|
|
|
|
{
|
|
|
|
label = "My Blog";
|
|
|
|
href = "https://tech.ingolf-wagner.de/";
|
|
|
|
image = "https://media.giphy.com/media/11I8v5lE8uq79C/giphy.gif";
|
|
|
|
}
|
|
|
|
];
|
|
|
|
}
|
|
|
|
];
|
|
|
|
title = "Ingolf Wagner";
|
|
|
|
max-width = "1010px";
|
|
|
|
background-color = "#FEFAE0";
|
|
|
|
title-color = "black";
|
|
|
|
title-background-color = "#E9EDC9";
|
|
|
|
text-color = "black";
|
|
|
|
text-background-color = "#FAEDCD";
|
|
|
|
item-color = "black";
|
|
|
|
item-background-color = "#E9EDC9";
|
|
|
|
image-width = "250px";
|
|
|
|
image-height = "200px";
|
|
|
|
};
|
|
|
|
};
|
2024-06-07 21:58:33 +02:00
|
|
|
"= /mrvandalo.pgp" = {
|
|
|
|
root = pkgs.writeText "key" (lib.fileContents "${assets}/mrvandalo.gpg");
|
2023-12-09 17:15:50 +01:00
|
|
|
};
|
2024-06-07 21:58:33 +02:00
|
|
|
"= /mrvandalo.gpg" = {
|
|
|
|
root = pkgs.writeText "key" (lib.fileContents "${assets}/mrvandalo.gpg");
|
2023-12-09 17:15:50 +01:00
|
|
|
};
|
2024-06-07 21:58:33 +02:00
|
|
|
"= /mrvandalo_rsa.pub" = {
|
|
|
|
root = pkgs.writeText "key" (lib.fileContents "${assets}/mrvandalo_rsa.pub");
|
2023-12-09 17:15:50 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
"travel.ingolf-wagner.de" = {
|
|
|
|
forceSSL = true;
|
|
|
|
enableACME = true;
|
|
|
|
extraConfig = error.extraConfig;
|
|
|
|
locations = {
|
|
|
|
"/" = {
|
|
|
|
root = "/srv/www/travel";
|
|
|
|
extraConfig = ''
|
2024-09-01 16:23:00 +02:00
|
|
|
etag on;
|
2023-12-09 17:15:50 +01:00
|
|
|
if (-d $request_filename) {
|
|
|
|
rewrite [^/]$ $scheme://$http_host$request_uri/ permanent;
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
} // error.locations;
|
|
|
|
};
|
|
|
|
"tech.ingolf-wagner.de" = {
|
|
|
|
forceSSL = true;
|
|
|
|
enableACME = true;
|
|
|
|
extraConfig = error.extraConfig;
|
|
|
|
locations = {
|
|
|
|
"/" = {
|
|
|
|
root = "/srv/www/tech";
|
|
|
|
extraConfig = ''
|
|
|
|
if (-d $request_filename) {
|
|
|
|
rewrite [^/]$ $scheme://$http_host$request_uri/ permanent;
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
} // error.locations;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|