diff --git a/systems/makanek/configuration.nix b/systems/makanek/configuration.nix index bcc07c6..cfe413f 100644 --- a/systems/makanek/configuration.nix +++ b/systems/makanek/configuration.nix @@ -10,6 +10,7 @@ in ./matterbridge.nix ./menstruation.nix ./moinbot.nix + ./horoscopy.nix ./monitoring ./moodle-dl-borsfaye.nix ./names.nix diff --git a/systems/makanek/horoscopy.nix b/systems/makanek/horoscopy.nix new file mode 100644 index 0000000..d23a1fe --- /dev/null +++ b/systems/makanek/horoscopy.nix @@ -0,0 +1,45 @@ +{ pkgs, lib, ... }: +let + port = 5040; + punkt = pkgs.fetchzip { + url = "https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/tokenizers/punkt.zip"; + sha256 = "113cv87dj5ml7g8pjm7psk4q1hrf0zqpmc945lmpdz91vp2wn1nc"; + }; + horoscopy-src = pkgs.fetchzip { + url = "http://c.krebsco.de/horoscopy.tar.gz"; + hash = "sha256-DMhPDSftSaQomnEf+/XBn6cYIAJbs8BBJUGSi9NHLr4="; + stripRoot = false; + }; + horoscopy = import horoscopy-src; +in +{ + systemd.services.horoscopy = { + wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; + description = "AI astrologer"; + serviceConfig = { + DynamicUser = true; + }; + environment.NLTK_DATA = pkgs.linkFarm "punkt-tokenizers" [ + { name = "tokenizers/punkt"; path = punkt; } + ]; + script = '' + cd ${horoscopy-src} + ${horoscopy.dependencyEnv}/bin/gunicorn wsgi:app -b :${toString port} + ''; + }; + + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + recommendedProxySettings = true; + recommendedTlsSettings = true; + }; + + services.nginx.virtualHosts."horoscopy.kmein.de" = { + enableACME = true; + forceSSL = true; + locations."/".proxyPass = "http://127.0.0.1:${toString port}"; + }; +}