blob: 27507b6a04c9fd1b24582c89868bf7963df3d66a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
{ pkgs, ... }: let
flaskrelayctl = pkgs.python3Packages.buildPythonApplication {
pname = "flaskrelayctl";
version = "1.0";
src = ./resources/flaskrelayctl;
pyproject = true;
build-system = with pkgs.python3Packages; [ setuptools ];
dependencies = with pkgs.python3Packages; [
flask
pyserial
];
};
in {
users.users.relay-api = {
isSystemUser = true;
group = "relay-api";
extraGroups = [ "dialout" ];
};
users.groups.relay-api = {};
systemd.services.relay-api = let
RELAYCTL_DEV = "/dev/gsp-power";
in {
description = "USB Relay Flask API";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
User = "relay-api";
Group = "relay-api";
ExecStart = "${flaskrelayctl}/bin/flaskrelayctl";
Restart = "always";
DeviceAllow = [ "${RELAYCTL_DEV} rw" ];
};
};
environment.systemPackages = [ flaskrelayctl ];
}
|