From becdd6cc4ea9aac087e024329fd16e6952a34b7a Mon Sep 17 00:00:00 2001
From: Richard Hansen <rhansen@rhansen.org>
Date: Tue, 27 Feb 2024 23:53:00 -0800
Subject: [PATCH] Skip systemd service install if `SYSTEMD_SYSTEM_DIR` is empty

---
 Makefile | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/Makefile b/Makefile
index 808b8cd..1bd4bb1 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,8 @@ PREFIX?=/usr/local
 CONFIG_DIR?=/etc/keyd
 SOCKET_PATH=/var/run/keyd.socket
 
+# If this variable is set to the empty string, no systemd unit files will be
+# installed.
 SYSTEMD_SYSTEM_DIR = /usr/lib/systemd/system
 
 CFLAGS:=-DVERSION=\"v$(VERSION)\ \($(COMMIT)\)\" \
@@ -50,17 +52,19 @@ man:
 	done
 install:
 
-	@if [ -e /run/systemd/system ]; then \
+	@if [ -e /run/systemd/system ] && [ -n '$(SYSTEMD_SYSTEM_DIR)' ]; then \
 		sed -e 's#@PREFIX@#$(PREFIX)#' keyd.service.in > keyd.service; \
 		mkdir -p '$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)'; \
 		install -Dm644 keyd.service '$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)/keyd.service'; \
-	else \
+	elif [ -n '$(SYSTEMD_SYSTEM_DIR)' ]; then \
 		echo "NOTE: systemd not found, you will need to manually add keyd to your system's init process."; \
 	fi
 
 	@if [ "$(VKBD)" = "usb-gadget" ]; then \
-		sed -e 's#@PREFIX@#$(PREFIX)#' src/vkbd/usb-gadget.service.in > src/vkbd/usb-gadget.service; \
-		install -Dm644 src/vkbd/usb-gadget.service '$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)/keyd-usb-gadget.service'; \
+		if [ -n '$(SYSTEMD_SYSTEM_DIR)' ]; then \
+			sed -e 's#@PREFIX@#$(PREFIX)#' src/vkbd/usb-gadget.service.in > src/vkbd/usb-gadget.service; \
+			install -Dm644 src/vkbd/usb-gadget.service '$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)/keyd-usb-gadget.service'; \
+		fi; \
 		install -Dm755 src/vkbd/usb-gadget.sh $(DESTDIR)$(PREFIX)/bin/keyd-usb-gadget.sh; \
 	fi
 
@@ -83,14 +87,15 @@ install:
 
 uninstall:
 	-groupdel keyd
+	[ -z '$(SYSTEMD_SYSTEM_DIR)' ] || rm -f \
+		'$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)/keyd.service' \
+		'$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)/keyd-usb-gadget.service'
 	rm -rf $(DESTDIR)$(PREFIX)/bin/keyd \
 		$(DESTDIR)$(PREFIX)/bin/keyd-application-mapper \
 		$(DESTDIR)$(PREFIX)/share/doc/keyd/ \
 		$(DESTDIR)$(PREFIX)/share/man/man1/keyd*.gz \
 		$(DESTDIR)$(PREFIX)/share/keyd/ \
-		'$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)/keyd-usb-gadget.service' \
-		$(DESTDIR)$(PREFIX)/bin/keyd-usb-gadget.sh \
-		'$(DESTDIR)$(SYSTEMD_SYSTEM_DIR)/keyd.service'
+		$(DESTDIR)$(PREFIX)/bin/keyd-usb-gadget.sh
 clean:
 	rm -rf bin data/*.1.gz data/keyd.compose keyd.service src/unicode.c src/vkbd/usb-gadget.service
 test: