yggdrasil_ng/yggdrasil.sh

366 lines
9.4 KiB
Bash
Raw Normal View History

2017-12-27 13:54:15 +00:00
#!/bin/bash
#------------------------------------------------------------------------------#
# Yggdrasil NG #
# compatibility : Mint 18, Ubuntu 16.04, Elementary and other derivatives #
# author : Francois B. (Makotosan/Shakasan) #
# licence : GPLv3 #
2018-01-23 17:50:18 +00:00
# website : https://makotonoblog.be/ #
2017-12-27 13:54:15 +00:00
#------------------------------------------------------------------------------#
#
2017-12-30 22:08:45 +00:00
# include functions and vars from external files
2017-12-27 13:54:15 +00:00
#
dir=$(dirname $0)
2018-06-05 12:29:41 +00:00
source /opt/yggdrasil/vars.sh || exit 1
source /opt/yggdrasil/core_functions.sh || exit 1
source /opt/yggdrasil/tools_functions.sh || exit 1
OS=`lsb_release -d | awk -F':' '{print $2}' | awk -F'\t' '{print $2}'`
case $OS in
2018-05-30 07:09:12 +00:00
*"Ubuntu 16.04"* | *"Linux Mint 18"*)
2018-06-05 12:29:41 +00:00
source /opt/yggdrasil/repo_functions_ub1604.sh || exit 1
source /opt/yggdrasil/install_functions_ub1604.sh || exit 1
source /opt/yggdrasil/menus_functions_ub1604.sh || exit 1
;;
2018-05-30 07:09:12 +00:00
*"Ubuntu 18.04"* | *"Linux Mint 19"*)
2018-06-05 12:29:41 +00:00
source /opt/yggdrasil/repo_functions_ub1804.sh || exit 1
source /opt/yggdrasil/install_functions_ub1804.sh || exit 1
source /opt/yggdrasil/menus_functions_ub1804.sh || exit 1
;;
*)
printf "\n"
2018-05-29 11:02:06 +00:00
printf $BOLDROUGE"Linux distro not supported"$NORMAL
printf "\n\n"
;;
esac
2017-12-27 13:54:15 +00:00
#
2017-12-30 22:08:45 +00:00
# check if the script is running in root/sudo
2017-12-29 10:46:53 +00:00
# NEVER run the script as root or with sudo !!!!
2017-12-30 22:08:45 +00:00
#
2017-12-29 10:46:53 +00:00
if ! [ "$UID" -ne "0" ]; then
printf "\n"
2018-03-22 10:36:39 +00:00
printf $BOLDROUGE"Yggdrasil can't be run as root/sudo, please retry as normal user"$NORMAL
2017-12-29 10:46:53 +00:00
printf "\n\n"
exit
fi
2017-12-27 13:54:15 +00:00
2017-12-30 22:08:45 +00:00
#
2017-12-27 13:54:15 +00:00
# add a mark to the log file at every script run
2017-12-30 22:08:45 +00:00
#
2017-12-29 15:43:47 +00:00
echo "--[ Yggdrasil log ]--[ "$cDate" ]--[ "$cTime" ]-----------------------" >> $logFile
2017-12-27 13:54:15 +00:00
2017-12-30 22:08:45 +00:00
#-----------------------------------------------------------------------------#
# Headless Mode #
#-----------------------------------------------------------------------------#
# display logo in CLI mode
[[ $# -gt 0 ]] && dispLogo
2017-12-29 10:46:53 +00:00
#
# arguments/options management with getopts
2018-03-30 07:39:12 +00:00
2018-06-10 16:42:25 +00:00
while getopts ":h,v,f,c,u,a,d,q,s,t,n,w,p,k" option; do
2017-12-29 10:46:53 +00:00
case "$option" in
a) # install all apps
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-03-30 07:39:12 +00:00
msg "Installing Apps"
2018-06-12 11:39:46 +00:00
installAppsFromList base
installAppsFromList office
2017-12-30 21:47:59 +00:00
installBurningTools
2018-06-12 11:39:46 +00:00
installAppsFromList ebook
installAppsFromList games
installAppsFromList steam
installAppsFromList internet
2018-05-27 00:12:07 +00:00
installJava10
2018-06-12 11:39:46 +00:00
installAppsFromList utilities
installAppsFromList multimedia
installAppsFromList nettools
installAppsFromList wine
installAppsFromList cajaplugins
installAppsFromList nautilus
installAppsFromList thunar
installAppsFromList gimp
installAppsFromList pidgin
installAppsFromList rhythmbox
2018-03-30 07:39:12 +00:00
msg "Installing HW related"
2018-06-12 11:39:46 +00:00
installAppsFromList webcam
updateMicrocode
2018-03-30 07:39:12 +00:00
msg "Applying system customizations"
enableUFW
enableNumLockX
addScreenfetchBashrc
enableHistoryTS
installUnattendedUpgrades
2018-03-30 07:39:12 +00:00
msg "Installing external apps"
installViber
installFranz
2018-06-12 06:58:12 +00:00
installBoostnotes
2018-03-30 07:39:12 +00:00
installTeamViewer13
2018-05-27 13:18:46 +00:00
installXnViewMP
2018-03-24 16:24:42 +00:00
;;
f) # full install
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-03-30 07:39:12 +00:00
msg "Installing Apps"
2018-06-12 11:39:46 +00:00
installAppsFromList base
installAppsFromList office
installBurningTools
2018-06-12 11:39:46 +00:00
installAppsFromList ebook
installAppsFromList games
installAppsFromList steam
installAppsFromList internet
2018-05-27 00:12:07 +00:00
installJava10
2018-06-12 11:39:46 +00:00
installAppsFromList utilities
installAppsFromList multimedia
installAppsFromList nettools
installAppsFromList wine
installAppsFromList cajaplugins
installAppsFromList nautilus
installAppsFromList thunar
installAppsFromList gimp
installAppsFromList pidgin
installAppsFromList rhythmbox
2018-03-30 07:39:12 +00:00
msg "Installing HW related"
2018-06-12 11:39:46 +00:00
installAppsFromList webcam
updateMicrocode
2018-06-12 11:39:46 +00:00
installAppsFromList cardreader
2018-03-30 07:39:12 +00:00
msg "Applying system customizations"
enableUFW
enableNumLockX
addScreenfetchBashrc
enableHistoryTS
installUnattendedUpgrades
2018-03-30 07:39:12 +00:00
enableUnbound
msg "Installing additional themes/icons"
2018-06-12 11:39:46 +00:00
installAppsFromList icons
installAppsFromList gtkthemes
2018-03-30 07:39:12 +00:00
msg "Installing external apps"
installViber
installFranz
2018-06-12 06:58:12 +00:00
installBoostnotes
2018-03-30 07:39:12 +00:00
installTeamViewer13
2018-05-27 13:18:46 +00:00
installXnViewMP
2017-12-29 10:46:53 +00:00
;;
c) # install themes and icons
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-05-27 14:32:39 +00:00
msg "Installing Icons/Themes"
2018-06-12 11:39:46 +00:00
installAppsFromList icons
installAppsFromList gtkthemes
2017-12-29 10:46:53 +00:00
;;
2018-03-30 07:39:12 +00:00
w) # nitrogen
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-05-27 14:32:39 +00:00
msg "Installing Nitrogen"
2018-06-12 11:39:46 +00:00
installAppsFromList nitrogen
2018-03-30 07:39:12 +00:00
;;
d) # install Unbound DNS Cache
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-05-27 14:32:39 +00:00
msg "Installing Unbound"
installUnbound
;;
2018-03-30 07:39:12 +00:00
q) # cardreader
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-05-27 14:32:39 +00:00
msg "Installing Card Readers Apps"
2018-06-12 11:39:46 +00:00
installAppsFromList cardreader
;;
s) # solaar for logitech devices
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-05-27 14:32:39 +00:00
msg "Installing Solaar"
2018-06-12 11:39:46 +00:00
installAppsFromList solaar
;;
t) # tlp (laptop or low energy usage)
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-05-27 14:32:39 +00:00
msg "Installing TLP"
2018-06-12 11:39:46 +00:00
installAppsFromList tlp
;;
n) # latest nvidia driver (see menus if need older version)
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-06-12 11:39:46 +00:00
installAppsFromList nvidia-driver-396
;;
k)
2018-06-05 12:21:47 +00:00
if [ $ygginitCount = false ]; then
msg "Initializing"
yggInit
msg "Updating the system"
updateSystem
2018-06-05 12:21:47 +00:00
ygginitCount=true
fi
2018-05-27 14:32:39 +00:00
msg "Updating Kernel"
kernelUpdate
;;
2018-01-03 21:59:50 +00:00
u)
2018-05-27 14:32:39 +00:00
msg "Initializing"
2018-03-14 18:34:00 +00:00
yggInit
2018-05-27 14:32:39 +00:00
msg "Updating the system"
2018-01-03 21:59:50 +00:00
updateSystem
exit
;;
2018-03-30 07:39:12 +00:00
p)
toolAutoremove
exit
;;
2017-12-29 10:46:53 +00:00
h) # display help
usage
exit
;;
v) # display version number
printf "Yggdrasil version : $version\n"
exit
;;
:) # display error message in case of missing argument(s)
usage
printf "\nError : Option $OPTARG : missing argument\n"
exit 1
;;
\?) # display error message in case of invalid option
usage
printf "\nError : $OPTARG : invalid option\n"
exit 1
;;
esac
done
# if CLI mode, no need to run the menus...
[[ $# -gt 0 ]] && exit
2017-12-30 22:08:45 +00:00
#-----------------------------------------------------------------------------#
# Menu Mode #
#-----------------------------------------------------------------------------#
2017-12-29 10:46:53 +00:00
2018-03-22 10:14:26 +00:00
# show Yggdrasil logo
2017-12-30 21:12:24 +00:00
dispLogo
2017-12-29 10:46:53 +00:00
2018-03-22 10:14:26 +00:00
# show system informations
dispSysInfos
2017-12-27 13:54:15 +00:00
2017-12-28 18:27:44 +00:00
# Useless by itself, but is used to don't be annoyed later in the script
2017-12-27 13:54:15 +00:00
sudo echo
2018-03-14 18:39:12 +00:00
# init, check and install/update dependencies
2018-03-14 18:34:00 +00:00
yggInit
2017-12-27 13:54:15 +00:00
pressKey
# Apps dir created if necessary
mkdir -p /home/$myHomedir/Apps
2017-12-30 22:08:45 +00:00
#-----------------------------------------------------------------------------#
# Main menu #
#-----------------------------------------------------------------------------#
2017-12-27 13:54:15 +00:00
while true; do # main menu loop
mainMenuOptions=$(whiptail \
--title "Yggdrasil $version - Main Menu" \
--menu "This tool will help you to install all needed applications and cutomize your fresh install of Mint/Ubuntu/Elementary/..." \
25 80 16 \
"1" "System update" \
"2" "Applications" \
"3" "Applications (BETA)" \
"4" "Applications (Nightly)" \
"5" "Themes & Icons" \
"6" "Dev Apps" \
"7" "System Config" \
2018-06-08 23:05:02 +00:00
"8" "Hardware" \
"9" "System Tools" \
"10" "Reboot this computer" \
"11" "About Yggdrasil" \
"12" "Quit" 3>&1 1>&2 2>&3)
2017-12-27 13:54:15 +00:00
case $mainMenuOptions in
"1")
updateSystem
pressKey
;;
"2")
showAppInstallMenu
;;
"3")
2018-06-12 11:39:46 +00:00
installAppsFromListMenu beta
2017-12-27 13:54:15 +00:00
;;
"4")
2018-06-12 11:39:46 +00:00
installAppsFromListMenu nightly
2017-12-27 13:54:15 +00:00
;;
"5")
2017-12-27 13:54:15 +00:00
showThemesInstallMenu
;;
"6")
2017-12-27 13:54:15 +00:00
showDevInstallMenu
;;
"7")
2017-12-27 13:54:15 +00:00
showConfigMenu;
;;
"8")
2018-06-08 23:05:02 +00:00
showHardwareMenu
2017-12-27 13:54:15 +00:00
;;
"9")
2018-06-08 23:05:02 +00:00
showSysToolsMenu
2017-12-27 13:54:15 +00:00
;;
"10")
2018-06-08 23:05:02 +00:00
showRebootBoxMenu
2017-12-27 13:54:15 +00:00
;;
"11")
2018-06-08 23:05:02 +00:00
showAboutBoxMenu
;;
"12")
2017-12-27 13:54:15 +00:00
exit
;;
esac # main menu
done # end of main menu loop
clear
2018-05-29 11:02:06 +00:00
exit