60 lines
1.6 KiB
Nix
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"
|
|
];
|
|
|
|
}
|