Yeah, that's all there is to it. The finish script is optional, and rememer to make your links. You can have user level services by making links for runsvdir-USERNAME. This creates a service that manages your services.
It could probably be more robustn but here's my setup:
$ readlink {/etc/sv,/var/service}/runsvdir-$USER | sed "s:$USER:USERNAME:g"
/home/USERNAME/.dotfiles/runsvdir-USERNAME
/etc/sv/runsvdir-USERNAME
$ print -l /etc/sv/runsvdir-$USER/*(.)
/etc/sv/runsvdir-USERNAME/conf
/etc/sv/runsvdir-USERNAME/finish
/etc/sv/runsvdir-USERNAME/run
$ print -l /etc/sv/runsvdir-$USER/*(.) | to -b -C '#' -A $'\n' cat | sed "s:$USER:USERNAME:g"
# /etc/sv/runsvdir-USERNAME/conf
#!/bin/sh
set -eu
self="$(realpath "$0")"
root="$(dirname "$self")"
user="$(basename "$root" | sed 's:^runsvdir-::')"
home="/home/$user"
groups="$(id -Gn "$user" | tr ' ' ':')"
svdir="$home/service"
#
# /etc/sv/runsvdir-USERNAME/finish
#!/usr/bin/env sh
set -eu
self="$(realpath "$0")"
root="$(dirname "$self")"
[ ! -e "$root/conf" ] || . "$root/conf"
sv -w600 force-stop "$svdir/"\*
#
# /etc/sv/runsvdir-USERNAME/run
#!/bin/sh
# start up for user-level service configuration
set -eu
exec 2>&1
root="$(realpath "$0" | xargs -d '\n' dirname)"
[ ! -e "$root/conf" ] || . "$root/conf"
exec chpst -u "$user:$groups" runsvdir -P "$svdir"
#
For clarity, the to command is an xargs alternative that's not out, yet.