1296 lines
46 KiB
Bash
1296 lines
46 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
clear
|
||
|
|
||
|
checkinternet() {
|
||
|
|
||
|
printf "\n"
|
||
|
echo "Looking for Internet Connection, please wait..."
|
||
|
sleep 1
|
||
|
|
||
|
destination="1.1.1.1"
|
||
|
num_attempts=2
|
||
|
|
||
|
# Check internet connection with ping
|
||
|
if ! ping -c "$num_attempts" -q "$destination" > /dev/null; then
|
||
|
|
||
|
printf "\n"
|
||
|
echo "-------------------------------------------"
|
||
|
echo "Your computer is not connected to internet, I can't go on"
|
||
|
printf "\n"
|
||
|
exit 0
|
||
|
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
installpkg() {
|
||
|
|
||
|
printf "\n"
|
||
|
echo "Looking for 'pkg', please wait..."
|
||
|
sleep 1
|
||
|
|
||
|
if [ ! -x /usr/local/sbin/pkg ]; then
|
||
|
|
||
|
# Check if pkg can be installed
|
||
|
if pkg ins -y 2>&1 | grep -q "error"; then
|
||
|
|
||
|
printf "\n"
|
||
|
echo "-------------------------------------------"
|
||
|
echo "I can't install pkg, please check your internet connection"
|
||
|
printf "\n"
|
||
|
exit 0
|
||
|
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
installbsddialog() {
|
||
|
|
||
|
printf "\n"
|
||
|
echo "Looking for 'bsddialog', please wait..."
|
||
|
sleep 1
|
||
|
|
||
|
if [ ! -x "/usr/local/bin/bsddialog" ]; then
|
||
|
|
||
|
if pkg ins -y bsddialog | grep -q "error"; then
|
||
|
|
||
|
printf "\n"
|
||
|
echo "-------------------------------------------"
|
||
|
echo "I can't install bsddialog, please check your internet connection"
|
||
|
printf "\n"
|
||
|
exit 0
|
||
|
|
||
|
fi
|
||
|
|
||
|
fi
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
# Welcome !
|
||
|
welcome() {
|
||
|
|
||
|
printf "\n"
|
||
|
echo "Everything seems OK, let's go !"
|
||
|
printf "\n"
|
||
|
sleep 1
|
||
|
|
||
|
bsddialog --msgbox "Welcome to this desktop installation script for FreeBSD!" 5 60
|
||
|
}
|
||
|
|
||
|
|
||
|
# System Update
|
||
|
update() {
|
||
|
bsddialog --yesno "Do you want to update your system before starting?" 5 54
|
||
|
close_inac=$?
|
||
|
|
||
|
if [ $close_inac -eq 0 ]; then
|
||
|
|
||
|
bsddialog --msgbox "Please review the available changes, then press 'q' to continue" 5 67
|
||
|
freebsd-update fetch
|
||
|
freebsd-update install
|
||
|
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
# User
|
||
|
user_for_desktop() {
|
||
|
bsddialog --yesno "Have you already created the user who will use the desktop?" 5 63
|
||
|
close_inac=$?
|
||
|
|
||
|
if [ $close_inac -eq 1 ]; then
|
||
|
|
||
|
i=0
|
||
|
while [ $i -lt 4 ]; do
|
||
|
|
||
|
user=$(bsddialog --inputbox "What username would you like to give to your user?\n (No spaces or special characters)" 9 54 2>&1 1>/dev/tty)
|
||
|
fullname=$(bsddialog --inputbox "Please enter his full name (don't leave empty)" 8 50 2>&1 1>/dev/tty)
|
||
|
|
||
|
#check if the user already exists or not
|
||
|
checkuser=$(getent passwd | grep "$user" | wc -l | tr -d ' ' | uniq)
|
||
|
if [ $checkuser -eq 1 ]; then
|
||
|
|
||
|
bsddialog --yesno " !WARNING!\n This user already exists\nDo you want to use it [Yes] or create another one [No]" 7 58
|
||
|
use_oranother=$?
|
||
|
|
||
|
if [ $use_oranother -eq 1 ]; then
|
||
|
|
||
|
i=$((i+1))
|
||
|
|
||
|
else
|
||
|
|
||
|
i=$((i+5))
|
||
|
|
||
|
fi
|
||
|
|
||
|
else
|
||
|
|
||
|
pw useradd "$user" -d "/home/$user" -m -c "$fullname"
|
||
|
|
||
|
clear
|
||
|
echo "--------------------------------------"
|
||
|
echo "Please assign a password to $user"
|
||
|
printf "\n"
|
||
|
|
||
|
passwd $user
|
||
|
|
||
|
i=$((i+5))
|
||
|
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
# Exit script if not able to create a user
|
||
|
if [ $i -eq 4 ]; then
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
|
||
|
else
|
||
|
|
||
|
j=0
|
||
|
while [ $j -lt 4 ]; do
|
||
|
# Username of the desktop environment user
|
||
|
user=$(bsddialog --inputbox "Please enter his username" 8 29 2>&1 1>/dev/tty)
|
||
|
|
||
|
#check if the user already exists or not
|
||
|
checkuser=$(getent passwd | grep "$user" | wc -l | tr -d ' ' | uniq)
|
||
|
if [ $checkuser -eq 0 ]; then
|
||
|
|
||
|
bsddialog --msg " !WARNING!\n This user does not exist\n Please try again" 7 58
|
||
|
|
||
|
j=$((j+1))
|
||
|
|
||
|
else
|
||
|
|
||
|
j=$((j+5))
|
||
|
fi
|
||
|
|
||
|
done
|
||
|
|
||
|
# Exit script if not able to choose a user
|
||
|
if [ $j -eq 4 ]; then
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
# DE choice:
|
||
|
kde-sddm() {
|
||
|
|
||
|
######## XORG ########
|
||
|
pkg info -e xorg || pkg ins -y xorg
|
||
|
|
||
|
######## SUDO ########
|
||
|
pkg info -e sudo || pkg ins -y sudo
|
||
|
|
||
|
######## DISPLAY MANAGER ########
|
||
|
pkg info -e sddm || pkg ins -y sddm
|
||
|
|
||
|
sysrc sddm_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## KDE ########
|
||
|
pkg info -e kde5 || pkg ins -y kde5
|
||
|
pkg info -e freebsd-8k-wallpapers-kde || pkg ins -y freebsd-8k-wallpapers-kde
|
||
|
pkg info -e kde-baseapps || pkg ins -y kde-baseapps
|
||
|
pkg info -e kde-dev-scripts || pkg ins -y kde-dev-scripts
|
||
|
pkg info -e kde-dev-utils || pkg ins -y kde-dev-utils
|
||
|
pkg info -e kde-thumbnailer-chm || pkg ins -y kde-thumbnailer-chm
|
||
|
pkg info -e kde-thumbnailer-epub || pkg ins -y kde-thumbnailer-epub
|
||
|
pkg info -e kde-thumbnailer-fb2 || pkg ins -y kde-thumbnailer-fb2
|
||
|
pkg info -e kde_poster || pkg ins -y kde_poster
|
||
|
pkg info -e kdeaccessibility || pkg ins -y kdeaccessibility
|
||
|
pkg info -e kdeadmin || pkg ins -y kdeadmin
|
||
|
pkg info -e kdebugsettings || pkg ins -y kdebugsettings
|
||
|
pkg info -e kdeconnect-kde || pkg ins -y kdeconnect-kde
|
||
|
pkg info -e kdegames || pkg ins -y kdegames
|
||
|
pkg info -e kdegraphics || pkg ins -y kdegraphics
|
||
|
pkg info -e kdegraphics-thumbnailers || pkg ins -y kdegraphics-thumbnailers
|
||
|
pkg info -e kdemultimedia || pkg ins -y kdemultimedia
|
||
|
pkg info -e kdevelop || pkg ins -y kdevelop
|
||
|
pkg info -e calligra || pkg ins -y calligra
|
||
|
pkg info -e kmymoney || pkg ins -y kmymoney
|
||
|
pkg info -e kdemultimedia-ffmpegthumbs || pkg ins -y kdemultimedia-ffmpegthumbs
|
||
|
pkg info -e kdenetwork || pkg ins -y kdenetwork
|
||
|
pkg info -e kdenetwork-filesharing || pkg ins -y kdenetwork-filesharing
|
||
|
pkg info -e kdenlive || pkg ins -y kdenlive
|
||
|
pkg info -e kdeutils || pkg ins -y kdeutils
|
||
|
pkg info -e libkdegames || pkg ins -y libkdegames
|
||
|
pkg info -e libkdepim || pkg ins -y libkdepim
|
||
|
pkg info -e libproxy-kde || pkg ins -y libproxy-kde
|
||
|
pkg info -e plasma5-kde-cli-tools || pkg ins -y plasma5-kde-cli-tools
|
||
|
pkg info -e plasma5-kde-gtk-config || pkg ins -y plasma5-kde-gtk-config
|
||
|
pkg info -e plasma5-kdecoration || pkg ins -y plasma5-kdecoration
|
||
|
pkg info -e plasma5-kdeplasma-addons || pkg ins -y plasma5-kdeplasma-addons
|
||
|
pkg info -e wallpapers-freebsd-kde || pkg ins -y wallpapers-freebsd-kde
|
||
|
pkg info -e dsbsu || pkg ins -y dsbsu
|
||
|
|
||
|
sysctl net.local.stream.recvspace=65536 > /dev/null 2>&1
|
||
|
sysctl net.local.stream.sendspace=65536 > /dev/null 2>&1
|
||
|
|
||
|
pw groupmod video -m "$user"
|
||
|
|
||
|
######## DBUS ########
|
||
|
sysrc dbus_enable=YES
|
||
|
|
||
|
######## FSTAB ########
|
||
|
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||
|
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||
|
fi
|
||
|
|
||
|
######## ~/.xinitrc ########
|
||
|
echo "exec ck-launch-session startplasma-x11" > /home/"$user"/.xinitrc
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
xfce-lightdm() {
|
||
|
|
||
|
######## XORG ########
|
||
|
pkg info -e xorg || pkg ins -y xorg
|
||
|
|
||
|
######## SUDO ########
|
||
|
pkg info -e sudo || pkg ins -y sudo
|
||
|
|
||
|
######## DISPLAY MANAGER ########
|
||
|
pkg info -e lightdm || pkg ins -y lightdm
|
||
|
pkg info -e lightdm-gtk-greeter || pkg ins -y lightdm-gtk-greeter
|
||
|
|
||
|
sysrc lightdm_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## XFCE ########
|
||
|
pkg info -e xfce || pkg ins -y xfce
|
||
|
pkg info -e gtk-xfce-engine || pkg ins -y gtk-xfce-engine
|
||
|
pkg info -e workrave-xfce || pkg ins -y workrave-xfce
|
||
|
pkg info -e xfce4-appmenu-plugin || pkg ins -y xfce4-appmenu-plugin
|
||
|
pkg info -e xfce4-battery-plugin || pkg ins -y xfce4-battery-plugin
|
||
|
pkg info -e xfce4-bsdcpufreq-plugin || pkg ins -y xfce4-bsdcpufreq-plugin
|
||
|
pkg info -e xfce4-calculator-plugin || pkg ins -y xfce4-calculator-plugin
|
||
|
pkg info -e xfce4-clipman-plugin || pkg ins -y xfce4-clipman-plugin
|
||
|
pkg info -e xfce4-cpugraph-plugin || pkg ins -y xfce4-cpugraph-plugin
|
||
|
pkg info -e xfce4-dashboard || pkg ins -y xfce4-dashboard
|
||
|
pkg info -e xfce4-datetime-plugin || pkg ins -y xfce4-datetime-plugin
|
||
|
pkg info -e xfce4-dev-tools || pkg ins -y xfce4-dev-tools
|
||
|
pkg info -e xfce4-dict-plugin || pkg ins -y xfce4-dict-plugin
|
||
|
pkg info -e xfce4-diskperf-plugin || pkg ins -y xfce4-diskperf-plugin
|
||
|
pkg info -e xfce4-docklike-plugin || pkg ins -y xfce4-docklike-plugin
|
||
|
pkg info -e xfce4-fsguard-plugin || pkg ins -y xfce4-fsguard-plugin
|
||
|
pkg info -e xfce4-generic-slider || pkg ins -y xfce4-generic-slider
|
||
|
pkg info -e xfce4-genmon-plugin || pkg ins -y xfce4-genmon-plugin
|
||
|
pkg info -e xfce4-goodies || pkg ins -y xfce4-goodies
|
||
|
pkg info -e xfce4-mixer || pkg ins -y xfce4-mixer
|
||
|
pkg info -e xfce4-mixer-full || pkg ins -y xfce4-mixer-full
|
||
|
pkg info -e xfce4-mpc-plugin || pkg ins -y xfce4-mpc-plugin
|
||
|
pkg info -e xfce4-panel-profiles || pkg ins -y xfce4-panel-profiles
|
||
|
pkg info -e xfce4-places-plugin || pkg ins -y xfce4-places-plugin
|
||
|
pkg info -e xfce4-pulseaudio-plugin || pkg ins -y xfce4-pulseaudio-plugin
|
||
|
pkg info -e xfce4-volumed-pulse || pkg ins -y xfce4-volumed-pulse
|
||
|
pkg info -e xfce4-whiskermenu-plugin || pkg ins -y xfce4-whiskermenu-plugin
|
||
|
pkg info -e xfce4-windowck-plugin || pkg ins -y xfce4-windowck-plugin
|
||
|
|
||
|
######## DBUS ########
|
||
|
sysrc dbus_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## FSTAB ########
|
||
|
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||
|
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||
|
fi
|
||
|
|
||
|
######## ~/.xinitrc ########
|
||
|
cp /usr/local/etc/xdg/xfce4/xinitrc /home/"$user"/.xinitrc
|
||
|
|
||
|
}
|
||
|
|
||
|
mate-lightdm() {
|
||
|
|
||
|
######## XORG ########
|
||
|
pkg info -e xorg || pkg ins -y xorg
|
||
|
|
||
|
######## SUDO ########
|
||
|
pkg info -e sudo || pkg ins -y sudo
|
||
|
|
||
|
######## DISPLAY MANAGER ########
|
||
|
pkg info -e lightdm || pkg ins -y lightdm
|
||
|
pkg info -e lightdm-gtk-greeter || pkg ins -y lightdm-gtk-greeter
|
||
|
|
||
|
sysrc lightdm_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## MATE ########
|
||
|
pkg info -e libmatekbd || pkg ins -y libmatekbd
|
||
|
pkg info -e libmatemixer || pkg ins -y libmatemixer
|
||
|
pkg info -e libmateweather || pkg ins -y libmateweather
|
||
|
pkg info -e libshumate || pkg ins -y libshumate
|
||
|
pkg info -e mate || pkg ins -y mate
|
||
|
pkg info -e mate-applet-appmenu || pkg ins -y mate-applet-appmenu
|
||
|
pkg info -e mate-applets || pkg ins -y mate-applets
|
||
|
pkg info -e mate-backgrounds || pkg ins -y mate-backgrounds
|
||
|
pkg info -e mate-base || pkg ins -y mate-base
|
||
|
pkg info -e mate-calc || pkg ins -y mate-calc
|
||
|
pkg info -e mate-common || pkg ins -y mate-common
|
||
|
pkg info -e mate-control-center || pkg ins -y mate-control-center
|
||
|
pkg info -e mate-desktop || pkg ins -y mate-desktop
|
||
|
pkg info -e mate-dock-applet || pkg ins -y mate-dock-applet
|
||
|
pkg info -e mate-icon-theme || pkg ins -y mate-icon-theme
|
||
|
pkg info -e mate-icon-theme-faenza || pkg ins -y mate-icon-theme-faenza
|
||
|
pkg info -e mate-indicator-applet || pkg ins -y mate-indicator-applet
|
||
|
pkg info -e mate-media || pkg ins -y mate-media
|
||
|
pkg info -e mate-menus || pkg ins -y mate-menus
|
||
|
pkg info -e mate-notification-daemon || pkg ins -y mate-notification-daemon
|
||
|
pkg info -e mate-pam-helper || pkg ins -y mate-pam-helper
|
||
|
pkg info -e mate-panel || pkg ins -y mate-panel
|
||
|
pkg info -e mate-polkit || pkg ins -y mate-polkit
|
||
|
pkg info -e mate-power-manager || pkg ins -y mate-power-manager
|
||
|
pkg info -e mate-screensaver || pkg ins -y mate-screensaver
|
||
|
pkg info -e mate-session-manager || pkg ins -y mate-session-manager
|
||
|
pkg info -e mate-settings-daemon || pkg ins -y mate-settings-daemon
|
||
|
pkg info -e mate-system-monitor || pkg ins -y mate-system-monitor
|
||
|
pkg info -e mate-terminal || pkg ins -y mate-terminal
|
||
|
pkg info -e mate-themes || pkg ins -y mate-themes
|
||
|
pkg info -e mate-user-guide || pkg ins -y mate-user-guide
|
||
|
pkg info -e mate-utils || pkg ins -y mate-utils
|
||
|
pkg info -e materia-gtk-theme || pkg ins -y materia-gtk-theme
|
||
|
|
||
|
######## DBUS ########
|
||
|
sysrc dbus_enable="YES" > /dev/null 2>&1
|
||
|
|
||
|
######## FSTAB ########
|
||
|
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||
|
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||
|
fi
|
||
|
|
||
|
######## ~/.xinitrc ########
|
||
|
echo "exec ck-launch-session mate-session" > /home/"$user"/.xinitrc
|
||
|
}
|
||
|
|
||
|
cinnamon-lightdm() {
|
||
|
######## XORG ########
|
||
|
pkg info -e xorg || pkg ins -y xorg
|
||
|
|
||
|
######## SUDO ########
|
||
|
pkg info -e sudo || pkg ins -y sudo
|
||
|
|
||
|
######## DISPLAY MANAGER ########
|
||
|
pkg info -e lightdm || pkg ins -y lightdm
|
||
|
pkg info -e lightdm-gtk-greeter || pkg ins -y lightdm-gtk-greeter
|
||
|
|
||
|
sysrc lightdm_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## CINNAMON ########
|
||
|
pkg info -e cinnamon || pkg ins -y cinnamon
|
||
|
pkg info -e cinnamon-control-center || pkg ins -y cinnamon-control-center
|
||
|
pkg info -e cinnamon-desktop || pkg ins -y cinnamon-desktop
|
||
|
pkg info -e cinnamon-menus || pkg ins -y cinnamon-menus
|
||
|
pkg info -e cinnamon-screensaver || pkg ins -y cinnamon-screensaver
|
||
|
pkg info -e cinnamon-session || pkg ins -y cinnamon-session
|
||
|
pkg info -e cinnamon-settings-daemon || pkg ins -y cinnamon-settings-daemon
|
||
|
pkg info -e cinnamon-translations || pkg ins -y cinnamon-translations
|
||
|
|
||
|
######## DBUS ########
|
||
|
sysrc dbus_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## FSTAB ########
|
||
|
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||
|
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||
|
fi
|
||
|
|
||
|
######## ~/.xinitrc ########
|
||
|
echo "exec ck-launch-session cinnamon-session" > /home/"$user"/.xinitrc
|
||
|
}
|
||
|
|
||
|
gnome-gdm() {
|
||
|
######## XORG ########
|
||
|
pkg info -e xorg || pkg ins -y xorg
|
||
|
|
||
|
######## SUDO ########
|
||
|
pkg info -e sudo || pkg ins -y sudo
|
||
|
|
||
|
######## DISPLAY MANAGER ########
|
||
|
pkg info -e gdm || pkg ins -y gdm
|
||
|
|
||
|
sysrc gdm_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## GDM ########
|
||
|
pkg info -e chrome-gnome-shell || pkg ins -y chrome-gnome-shell
|
||
|
pkg info -e gnome || pkg ins -y gnome
|
||
|
pkg info -e gnome-2048 || pkg ins -y gnome-2048
|
||
|
pkg info -e gnome-autoar || pkg ins -y gnome-autoar
|
||
|
pkg info -e gnome-backgrounds || pkg ins -y gnome-backgrounds
|
||
|
pkg info -e gnome-builder || pkg ins -y gnome-builder
|
||
|
pkg info -e gnome-calculator || pkg ins -y gnome-calculator
|
||
|
pkg info -e gnome-calendar || pkg ins -y gnome-calendar
|
||
|
pkg info -e gnome-characters || pkg ins -y gnome-characters
|
||
|
pkg info -e gnome-chess || pkg ins -y gnome-chess
|
||
|
pkg info -e gnome-clipboard-daemon || pkg ins -y gnome-clipboard-daemon
|
||
|
pkg info -e gnome-clocks || pkg ins -y gnome-clocks
|
||
|
pkg info -e gnome-color-manager || pkg ins -y gnome-color-manager
|
||
|
pkg info -e gnome-common || pkg ins -y gnome-common
|
||
|
pkg info -e gnome-connections || pkg ins -y gnome-connections
|
||
|
pkg info -e gnome-console || pkg ins -y gnome-console
|
||
|
pkg info -e gnome-contacts || pkg ins -y gnome-contacts
|
||
|
pkg info -e gnome-control-center || pkg ins -y gnome-control-center
|
||
|
pkg info -e gnome-desktop || pkg ins -y gnome-desktop
|
||
|
pkg info -e gnome-devel-docs || pkg ins -y gnome-devel-docs
|
||
|
pkg info -e gnome-dictionary || pkg ins -y gnome-dictionary
|
||
|
pkg info -e gnome-font-viewer || pkg ins -y gnome-font-viewer
|
||
|
pkg info -e gnome-games || pkg ins -y gnome-games
|
||
|
pkg info -e gnome-getting-started-docs || pkg ins -y gnome-getting-started-docs
|
||
|
pkg info -e gnome-icon-theme || pkg ins -y gnome-icon-theme
|
||
|
pkg info -e gnome-icon-theme-extras || pkg ins -y gnome-icon-theme-extras
|
||
|
pkg info -e gnome-icon-theme-symbolic || pkg ins -y gnome-icon-theme-symbolic
|
||
|
pkg info -e gnome-icons || pkg ins -y gnome-icons
|
||
|
pkg info -e gnome-icons-elementary || pkg ins -y gnome-icons-elementary
|
||
|
pkg info -e gnome-icons-faenza || pkg ins -y gnome-icons-faenza
|
||
|
pkg info -e gnome-icons-luv || pkg ins -y gnome-icons-luv
|
||
|
pkg info -e gnome-initial-setup || pkg ins -y gnome-initial-setup
|
||
|
pkg info -e gnome-keyring || pkg ins -y gnome-keyring
|
||
|
pkg info -e gnome-keyring-sharp || pkg ins -y gnome-keyring-sharp
|
||
|
pkg info -e gnome-klotski || pkg ins -y gnome-klotski
|
||
|
pkg info -e gnome-latex || pkg ins -y gnome-latex
|
||
|
pkg info -e gnome-lite || pkg ins -y gnome-lite
|
||
|
pkg info -e gnome-mahjongg || pkg ins -y gnome-mahjongg
|
||
|
pkg info -e gnome-maps || pkg ins -y gnome-maps
|
||
|
pkg info -e gnome-menus || pkg ins -y gnome-menus
|
||
|
pkg info -e gnome-metronome || pkg ins -y gnome-metronome
|
||
|
pkg info -e gnome-mime-data || pkg ins -y gnome-mime-data
|
||
|
pkg info -e gnome-mines || pkg ins -y gnome-mines
|
||
|
pkg info -e gnome-mplayer || pkg ins -y gnome-mplayer
|
||
|
pkg info -e gnome-music || pkg ins -y gnome-music
|
||
|
pkg info -e gnome-nettool || pkg ins -y gnome-nettool
|
||
|
pkg info -e gnome-nibbles || pkg ins -y gnome-nibbles
|
||
|
pkg info -e gnome-online-accounts || pkg ins -y gnome-online-accounts
|
||
|
pkg info -e gnome-online-miners || pkg ins -y gnome-online-miners
|
||
|
pkg info -e gnome-photos || pkg ins -y gnome-photos
|
||
|
pkg info -e gnome-pie || pkg ins -y gnome-pie
|
||
|
pkg info -e gnome-planner || pkg ins -y gnome-planner
|
||
|
pkg info -e gnome-podcasts || pkg ins -y gnome-podcasts
|
||
|
pkg info -e gnome-pomodoro || pkg ins -y gnome-pomodoro
|
||
|
pkg info -e gnome-power-manager || pkg ins -y gnome-power-manager
|
||
|
pkg info -e gnome-pty-helper || pkg ins -y gnome-pty-helper
|
||
|
pkg info -e gnome-robots || pkg ins -y gnome-robots
|
||
|
pkg info -e gnome-screenshot || pkg ins -y gnome-screenshot
|
||
|
pkg info -e gnome-session || pkg ins -y gnome-session
|
||
|
pkg info -e gnome-settings-daemon || pkg ins -y gnome-settings-daemon
|
||
|
pkg info -e gnome-shell || pkg ins -y gnome-shell
|
||
|
pkg info -e gnome-shell-extension-audio-output-switcher || pkg ins -y gnome-shell-extension-audio-output-switcher
|
||
|
pkg info -e gnome-shell-extension-coverflow || pkg ins -y gnome-shell-extension-coverflow
|
||
|
pkg info -e gnome-shell-extension-dashtodock || pkg ins -y gnome-shell-extension-dashtodock
|
||
|
pkg info -e gnome-shell-extension-dashtopanel || pkg ins -y gnome-shell-extension-dashtopanel
|
||
|
pkg info -e gnome-shell-extension-filesmenu || pkg ins -y gnome-shell-extension-filesmenu
|
||
|
pkg info -e gnome-shell-extension-hidetopbar || pkg ins -y gnome-shell-extension-hidetopbar
|
||
|
pkg info -e gnome-shell-extension-lockkeys || pkg ins -y gnome-shell-extension-lockkeys
|
||
|
pkg info -e gnome-shell-extension-mediaplayer || pkg ins -y gnome-shell-extension-mediaplayer
|
||
|
pkg info -e gnome-shell-extension-openweather || pkg ins -y gnome-shell-extension-openweather
|
||
|
pkg info -e gnome-shell-extension-panel-osd || pkg ins -y gnome-shell-extension-panel-osd
|
||
|
pkg info -e gnome-shell-extension-recent-items || pkg ins -y gnome-shell-extension-recent-items
|
||
|
pkg info -e gnome-shell-extension-trash || pkg ins -y gnome-shell-extension-trash
|
||
|
pkg info -e gnome-shell-extension-weather || pkg ins -y gnome-shell-extension-weather
|
||
|
pkg info -e gnome-shell-extension-windowoverlay-icons || pkg ins -y gnome-shell-extension-windowoverlay-icons
|
||
|
pkg info -e gnome-shell-extensions || pkg ins -y gnome-shell-extensions
|
||
|
pkg info -e gnome-shell-extra-extensions || pkg ins -y gnome-shell-extra-extensions
|
||
|
pkg info -e gnome-sound-recorder || pkg ins -y gnome-sound-recorder
|
||
|
pkg info -e gnome-ssh-askpass || pkg ins -y gnome-ssh-askpass
|
||
|
pkg info -e gnome-sudoku || pkg ins -y gnome-sudoku
|
||
|
pkg info -e gnome-system-monitor || pkg ins -y gnome-system-monitor
|
||
|
pkg info -e gnome-terminal || pkg ins -y gnome-terminal
|
||
|
pkg info -e gnome-tetravex || pkg ins -y gnome-tetravex
|
||
|
pkg info -e gnome-text-editor || pkg ins -y gnome-text-editor
|
||
|
pkg info -e gnome-themes || pkg ins -y gnome-themes
|
||
|
pkg info -e gnome-themes-extra || pkg ins -y gnome-themes-extra
|
||
|
pkg info -e gnome-todo || pkg ins -y gnome-todo
|
||
|
pkg info -e gnome-tweaks || pkg ins -y gnome-tweaks
|
||
|
pkg info -e gnome-user-docs || pkg ins -y gnome-user-docs
|
||
|
pkg info -e gnome-user-share || pkg ins -y gnome-user-share
|
||
|
pkg info -e gnome-utils || pkg ins -y gnome-utils
|
||
|
pkg info -e gnome-video-effects || pkg ins -y gnome-video-effects
|
||
|
pkg info -e gnome-weather || pkg ins -y gnome-weather
|
||
|
pkg info -e gnome_subr || pkg ins -y gnome_subr
|
||
|
pkg info -e guile-gnome-platform-full || pkg ins -y guile-gnome-platform-full
|
||
|
pkg info -e guile-gnome-platform-lite || pkg ins -y guile-gnome-platform-lite
|
||
|
pkg info -e libgnome-games-support || pkg ins -y libgnome-games-support
|
||
|
pkg info -e libgnome-keyring || pkg ins -y libgnome-keyring
|
||
|
pkg info -e libgnomecanvas || pkg ins -y libgnomecanvas
|
||
|
pkg info -e libgnomecanvasmm || pkg ins -y libgnomecanvasmm
|
||
|
pkg info -e libgnomekbd || pkg ins -y libgnomekbd
|
||
|
pkg info -e libproxy-gnome3 || pkg ins -y libproxy-gnome3
|
||
|
pkg info -e pinentry-gnome || pkg ins -y pinentry-gnome
|
||
|
pkg info -e polkit-gnome || pkg ins -y polkit-gnome
|
||
|
pkg info -e qgnomeplatform || pkg ins -y qgnomeplatform
|
||
|
pkg info -e rubygem-gnome || pkg ins -y rubygem-gnome
|
||
|
pkg info -e subversion-gnome-keyring || pkg ins -y subversion-gnome-keyring
|
||
|
pkg info -e xdg-desktop-portal-gnome || pkg ins -y xdg-desktop-portal-gnome
|
||
|
|
||
|
######## DBUS ########
|
||
|
sysrc dbus_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## FSTAB ########
|
||
|
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||
|
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||
|
fi
|
||
|
|
||
|
######## ~/.xinitrc ########
|
||
|
echo "exec gnome-session" > /home/"$user"/.xinitrc
|
||
|
}
|
||
|
|
||
|
lxqt-sddm() {
|
||
|
|
||
|
######## XORG ########
|
||
|
pkg info -e xorg || pkg ins -y xorg
|
||
|
|
||
|
######## SUDO ########
|
||
|
pkg info -e sudo || pkg ins -y sudo
|
||
|
|
||
|
######## DISPLAY MANAGER ########
|
||
|
pkg info -e sddm || pkg ins -y sddm
|
||
|
|
||
|
sysrc sddm_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## LXQT ########
|
||
|
pkg info -e liblxqt || pkg ins -y liblxqt
|
||
|
pkg info -e lxqt || pkg ins -y lxqt
|
||
|
pkg info -e lxqt-about || pkg ins -y lxqt-about
|
||
|
pkg info -e lxqt-admin || pkg ins -y lxqt-admin
|
||
|
pkg info -e lxqt-archiver || pkg ins -y lxqt-archiver
|
||
|
pkg info -e lxqt-build-tools || pkg ins -y lxqt-build-tools
|
||
|
pkg info -e lxqt-config || pkg ins -y lxqt-config
|
||
|
pkg info -e lxqt-globalkeys || pkg ins -y lxqt-globalkeys
|
||
|
pkg info -e lxqt-notificationd || pkg ins -y lxqt-notificationd
|
||
|
pkg info -e lxqt-openssh-askpass || pkg ins -y lxqt-openssh-askpass
|
||
|
pkg info -e lxqt-panel || pkg ins -y lxqt-panel
|
||
|
pkg info -e lxqt-policykit || pkg ins -y lxqt-policykit
|
||
|
pkg info -e lxqt-powermanagement || pkg ins -y lxqt-powermanagement
|
||
|
pkg info -e lxqt-qtplugin || pkg ins -y lxqt-qtplugin
|
||
|
pkg info -e lxqt-runner || pkg ins -y lxqt-runner
|
||
|
pkg info -e lxqt-session || pkg ins -y lxqt-session
|
||
|
pkg info -e lxqt-sudo || pkg ins -y lxqt-sudo
|
||
|
pkg info -e lxqt-themes || pkg ins -y lxqt-themes
|
||
|
|
||
|
######## DBUS ########
|
||
|
sysrc dbus_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
######## FSTAB ########
|
||
|
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||
|
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||
|
fi
|
||
|
|
||
|
######## ~/.xinitrc ########
|
||
|
echo "exec ck-launch-session startlxqt" > /home/"$user"/.xinitrc
|
||
|
}
|
||
|
|
||
|
|
||
|
desktop_selection_menu() {
|
||
|
DE=$(bsddialog --clear \
|
||
|
--backtitle "Desktop Environnment" \
|
||
|
--title "Desktop Environnment" \
|
||
|
--menu "Select your Desktop Environnment:" \
|
||
|
14 70 10 \
|
||
|
1 "KDE (with sddm)" \
|
||
|
2 "XFCE4 (with lightdm)" \
|
||
|
3 "MATE (with lightdm)" \
|
||
|
4 "CINNAMON (with lightdm)" \
|
||
|
5 "GNOME (with gdm)" \
|
||
|
6 "LXQT (with sddm)" \
|
||
|
7 "(none)" \
|
||
|
3>&1 1>&2 2>&3)
|
||
|
|
||
|
case $DE in
|
||
|
1) kde-sddm ;;
|
||
|
2) xfce-lightdm ;;
|
||
|
3) mate-lightdm ;;
|
||
|
4) cinnamon-lightdm ;;
|
||
|
5) gnome-gdm ;;
|
||
|
6) lxqt-sddm ;;
|
||
|
esac
|
||
|
}
|
||
|
|
||
|
|
||
|
# Which GPU ?
|
||
|
intel-irisxe() {
|
||
|
|
||
|
cat <<EOF > /usr/local/etc/X11/xorg.conf.d/00-scfb.conf
|
||
|
Section "Device"
|
||
|
Identifier "Card0"
|
||
|
Driver "scfb"
|
||
|
BusID "$intelirisxe_pci_location"
|
||
|
EndSection
|
||
|
EOF
|
||
|
|
||
|
}
|
||
|
|
||
|
vbox() {
|
||
|
|
||
|
cat <<EOF > /usr/local/etc/X11/xorg.conf.d/00-vbox.conf
|
||
|
# This configuration file is useless.
|
||
|
# It only permits autodetection.
|
||
|
EOF
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
intel-older() {
|
||
|
clear
|
||
|
pkg info -e xf86-video-intel || pkg ins -y xf86-video-intel
|
||
|
pkg info -e drm-kmod || pkg ins -y drm-kmod
|
||
|
sysrc kld_list="i915kms" > /dev/null 2>&1
|
||
|
|
||
|
cat <<EOF > /usr/local/etc/X11/xorg.conf.d/00-intel.conf
|
||
|
Section "Device"
|
||
|
Identifier "Intel Graphics"
|
||
|
Driver "intel"
|
||
|
Option "AccelMethod" "sna"
|
||
|
Option "TearFree" "true"
|
||
|
Option "DRI" "3"
|
||
|
Option "Backlight" "intel_backlight"
|
||
|
BusID "$intel_pci_location"
|
||
|
EndSection
|
||
|
EOF
|
||
|
|
||
|
}
|
||
|
|
||
|
nvidia-gpu() {
|
||
|
clear
|
||
|
pkg ins -y nvidia-driver
|
||
|
sysrc kld_list="nvidia-modeset" > /dev/null 2>&1
|
||
|
|
||
|
# Automatically detect and BusID for NVIDIA graphics :
|
||
|
pciconf_output=$(pciconf -lv | grep -B3 'display' | grep -B2 'NVIDIA')
|
||
|
pci_location=$(echo "$pciconf_output" | sed -nE 's/^vgapci[0-9]+@pci([0-9]+:[0-9]+:[0-9]+:[0-9]+).*/PCI:\1/p' | sed 's/0://')
|
||
|
|
||
|
|
||
|
cat <<EOF > /usr/local/etc/X11/xorg.conf.d/00-nvidia.conf
|
||
|
Section "Device"
|
||
|
Identifier "Device0"
|
||
|
Driver "nvidia"
|
||
|
VendorName "NVIDIA Corporation"
|
||
|
BusID "$nvidia_pci_location"
|
||
|
EndSection
|
||
|
EOF
|
||
|
|
||
|
}
|
||
|
|
||
|
amd-cpu_amd-gpu() {
|
||
|
clear
|
||
|
pkg info -e xf86-video-amdgpu || pkg ins -y xf86-video-amdgpu
|
||
|
sysrc kld_list="amdgpu" > /dev/null 2>&1
|
||
|
}
|
||
|
|
||
|
|
||
|
graphics_selection_menu() {
|
||
|
GPU=$(bsddialog --clear \
|
||
|
--backtitle "GPU" \
|
||
|
--title "GPU Menu" \
|
||
|
--menu "Select your graphics:" \
|
||
|
12 70 10 \
|
||
|
1 "Intel Iris Xe" \
|
||
|
2 "Intel (before Iris Xe)" \
|
||
|
3 "Nvidia" \
|
||
|
4 "AMD" \
|
||
|
5 "Virtual Machine" \
|
||
|
3>&1 1>&2 2>&3)
|
||
|
|
||
|
case $GPU in
|
||
|
1) intel-irisxe ;;
|
||
|
2) intel-older ;;
|
||
|
3) nvidia-gpu ;;
|
||
|
4) amd-gpu;;
|
||
|
esac
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
automatic_graphics_detection() {
|
||
|
|
||
|
# Check if there is an already existing configuration file :
|
||
|
if [ -e /usr/local/etc/X11/xorg.conf.d/00-scfb.conf ] || \
|
||
|
[ -e /usr/local/etc/X11/xorg.conf.d/00-nvidia.conf ] || \
|
||
|
[ -e /usr/local/etc/X11/xorg.conf.d/00-intel.conf ] || \
|
||
|
[ -e /usr/local/etc/X11/xorg.conf.d/00-vbox.conf ]; then
|
||
|
|
||
|
bsddialog --yesno "I have detected a previous graphics configuration file\n Do you want to use it [Yes] or erase it [No]?" 6 58
|
||
|
existingconf_ornot=$?
|
||
|
|
||
|
|
||
|
if [ $existingconf_ornot -eq 0 ]; then
|
||
|
|
||
|
useconf="1"
|
||
|
|
||
|
else
|
||
|
|
||
|
rm /usr/local/etc/X11/xorg.conf.d/00-scfb.conf 2>&1
|
||
|
rm /usr/local/etc/X11/xorg.conf.d/00-nvidia.conf 2>&1
|
||
|
rm /usr/local/etc/X11/xorg.conf.d/00-intel.conf 2>&1
|
||
|
rm /usr/local/etc/X11/xorg.conf.d/00-vbox.conf 2>&1
|
||
|
|
||
|
|
||
|
fi
|
||
|
|
||
|
|
||
|
|
||
|
fi
|
||
|
|
||
|
|
||
|
if [ "$useconf" != "1" ]; then
|
||
|
|
||
|
# VIRTUALBOX
|
||
|
vbox_pciconf_output=$(pciconf -lv | grep -B3 'display' | grep -B2 "'SVGA II Adapter")
|
||
|
vbox_pci_location=$(echo "$vbox_pciconf_output" | sed -nE 's/^vgapci[0-9]+@pci([0-9]+:[0-9]+:[0-9]+:[0-9]+).*/PCI:\1/p' | sed 's/0://')
|
||
|
|
||
|
# INTEL IRIS Xe
|
||
|
intelirisxe_pciconf_output=$(pciconf -lv | grep -B3 'display' | grep -B2 'Iris Xe')
|
||
|
intelirisxe_pci_location=$(echo "$intelirisxe_pciconf_output" | sed -nE 's/^vgapci[0-9]+@pci([0-9]+:[0-9]+:[0-9]+:[0-9]+).*/PCI:\1/p' | sed 's/0://')
|
||
|
|
||
|
# INTEL (before Iris Xe)
|
||
|
intel_pciconf_output=$(pciconf -lv | grep -B3 'display' | grep -B2 "HD Graphics")
|
||
|
intel_pci_location=$(echo "$intel_pciconf_output" | sed -nE 's/^vgapci[0-9]+@pci([0-9]+:[0-9]+:[0-9]+:[0-9]+).*/PCI:\1/p' | sed 's/0://')
|
||
|
|
||
|
# NVIDIA
|
||
|
nvidia_pciconf_output=$(pciconf -lv | grep -B3 'display' | grep -B2 'NVIDIA')
|
||
|
nvidia_pci_location=$(echo "$nvidia_pciconf_output" | sed -nE 's/^vgapci[0-9]+@pci([0-9]+:[0-9]+:[0-9]+:[0-9]+).*/PCI:\1/p' | sed 's/0://')
|
||
|
|
||
|
|
||
|
# If 2 graphics are detected (Intel Iris Xe and NVIDIA), please choose between
|
||
|
if [ ! -z "$intelirisxe_pciconf_output" ] && \
|
||
|
[ ! -z "$nvidia_pciconf_output" ]; then
|
||
|
|
||
|
bsddialog --yesno "We have detected both Intel Iris Xe and NVIDIA graphics\n Use Intel Iris Xe [Yes] or NVIDIA [No]?" 6 59
|
||
|
intel_ornvidia=$?
|
||
|
|
||
|
if [ $intel_ornvidia -eq 0 ]; then
|
||
|
|
||
|
intel-irisxe
|
||
|
|
||
|
else
|
||
|
nvidiagpu
|
||
|
|
||
|
fi
|
||
|
|
||
|
fi
|
||
|
|
||
|
# If 2 graphics are detected (Intel and NVIDIA), please choose between
|
||
|
if [ ! -z "$intel_pciconf_output" ] && \
|
||
|
[ ! -z "$nvidia_pciconf_output" ]; then
|
||
|
|
||
|
bsddialog --yesno "We have detected both Intel and NVIDIA graphics\n Use Intel [Yes] or NVIDIA [No]?" 6 51
|
||
|
intel_ornvidia=$?
|
||
|
|
||
|
if [ $intel_ornvidia -eq 0 ]; then
|
||
|
|
||
|
intel-older
|
||
|
|
||
|
else
|
||
|
nvidiagpu
|
||
|
|
||
|
fi
|
||
|
|
||
|
fi
|
||
|
|
||
|
# If VirtualBox is detected, ask to accept or not :
|
||
|
if [ ! -z "$vbox_pciconf_output" ]; then
|
||
|
vbox
|
||
|
fi
|
||
|
|
||
|
|
||
|
# If an Intel Iris Xe is detected, ask to accept or not :
|
||
|
if [ ! -z "$intelirisxe_pciconf_output" ]; then
|
||
|
intel-irisxe
|
||
|
fi
|
||
|
|
||
|
|
||
|
# If an Intel is detected, ask to accept or not :
|
||
|
if [ ! -z "$intel_pciconf_output" ]; then
|
||
|
intel-older
|
||
|
fi
|
||
|
|
||
|
|
||
|
# If an NVIDIA is detected, ask to accept or not :
|
||
|
if [ ! -z "$nvidia_pciconf_output" ]; then
|
||
|
nvidia-gpu
|
||
|
fi
|
||
|
|
||
|
|
||
|
# If no choice has been done, go to graphics_selection_menu :
|
||
|
if [ ! -e /usr/local/etc/X11/xorg.conf.d/00-scfb.conf ] && \
|
||
|
[ ! -e /usr/local/etc/X11/xorg.conf.d/00-nvidia.conf ] && \
|
||
|
[ ! -e /usr/local/etc/X11/xorg.conf.d/00-intel.conf ] && \
|
||
|
[ ! -e /usr/local/etc/X11/xorg.conf.d/00-vbox.conf ]; then
|
||
|
|
||
|
graphics_selection_menu
|
||
|
|
||
|
fi
|
||
|
|
||
|
|
||
|
fi
|
||
|
|
||
|
|
||
|
|
||
|
# Check if there is an already existing configuration file :
|
||
|
if [ ! -e /usr/local/etc/X11/xorg.conf.d/00-scfb.conf ] && \
|
||
|
[ ! -e /usr/local/etc/X11/xorg.conf.d/00-nvidia.conf ] && \
|
||
|
[ ! -e /usr/local/etc/X11/xorg.conf.d/00-intel.conf ] && \
|
||
|
[ ! -e /usr/local/etc/X11/xorg.conf.d/00-vbox.conf ]; then
|
||
|
|
||
|
graphics_selection_menu
|
||
|
fi
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
programs_selection_menu() {
|
||
|
# Install usual programs
|
||
|
TMPFILE=$(mktemp)
|
||
|
|
||
|
bsddialog --backtitle "Select programs" \
|
||
|
--title "Installing applications" \
|
||
|
--checklist "Select programs:" 30 70 20 \
|
||
|
"firefox " "Firefox web browser" off \
|
||
|
"ungoogled-chromium " "Chromium web browser without Google" off \
|
||
|
"chrome-linux " "Linux compat chrome for Netflix" off \
|
||
|
"brave-linux " "Linux compat brave" off \
|
||
|
"edge-linux " "Linux compat edge" off \
|
||
|
"opera-linux " "Linux compat opera" off \
|
||
|
"vivaldi-linux " "Linux compat vivaldi" off \
|
||
|
"qutebrowser " "Qutebrowser vim-like web browser" off \
|
||
|
"tor-browser " "Tor Browser for FreeBSD" off \
|
||
|
"midori " "Midori web browser" off \
|
||
|
"thunderbird " "Thunderbird Mail Client" off \
|
||
|
"claws-mail " "Claws-Mail Client" off \
|
||
|
"putty " "Putty term" off \
|
||
|
"remmina " "Remote Desktop Viewer" off \
|
||
|
"gtk-mixer " "Sound controller" off \
|
||
|
"keepassxc " "KeePassXC password manager" off \
|
||
|
"codeblocks " "Code Editor" off \
|
||
|
"vscode " "Code Editor" off \
|
||
|
"vlc " "VLC multimedia player" off \
|
||
|
"handbrake " "HandBrake video encoder" off \
|
||
|
"ffmpeg " "Video library" off \
|
||
|
"audacity " "Audacity audio editor" off \
|
||
|
"gimp " "GIMP image editor" off \
|
||
|
"nomacs " "easy image viewer/editor" off \
|
||
|
"ristretto " "Ristretto image viewer" off \
|
||
|
"liferea " "RSS agregator" off \
|
||
|
"youtube-dl " "YouTube video downloader" off \
|
||
|
"libreoffice " "LibreOffice office suite" off \
|
||
|
"abiword " "Text editor" off \
|
||
|
"qpdfview " "PDF document viewer" off \
|
||
|
"filezilla " "FileZilla FTP client" off \
|
||
|
"rclone " "Rclone file transfer tool" off \
|
||
|
"rclone-browser " "GUI rclone" off \
|
||
|
"musescore " "Sheet music editor" off \
|
||
|
"httrack " "web-site sucker" off \
|
||
|
"hexchat " "HexChat IRC client" off \
|
||
|
"pidgin " "Pidgin messaging client" off \
|
||
|
"psi " "PSI messaging client" off \
|
||
|
"wireshark " "Wireshark network protocol analyzer" off \
|
||
|
"nmap " "Nmap network discovery tool" off \
|
||
|
"tor " "Tor decentralized anonymous network" off \
|
||
|
"openvpn " "OpenVPN Virtual Private Network setup" off 2>$TMPFILE
|
||
|
|
||
|
choices=$(sed 's/"//g' < $TMPFILE | tr ' ' '\n')
|
||
|
|
||
|
# Install the selected programs.
|
||
|
for choice in $choices; do
|
||
|
|
||
|
case $choice in
|
||
|
"chrome-linux")
|
||
|
|
||
|
pkg info -e wget || pkg ins -y wget
|
||
|
pkg info -e git || pkg ins -y git
|
||
|
|
||
|
|
||
|
if [ ! -e /tmp/linux-browser-installer* ]; then
|
||
|
git clone https://github.com/mrclksr/linux-browser-installer.git
|
||
|
fi
|
||
|
|
||
|
/tmp/linux-browser-installer/linux-browser-installer install chrome
|
||
|
|
||
|
;;
|
||
|
"brave-linux")
|
||
|
|
||
|
pkg info -e wget || pkg ins -y wget
|
||
|
pkg info -e git || pkg ins -y git
|
||
|
|
||
|
if [ ! -e /tmp/linux-browser-installer* ]; then
|
||
|
git clone https://github.com/mrclksr/linux-browser-installer.git
|
||
|
fi
|
||
|
|
||
|
/tmp/linux-browser-installer/linux-browser-installer install brave
|
||
|
|
||
|
;;
|
||
|
"edge-linux")
|
||
|
|
||
|
pkg info -e wget || pkg ins -y wget
|
||
|
pkg info -e git || pkg ins -y git
|
||
|
|
||
|
if [ ! -e /tmp/linux-browser-installer* ]; then
|
||
|
git clone https://github.com/mrclksr/linux-browser-installer.git
|
||
|
fi
|
||
|
|
||
|
/tmp/linux-browser-installer/linux-browser-installer install edge
|
||
|
|
||
|
;;
|
||
|
"opera-linux")
|
||
|
|
||
|
pkg info -e wget || pkg ins -y wget
|
||
|
pkg info -e git || pkg ins -y git
|
||
|
|
||
|
if [ ! -e /tmp/linux-browser-installer* ]; then
|
||
|
git clone https://github.com/mrclksr/linux-browser-installer.git
|
||
|
fi
|
||
|
|
||
|
/tmp/linux-browser-installer/linux-browser-installer install opera
|
||
|
;;
|
||
|
"vivaldi-linux")
|
||
|
|
||
|
pkg info -e wget || pkg ins -y wget
|
||
|
pkg info -e git || pkg ins -y git
|
||
|
|
||
|
if [ ! -e /tmp/linux-browser-installer* ]; then
|
||
|
git clone https://github.com/mrclksr/linux-browser-installer.git
|
||
|
fi
|
||
|
|
||
|
/tmp/linux-browser-installer/linux-browser-installer install vivaldi
|
||
|
|
||
|
rm -r /tmp/linux-browser-installer
|
||
|
|
||
|
;;
|
||
|
"pidgin")
|
||
|
pkg info -e pidgin || pkg ins -y pidgin
|
||
|
pkg info -e pidgin-bot-sentry || pkg ins -y pidgin-bot-sentry
|
||
|
pkg info -e pidgin-encryption || pkg ins -y pidgin-encryption
|
||
|
pkg info -e pidgin-fetion || pkg ins -y pidgin-fetion
|
||
|
pkg info -e pidgin-hotkeys || pkg ins -y pidgin-hotkeys
|
||
|
pkg info -e pidgin-icyque || pkg ins -y pidgin-icyque
|
||
|
pkg info -e pidgin-latex || pkg ins -y pidgin-latex
|
||
|
pkg info -e pidgin-libnotify || pkg ins -y pidgin-libnotify
|
||
|
pkg info -e pidgin-manualsize || pkg ins -y pidgin-manualsize
|
||
|
pkg info -e pidgin-otr || pkg ins -y pidgin-otr
|
||
|
pkg info -e pidgin-sipe || pkg ins -y pidgin-sipe
|
||
|
pkg info -e pidgin-skypeweb || pkg ins -y pidgin-skypeweb
|
||
|
pkg info -e pidgin-twitter || pkg ins -y pidgin-twitter
|
||
|
pkg info -e pidgin-window_merge || pkg ins -y pidgin-window_merge
|
||
|
;;
|
||
|
*)
|
||
|
pkg info -e "$choice" || pkg ins -y "$choice"
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
done
|
||
|
|
||
|
rm -f "$TMPFILE"
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
# usual tools bundle
|
||
|
usual_tools_installation() {
|
||
|
|
||
|
pkg info -e wget || pkg ins -y wget
|
||
|
pkg info -e w3m || pkg ins -y w3m
|
||
|
pkg info -e lynx || pkg ins -y lynx
|
||
|
pkg info -e rsync || pkg ins -y rsync
|
||
|
pkg info -e emacs || pkg ins -y emacs
|
||
|
pkg info -e nano || pkg ins -y nano
|
||
|
pkg info -e sshpass || pkg ins -y sshpass
|
||
|
pkg info -e fuse || pkg ins -y fuse
|
||
|
pkg info -e fusefs-ntfs || pkg ins -y fusefs-ntfs
|
||
|
pkg info -e fusefs-exfat || pkg ins -y fusefs-exfat
|
||
|
sysrc -f /boot/loader.conf fusefs_load=YES > /dev/null 2>&1
|
||
|
pkg info -e automount || pkg ins -y automount
|
||
|
pkg info -e megatools || pkg ins -y megatools
|
||
|
pkg info -e dvd+rw-tools || pkg ins -y dvd+rw-tools
|
||
|
pkg info -e cdrtools || pkg ins -y cdrtools
|
||
|
pkg info -e webcamd || pkg ins -y webcamd && sysrc webcamd_enable="YES" && service devd restart && pw groupmod webcamd -m "$user" && sysrc -f /boot/loader.conf cuse_load=YES > /dev/null 2>&1
|
||
|
pkg info -e cups || pkg ins -y cups
|
||
|
pkg info -e cups-filters || pkg ins -y cups-filters
|
||
|
pkg info -e system-config-printer || pkg ins -y system-config-printer
|
||
|
sysrc cupsd_enable="YES" > /dev/null 2>&1
|
||
|
pkg info -e pwcview || pkg ins -y pwcview
|
||
|
pkg info -e wifimgr || pkg ins -y wifimgr
|
||
|
pkg info -e networkmgr || pkg ins -y networkmgr
|
||
|
pkg info -e zip || pkg ins -y zip
|
||
|
pkg info -e unzip || pkg ins -y unzip
|
||
|
pkg info -e bzip2 || pkg ins -y bzip2
|
||
|
pkg info -e bzip3 || pkg ins -y bzip3
|
||
|
pkg info -e btop || pkg ins -y btop
|
||
|
pkg info -e htop || pkg ins -y htop
|
||
|
pkg info -e nmap || pkg ins -y nmap
|
||
|
pkg info -e bind-tools || pkg ins -y bind-tools
|
||
|
pkg info -e git || pkg ins -y git
|
||
|
pkg info -e rdesktop || pkg ins -y rdesktop
|
||
|
pkg info -e xrdp || (pkg ins -y xrdp && sysrc xrdp_enable="NO" && sysrc xrdp_sesman_enable="NO" 2>&1)
|
||
|
pkg info -e tree || pkg ins -y tree
|
||
|
pkg info -e gh || pkg ins -y gh
|
||
|
pkg info -e hw-probe || pkg ins -y hw-probe
|
||
|
pkg info -e inxi || pkg ins -y inxi
|
||
|
pkg info -e python3 || pkg ins -y python3
|
||
|
pkg info -e py39-qt5 || pkg ins -y py39-qt5
|
||
|
pkg info -e bhyve-firmware || pkg ins -y bhyve-firmware
|
||
|
|
||
|
# Installation of ipfwGUI :
|
||
|
[ ! -x /usr/local/bin/ipfwGUI ] && cd /tmp && git clone https://github.com/bsdlme/ipfwGUI.git && cd ipfwGUI && make install clean
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
# Install a hypervisor
|
||
|
hypervisor_selection() {
|
||
|
TMPFILE=$(mktemp)
|
||
|
|
||
|
bsddialog --backtitle "Select programs" \
|
||
|
--title "Install a hypervisor" \
|
||
|
--checklist "Select programs:" 9 70 20 \
|
||
|
"virtualbox-ose " "VirtualBox" off \
|
||
|
"BVCP " "GUI Bhyve manager" off 2>$TMPFILE
|
||
|
|
||
|
# Read the user choices from the temporary file.
|
||
|
choices=$(sed 's/"//g' < $TMPFILE | tr ' ' '\n')
|
||
|
|
||
|
|
||
|
# Install the selected programs.
|
||
|
for choice in $choices; do
|
||
|
|
||
|
if [ "$choice" = "virtualbox-ose" ]; then
|
||
|
pkg info -e virtualbox-ose || pkg ins -y virtualbox-ose
|
||
|
pkg info -e virtualbox-ose-additions || pkg ins -y virtualbox-ose-additions
|
||
|
|
||
|
sysrc vboxguest_enable=YES > /dev/null 2>&1
|
||
|
sysrc vboxservice_enable=YES > /dev/null 2>&1
|
||
|
sysrc vboxnet_enable=YES > /dev/null 2>&1
|
||
|
sysrc -f /boot/loader.conf vboxdrv_load=YES > /dev/null 2>&1
|
||
|
|
||
|
if ! grep -q "^\[system=10\]$" /etc/devfs.rules; then
|
||
|
echo "[system=10]" >> /etc/devfs.rules
|
||
|
fi
|
||
|
|
||
|
if ! grep -q "^add path 'usb/\*' mode 0660 group operator$" /etc/devfs.rules; then
|
||
|
echo "add path 'usb/*' mode 0660 group operator" >> /etc/devfs.rules
|
||
|
fi
|
||
|
|
||
|
sysrc devfs_system_ruleset="system" > /dev/null 2>&1
|
||
|
pw groupmod vboxusers -m "$user"
|
||
|
pw groupmod operator -m "$user"
|
||
|
sysrc hald_enable=YES > /dev/null 2>&1
|
||
|
|
||
|
if ! grep -q "^perm cd\* 0660$" /etc/devfs.conf; then
|
||
|
echo "perm cd* 0660" >> /etc/devfs.conf
|
||
|
fi
|
||
|
|
||
|
if ! grep -q "^perm xpt0 0660$" /etc/devfs.conf; then
|
||
|
echo "perm xpt0 0660" >> /etc/devfs.conf
|
||
|
fi
|
||
|
|
||
|
if ! grep -q "^perm pass\* 0660$" /etc/devfs.conf; then
|
||
|
echo "perm pass* 0660" >> /etc/devfs.conf
|
||
|
fi
|
||
|
|
||
|
if ! grep -q "^own vboxnetctl root:vboxusers$" /etc/devfs.conf; then
|
||
|
echo "own vboxnetctl root:vboxusers" >> /etc/devfs.conf
|
||
|
fi
|
||
|
|
||
|
if ! grep -q "^perm vboxnetctl 0660$" /etc/devfs.conf; then
|
||
|
echo "perm vboxnetctl 0660" >> /etc/devfs.conf
|
||
|
fi
|
||
|
|
||
|
|
||
|
chown root:vboxusers /dev/vboxnetctl
|
||
|
chmod 0660 /dev/vboxnetctl
|
||
|
|
||
|
fi
|
||
|
if [ "$choice" = "BVCP" ]; then
|
||
|
fetch https://bhyve.npulse.net/release.tgz -o /tmp
|
||
|
cd /tmp ; tar xvzf release.tgz ; cd bhyve-webadmin*
|
||
|
./install.sh
|
||
|
printf "\n"
|
||
|
echo "------------------------------------------------------"
|
||
|
echo "Please note the admin password and then press [ENTER] to continue"
|
||
|
echo "------------------------------------------------------"
|
||
|
read ENTER
|
||
|
fi
|
||
|
|
||
|
done
|
||
|
|
||
|
rm -f "$TMPFILE"
|
||
|
}
|
||
|
|
||
|
|
||
|
# Add $user to wheel and operator group, add wheel group to sudo permissions
|
||
|
make_administrator() {
|
||
|
pw groupmod wheel -m "$user"
|
||
|
pw groupmod operator -m "$user"
|
||
|
sed -i '' "s/# %wheel/ %wheel/" /usr/local/etc/sudoers
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
# Change locale
|
||
|
locale_selection_menu() {
|
||
|
|
||
|
# Utiliser bsddialog pour afficher une liste avec des boutons radio
|
||
|
selected_choice=$(bsddialog --title "Select Locale" --radiolist "Please choose:" 19 50 15 \
|
||
|
"af_ZA.UTF-8" "South Africa" off \
|
||
|
"am_ET.UTF-8" "Ethiopia" off \
|
||
|
"ar_AE.UTF-8" "United Arab Emirates" off \
|
||
|
"ar_EG.UTF-8" "Egypt" off \
|
||
|
"ar_JO.UTF-8" "Jordan" off \
|
||
|
"ar_MA.UTF-8" "Morocco" off \
|
||
|
"ar_QA.UTF-8" "Qatar" off \
|
||
|
"ar_SA.UTF-8" "Saudi Arabia" off \
|
||
|
"be_BY.UTF-8" "Belarus" off \
|
||
|
"bg_BG.UTF-8" "Bulgaria" off \
|
||
|
"ca_AD.UTF-8" "Andorra" off \
|
||
|
"ca_ES.UTF-8" "Spain" off \
|
||
|
"ca_FR.UTF-8" "France" off \
|
||
|
"ca_IT.UTF-8" "Italy" off \
|
||
|
"cs_CZ.UTF-8" "Czech Republic" off \
|
||
|
"da_DK.UTF-8" "Denmark" off \
|
||
|
"de_AT.UTF-8" "Austria" off \
|
||
|
"de_CH.UTF-8" "Switzerland" off \
|
||
|
"de_DE.UTF-8" "Germany" off \
|
||
|
"el_GR.UTF-8" "Greece" off \
|
||
|
"en_AU.UTF-8" "Australia" off \
|
||
|
"en_CA.UTF-8" "Canada" off \
|
||
|
"en_GB.UTF-8" "United Kingdom" off \
|
||
|
"en_HK.UTF-8" "Hong Kong" off \
|
||
|
"en_IE.UTF-8" "Ireland" off \
|
||
|
"en_NZ.UTF-8" "New Zealand" off \
|
||
|
"en_PH.UTF-8" "Philippines" off \
|
||
|
"en_SG.UTF-8" "Singapore" off \
|
||
|
"en_US.UTF-8" "United States" off \
|
||
|
"en_ZA.UTF-8" "South Africa" off \
|
||
|
"es_AR.UTF-8" "Argentina" off \
|
||
|
"es_CR.UTF-8" "Costa Rica" off \
|
||
|
"es_ES.UTF-8" "Spain" off \
|
||
|
"es_MX.UTF-8" "Mexico" off \
|
||
|
"et_EE.UTF-8" "Estonia" off \
|
||
|
"eu_ES.UTF-8" "Spain" off \
|
||
|
"fa_AF.UTF-8" "Afghanistan" off \
|
||
|
"fa_IR.UTF-8" "Iran" off \
|
||
|
"fi_FI.UTF-8" "Finland" off \
|
||
|
"fr_BE.UTF-8" "Belgium" off \
|
||
|
"fr_CA.UTF-8" "Canada" off \
|
||
|
"fr_CH.UTF-8" "Switzerland" off \
|
||
|
"fr_FR.UTF-8" "France" off \
|
||
|
"ga_IE.UTF-8" "Ireland" off \
|
||
|
"he_IL.UTF-8" "Israel" off \
|
||
|
"hi_IN.UTF-8" "India" off \
|
||
|
"hr_HR.UTF-8" "Croatia" off \
|
||
|
"hu_HU.UTF-8" "Hungary" off \
|
||
|
"hy_AM.UTF-8" "Armenia" off \
|
||
|
"is_IS.UTF-8" "Iceland" off \
|
||
|
"it_CH.UTF-8" "Switzerland" off \
|
||
|
"it_IT.UTF-8" "Italy" off \
|
||
|
"ja_JP.UTF-8" "Japan" off \
|
||
|
"kk_KZ.UTF-8" "Kazakhstan" off \
|
||
|
"ko_KR.UTF-8" "South Korea" off \
|
||
|
"lt_LT.UTF-8" "Lithuania" off \
|
||
|
"lv_LV.UTF-8" "Latvia" off \
|
||
|
"mn_MN.UTF-8" "Mongolia" off \
|
||
|
"nb_NO.UTF-8" "Norway" off \
|
||
|
"nl_BE.UTF-8" "Belgium" off \
|
||
|
"nl_NL.UTF-8" "Netherlands" off \
|
||
|
"nn_NO.UTF-8" "Norway" off \
|
||
|
"pl_PL.UTF-8" "Poland" off \
|
||
|
"pt_BR.UTF-8" "Brazil" off \
|
||
|
"pt_PT.UTF-8" "Portugal" off \
|
||
|
"ro_RO.UTF-8" "Romania" off \
|
||
|
"ru_RU.UTF-8" "Russia" off \
|
||
|
"se_FI.UTF-8" "Finland" off \
|
||
|
"se_NO.UTF-8" "Norway" off \
|
||
|
"sk_SK.UTF-8" "Slovakia" off \
|
||
|
"sl_SI.UTF-8" "Slovenia" off \
|
||
|
"sr_RS.UTF-8" "Serbia" off \
|
||
|
"sr_RS.UTF-8@latin" "Serbia" off \
|
||
|
"sv_FI.UTF-8" "Finland" off \
|
||
|
"sv_SE.UTF-8" "Sweden" off \
|
||
|
"tr_TR.UTF-8" "Turkey" off \
|
||
|
"uk_UA.UTF-8" "Ukraine" off \
|
||
|
"zh_CN.UTF-8" "China" off \
|
||
|
"zh_HK.UTF-8" "Hong Kong" off \
|
||
|
"zh_TW.UTF-8" "Taiwan" off 3>&1 1>&2 2>&3)
|
||
|
|
||
|
|
||
|
# Check and Add locale choice to /home/"$user"/.profile
|
||
|
if ! grep -q "export LANG=\"$selected_choice\"" /home/"$user"/.profile; then
|
||
|
{
|
||
|
echo -e "\n# CUSTOM LOCALE"
|
||
|
echo "export LANG=\"$selected_choice\""
|
||
|
} >> /home/"$user"/.profile
|
||
|
fi
|
||
|
|
||
|
if ! grep -q "export LC_CTYPE=\"$selected_choice\"" /home/"$user"/.profile; then
|
||
|
echo "export LC_CTYPE=\"$selected_choice\"" >> /home/"$user"/.profile
|
||
|
fi
|
||
|
|
||
|
# Change the locale for gdm (if installed)
|
||
|
if [ -e /usr/local/etc/gdm/locale.conf ]; then
|
||
|
sed -i '' "s/en_US.UTF-8/$selected_choice/" /usr/local/etc/gdm/locale.conf
|
||
|
fi
|
||
|
|
||
|
# Change Keyboard map
|
||
|
kbd=$(echo "$selected_choice" | sed 's/^\(..\).*$/\1/')
|
||
|
|
||
|
if [ ! -e /usr/local/etc/X11/xorg.conf.d/keyboard.conf ]; then
|
||
|
|
||
|
cat <<EOF > /usr/local/etc/X11/xorg.conf.d/keyboard.conf
|
||
|
Section "InputClass"
|
||
|
Identifier "KeyboardDefaults"
|
||
|
MatchIsKeyboard "on"
|
||
|
Option "XkbLayout" "$kbd"
|
||
|
EndSection
|
||
|
EOF
|
||
|
|
||
|
fi
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
build_locatedb() {
|
||
|
|
||
|
# updatedb :
|
||
|
if [ "$(sysrc -n weekly_locate_enable)" = "YES" ]; then
|
||
|
echo "The weekly locate update is already enabled in rc.conf. The script 310.locate will not run."
|
||
|
else
|
||
|
/etc/periodic/weekly/310.locate
|
||
|
fi
|
||
|
|
||
|
}
|
||
|
|
||
|
# reboot now
|
||
|
reboot_now() {
|
||
|
bsddialog --yesno "Thank you for using this script!\n The installation is finished\n Do you want to reboot now?" 7 36
|
||
|
close_inac=$?
|
||
|
|
||
|
if [ $close_inac -eq 0 ]; then
|
||
|
|
||
|
reboot
|
||
|
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
################################################################################################################
|
||
|
|
||
|
|
||
|
checkinternet
|
||
|
installpkg
|
||
|
installbsddialog
|
||
|
welcome
|
||
|
update
|
||
|
user_for_desktop
|
||
|
desktop_selection_menu
|
||
|
automatic_graphics_detection # at the very moment, only Intel 'Iris Xe', Intel 'HD/UHD Graphics' and 'NVIDIA' (for 535 version) are automatically detected, choice must be asked manually for others
|
||
|
programs_selection_menu
|
||
|
usual_tools_installation
|
||
|
hypervisor_selection
|
||
|
make_administrator
|
||
|
locale_selection_menu
|
||
|
build_locatedb
|
||
|
reboot_now
|