summaryrefslogtreecommitdiff
path: root/hosts/gnuslashprinter/flask-relay-ctl.nix
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 ];
}