#!/usr/bin/env bash set -euo pipefail # Installs the least-privilege access rule needed for evdev/uinput. This # script intentionally changes host state only when the user runs it. readonly GROUP_NAME="8bitdo" readonly RULE_FILE="99-8bitdo-control-center.rules" readonly PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" readonly SOURCE_RULE="${PROJECT_ROOT}/resources/udev/${RULE_FILE}" readonly DESTINATION_RULE="/etc/udev/rules.d/${RULE_FILE}" if [[ ! -f "${SOURCE_RULE}" ]]; then echo "Missing udev rule: ${SOURCE_RULE}" >&2 exit 1 fi if ! getent group "${GROUP_NAME}" >/dev/null; then sudo groupadd --system "${GROUP_NAME}" fi sudo install -Dm644 "${SOURCE_RULE}" "${DESTINATION_RULE}" sudo usermod -aG "${GROUP_NAME}" "${USER}" sudo udevadm control --reload-rules sudo udevadm trigger --subsystem-match=input cat <