diff --git a/freebsd-desktop.sh b/freebsd-desktop.sh deleted file mode 100644 index 2da0e9a..0000000 --- a/freebsd-desktop.sh +++ /dev/null @@ -1,925 +0,0 @@ -#!/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 xarchiver" - - 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 < /usr/local/etc/X11/xorg.conf.d/00-scfb.conf -Section "Device" - Identifier "Card0" - Driver "scfb" - BusID "$intelirisxe_pci_location" -EndSection -EOF - -} - -vbox() { - -cat < /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 < /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 < /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_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 openssl" - - 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 < /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