51 lines
1.3 KiB
Nix
51 lines
1.3 KiB
Nix
# Configuration for the Amanuensis service
|
|
|
|
{ config, pkgs, ... }:
|
|
|
|
# Set up python
|
|
with pkgs;
|
|
let amanuensis-requires = python-packages: with python-packages; [
|
|
flask flask_login flask_wtf gunicorn
|
|
];
|
|
python3-with-amanuensis-requires = python3.withPackages amanuensis-requires;
|
|
in
|
|
{
|
|
# Create a user for the server process to run under
|
|
users.users.amanuensis = {
|
|
isNormalUser = true;
|
|
group = "amanuensis";
|
|
description = "Amanuensis server user";
|
|
packages = [ python3-with-amanuensis-requires ];
|
|
};
|
|
users.groups.amanuensis = {};
|
|
|
|
# Create the server process systemd unit
|
|
systemd.services.amanuensis = {
|
|
enable = true;
|
|
description = "Amanuensis Lexicon server";
|
|
path = [ python3-with-amanuensis-requires ];
|
|
serviceConfig = {
|
|
Type = "simple";
|
|
ExecStart = "/home/amanuensis/Amanuensis/run.sh";
|
|
Restart = "on-failure";
|
|
User = "amanuensis";
|
|
WorkingDirectory = "/home/amanuensis";
|
|
};
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
|
|
# Configure nginx to forward to the server at the lexicon subdomain
|
|
services.nginx.virtualHosts."lexicon.alogoulogoi.com" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
extraConfig = ''
|
|
access_log /var/log/nginx/access.lexicon.log;
|
|
'';
|
|
locations."/".extraConfig = ''
|
|
proxy_buffering off;
|
|
proxy_pass http://localhost:8000/;
|
|
'';
|
|
};
|
|
}
|
|
|