Upload files to "/"
This commit is contained in:
parent
8445f9ab72
commit
8163dda1ca
963
testing_freebsd-desktop.sh
Normal file
963
testing_freebsd-desktop.sh
Normal file
@ -0,0 +1,963 @@
|
||||
#!/bin/sh
|
||||
|
||||
clear
|
||||
|
||||
checkinternet() {
|
||||
local url="https://www.freebsd.org/"
|
||||
|
||||
if fetch -q -o /dev/null "$url"; then
|
||||
echo "Looking for Internet Connection, please wait..."
|
||||
else
|
||||
echo "Your computer is not connected to the internet, I can't go on."
|
||||
exit 1
|
||||
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
|
||||
echo "I can't install pkg, please check your internet connection"
|
||||
printf "\n"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Welcome !
|
||||
welcome() {
|
||||
echo "Everything seems OK, let's go !"
|
||||
bsddialog --msgbox "Welcome to this desktop installation script for FreeBSD!" 5 60
|
||||
}
|
||||
|
||||
|
||||
# System Update
|
||||
update() {
|
||||
if bsddialog --yesno "Do you want to update your system before starting?" 5 54; 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() {
|
||||
if bsddialog --yesno "Have you already created the user who will use the desktop?" 5 63; then
|
||||
for j in $(seq 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
|
||||
if ! getent passwd "$user" >/dev/null; then
|
||||
bsddialog --msg " !WARNING!\n This user does not exist\n Please try again" 7 58
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Exit script if not able to choose a user
|
||||
if [ $j -eq 4 ]; then
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
for i in $(seq 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
|
||||
if getent passwd "$user" >/dev/null; then
|
||||
if bsddialog --yesno " !WARNING!\n This user already exists\nDo you want to use it [Yes] or create another one [No]" 7 58; then
|
||||
break
|
||||
fi
|
||||
else
|
||||
pw useradd "$user" -d "/home/$user" -m -c "$fullname"
|
||||
clear
|
||||
echo "--------------------------------------"
|
||||
echo "Please assign a password to $user"
|
||||
printf "\n"
|
||||
passwd $user
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Exit script if not able to create a user
|
||||
if [ $i -eq 4 ]; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# DE choice:
|
||||
kde-sddm() {
|
||||
pkg_list="xorg sudo sddm kde5 freebsd-8k-wallpapers-kde kde-baseapps kde-dev-scripts
|
||||
kde-dev-utils kde-thumbnailer-chm kde-thumbnailer-epub kde-thumbnailer-fb2
|
||||
kde_poster kdeaccessibility kdeadmin kdebugsettings kdeconnect-kde kdegames
|
||||
kdegraphics kdegraphics-thumbnailers kdemultimedia kdevelop calligra kmymoney
|
||||
kdemultimedia-ffmpegthumbs kdenetwork kdenetwork-filesharing kdenlive kdeutils
|
||||
libkdegames libkdepim libproxy-kde plasma5-kde-cli-tools plasma5-kde-gtk-config
|
||||
plasma5-kdecoration plasma5-kdeplasma-addons wallpapers-freebsd-kde dsbsu"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
|
||||
sysrc sddm_enable=YES dbus_enable=YES
|
||||
|
||||
sysctl net.local.stream.recvspace=65536 net.local.stream.sendspace=65536 > /dev/null 2>&1
|
||||
pw groupmod video -m "$user"
|
||||
|
||||
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||||
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||||
fi
|
||||
|
||||
echo "exec ck-launch-session startplasma-x11" > /home/"$user"/.xinitrc
|
||||
}
|
||||
|
||||
xfce-lightdm() {
|
||||
pkg_list="xorg sudo lightdm lightdm-gtk-greeter xfce gtk-xfce-engine workrave-xfce
|
||||
xfce4-appmenu-plugin xfce4-battery-plugin xfce4-bsdcpufreq-plugin
|
||||
xfce4-calculator-plugin xfce4-clipman-plugin xfce4-cpugraph-plugin
|
||||
xfce4-dashboard xfce4-datetime-plugin xfce4-dev-tools xfce4-dict-plugin
|
||||
xfce4-diskperf-plugin xfce4-docklike-plugin xfce4-fsguard-plugin
|
||||
xfce4-generic-slider xfce4-genmon-plugin xfce4-goodies xfce4-mixer
|
||||
xfce4-mpc-plugin xfce4-panel-profiles xfce4-places-plugin
|
||||
xfce4-pulseaudio-plugin xfce4-volumed-pulse xfce4-whiskermenu-plugin
|
||||
xfce4-windowck-plugin"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
|
||||
sysrc lightdm_enable=YES dbus_enable=YES
|
||||
|
||||
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||||
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||||
fi
|
||||
|
||||
cp /usr/local/etc/xdg/xfce4/xinitrc /home/"$user"/.xinitrc
|
||||
}
|
||||
|
||||
mate-lightdm() {
|
||||
pkg_list="xorg sudo lightdm lightdm-gtk-greeter libmatekbd libmatemixer libmateweather
|
||||
libshumate mate mate-applet-appmenu mate-applets mate-backgrounds mate-base mate-calc
|
||||
mate-common mate-control-center mate-desktop mate-dock-applet mate-icon-theme
|
||||
mate-icon-theme-faenza mate-indicator-applet mate-media mate-menus mate-notification-daemon
|
||||
mate-pam-helper mate-panel mate-polkit mate-power-manager mate-screensaver
|
||||
mate-session-manager mate-settings-daemon mate-system-monitor mate-terminal
|
||||
mate-themes mate-user-guide mate-utils materia-gtk-theme"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
|
||||
sysrc lightdm_enable=YES dbus_enable=YES
|
||||
|
||||
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||||
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||||
fi
|
||||
|
||||
echo "exec ck-launch-session mate-session" > /home/"$user"/.xinitrc
|
||||
}
|
||||
|
||||
cinnamon-lightdm() {
|
||||
pkg_list="xorg sudo lightdm lightdm-gtk-greeter cinnamon cinnamon-control-center
|
||||
cinnamon-desktop cinnamon-menus cinnamon-screensaver cinnamon-session
|
||||
cinnamon-settings-daemon cinnamon-translations"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
|
||||
sysrc lightdm_enable=YES dbus_enable=YES
|
||||
|
||||
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||||
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||||
fi
|
||||
|
||||
echo "exec ck-launch-session cinnamon-session" > /home/"$user"/.xinitrc
|
||||
}
|
||||
|
||||
gnome-gdm() {
|
||||
pkg_list="xorg sudo gdm chrome-gnome-shell gnome gnome-2048 gnome-autoar gnome-backgrounds
|
||||
gnome-builder gnome-calculator gnome-calendar gnome-characters gnome-chess
|
||||
gnome-clipboard-daemon gnome-clocks gnome-color-manager gnome-common gnome-connections
|
||||
gnome-console gnome-contacts gnome-control-center gnome-desktop gnome-devel-docs
|
||||
gnome-dictionary gnome-font-viewer gnome-games gnome-getting-started-docs gnome-icon-theme
|
||||
gnome-icon-theme-extras gnome-icon-theme-symbolic gnome-icons gnome-icons-elementary
|
||||
gnome-icons-faenza gnome-icons-luv gnome-initial-setup gnome-keyring gnome-keyring-sharp
|
||||
gnome-klotski gnome-latex gnome-lite gnome-mahjongg gnome-maps gnome-menus gnome-metronome
|
||||
gnome-mime-data gnome-mines gnome-mplayer gnome-music gnome-nettool gnome-nibbles
|
||||
gnome-online-accounts gnome-online-miners gnome-photos gnome-pie gnome-planner
|
||||
gnome-podcasts gnome-pomodoro gnome-power-manager gnome-pty-helper gnome-robots
|
||||
gnome-screenshot gnome-session gnome-settings-daemon gnome-shell
|
||||
gnome-shell-extension-audio-output-switcher gnome-shell-extension-coverflow
|
||||
gnome-shell-extension-dashtodock gnome-shell-extension-dashtopanel
|
||||
gnome-shell-extension-filesmenu gnome-shell-extension-hidetopbar
|
||||
gnome-shell-extension-lockkeys gnome-shell-extension-mediaplayer
|
||||
gnome-shell-extension-openweather gnome-shell-extension-panel-osd
|
||||
gnome-shell-extension-recent-items gnome-shell-extension-trash
|
||||
gnome-shell-extension-weather gnome-shell-extension-windowoverlay-icons
|
||||
gnome-shell-extensions gnome-shell-extra-extensions gnome-sound-recorder
|
||||
gnome-ssh-askpass gnome-sudoku gnome-system-monitor gnome-terminal gnome-tetravex
|
||||
gnome-text-editor gnome-themes gnome-themes-extra gnome-todo gnome-tweaks
|
||||
gnome-user-docs gnome-user-share gnome-utils gnome-video-effects gnome-weather
|
||||
gnome_subr guile-gnome-platform-full guile-gnome-platform-lite libgnome-games-support
|
||||
libgnome-keyring libgnomecanvas libgnomecanvasmm libgnomekbd libproxy-gnome3
|
||||
pinentry-gnome polkit-gnome qgnomeplatform rubygem-gnome subversion-gnome-keyring
|
||||
xdg-desktop-portal-gnome"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
|
||||
sysrc gdm_enable=YES dbus_enable=YES
|
||||
|
||||
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||||
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||||
fi
|
||||
|
||||
echo "exec gnome-session" > /home/"$user"/.xinitrc
|
||||
}
|
||||
|
||||
lxqt-sddm() {
|
||||
pkg_list="xorg sudo sddm liblxqt lxqt lxqt-about lxqt-admin lxqt-archiver
|
||||
lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass
|
||||
lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner
|
||||
lxqt-session lxqt-sudo lxqt-themes"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
|
||||
sysrc sddm_enable=YES dbus_enable=YES
|
||||
|
||||
if ! grep -q "proc /proc procfs rw 0 0" /etc/fstab; then
|
||||
echo "proc /proc procfs rw 0 0" >> /etc/fstab
|
||||
fi
|
||||
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
nvidia-gpu-g210m() {
|
||||
clear
|
||||
pkg ins -y nvidia-driver-340
|
||||
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 '[GeForce G210M]')
|
||||
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
|
||||
|
||||
exit 0
|
||||
}
|
||||
|
||||
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 -E "HD Graphics|Mobile 4 Series Chipset")
|
||||
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://')
|
||||
|
||||
# NVIDIA GeForce G210M
|
||||
nvidiag210m_pciconf_output=$(pciconf -lv | grep -B3 'display' | grep -B2 '[GeForce G210M]')
|
||||
nvidiag210m_pci_location=$(echo "$nvidiag210m_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
|
||||
|
||||
if [ ! -z "$nvidiag210m_pciconf_output" ]; then
|
||||
nvidia-gpu-g210m
|
||||
else
|
||||
nvidiagpu
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
# If VirtualBox is detected, auto-configure :
|
||||
if [ ! -z "$vbox_pciconf_output" ]; then
|
||||
vbox
|
||||
fi
|
||||
|
||||
|
||||
# If an Intel Iris Xe is detected, auto-configure :
|
||||
if [ ! -z "$intelirisxe_pciconf_output" ]; then
|
||||
intel-irisxe
|
||||
fi
|
||||
|
||||
|
||||
# If an Intel is detected, auto-configure :
|
||||
if [ ! -z "$intel_pciconf_output" ]; then
|
||||
intel-older
|
||||
fi
|
||||
|
||||
|
||||
# If an NVIDIA is detected, auto-configure :
|
||||
if [ ! -z "$nvidia_pciconf_output" ]; then
|
||||
nvidia-gpu
|
||||
fi
|
||||
|
||||
# If an NVIDIA G210m is detected, auto-configure :
|
||||
if [ ! -z "$nvidiag210m_pciconf_output" ]; then
|
||||
nvidia-gpu-g210m
|
||||
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_list="pidgin pidgin-bot-sentry pidgin-encryption pidgin-fetion pidgin-hotkeys
|
||||
pidgin-icyque pidgin-latex pidgin-libnotify pidgin-manualsize pidgin-otr
|
||||
pidgin-sipe pidgin-skypeweb pidgin-twitter pidgin-window_merge"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
;;
|
||||
*)
|
||||
pkg info -e "$choice" || pkg ins -y "$choice"
|
||||
;;
|
||||
esac
|
||||
|
||||
done
|
||||
|
||||
rm -f "$TMPFILE"
|
||||
}
|
||||
|
||||
|
||||
|
||||
# usual tools bundle
|
||||
usual_tools_installation() {
|
||||
pkg_list="wget w3m lynx rsync emacs nano sshpass fuse fusefs-ntfs fusefs-exfat
|
||||
automount megatools dvd+rw-tools cdrtools webcamd cups cups-filters system-config-printer
|
||||
pwcview wifimgr networkmgr zip unzip bzip2 bzip3 btop htop nmap bind-tools git
|
||||
rdesktop xrdp tree gh hw-probe inxi python3 py39-qt5 bhyve-firmware"
|
||||
|
||||
for pkg in $pkg_list; do
|
||||
pkg info -e "$pkg" >/dev/null || pkg ins -y "$pkg"
|
||||
done
|
||||
|
||||
sysrc -f /boot/loader.conf fusefs_load=YES
|
||||
sysrc webcamd_enable="YES"
|
||||
service devd restart
|
||||
pw groupmod webcamd -m "$user"
|
||||
sysrc -f /boot/loader.conf cuse_load=YES
|
||||
sysrc cupsd_enable="YES"
|
||||
sysrc xrdp_enable="NO"
|
||||
sysrc xrdp_sesman_enable="NO"
|
||||
|
||||
if [ ! -x /usr/local/bin/ipfwGUI ]; then
|
||||
cd /tmp
|
||||
git clone https://github.com/bsdlme/ipfwGUI.git
|
||||
cd ipfwGUI
|
||||
make install clean
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
# 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
|
||||
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
|
Loading…
Reference in New Issue
Block a user