{ 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 ]; }