###############################################################################
# BRLTTY - A background process providing access to the console screen (when in
#          text mode) for a blind person using a refreshable braille display.
#
# Copyright (C) 1995-2023 by The BRLTTY Developers.
#
# BRLTTY comes with ABSOLUTELY NO WARRANTY.
#
# This is free software, placed under the terms of the
# GNU Lesser General Public License, as published by the Free Software
# Foundation; either version 2.1 of the License, or (at your option) any
# later version. Please see the file LICENSE-LGPL for details.
#
# Web Page: http://brltty.app/
#
# This software is maintained by Dave Mielke <dave@mielke.cc>.
###############################################################################

[Unit]
Description=BRLTTY Instance: %I
Documentation=man:brltty(1)
Documentation=@PACKAGE_URL@

RequiresMountsFor=@WRITABLE_DIRECTORY@
RequiresMountsFor=@UPDATABLE_DIRECTORY@
RequiresMountsFor=@BRLAPI_SOCKETPATH@

Wants=sound.target
After=sound.target

After=local-fs.target
ConditionPathExists=%I

RefuseManualStart=true
StopWhenUnneeded=true


[Service]

SyslogIdentifier=brltty
Environment="BRLTTY_SYSTEMD_INSTANCE=%I"

StandardInput=null
StandardOutput=null
StandardError=inherit

PIDFile=%t/brltty/brltty-%i.pid
Environment="BRLTTY_PID_FILE=%t/brltty/brltty-%i.pid"

Type=@SYSTEMD_SERVICE_TYPE@
Environment="BRLTTY_EXECUTABLE_ARGUMENTS=@SYSTEMD_SERVICE_ARGUMENTS@"
ExecStart=@COMMANDS_DIRECTORY@/systemd-wrapper

TimeoutStartSec=5
TimeoutStopSec=10

Restart=on-failure
RestartSec=30

Nice=-10
OOMScoreAdjust=-900

# for playing alert tunes via the built-in PC speaker (KDMKTONE, KIOCSOUND)
ExecStartPre=-+/sbin/modprobe pcspkr
AmbientCapabilities=cap_sys_tty_config

# for creating virtual devices
ExecStartPre=-+/sbin/modprobe uinput

# for injecting input characters typed on a braille device (TIOCSTI)
AmbientCapabilities=cap_sys_admin

# for creating needed but missing special device files
AmbientCapabilities=cap_mknod

#######################################################
# keep these synchronized with sysusers.d/brltty.conf #
#######################################################

User=brltty

# for reading screen content (/dev/vcs*)
# for virtual console monitoring and control (/dev/tty<n>)
SupplementaryGroups=tty

# for serial I/O (/dev/ttyS<n>)
# probably only one of these should be uncommented
SupplementaryGroups=dialout
#SupplementaryGroups=uucp

# for USB I/o via USBFS (/dev/bus/usb/*/*)
SupplementaryGroups=root

# for playing sound via the ALSA framework
SupplementaryGroups=audio

# for playing sound via the Pulse Audio daemon
SupplementaryGroups=pulse-access

# for monitoring keyboard input (/dev/input/*)
SupplementaryGroups=input

# for creating virtual devices (/dev/uinput or /dev/input/uinput)
SupplementaryGroups=root

# for reading the BrlAPI authorization key file
SupplementaryGroups=brlapi

