Files
shell_sequencer/seqs/kodi.sh
2019-04-08 14:45:15 +01:00

124 lines
2.8 KiB
Bash

#!/bin/bash
## Installing kodi on a raspberry pi
## Some measures are taken to prevent corrupting existing files
## but it's intendet use is for a blank rasperry pi.
toolName="Kodi"
toolUser="kodi"
toolServiceFile="/etc/systemd/system/kodi.service"
step_1_info() { echo "Installing $toolName via apt"; }
step_1_alias() { ALIAS="install"; }
step_1() {
apt update && apt install kodi
}
step_2_info() { echo "Set localisation and keyboard layout"; }
step_2() {
echo "Goto \"Localisation Options\" in the following menu."
read -p "Press ENTER to continue..."
raspi-config
saveReturn $?
endReturn
}
step_3_info() { echo "Adding $toolName user ($toolUser)"; }
step_3() {
id -u $toolUser >>/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo
echo "User $toolUser exists."
echo "Skipping user creation."
return 0
fi
adduser \
--disable-password \
--gecos "User to run $toolName Media Center" \
-G audio,video,plugdev,input,tty \
$toolUser
saveReturn $?
endReturn
echo "User $toolUser details:"
id $tooLuser
}
step_4_info() { echo "Create systemd service"; }
step_4() {
if [ -f "$toolServiceFile" ] ; then
mv "$toolServiceFile" "$toolServiceFile".bck
echo -e "\n[WARN] existing service file renamed to $toolServiceFile.bck"
fi
echo "$toolServiceContent" > "$toolServiceFile"
systemctl daemon reload
systemctl enable kodi.service
saveReturn $?
endReturn
}
toolServiceContent="\
[Unit]
Description = Kodi Media Center
# if you don't need the MySQL DB backend, this should be sufficient
After = systemd-user-sessions.service network.target sound.target
# if you need the MySQL DB backend, use this block instead of the previous
# After = systemd-user-sessions.service network.target sound.target mysql.service
# Wants = mysql.service
[Service]
User = kodi
Group = kodi
Type = simple
ExecStart = /usr/bin/kodi-standalone
Restart = always
RestartSec = 15
[Install]
WantedBy = multi-user.target"
step_5_info() { echo "Enabling text input for USB keyboards within $toolName"; }
step_5() {
local udevFile="/etc/udev/rules.d/99-kodi.rules"
local inputRule="KERNEL==\"tty[0-9]*\", GROUP=\"tty\", MODE=\"0660\""
if [ -f "$udevFile" ] ; then
echo "udev rule ($udevFile) already exists."
else
echo "inputRule" >> udevFile
fi
}
step_6_info() { "Increase raspberry pi GPU memory to 320"; }
step_6() {
local rpiBootConfig="/boot/config.txt"
echo "
# Modifications for $toolName
start_x=1
gpu_mem=320" >> $rpiBootConfig
}
step_7_info() { echo "Reboot is needed for all changes to take effect"; }
step_7() {
if [ $QUIET -eq "1" ] ; then
answer=n
else
read -p "Reboot now? y/n(default)" answer
fi
case $answer in
y|Y)
reboot
;;
*)
echo
echo "To start $toolName anyway enter:"
echo "service start kodi"
;;
esac
}
VERSION_SEQREV=2
. sequencer.sh