From 8b3247df1769f47842d80ea0869f4d8b7a9cdc75 Mon Sep 17 00:00:00 2001 From: Aminda Suomalainen Date: Fri, 19 Jul 2024 07:37:39 +0300 Subject: [PATCH] gpsd.service.d: create a socket for geoclue, add comments --- .../gpsd.service.d/aminda-additions.conf | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/etc/systemd/system/gpsd.service.d/aminda-additions.conf b/etc/systemd/system/gpsd.service.d/aminda-additions.conf index bb0bcd17..d5f5a0ff 100644 --- a/etc/systemd/system/gpsd.service.d/aminda-additions.conf +++ b/etc/systemd/system/gpsd.service.d/aminda-additions.conf @@ -1,10 +1,25 @@ +# As usual this is a systemd drop-in, so I can adjust what gpsd.service does +# without having to fight with package management. [Service] Type=exec +# In case the file exists, I can throw my own additional options there EnvironmentFile=-/etc/gpsd.aminda.conf -ExecStart= -# PRIVACY WARNING! --listenany happily allows anyone to ask where the host is +# Kernel module possibly required for USB GPS devices especially with Chrony? ExecStartPre=-/usr/sbin/modprobe pps_ldisc -ExecStart=/usr/sbin/gpsd /dev/gps0 --listenany --nowait --foreground $AMINDAGPSD +# Handle failure situation of the socket not going away (ExecStartPost=) +ExecStartPre=-/usr/bin/rm -vf /var/run/gpsd-nmea.sock +# Empty ExecStart= before the actual ExecStart= removes the original +# ExecStart= line +ExecStart= +ExecStart=/usr/sbin/gpsd /dev/gps0 --nowait --foreground $AMINDAGPSD +# Creating a socket for geoclue to connect to +# Credit: @schnell at https://gitlab.freedesktop.org/geoclue/geoclue/-/issues/145#note_1772702 +ExecStartPost=/bin/sh -c "(sleep 5 && gpspipe --nmea | ( read; read; read; cat ) | ncat --verbose --keep-open --listen --unixsock /var/run/gpsd-nmea.sock&)" +# In case of clean shutdown, remove the socket for restart +ExecStopPost=-/usr/bin/rm -vf /var/run/gpsd-nmea.sock +# Missing from the original unit, will reconnect all GPS says man gpsd ExecReload=/usr/bin/killall -HUP gpsd +# Avoiding systemd considering the unit as failed. Restart=always RestartSec=5s +# vim: filetype=systemd