2025-11-02 22:52:16 +01:00

60 lines
1.6 KiB
Nix

{ sdow, pkgs, lib, system, ... }: let
sdow-env-file = pkgs.writeTextFile {
name = "env.js";
text = ''
window.env = {
"SDOW_API_URL": "https://sdow.bernard.com.de/api/paths",
"WIKIPEDIA_API_URL": "https://fr.wikipedia.org/w/api.php",
"WIKIPEDIA_BASE_URL": "https://fr.wikipedia.org/wiki/",
"WIKIPEDIA_API_USERAGENT": "Six Degrees of Wikipedia/1.0 (https://sdow.bernard.com.de/; mysaa@hadoly.fr)"
};
'';
destination = "/env.js";
};
sdow-website = pkgs.symlinkJoin {
name = "sdow";
paths = [
sdow-env-file
sdow.packages.${pkgs.system}.sdow
];
};
in {
services.httpd.virtualHosts."sdow" = {
hostName = "sdow.bernard.com.de";
forceSSL = true;
sslServerCert = "/var/lib/certs/bernard.com.de/fullchain.pem";
sslServerKey = "/var/lib/certs/bernard.com.de/privkey.pem";
sslServerChain = "/var/lib/certs/bernard.com.de/fullchain.pem";
documentRoot = "${sdow-website}";
locations."/api" = {
proxyPass = "http://localhost:2302";
};
};
systemd.services."sdow-api" = {
description = "Sdow Backend API";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "simple";
ExecStart="${sdow.apps.${pkgs.system}.sdow-api.program} /var/lib/sdow/sdow.sqlite /var/lib/sdow/searches.sqlite 2302";
Environment="GUNICORN_PORT=2302";
ExecReload="kill -s HUP $MAINPID";
KillMode="mixed";
TimeoutStopSec=5;
PrivateTmp=true;
};
};
environment.persistence."/persistence".files = [
"/var/lib/sdow/sdow.sqlite"
"/var/lib/sdow/searches.sqlite"
];
}