summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2026-06-26 11:14:31 +0100
committerJoe Carstairs <me@joeac.net>2026-06-29 07:32:35 +0100
commit86509e2598fc5689b00b770e793c348988b32187 (patch)
tree21a8462ae5cdeba440a23c0b71a4a34570350651
parentadc5498641db3c308798ef6afa9eb0e9623d1475 (diff)
installs joeac.net services as separate OpenRC services
-rw-r--r--Makefile46
-rwxr-xr-xopenrc/joeac.net13
2 files changed, 41 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index 6efb909..9056fe6 100644
--- a/Makefile
+++ b/Makefile
@@ -38,6 +38,24 @@ $(module)/.env: .env
cp .env $(module)/.env
endef
+define install_module_rule =
+.PHONY: install_$(module)
+install_$(module): ~/.config/rc/init.d/joeac.net ~/.config/rc/init.d/joeac.net.$(module)
+
+~/.config/rc/init.d/joeac.net.$(module): ~/.config/rc/init.d/joeac.net ~/.config/rc/runlevels/default
+ ln -s $(shell realpath ~/.config/rc/init.d/joeac.net) ~/.config/rc/init.d/joeac.net.$(module)
+ rc-update -U add joeac.net.$(module) default
+ rc-service -U joeac.net.$(module) start
+endef
+
+define uninstall_module_rule =
+.PHONY: uninstall_$(module)
+uninstall_$(module):
+ rc-service -U joeac.net.$(module) stop
+ rc-update -U del joeac.net.$(module) default
+ rm ~/.config/rc/init.d/joeac.net.$(module)
+endef
+
#########
# RULES #
@@ -55,10 +73,13 @@ login_registry:
podman login $(REGISTRY_DOMAIN)
.PHONY: install
-install: install_nginx install_service install_crontab next_steps
+install: install_nginx $(foreach module,$(MODULES),install_$(module)) install_crontab
.PHONY: uninstall
-uninstall: uninstall_nginx uninstall_service uninstall_crontab
+uninstall: uninstall_nginx uninstall_joeac.net_service $(foreach module,$(MODULES),uninstall_$(module)) uninstall_crontab
+
+.PHONY: uninstall_joeac.net_service
+ rm ~/.config/rc/joeac.net
nginx_src := $(shell find -L nginx -type f)
nginx_target := $(addprefix /etc/,$(nginx_src))
@@ -92,15 +113,20 @@ else
sudo rc-service nginx restart
endif
-.PHONY: install_service
-install_service: ~/.config/rc/init.d/joeac.net
+$(foreach module,$(MODULES),$(eval $(install_module_rule)))
+$(foreach module,$(MODULES),$(eval $(uninstall_module_rule)))
-~/.config/rc/init.d/joeac.net: openrc/joeac.net
+~/.config/rc/init.d/joeac.net: openrc/joeac.net ~/.config/rc/init.d ~/.config/rc/runlevels/default
rm -f ~/.config/rc/init.d/joeac.net; \
mkdir -p ~/.config/rc/init.d; \
- cp openrc/joeac.net ~/.config/rc/init.d/joeac.net \
- && rc-update -U add joeac.net default \
- && rc-service -U joeac.net start; \
+ cp openrc/joeac.net ~/.config/rc/init.d/joeac.net
+
+~/.config/rc/init.d:
+ mkdir -p ~/.config/rc/init.d
+
+~/.config/rc/runlevels/default:
+ mkdir -p ~/.config/rc/runlevels/default
+ @echo "now edit openrc/user-default-runlevel with your username, copy it to /etc/init.d, and add it to the system's default runlevel with \`rc-service add <SERVICE> default\`"
.PHONY: uninstall_service
uninstall_service:
@@ -120,10 +146,6 @@ uninstall_crontab:
> crontab.tmp
sudo mv crontab.tmp /etc/periodic/daily/joeac.net
-.PHONY: next_steps
-next_steps:
- @echo "Make sure that your user's default runlevel is triggered by OpenRC. If this isn't already happening, edit openrc/user-default-runlevel with your username, copy it to /etc/init.d, and add it to the system's default runlevel with \`rc-service add <SERVICE> default\`."
-
.PHONY: clean
clean:
$(foreach module,$(MODULES),$(MAKE) --directory=$(module) clean;)
diff --git a/openrc/joeac.net b/openrc/joeac.net
index 00ab3b2..3a45694 100755
--- a/openrc/joeac.net
+++ b/openrc/joeac.net
@@ -3,10 +3,11 @@
# https://gist.github.com/itzwam/2069e935385193207f7e5bea7156e21d
# https://github.com/0x17de/dockerservice-openrc
+: ${MODULENAME:=${RC_SVCNAME##*.}}
: ${SRCDIR:=/usr/local/lib/joeac.net}
DOCKER_COMPOSE_UP_ARGS=${DOCKER_COMPOSE_UP_ARGS-"--no-build --no-recreate --no-deps"}
-[ -z "${SVCNAME}" ] && exit 1
+[ -z "${MODULENAME}" ] && exit 1
: ${COMPOSEFILE:="${SRCDIR}/compose.yml"}
: ${MAKEFILE:="${SRCDIR}/Makefile"}
COMPOSECMD="/usr/bin/podman-compose"
@@ -31,14 +32,14 @@ configtest() {
start() {
configtest || return 1
- ebegin "Starting ${SVCNAME}"
- "${COMPOSECMD}" -f "${COMPOSEFILE}" up -d ${DOCKER_COMPOSE_UP_ARGS}
+ ebegin "Starting ${MODULENAME}"
+ "${COMPOSECMD}" -f "${COMPOSEFILE}" up -d ${DOCKER_COMPOSE_UP_ARGS} ${MODULENAME}
eend $?
}
stop() {
- ebegin "Stopping ${SVCNAME}"
- "${COMPOSECMD}" -f "${COMPOSEFILE}" down --timeout=5
+ ebegin "Stopping ${MODULENAME}"
+ "${COMPOSECMD}" -f "${COMPOSEFILE}" down --timeout=5 ${MODULENAME}
eend $?
}
@@ -53,7 +54,7 @@ status() {
else
einfo "status: [$pod] stopped"
fi
- done < <("${COMPOSECMD}" -f "${COMPOSEFILE}" ps --quiet)
+ done < <("${COMPOSECMD}" -f "${COMPOSEFILE}" ps --quiet ${MODULENAME})
if [ $started -eq $pods ]; then
einfo "status: started"
else