blob: 3cbf5dc2e4d3ca8dec8f060b3118cd915093088f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
#!/bin/bash
. /etc/profile
#. /etc/systemconfig
HOSTNAME=`/usr/bin/hostnamectl hostname`
function msg(){
/usr/bin/lh_notify-send --app-name="LinHES" --icon=dialog-information "$1" "$2"
}
function check_installer_user(){
if [[ "$(whoami)" = 'km' ]]; then
echo "Running lh_system_start as installer user km. Exiting."
exit 1
fi
}
function applyUIsettings(){
/usr/bin/lh_apply_UI_settings.sh
msg "Welcome to LinHES 9!"
}
function x11vnc_setup(){
konsole -e /bin/bash -i -c "echo 'Create VNC password.' && x11vnc --storepasswd"
mkdir -p ~/.vnc
touch ~/.vnc/x11vnc.log
sudo /usr/bin/systemctl enable --now x11vnc.service
}
function bashrc_setup(){
if ! grep -q 'alias rscp=' ~/.bashrc; then
echo -e "\nalias rscp='rsync -a --info=progress2'" >> ~/.bashrc
fi
if ! grep -q 'alias rsmv=' ~/.bashrc; then
echo -e "alias rsmv='rsync -a --info=progress2 --remove-source-files'" >> ~/.bashrc
fi
}
function nanorc_setup(){
sudo sed -i 's/# set tabsize.*/set tabsize 4/' /etc/nanorc
sudo sed -i 's/# set tabstospaces.*/set tabstospaces/' /etc/nanorc
sudo sed -i 's/# include "\/usr\/share\/nano\/\*.nanorc"/include "\/usr\/share\/nano\/\*.nanorc"/' /etc/nanorc
}
function storage_scan(){
sudo add_storage.py --report > /dev/null
if [ -e /tmp/scan_report ]; then
msg "New Storage Found" "Run add_storage.py for details."
fi
}
function install_lh_apps(){
#install programs that are not needed on the iso
#check network connection
netwait=0
while ! timeout 1 nc -zw1 1.1.1.1 443; do
[ $netwait -gt 12 ] && msg "Could not install apps. Check internet connection. Cancelling Setup." && exit 1
msg "Waiting for internet connectivity..."
((netwait++))
sleep 5
done
msg "Installing apps."
konsole -e /bin/bash -i -c "sudo pacman -Syyy --noconfirm archlinux-keyring && sudo pacman -Syyy --noconfirm mythtv mythplugins-mytharchive mythplugins-mythmusic mythplugins-mythweb && flatpak install tv.plex.PlexHTPC --noninteractive --assumeyes && sudo flatpak override tv.plex.PlexHTPC --filesystem=/run/lirc/lircd"
status=$?
[ $status -eq 1 ] && msg "Could not install apps. Check internet connection. Cancelling Setup." && exit 1
gen_lib_xml.py
}
function sql_setup(){
sudo mkdir -p /data/srv/mysql
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/data/srv/mysql
sudo systemctl enable --now mariadb.service
mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root mysql
sudo mariadb -u root < /usr/share/linhes/templates/db/permissions.sql
mythtv-setup -O theme=LinHES
sed -e "s/apheleia/${HOSTNAME}/g" /usr/share/linhes/templates/db/custom.sql > /tmp/custom.sql.fixed
sudo mariadb -u root mythconverg < /tmp/custom.sql.fixed
}
function localweb_setup(){
konsole -e /bin/bash -i -c "sudo pacman -Syyy --noconfirm linhes-web"
sudo cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
sudo cp /usr/share/linhes/templates/lighttpd.conf.template /etc/lighttpd/lighttpd.conf
sudo systemctl enable --now lighttpd.service
}
function first_configure(){
if [ ! -f ~/.config/lh_configured ]; then
msg "New install of LinHES. Starting setup."
install_lh_apps
nanorc_setup
bashrc_setup
x11vnc_setup
if [ -f /etc/systemconfig ]; then
SystemType=$(grep SystemType= /etc/systemconfig | cut -d '"' -f 2)
else
SystemType=$(kdialog --title "LinHES System Type" --combobox "Select the LinHES System Type: " "MasterBackend" "FrontendOnly" "DesktopOnly" --default "MasterBackend")
echo "SystemType=\"$SystemType\"" | sudo tee /etc/systemconfig
fi
#apply settings for specific system types
msg "Setup as $SystemType"
if [ $SystemType = "MasterBackend" ]; then
# create media directory structure
sudo mkdir -p /data/storage/disk0
sudo create_media_dirs.sh /data/storage/disk0
sudo ln -s /data/storage/disk0/media/ /myth
# setup DB
sql_setup
# run mythtv-setup
# need to run twice for default db install/upgrade
mythtv-setup
sudo systemctl enable --now mythbackend.service
# run mythfilldatabase
#nice -n 19 mythfilldatabase --quiet &
#msg "Guide data is being loaded." "Until this completes some shows will appear as unknown in the program guide."
localweb_setup
elif [ $SystemType = "FrontendOnly" ]; then
msg "Frontend Only"
#Frontend_only cmds
# create media directory structure
sudo mkdir -p /data/storage/disk0
sudo create_media_dirs.sh /data/storage/disk0
elif [ $SystemType = "DesktopOnly" ]; then
msg "Desktop Only"
#Frontend_only cmds
# create media directory structure
sudo mkdir -p /data/storage/disk0
sudo create_media_dirs.sh /data/storage/disk0
touch ~/.config/lh_dontrunmythfrontend
fi
touch ~/.config/lh_configured
fi
}
function start_user_apps() {
if [ -f ~/.config/lh_startuserapps ]; then
msg "Starting User Apps..."
source ~/.config/lh_startuserapps
fi
}
function start_myth() {
STARTCMD="/usr/bin/mythfrontend --syslog local6 --quiet"
if [ ! -f ~/.config/lh_dontrunmythfrontend ]; then
msg "Starting MythFrontend..."
$STARTCMD 2>&1 &
fi
}
#-------MAIN-------
check_installer_user
#apply settings for all system types
applyUIsettings
first_configure
/usr/bin/enableIRWake.sh &
storage_scan
start_user_apps
start_myth
|