| { pkgs, workspace, ... }: |
| |
| let |
| python = pkgs.python3.withPackages (pp: [ pp.jinja2 pp.paho-mqtt pp.flask ]); |
| src = pkgs.fetchgit { |
| url = "https://code.hackerspace.pl/informatic/spejsiot-api"; |
| rev = "d5bcb860738df0c9702c2e6f6954cfa08e3c7153"; |
| sha256 = "sha256-1xZ6RKl/AkMYvyFDcANQiSY3dJPQitaKjLl9ijrAHOs="; |
| }; |
| run = pkgs.writeShellScriptBin "spejsiot-api" '' |
| cd ${src} |
| exec ${python}/bin/python3 main.py |
| ''; |
| |
| name = "spejsiot-api"; |
| user = name; |
| group = name; |
| socket_dir = "/run/${name}/"; |
| in { |
| users.users."${user}" = { |
| group = "${group}"; |
| isSystemUser = true; |
| }; |
| users.groups."${group}" = { }; |
| |
| systemd.services."${name}" = { |
| description = "Hackerspace Checkinator"; |
| wantedBy = [ "multi-user.target" ]; |
| after = [ "mosquitto.service" ]; |
| |
| serviceConfig.User = "${user}"; |
| serviceConfig.Type = "simple"; |
| |
| serviceConfig.Restart = "always"; |
| serviceConfig.RestartSec = "30"; |
| |
| serviceConfig.ExecStart = "${run}/bin/spejsiot-api"; |
| |
| }; |
| } |