moby: eg25-control: fixup perms & add service that DLs new agps data when stale

This commit is contained in:
Colin 2023-09-15 04:47:12 +00:00
parent 1546304b4e
commit 2291c89dbc

View File

@ -16,19 +16,29 @@ in
users.users.eg25-control = { users.users.eg25-control = {
group = "eg25-control"; group = "eg25-control";
isSystemUser = true; isSystemUser = true;
home = "/var/lib/eg25-control";
extraGroups = [
"networkmanager" # required to authenticate with mmcli
];
}; };
# TODO: persist eg25-control cache/new dirs sane.persist.sys.plaintext = [
{ user = "eg25-control"; group = "eg25-control"; path = "/var/lib/eg25-control"; }
];
systemd.services.eg25-control-powered = { systemd.services.eg25-control-powered = {
description = "power to the Qualcomm eg25 modem used by PinePhone"; description = "power to the Qualcomm eg25 modem used by PinePhone";
serviceConfig = { serviceConfig = {
User = "eg25-control"; Type = "oneshot";
Type = "simple";
RemainAfterExit = true; RemainAfterExit = true;
ExecStart = "${cfg.package}/bin/eg25-control --power-on --verbose"; ExecStart = "${cfg.package}/bin/eg25-control --power-on --verbose";
ExecStop = "${cfg.package}/bin/eg25-control --power-off --verbose"; ExecStop = "${cfg.package}/bin/eg25-control --power-off --verbose";
Restart = "on-failure"; Restart = "on-failure";
RestartSec = "60s"; RestartSec = "60s";
# XXX /sys/class/modem-power/modem-power/device/powered is writable only by root
# User = "eg25-control";
# WorkingDirectory = "/var/lib/eg25-control";
# StateDirectory = "eg25-control";
}; };
after = [ "ModemManager.service" ]; after = [ "ModemManager.service" ];
wants = [ "ModemManager.service" ]; wants = [ "ModemManager.service" ];
@ -40,17 +50,42 @@ in
# - want to upload almanac even when GPS *isn't* enabled, if we have internet connection. # - want to upload almanac even when GPS *isn't* enabled, if we have internet connection.
description = "background GPS tracking"; description = "background GPS tracking";
serviceConfig = { serviceConfig = {
User = "eg25-control";
Type = "simple"; Type = "simple";
RemainAfterExit = true; RemainAfterExit = true;
ExecStart = "${cfg.package}/bin/eg25-control --enable-gps --dump-debug-info --verbose"; ExecStart = "${cfg.package}/bin/eg25-control --enable-gps --dump-debug-info --verbose";
ExecStop = "${cfg.package}/bin/eg25-control --disable-gps --dump-debug-info --verbose"; ExecStop = "${cfg.package}/bin/eg25-control --disable-gps --dump-debug-info --verbose";
Restart = "on-failure"; Restart = "on-failure";
RestartSec = "60s"; RestartSec = "60s";
User = "eg25-control";
WorkingDirectory = "/var/lib/eg25-control";
StateDirectory = "eg25-control";
}; };
after = [ "eg25-control-powered.service" ]; after = [ "eg25-control-powered.service" ];
requires = [ "eg25-control-powered.service" ]; requires = [ "eg25-control-powered.service" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };
systemd.services.eg25-control-freshen-agps = {
description = "keep assisted-GPS data fresh";
serviceConfig = {
Type = "oneshot";
ExecStart = "${cfg.package}/bin/eg25-control --ensure-agps-cache --verbose";
User = "eg25-control";
WorkingDirectory = "/var/lib/eg25-control";
StateDirectory = "eg25-control";
};
after = [ "network-online.target" "nss-lookup.target" ];
requires = [ "network-online.target" ];
};
systemd.timers.eg25-control-freshen-agps = {
wantedBy = [ "multi-user.target" ];
timerConfig = {
OnCalender = "hourly"; # this is a bit more than necessary, but idk systemd calendar syntax
OnStartupSec = "3min";
};
};
}; };
} }