89 lines
1.9 KiB
Nix
89 lines
1.9 KiB
Nix
{
|
|
flakes,
|
|
pkgs,
|
|
config,
|
|
secrets,
|
|
...
|
|
}:
|
|
let
|
|
cache = pkg: ''
|
|
location ~* \.(png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf)$ {
|
|
expires max;
|
|
add_header Cache-Control "public, no-transform";
|
|
root ${pkg};
|
|
}
|
|
'';
|
|
regular = "${flakes.homepage.packages.${pkgs.system}.website}";
|
|
gay = "${flakes.homepage.packages.${pkgs.system}.website-gay}";
|
|
ssl = {
|
|
forceSSL = true;
|
|
http2 = true;
|
|
enableACME = true;
|
|
};
|
|
base =
|
|
pkg:
|
|
{
|
|
extraConfig = cache pkg;
|
|
}
|
|
// ssl;
|
|
site =
|
|
pkg:
|
|
{
|
|
locations."/".root = pkg;
|
|
}
|
|
// (base pkg);
|
|
redirect =
|
|
return:
|
|
{
|
|
locations."/".return = return;
|
|
}
|
|
// ssl;
|
|
|
|
package = flakes.homepage.packages.${pkgs.system};
|
|
in
|
|
{
|
|
sops.secrets.homepage = {
|
|
sopsFile = "${secrets}/homepage.env";
|
|
};
|
|
|
|
systemd.services.homepage = {
|
|
description = "homepage";
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
DynamicUser = "yes";
|
|
ExecStart = "${pkgs.bash}/bin/bash ${package.website}/bin/run";
|
|
Restart = "on-failure";
|
|
RestartSec = "5s";
|
|
EnvironmentFile = config.sops.secrets.homepage.path;
|
|
WorkingDirectory = "${package.website}";
|
|
StateDirectory = "homepage";
|
|
};
|
|
|
|
environment = {
|
|
BETTER_AUTH_URL = "https://donsz.nl";
|
|
DATABASE_LOCATION = "/var/lib/homepage/db.sqlite";
|
|
HOST = "localhost";
|
|
PORT = "11020";
|
|
};
|
|
};
|
|
|
|
services.nginx.virtualHosts = {
|
|
"donsz.nl" = {
|
|
forceSSL = true;
|
|
enableACME = true;
|
|
extraConfig = ''
|
|
${cache "${package.website}/homepage/client"}
|
|
'';
|
|
locations."/".proxyPass = "http://localhost:${toString 11020}";
|
|
};
|
|
"blog.donsz.nl" = redirect "301 https://donsz.nl/blog";
|
|
};
|
|
# services.nginx = {
|
|
# virtualHosts = {
|
|
# "donsz.nl" = site regular;
|
|
# "jdonszelmann.nl" = site regular;
|
|
# "gay.donsz.nl" = site gay;
|
|
# "jana.is.fckn.gay" = site gay;
|
|
# };
|
|
# };
|
|
}
|