diff --git a/Amelia.sh b/Amelia.sh index 7ad6407..620209e 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -1,43 +1,88 @@ #!/bin/bash # Amelia Installer -# Version: 4.9 +# Version: 5.0 set -euo pipefail trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR -########################################################################################### -# ### COLOR FUNCTIONS ### +################################################################################################### +# COLOR FUNCTIONS + redbgbl="\e[5;1;41m" #blink bg + redbg="\e[1;41m" #bg red="\e[31m" - redbg="\e[5;1;41m" + greenbgbl="\e[5;1;42m" #blink bg + greenbg="\e[1;42m" #bg green="\e[32m" + yellowbgbl="\e[5;1;43m" #blink bg + yellowbg="\e[1;43m" #bg yellow="\e[33m" + bluebgbl="\e[5;1;44m" #blink bg + bluebg="\e[1;44m" #bg blue="\e[94m" + magentabgbl="\e[5;1;45m" #blink bg + magentabg="\e[1;45m" #bg + magenta="\e[35m" + cyanbgbl="\e[5;1;46m" #blink bg + cyanbg="\e[1;46m" #bg cyan="\e[36m" - purple="\e[35m" + bwhite="\e[0;97m" #bright nc="\e[0m" - bwhite="\e[0;97m" -RED (){ - echo -e "${red} $1${nc}" + +REDBGBL (){ + echo -e "${redbgbl} $1${nc}" } REDBG (){ echo -e "${redbg} $1${nc}" } +RED (){ + echo -e "${red} $1${nc}" +} +GREENBGBL (){ + echo -e "${greenbgbl} $1${nc}" +} +GREENBG (){ + echo -e "${greenbg} $1${nc}" +} GREEN (){ echo -e "${green} $1${nc}" } +YELLOWBGBL (){ + echo -e "${yellowbgbl} $1${nc}" +} +YELLOWBG (){ + echo -e "${yellowbg} $1${nc}" +} YELLOW (){ echo -e "${yellow} $1${nc}" } +BLUEBGBL (){ + echo -e "${bluebgbl} $1${nc}" +} +BLUEBG (){ + echo -e "${bluebg} $1${nc}" +} BLUE (){ echo -e "${blue} $1${nc}" } +MAGENTABGBL (){ + echo -e "${magentabgbl} $1${nc}" +} +MAGENTABG (){ + echo -e "${magentabg} $1${nc}" +} +MAGENTA (){ + echo -e "${magenta} $1${nc}" +} +CYANBGBL (){ + echo -e "${cyanbgbl} $1${nc}" +} +CYANBG (){ + echo -e "${cyanbg} $1${nc}" +} CYAN (){ echo -e "${cyan} $1${nc}" } -PURPLE (){ - echo -e "${purple} $1${nc}" -} NC (){ echo -e "${nc} $1${nc}" } @@ -45,18 +90,17 @@ WHITEB (){ echo -e "${bwhite} $1${nc}" } -# ### END COLOR FUNCTIONS ### -########################################################################################### +# END COLOR FUNCTIONS -########################################################################################### -# ### PROMPT FUNCTIONS ### +################################################################################################### +# PROMPT FUNCTIONS skip (){ sleep 0.3 YELLOW " --> Skipping.. " } -#---------------------------------------------------------- + reload (){ sleep 0.3 NC " @@ -64,7 +108,7 @@ reload (){ --> [${green}Reloading${nc}] " } -#---------------------------------------------------------- + invalid (){ sleep 0.3 RED " @@ -72,7 +116,7 @@ invalid (){ [!] Invalid response " reload } -#---------------------------------------------------------- + err_try (){ sleep 0.3 RED " @@ -80,7 +124,7 @@ err_try (){ [!] Errors occured. Please try again.. " reload } -#---------------------------------------------------------- + abort (){ sleep 0.3 RED " @@ -90,7 +134,7 @@ abort (){ " exit } -#---------------------------------------------------------- + err_abort (){ sleep 0.3 RED " @@ -98,7 +142,7 @@ err_abort (){ [!] Errors occured " abort } -#---------------------------------------------------------- + umount_abort (){ sleep 0.3 RED " @@ -112,13 +156,11 @@ umount_abort (){ reload sleep 0.3 NC " -___________________________ - -${purple}###${nc} Unmount Filesystems ${purple}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} " - if umount -R /mnt; then + if umount -R /mnt > /dev/null 2>&1 ; then sleep 0.3 NC " @@ -129,11 +171,13 @@ ${purple}###${nc} Unmount Filesystems ${purple}###${nc} [!] Unmounting failed " + NC " + " abort fi reload } -#---------------------------------------------------------- + umount_manual (){ sleep 0.3 RED " @@ -147,11 +191,11 @@ umount_manual (){ reload sleep 0.3 NC " -___________________________ -${purple}###${nc} Unmount Filesystems ${purple}###${nc} + +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} " - if umount -R /mnt; then + if umount -R /mnt > /dev/null 2>&1 ; then sleep 0.3 NC " @@ -171,14 +215,14 @@ ${purple}###${nc} Unmount Filesystems ${purple}###${nc} --> [Switching to ${green}Manual Mode${nc}]" } -#---------------------------------------------------------- + err_swapfile (){ sleep 0.3 RED " [!] Swapfile creation error " abort } -#---------------------------------------------------------- + err_reload (){ sleep 0.3 RED " @@ -186,99 +230,128 @@ err_reload (){ [!] Errors occured " reload } -#---------------------------------------------------------- + choice (){ sleep 0.3 RED " [!] Please make a choice to continue " reload } -#---------------------------------------------------------- + ok (){ sleep 0.3 NC " ==> [${green}${prompt} OK${nc}] " } -#---------------------------------------------------------- + stage_ok (){ sleep 0.3 NC " ==> [${green}${stage_prompt} configuration OK${nc}] " - sleep 1 + sleep 2 } -#---------------------------------------------------------- + stage_fail (){ sleep 0.3 RED " [!] ${stage_prompt} configuration FAILED " - sleep 2 - abort } -#---------------------------------------------------------- + +intel (){ + BLUEBG " --------------------------------- " + BLUEBG " ### INTEL Graphics detected ### " + BLUEBG " --------------------------------- " + NC " + + * ${vgacard} + " +} + +nvidia (){ + GREENBG " ---------------------------------- " + GREENBG " ### NVIDIA Graphics detected ### " + GREENBG " ---------------------------------- " + NC " + + * ${vgacard} + " +} + +amd (){ + REDBG " ------------------------------- " + REDBG " ### AMD Graphics detected ### " + REDBG " ------------------------------- " + NC " + + * ${vgacard} + " +} + completion (){ sleep 0.3 - CYAN " - - -******************************* - -### Installation Complete ### - - - $(date) - -******************************* + NC " + " + GREENBG "************************************************************************************************* " + GREENBG " " + GREENBG " ### Installation Completed ### " + GREENBG " " + GREENBG "************************************************************************************************* " + NC " " } -# ### END PROMPT FUNCTIONS ### -########################################################################################### -########################################################################################### -# ### FUNCTIONS ### +failure (){ + sleep 0.3 + NC " + + " + REDBG "************************************************************************************************* " + REDBG " " + REDBG " ### Installation Failed ### " + REDBG " " + REDBG "************************************************************************************************* " + NC " + + " + exit +} +# END PROMPT FUNCTIONS + +################################################################################################### +# FUNCTIONS first_check (){ - if [[ -f /usr/share/kbd/consolefonts/ter-v20b.psf.gz && -f /usr/share/kbd/consolefonts/ter-v32b.psf.gz && "${tty}" == *"tty"* ]]; then + if [[ "${tty}" == *"tty"* && -f /usr/share/kbd/consolefonts/ter-v18b.psf.gz && -f /usr/share/kbd/consolefonts/ter-v32b.psf.gz ]]; then until slct_font; do : ; done - elif [[ -f /usr/share/kbd/consolefonts/ter-v20b.psf.gz && -f /usr/share/kbd/consolefonts/ter-v32b.psf.gz && "${tty}" == *"pts"* ]]; then - - YELLOW " - - ### Supported 'Terminus Font' detected. Switch to console (tty) and re-run the installer to activate " - fi - - if [[ "${run_as}" == "root" ]]; then - BLUE " - ### The installer runs in [Root Mode] - - " -REDBG " ---------------------------------------- - ### WARNING: High Risk Of Data Loss ### - ----------------------------------------" + elif [[ "${tty}" == *"pts"* && -f /usr/share/kbd/consolefonts/ter-v18b.psf.gz && -f /usr/share/kbd/consolefonts/ter-v32b.psf.gz ]]; then + MAGENTABG " 'Terminus Font' detected. Switch to console (tty) and re-run the installer to activate " echo + fi + if [[ "${run_as}" == "root" ]]; then + REDBG " ---------------------------------------- " + REDBG " ### The Installer Runs In ROOT Mode ### " + REDBG " ---------------------------------------- " else - PURPLE " - ### The installer must be run as Root (Not 'wheel' group user) " - BLUE " - ### Currently running with Limited Privileges [Test Mode] - - " + BLUEBGBL " ---------------------------------------- " + BLUEBGBL " ### The Installer Runs In DEMO Mode ### " + BLUEBGBL " ---------------------------------------- " fi } -########################################################################################### +################################################################################################### slct_font (){ sleep 0.3 NC " -______________________ -${purple}###${nc} Font Selection ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Font Selection${nc} ${magenta}]${nc}--------------------------------------${magenta}###${nc} " YELLOW " @@ -305,7 +378,7 @@ Enter a number: " fi clear } -########################################################################################### +################################################################################################### uefi_check (){ bootmode=$(cat /sys/firmware/efi/fw_platform_size) @@ -314,11 +387,9 @@ uefi_check (){ NC " - -______________________________ - -${purple}###${nc} UEFI Mode Verification ${purple}###${nc} +${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}UEFI Mode Verification${nc} ${magenta}]${nc}---------------------------------${magenta}###${nc} " + if [[ "${bootmode}" == "64" || "${bootmode}" == "32" ]]; then ok else @@ -327,16 +398,17 @@ ${purple}###${nc} UEFI Mode Verification ${purple}###${nc} abort fi } -########################################################################################### +################################################################################################### connection_check (){ local prompt="Internet Connection" sleep 0.3 NC " -_________________________________ -${purple}###${nc} Internet Connection Check ${purple}###${nc} + +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Internet Connection Check${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} " + if ping -c 3 archlinux.org > /dev/null 2>&1; then ok else @@ -346,33 +418,34 @@ ${purple}###${nc} Internet Connection Check ${purple}###${nc} abort fi } -########################################################################################### +################################################################################################### upd_clock (){ local prompt="System Clock" sleep 0.3 NC " -___________________________ -${purple}###${nc} System Clock Update ${purple}###${nc} + +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}System Clock Update${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} + " sleep 0.3 timedatectl ok } -########################################################################################### +################################################################################################### dtct_microcode (){ local prompt="Microcode" sleep 0.3 NC " -___________________________ -${purple}###${nc} Microcode Detection ${purple}###${nc} + +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Microcode Detection${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} " - CPU="$(grep vendor_id /proc/cpuinfo)" + CPU="$(grep -E 'vendor_id' /proc/cpuinfo)" if [[ "${CPU}" == *"GenuineIntel"* ]]; then microcode="intel-ucode" nrg_plc="x86_energy_perf_policy" @@ -388,20 +461,20 @@ ${purple}###${nc} Microcode Detection ${purple}###${nc} " ok } -########################################################################################### +################################################################################################### main_menu (){ sleep 0.3 NC " -_________________ -${purple}###${nc} Main Menu ${purple}###${nc} + +${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}Main Menu${nc} ${magenta}]${nc}----------------------------------------${magenta}###${nc} " YELLOW " > Make a selection: - - + + ### Select ${nc}[4] ${yellow}for guided navigation " NC " @@ -429,7 +502,7 @@ Enter a number: " until dsks_submn; do : ; done ;; 4) instl ;; - "") + "") sleep 0.3 RED " @@ -441,14 +514,14 @@ Enter a number: " return 1 ;; esac } -########################################################################################### +################################################################################################### persnl_submn (){ sleep 0.3 NC " -_______________________ -${purple}###${nc} Personalization ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Personalization${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " YELLOW " @@ -477,53 +550,53 @@ Enter a number: " until rootuser_setup; do : ; done until slct_hostname; do : ; done return 1 ;; - "") + "") until main_menu; do : ; done ;; *) invalid return 1 ;; esac } -########################################################################################### +################################################################################################### slct_locale (){ local prompt="Locale" sleep 0.3 NC " -________________________ -${purple}###${nc} Locale Selection ${purple}###${nc} + +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Locale Selection${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} " YELLOW " - > Select your Locale (e.g. en_US.UTF-8) + > Select your Locale - - ### [Hit ${nc}'l'${yellow} to list locales, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] " + + ### [Hit ${nc}'l'${yellow} to list locales, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] + + ### Type only xx_XX (e.g. en_US )" BLUE " - -Enter your Locale ${bwhite}(empty for 'en_US.UTF-8')${blue}: " +Enter your Locale ${bwhite}(empty for 'en_US')${blue}: " read -r -p " -==> " SETLOCALE +==> " LOCALESET - if [[ -z "${SETLOCALE}" ]]; then + if [[ -z "${LOCALESET}" ]]; then SETLOCALE="en_US.UTF-8" sleep 0.3 YELLOW " ### 'en_US.UTF-8' Locale has been selected " - elif [[ "${SETLOCALE}" == "l" ]]; then - more /usr/share/i18n/SUPPORTED + elif [[ "${LOCALESET}" == "l" ]]; then + grep -E 'UTF-8' /usr/share/i18n/SUPPORTED | more return 1 - - elif ! grep -q "^#\?$(sed 's/[].*[]/\\&/g' <<< "${SETLOCALE}") " /usr/share/i18n/SUPPORTED; then + elif ! grep -q "^#\?$(sed 's/[].*[]/\\&/g' <<< "${LOCALESET}") " /usr/share/i18n/SUPPORTED; then invalid return 1 - else + SETLOCALE="${LOCALESET}.UTF-8" sleep 0.3 YELLOW " @@ -531,27 +604,27 @@ Enter your Locale ${bwhite}(empty for 'en_US.UTF-8')${blue}: " " fi ok + lcl_slct="yes" } -########################################################################################### +################################################################################################### slct_kbd (){ local prompt="Keyboard Layout" sleep 0.3 NC " -_________________________________ -${purple}###${nc} Keyboard Layout Selection ${purple}###${nc} + +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Keyboard Layout Selection${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} " YELLOW " - > Select your Keyboard Layout - - + > Select your Keyboard Layout + + ### [Hit ${nc}'l'${yellow} to list layouts, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] " BLUE " - Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: " read -r -p " ==> " SETKBD @@ -566,11 +639,9 @@ Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: " elif [[ "${SETKBD}" == "l" ]]; then localectl list-keymaps | more return 1 - elif ! localectl list-keymaps | grep -Fxq "${SETKBD}"; then invalid return 1 - else sleep 0.3 YELLOW " @@ -581,15 +652,15 @@ Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: " fi ok } -########################################################################################### +################################################################################################### user_setup (){ local prompt="User" sleep 0.3 NC " -__________________ -${purple}###${nc} User Setup ${purple}###${nc} + +${magenta}###${nc}---------------------------------------${magenta}[ ${bwhite}User Setup${nc} ${magenta}]${nc}---------------------------------------${magenta}###${nc} " BLUE " @@ -604,7 +675,6 @@ Enter a username: " [!] Please enter a username to continue " reload return 1 - elif [[ "${USERNAME}" =~ [[:upper:]] ]]; then sleep 0.3 RED " @@ -612,6 +682,7 @@ Enter a username: " reload return 1 fi + BLUE " Enter a password for${nc} ${cyan}${USERNAME}${blue}: " read -r -p " @@ -641,15 +712,15 @@ Re-enter${nc} ${cyan}${USERNAME}'s ${blue}password: " fi ok } -########################################################################################### +################################################################################################### rootuser_setup (){ local prompt="Root User" sleep 0.3 NC " -_______________________ -${purple}###${nc} Root User Setup ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Root User Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " BLUE " @@ -682,15 +753,15 @@ Re-enter${nc} ${cyan}Root ${blue}user's password: " fi ok } -########################################################################################### +################################################################################################### slct_hostname (){ local prompt="Hostname" sleep 0.3 NC " -______________________ -${purple}###${nc} Hostname Setup ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Hostname Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " BLUE " @@ -705,7 +776,6 @@ Enter a hostname: " [!] Please enter a hostname to continue " reload return 1 - elif [[ "${HOSTNAME}" =~ [[:upper:]] ]]; then sleep 0.3 RED " @@ -715,14 +785,14 @@ Enter a hostname: " fi ok } -########################################################################################### +################################################################################################### sys_submn (){ sleep 0.3 NC " -____________________________ -${purple}###${nc} System Configuration ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}System Configuration${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " YELLOW " @@ -770,22 +840,22 @@ Enter a number: " 6) until wireless_rgd; do : ; done return 1 ;; - "") + "") until main_menu; do : ; done ;; *) invalid return 1 ;; esac } -########################################################################################### +################################################################################################### slct_krnl (){ local prompt="Kernel" sleep 0.3 NC " -________________________ + -${purple}###${nc} Kernel Selection ${purple}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Kernel Selection${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} " YELLOW " @@ -823,7 +893,7 @@ Enter a number: " kernel="linux-zen" kernelname="Linux Zen" entrname="Arch Linux Zen" ;; - "") + "") sleep 0.3 RED " @@ -848,15 +918,15 @@ Enter a number: " fi ok } -########################################################################################### +################################################################################################### ask_bootldr (){ local prompt="Bootloader" sleep 0.3 NC " -____________________________ -${purple}###${nc} Bootloader Selection ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Bootloader Selection${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " YELLOW " @@ -886,7 +956,7 @@ Enter a number: " ### Grub has been selected " ;; - "") + "") sleep 0.3 RED " @@ -899,15 +969,15 @@ Enter a number: " esac ok } -########################################################################################### +################################################################################################### ask_fs (){ local prompt="Filesystem Setup" sleep 0.3 NC " -____________________________ -${purple}###${nc} Filesystem Selection ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Filesystem Selection${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " YELLOW " @@ -960,7 +1030,7 @@ Enter a name: " invalid return 1 fi ;; - "") + "") sleep 0.3 RED " [!] Please select a Filesystem " @@ -972,15 +1042,15 @@ Enter a name: " esac ok } -########################################################################################### +################################################################################################### ask_swap (){ local prompt="Swap Setup" sleep 0.3 NC " -______________________ -${purple}###${nc} Swap Selection ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Swap Selection${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " YELLOW " @@ -1027,7 +1097,7 @@ Enter a number: " ### No Swap will be used " skip ;; - "") + "") sleep 0.3 RED " @@ -1040,7 +1110,7 @@ Enter a number: " esac ok } -########################################################################################### +################################################################################################### set_swapsize (){ local prompt="Swapsize" @@ -1059,10 +1129,8 @@ Enter Swapfile size ${bwhite}(in GiB)${blue}: " NC " " return 1 - elif [[ "${swapsize}" =~ [[:digit:]] ]]; then ok - else sleep 0.3 RED " @@ -1073,15 +1141,14 @@ Enter Swapfile size ${bwhite}(in GiB)${blue}: " return 1 fi } -########################################################################################### +################################################################################################### dtct_vga (){ - local prompt="Graphics" sleep 0.3 NC " -______________________ -${purple}###${nc} Graphics Setup ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Graphics Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " vgacount="$(lspci | grep -E -c 'VGA|Display|3D')" vgacard="$(lspci | grep -E 'VGA|Display|3D' | sed 's/^.*: //g')" @@ -1094,61 +1161,70 @@ ${purple}###${nc} Graphics Setup ${purple}###${nc} hypervisor="$(systemd-detect-virt)" if [[ "${vgacount}" == "1" ]]; then - if [[ "${intelcount}" -ge "1" ]]; then - vendor="Intel" - sourcetype="Open-source" - perf_stream="dev.i915.perf_stream_paranoid = 0" - vgapkgs="intel-media-driver intel-media-sdk libva-intel-driver vpl-gpu-rt vulkan-intel vulkan-mesa-layers" - elif [[ "${amdcount}" -ge "1" ]]; then - vendor="AMD" - sourcetype="Open-source" - vgapkgs="libva-mesa-driver mesa-vdpau vulkan-mesa-layers vulkan-radeon" - elif [[ "${nvidiacount}" -ge "1" ]]; then - vendor="Nvidia" - sourcetype="Proprietary" - elif [[ "${hypervisor}" != "none" ]]; then - vendor="Virtual Machine" - case "${hypervisor}" in - kvm) - vmpkgs="spice spice-vdagent spice-protocol spice-gtk qemu-guest-agent" - vm_services="qemu-guest-agent" ;; - vmware) - vmpkgs="open-vm-tools" - vm_services="vmtoolsd vmware-vmblock-fuse" ;; - oracle) - vmpkgs="virtualbox-guest-utils" - vm_services="vboxservice" ;; - microsoft) - vmpkgs="hyperv" - vm_services="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon" ;; - esac - fi + dtct_single_vga + else + dtct_multi_vga + fi +} +################################################################################################### +dtct_single_vga (){ + local prompt="Graphics" + + if [[ "${intelcount}" -eq "1" ]]; then + vendor="Intel" + sourcetype="Open-source" sleep 0.3 - YELLOW " - - ### ${vendor} Graphics detected : ${nc}${vgacard}" - - if [[ "${vendor}" == "Virtual Machine" ]]; then - vgaconf="n" - vgapkgs="" - echo - skip - ok - return 0 - fi - - YELLOW " - ### ${sourcetype} drivers will be used - - - > Enable HW acceleration and auto-configure the graphics subsystem ? [y/n] + NC " " - if [[ "${vendor}" == "Nvidia" ]]; then - RED " - [!] Supported architectures: NV110 (Maxwell) Graphics or newer " - fi + intel + elif [[ "${amdcount}" -eq "1" ]]; then + vendor="AMD" + sourcetype="Open-source" + sleep 0.3 + NC " + " + amd + elif [[ "${nvidiacount}" -eq "1" ]]; then + vendor="Nvidia" + sourcetype="Proprietary" + NC " + " + nvidia + elif [[ "${hypervisor}" != "none" ]]; then + vendor="Virtual Machine" + vgaconf="n" + vgapkgs="" + case "${hypervisor}" in + kvm) + vmpkgs="spice spice-vdagent spice-protocol spice-gtk qemu-guest-agent" + vm_services="qemu-guest-agent" ;; + vmware) + vmpkgs="open-vm-tools" + vm_services="vmtoolsd vmware-vmblock-fuse" ;; + oracle) + vmpkgs="virtualbox-guest-utils" + vm_services="vboxservice" ;; + microsoft) + vmpkgs="hyperv" + vm_services="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon" ;; + esac + echo + skip + ok + return 0 + fi + YELLOW " + ### ${sourcetype} drivers will be used " + if [[ "${vendor}" == "Nvidia" ]]; then + RED " + [!] Only for NV110 (Maxwell) Graphics or newer [!]" + fi + YELLOW " + + + > Configure the Graphics subsystem and enable HW acceleration ? [y/n] " BLUE " @@ -1156,214 +1232,324 @@ Enter [y/n]: " read -r -p " ==> " vgaconf - if [[ "${vgaconf}" == "y" ]]; then - if [[ "${vendor}" == "AMD" ]]; then - sleep 0.3 - YELLOW " + vga_conf +} +################################################################################################### +dtct_multi_vga (){ - > Enable 'amdgpu' driver support for: " - NC " + local prompt="Graphics" - [1] 'Southern Islands' Graphics - - [2] 'Sea Islands' Graphics " - BLUE " - - -Enter a number ${bwhite}(empty to skip)${blue}: " - read -r -p " -==> " islands - if [[ -z "${islands}" ]]; then - skip - echo - elif [[ "${islands}" == "1" ]]; then - NC " - -==> [${green}Southern Islands OK${nc}] - - " - elif [[ "${islands}" == "2" ]]; then - NC " - -==> [${green}Sea Islands OK${nc}] - - " - else - invalid - return 1 - fi - - elif [[ "${vendor}" == "Nvidia" ]]; then - sleep 0.3 - YELLOW " - > Select Nvidia architecture: " - NC " - - [1] NV110 (Maxwell) Graphics or newer - - [2] NV160 (Turing) Graphics or newer " - BLUE " - - -Enter a number: " - read -r -p " -==> " family - - if [[ "${family}" == "1" ]]; then - NC " - -==> [${green}Maxwell+ OK${nc}] - " - elif [[ "${family}" == "2" ]]; then - sleep 0.3 - YELLOW " - > Select Nvidia driver: " - NC " - - [1] 'Nvidia-Open' driver - - [2] 'Nvidia' driver " - BLUE " - - -Enter a number: " - read -r -p " -==> " nvdriver - - if [[ "${nvdriver}" == "1" ]]; then - NC " - -==> [${green}Turing+ OK${nc}] - " - elif [[ "${nvdriver}" == "2" ]]; then - NC " - -==> [${green}Turing+ OK${nc}] - " - else - echo - invalid - return 1 - fi - else - echo - invalid - return 1 - fi - if [[ "${kernelnmbr}" == "1" ]]; then - if [[ "${family}" == "1" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia nvidia-settings nvidia-utils opencl-nvidia" - nvname="nvidia" - elif [[ "${family}" == "2" ]]; then - if [[ "${nvdriver}" == "1" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open nvidia-settings nvidia-utils opencl-nvidia" - nvname="nvidia-open" - elif [[ "${nvdriver}" == "2" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia nvidia-settings nvidia-utils opencl-nvidia" - nvname="nvidia" - fi - fi - elif [[ "${kernelnmbr}" == "2" ]]; then - if [[ "${family}" == "1" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-lts nvidia-settings nvidia-utils opencl-nvidia" - nvname="nvidia-lts" - elif [[ "${family}" == "2" ]]; then - if [[ "${nvdriver}" == "1" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open-dkms nvidia-settings nvidia-utils opencl-nvidia" - elif [[ "${nvdriver}" == "2" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-lts nvidia-settings nvidia-utils opencl-nvidia" - nvname="nvidia-lts" - fi - fi - else - if [[ "${family}" == "1" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia" - elif [[ "${family}" == "2" ]]; then - if [[ "${nvdriver}" == "1" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open-dkms nvidia-settings nvidia-utils opencl-nvidia" - elif [[ "${nvdriver}" == "2" ]]; then - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia" - fi - fi - fi - fi - sleep 0.3 - YELLOW " - - ### ${vendor} Graphics will be automatically configured - " - elif [[ "${vgaconf}" == "n" ]]; then - vgapkgs="" - echo - skip - else - invalid - return 1 - fi - else - if [[ "${vgacount}" == "2" ]]; then - vendor="Dual" - elif [[ "${vgacount}" == "3" ]]; then - vendor="Triple" - fi + if [[ "${vgacount}" == "2" ]]; then + vga_setup="Dual" + elif [[ "${vgacount}" == "3" ]]; then + vga_setup="Triple" + fi sleep 0.3 YELLOW " - ### ${vendor} Graphics setup detected, consisting of: " + ### ${vga_setup} Graphics setup detected, consisting of: " NC " - _______________________________" + ____________________________________________________________________" + + if [[ "${intelcount}" -ge "1" ]]; then + vendor1="Intel" + NC " - if [[ "${intelcount}" -ge "1" ]]; then - perf_stream="dev.i915.perf_stream_paranoid = 0" - NC " [${intelcount}] Intel Graphics device(s) ${intelcards} - _______________________________" - fi - if [[ "${amdcount}" -ge "1" ]]; then - NC " + ____________________________________________________________________" + fi + + if [[ "${amdcount}" -ge "1" ]]; then + vendor2="AMD" + NC " + [${amdcount}] AMD Graphics device(s) ${amdcards} - _______________________________" - fi - if [[ "${nvidiacount}" -ge "1" ]]; then - NC " + ____________________________________________________________________" + fi + + if [[ "${nvidiacount}" -ge "1" ]]; then + vendor3="Nvidia" + NC " + [${nvidiacount}] Nvidia Graphics device(s) ${nvidiacards} - _______________________________" - fi + + ____________________________________________________________________" + fi YELLOW " - > Please configure the graphics subsystem after installation has finished - " + > Configure the Graphics subsystem and enable HW acceleration for : " +#.................................................................................................. + if [[ -n "${vendor1}" && -n "${vendor2}" ]]; then + NC " + + [1] Intel + + [2] AMD + + [3] None " + BLUE " + + +Enter a number: " + read -r -p " +==> " vendor_slct + + if [[ "${vendor_slct}" == "1" ]]; then + vendor="Intel" + elif [[ "${vendor_slct}" == "2" ]]; then + vendor="AMD" + else + vendor="none" + fi + fi + + if [[ -n "${vendor1}" && -n "${vendor3}" ]]; then + NC " + + [1] Intel + + [2] Nvidia ${red}[!] Only for NV110 (Maxwell) Graphics or newer [!]${nc} + + [3] None " + BLUE " + + +Enter a number: " + read -r -p " +==> " vendor_slct + + if [[ "${vendor_slct}" == "1" ]]; then + vendor="Intel" + elif [[ "${vendor_slct}" == "2" ]]; then + vendor="Nvidia" + else + vendor="none" + fi + fi + + if [[ -n "${vendor2}" && -n "${vendor3}" ]]; then + NC " + + [1] Amd + + [2] Nvidia ${red}[!] Only for NV110 (Maxwell) Graphics or newer [!]${nc} + + [3] None " + BLUE " + + +Enter a number: " + read -r -p " +==> " vendor_slct + + if [[ "${vendor_slct}" == "1" ]]; then + vendor="AMD" + elif [[ "${vendor_slct}" == "2" ]]; then + vendor="Nvidia" + else + vendor="none" + fi + fi + + if [[ "${vendor}" == "Intel" ]]; then + sourcetype="Open-source" + vgaconf="y" + elif [[ "${vendor}" == "AMD" ]]; then + sourcetype="Open-source" + vgaconf="y" + elif [[ "${vendor}" == "Nvidia" ]]; then + sourcetype="Proprietary" + vgaconf="y" + elif [[ "${vendor}" == "none" ]]; then vgaconf="n" vgapkgs="" echo skip ok return 0 + fi + sleep 0.3 + YELLOW " + ### ${sourcetype} drivers will be used + " + vga_conf +} +################################################################################################### +vga_conf (){ + + local prompt="Graphics" + + if [[ "${vgaconf}" == "y" ]]; then + if [[ "${vendor}" == "Intel" ]]; then + perf_stream="dev.i915.perf_stream_paranoid = 0" + vgapkgs="intel-media-driver intel-media-sdk libva-intel-driver vpl-gpu-rt vulkan-intel vulkan-mesa-layers" + elif [[ "${vendor}" == "AMD" ]]; then + vgapkgs="libva-mesa-driver mesa-vdpau vulkan-mesa-layers vulkan-radeon" + sleep 0.3 + YELLOW " + + > Enable 'amdgpu' driver support for: " + NC " + + [1] 'Southern Islands' Graphics + + [2] 'Sea Islands' Graphics " + BLUE " + + +Enter a number ${bwhite}(empty to skip)${blue}: " + read -r -p " +==> " islands + if [[ -z "${islands}" ]]; then + skip + echo + elif [[ "${islands}" == "1" ]]; then + NC " + +==> [${green}Southern Islands OK${nc}] + + " + elif [[ "${islands}" == "2" ]]; then + NC " + +==> [${green}Sea Islands OK${nc}] + + " + else + invalid + return 1 + fi + elif [[ "${vendor}" == "Nvidia" ]]; then + sleep 0.3 + YELLOW " + > Select Nvidia architecture: " + NC " + + [1] NV110 (Maxwell) Graphics or newer + + [2] NV160 (Turing) Graphics or newer " + BLUE " + + +Enter a number: " + read -r -p " +==> " family + + if [[ "${family}" == "1" ]]; then + NC " + +==> [${green}Maxwell+ OK${nc}] + " + elif [[ "${family}" == "2" ]]; then + sleep 0.3 + YELLOW " + > Select Nvidia driver: " + NC " + + [1] 'Nvidia-Open' driver + + [2] 'Nvidia' driver " + BLUE " + + +Enter a number: " + read -r -p " +==> " nvdriver + + if [[ "${nvdriver}" == "1" ]]; then + NC " + +==> [${green}Turing+ OK${nc}] + " + elif [[ "${nvdriver}" == "2" ]]; then + NC " + +==> [${green}Turing+ OK${nc}] + " + else + echo + invalid + return 1 + fi + else + echo + invalid + return 1 + fi + if [[ "${kernelnmbr}" == "1" ]]; then + if [[ "${family}" == "1" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia nvidia-settings nvidia-utils opencl-nvidia" + nvname="nvidia" + elif [[ "${family}" == "2" ]]; then + if [[ "${nvdriver}" == "1" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open nvidia-settings nvidia-utils opencl-nvidia" + nvname="nvidia-open" + elif [[ "${nvdriver}" == "2" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia nvidia-settings nvidia-utils opencl-nvidia" + nvname="nvidia" + fi + fi + elif [[ "${kernelnmbr}" == "2" ]]; then + if [[ "${family}" == "1" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-lts nvidia-settings nvidia-utils opencl-nvidia" + nvname="nvidia-lts" + elif [[ "${family}" == "2" ]]; then + if [[ "${nvdriver}" == "1" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open-dkms nvidia-settings nvidia-utils opencl-nvidia" + elif [[ "${nvdriver}" == "2" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-lts nvidia-settings nvidia-utils opencl-nvidia" + nvname="nvidia-lts" + fi + fi + else + if [[ "${family}" == "1" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia" + elif [[ "${family}" == "2" ]]; then + if [[ "${nvdriver}" == "1" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open-dkms nvidia-settings nvidia-utils opencl-nvidia" + elif [[ "${nvdriver}" == "2" ]]; then + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia" + fi + fi + fi + fi + sleep 0.3 + YELLOW " + + ### ${vendor} Graphics will be automatically configured + " + elif [[ "${vgaconf}" == "n" ]]; then + vgapkgs="" + echo + skip + else + invalid + return 1 fi ok } -########################################################################################### +################################################################################################### slct_dsktp (){ local prompt="Desktop Setup" custompkgs="" sleep 0.3 NC " -_____________________ -${purple}###${nc} Desktop Setup ${purple}###${nc} + +${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Desktop Setup${nc} ${magenta}]${nc}--------------------------------------${magenta}###${nc} " YELLOW " @@ -1375,7 +1561,7 @@ ${purple}###${nc} Desktop Setup ${purple}###${nc} [2] Custom Plasma & Systemd-boot & System Optimizations [3] Gnome - + [4] Custom Gnome & Systemd-boot & System Optimizations [5] Xfce @@ -1392,7 +1578,7 @@ ${purple}###${nc} Desktop Setup ${purple}###${nc} [11] Basic Arch Linux (No GUI) - [12] Custom Arch Linux ${red}[!] EXPERTS ONLY [!] ${nc}" + [12] Custom Arch Linux ${red}[!] EXPERTS ONLY [!] " BLUE " @@ -1444,7 +1630,7 @@ Enter [y/n]: " sleep 0.3 echo RED " - [!] Please type 'y' or 'n' to continue " + [!] Please type 'y' or 'n' to continue.. " reload return 1 ;; *) @@ -1487,7 +1673,7 @@ Enter [y/n]: " sleep 0.3 echo RED " - [!] Please type 'y' or 'n' to continue " + [!] Please type 'y' or 'n' to continue.. " reload return 1 ;; *) @@ -1547,7 +1733,7 @@ Enter [y/n]: " sleep 0.3 echo RED " - [!] Please type 'y' or 'n' to continue " + [!] Please type 'y' or 'n' to continue.. " reload return 1 ;; *) @@ -1575,11 +1761,11 @@ Enter [y/n]: " n) echo skip ;; - "") + "") sleep 0.3 echo RED " - [!] Please type 'y' or 'n' to continue " + [!] Please type 'y' or 'n' to continue.. " reload return 1 ;; *) @@ -1588,30 +1774,33 @@ Enter [y/n]: " esac ok } -########################################################################################### +################################################################################################### cust_sys (){ local prompt="Custom Arch Linux" until add_pkgs; do : ; done until add_services; do : ; done until add_prmtrs; do : ; done + echo ok } -########################################################################################### +################################################################################################### add_pkgs (){ local prompt="Add Packages" sleep 0.3 NC " -_________________________ -${purple}###${nc} Add Your Packages ${purple}###${nc} + +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Add Your Packages${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} " YELLOW " - - ### base, linux-firmware (if on bare-metal), sudo & your current choices are already included " + + ### base, linux-firmware (if on bare-metal), sudo & your current choices are already included + " BLUE " + Enter any additional packages ${bwhite}(space-seperated)${blue}: " read -r -p " ==> " custompkgs @@ -1623,15 +1812,13 @@ Enter any additional packages ${bwhite}(space-seperated)${blue}: " [!] Please enter package(s) to continue " reload return 1 - elif [[ "${custompkgs}" =~ "lightdm" ]]; then - echo sleep 0.3 NC " -_________________________________ -${purple}###${nc} Lightdm Greeter Selection ${purple}###${nc} + +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}LightDM Greeter Selection${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} " YELLOW " @@ -1655,14 +1842,12 @@ Enter a number: " NC " ==> [${green}Lightdm Gtk Greeter OK${nc}] " ;; - 2) greeter="lightdm-slick-greeter" sleep 0.3 NC " ==> [${green}Lightdm Slick Greeter OK${nc}] " ;; - "") sleep 0.3 echo @@ -1678,22 +1863,23 @@ Enter a number: " ok fi } -########################################################################################### +################################################################################################### add_services (){ local prompt="Add Services" sleep 0.3 NC " -_________________________ -${purple}###${nc} Add Your Services ${purple}###${nc} + +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Add Your Services${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} " YELLOW " - ### Empty to skip " - + ### Empty to skip + " BLUE " + Enter services to be enabled ${bwhite}(space-seperated)${blue}: " read -r -p " ==> " customservices @@ -1705,22 +1891,23 @@ Enter services to be enabled ${bwhite}(space-seperated)${blue}: " ok fi } -########################################################################################### +################################################################################################### add_prmtrs (){ local prompt="Kernel Parameters" sleep 0.3 NC " -__________________________________ -${purple}###${nc} Add Your Kernel Parameters ${purple}###${nc} + +${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Add Your Kernel Parameters${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} " YELLOW " - ### Empty to skip " - + ### Empty to skip + " BLUE " + Enter your Kernel parameters to be set at boot ${bwhite}(space-seperated)${blue}: " read -r -p " ==> " cust_bootopts @@ -1732,17 +1919,16 @@ Enter your Kernel parameters to be set at boot ${bwhite}(space-seperated)${blue} ok fi } -########################################################################################### +################################################################################################### boot_entr (){ local prompt="Boot Entries" - efi_entr_del="1" hypervisor="$(systemd-detect-virt)" sleep 0.3 NC " -_________________________________ -${purple}###${nc} EFI Boot Entries Deletion ${purple}###${nc} + +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}EFI Boot Entries Deletion${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} " if [[ "${hypervisor}" != "none" ]]; then sleep 0.3 @@ -1752,10 +1938,8 @@ ${purple}###${nc} EFI Boot Entries Deletion ${purple}###${nc} " skip ok - echo return 0 fi - YELLOW " > Select an EFI Boot Entry to Delete ${red}[!] (CAUTION) [!] @@ -1796,18 +1980,18 @@ Enter a${nc} ${cyan}BootOrder${blue} number for Deletion ${bwhite}(empty to skip ok fi done + efi_entr_del="yes" } -########################################################################################### +################################################################################################### wireless_rgd (){ local prompt="Wireless Regdom Setup" - wrlss_rgd="1" hypervisor="$(systemd-detect-virt)" sleep 0.3 NC " -________________________________________ -${purple}###${nc} Wireless Regulatory Domain Setup ${purple}###${nc} + +${magenta}###${nc}----------------------------${magenta}[ ${bwhite}Wireless Regulatory Domain Setup${nc} ${magenta}]${nc}----------------------------${magenta}###${nc} " if [[ "${hypervisor}" != "none" ]]; then sleep 0.3 @@ -1817,12 +2001,17 @@ ${purple}###${nc} Wireless Regulatory Domain Setup ${purple}###${nc} " skip ok - echo return 0 fi - + YELLOW " + + > Select your Country Code (e.g. US) + + + ### [Hit ${nc}'l'${yellow} to list country codes, then ${nc}'enter'${yellow} to search or ${nc}'q'${yellow} to quit] " BLUE " + Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: " read -r -p " ==> " REGDOM @@ -1830,6 +2019,9 @@ Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: " if [[ -z "${REGDOM}" ]]; then echo skip + elif [[ "${REGDOM}" == "l" ]]; then + more /etc/conf.d/wireless-regdom + return 1 elif [[ "${REGDOM}" =~ [[:lower:]] ]]; then sleep 0.3 RED " @@ -1837,7 +2029,7 @@ Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: " [!] Lowercase is not allowed. Please try again.. " reload return 1 - elif ! [[ "${REGDOM}" =~ ^(00|AD|AE|AF|AI|AL|AM|AN|AR|AS|AT|AU|AW|AZ|BA|BB|BD|BE|BF|BG|BH|BL|BM|BN|BO|BR|BS|BT|BY|BZ|CA|CF|CH|CI|CL|CN|CO|CR|CU|CX|CY|CZ|DE|DK|DM|DO|DZ|EC|EE|EG|ES|ET|FI|FM|FR|GB|GD|GE|GF|GH|GL|GP|GR|GT|GU|GY|HK|HN|HR|HT|HU|ID|IE|IL|IN|IR|IS|IT|JM|JO|JP|KE|KH|KN|KP|KR|KW|KY|KZ|LB|LC|LI|LK|LS|LT|LU|LV|MA|MC|MD|MF|MH|MK|MN|MO|MP|MQ|MR|MT|MU|MV|MW|MX|MY|NG|NI|NL|NO|NP|NZ|OM|PA|PE|PF|PG|PH|PK|PL|PM|PR|PT|PY|PY|QA|RE|RO|RS|RU|RW|SA|SE|SG|SI|SK|SN|SR|SV|SY|TC|TD|TG|TH|TN|TR|TT|TW|TZ|UA|UG|US|UY|UZ|VC|VE|VI|VN|VU|WF|WS|YE|YT|ZA|ZW)$ ]]; then + elif ! grep \""${REGDOM}"\" /etc/conf.d/wireless-regdom > /dev/null 2>&1 ; then invalid return 1 else @@ -1849,15 +2041,16 @@ Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: " " fi ok + wrlss_rgd="yes" } -########################################################################################### +################################################################################################### dsks_submn (){ sleep 0.3 NC " -_______________________ -${purple}###${nc} Disk Management ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Disk Management${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " YELLOW " @@ -1890,7 +2083,8 @@ Enter a number: " RED " - [!] Please complete 'Filesystem Setup' to continue + + [!] Please complete 'Filesystem Selection' to continue " until ask_fs; do : ; done fi @@ -1903,15 +2097,15 @@ Enter a number: " return 1 ;; esac } -########################################################################################### +################################################################################################### gpt_mngr (){ local prompt="Disk GPT" sleep 0.3 NC " -________________________ -${purple}###${nc} Disk GPT Manager ${purple}###${nc} + +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Disk GPT Manager${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} " gpt_dsk_nmbr=" " @@ -1921,7 +2115,7 @@ ${purple}###${nc} Disk GPT Manager ${purple}###${nc} > Select a disk to manage its GPT: " NC " -${disks} " +${disks}" BLUE " @@ -1940,7 +2134,6 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " reload until dsks_submn; do : ; done fi - NC " ______________________________________________ " @@ -1965,32 +2158,33 @@ ______________________________________________ fi done } -########################################################################################### +################################################################################################### disk_mngr (){ local prompt="Disks" sleep 0.3 NC " -_________________________ -${purple}###${nc} Partition Manager ${purple}###${nc} + +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Partition Manager${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} " cgdsk_nmbr=" " while [[ -n "${cgdsk_nmbr}" ]]; do NC " -- - - - - - - - - - - - - - - - - - Discoverable Partitions GUID Codes: -${cyan}EFI${nc} system partition > ${cyan}ef00${nc} -Linux x86-64 ${cyan}/ROOT ${nc}> ${cyan}8304${nc} -Linux ${cyan}/HOME${nc} > ${cyan}8302${nc} -Linux ${cyan}/SWAP${nc} > ${cyan}8200${nc} +${cyan}EFI${nc} system partition > ${bwhite}ef00${nc} -- - - - - - - - - - - - - - - - - - +Linux x86-64 ${cyan}/ROOT${nc} > ${bwhite}8304${nc} + +Linux ${cyan}/HOME${nc} > ${bwhite}8302${nc} + +Linux ${cyan}/SWAP${nc} > ${bwhite}8200${nc} " YELLOW " + > Select a disk to Manage: " NC " @@ -2044,21 +2238,21 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " fi done } -########################################################################################### +################################################################################################### instl_dsk (){ sleep 0.3 NC " -___________________________________ -${purple}###${nc} Installation Disk Selection ${purple}###${nc} + +${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Installation Disk Selection${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} " YELLOW " > Select a disk to Install to: " NC " -${disks} " +${disks}" BLUE " @@ -2104,15 +2298,14 @@ Enter a disk number: " return 1 fi } -########################################################################################### +################################################################################################### sanity_check (){ local prompt="Installation Disk" sleep 0.3 NC " -____________________ -${purple}###${nc} Sanity Check ${purple}###${nc} +${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Sanity Check${nc} ${magenta}]${nc}--------------------------------------${magenta}###${nc} " root_dev="$(fdisk -l "${instl_drive}" | grep 'root' | awk "{print \$1}")" boot_dev="$(fdisk -l "${instl_drive}" | grep 'EFI' | awk "{print \$1}")" @@ -2192,6 +2385,7 @@ ${purple}###${nc} Sanity Check ${purple}###${nc} until disk_mngr; do : ; done return 0 elif [[ -e "${root_dev}" && -e "${boot_dev}" ]]; then + sanity="ok" sleep 0.3 NC " @@ -2207,7 +2401,7 @@ ${purple}###${nc} Sanity Check ${purple}###${nc} ==> [Linux /Home ${green}OK${nc}] " fi - + if [[ "${swapmode}" == "1" ]]; then if [[ -e "${swap_dev}" ]]; then sanity="ok" @@ -2237,19 +2431,20 @@ ${purple}###${nc} Sanity Check ${purple}###${nc} return 0 fi fi - sanity="ok" fi - [[ "${sanity}" == "ok" ]] && ok + if [[ "${sanity}" == "ok" ]]; then + ok + fi } -########################################################################################### +################################################################################################### ask_crypt (){ local prompt="Encryption Setup" sleep 0.3 NC " -________________________ -${purple}###${nc} Encryption Setup ${purple}###${nc} + +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Encryption Setup${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} " BLUE " @@ -2357,7 +2552,7 @@ Enter a name: " else sleep 0.3 RED " - [!] Please type 'yes' or 'no' to continue " + [!] Please type 'yes' or 'no' to continue.. " reload return 1 fi @@ -2367,174 +2562,166 @@ Enter a name: " else sleep 0.3 RED " - [!] Please type 'yes' or 'no' to continue " + [!] Please type 'yes' or 'no' to continue.. " reload return 1 fi } -########################################################################################### +################################################################################################### instl (){ install="yes" - - if [[ -z "${SETLOCALE}" ]]; then - sleep 0.3 - RED " + if [[ -z "${lcl_slct}" ]]; then + sleep 0.3 + RED " [!] Please complete 'Locale & Keyboard Layout Selection' to continue + " + until slct_locale; do : ; done + until slct_kbd; do : ; done + fi - " - until slct_locale; do : ; done - until slct_kbd; do : ; done - fi - - if [[ -z "${USERNAME}" ]]; then - sleep 0.3 - RED " + if [[ -z "${USERNAME}" ]]; then + sleep 0.3 + RED " [!] Please complete 'User, Root User & Hostname Setup' to continue + " + until user_setup; do : ; done + until rootuser_setup; do : ; done + until slct_hostname; do : ; done + fi - " - until user_setup; do : ; done - until rootuser_setup; do : ; done - until slct_hostname; do : ; done - fi - - if [[ -z "${kernelnmbr}" ]]; then - sleep 0.3 - RED " + if [[ -z "${kernelnmbr}" ]]; then + sleep 0.3 + RED " [!] Please complete 'Kernel & Bootloader Selection' to continue + " + until slct_krnl; do : ; done + until ask_bootldr; do : ; done + fi - " - until slct_krnl; do : ; done - until ask_bootldr; do : ; done - fi - - if [[ -z "${fs}" ]]; then - sleep 0.3 - RED " + if [[ -z "${fs}" ]]; then + sleep 0.3 + RED " [!] Please complete 'Filesystem & Swap Selection' to continue + " + until ask_fs; do : ; done + until ask_swap; do : ; done + fi - " - until ask_fs; do : ; done - until ask_swap; do : ; done - fi - - if [[ -z "${vgaconf}" ]]; then - sleep 0.3 - RED " + if [[ -z "${vgaconf}" ]]; then + sleep 0.3 + RED " [!] Please complete 'Graphics Setup' to continue + " + until dtct_vga; do : ; done + fi - " - until dtct_vga; do : ; done - fi - - if [[ -z "${packages}" ]]; then - sleep 0.3 - RED " + if [[ -z "${packages}" ]]; then + sleep 0.3 + RED " [!] Please complete 'Desktop Setup' to continue + " + until slct_dsktp; do : ; done + fi - " - until slct_dsktp; do : ; done - fi - - if [[ -z "${efi_entr_del}" ]]; then - sleep 0.3 - RED " + if [[ -z "${efi_entr_del}" ]]; then + sleep 0.3 + RED " [!] Please complete 'EFI Boot Entries Deletion' to continue + " + until boot_entr; do : ; done + fi - " - until boot_entr; do : ; done - fi - - if [[ -z "${wrlss_rgd}" ]]; then - sleep 0.3 - RED " + if [[ -z "${wrlss_rgd}" ]]; then + sleep 0.3 + RED " [!] Please complete 'Wireless Regulatory Domain Setup' to continue + " + until wireless_rgd; do : ; done + fi - " - until wireless_rgd; do : ; done - fi + if [[ "${sanity}" != "ok" ]]; then + sleep 0.3 + RED " - if [[ "${sanity}" != "ok" ]]; then - sleep 0.3 - RED " [!] Please complete 'Installation Disk' & 'Encryption' to continue + " + until instl_dsk; do : ; done + until ask_crypt; do : ; done + fi - " - until instl_dsk; do : ; done - until ask_crypt; do : ; done - fi -#------------------------------------------------------------------------------------------ - if [[ "${swapmode}" == "1" ]]; then + if [[ "${swapmode}" == "1" ]]; then + until "${swaptype}"; do : ; done + fi + + if [[ "${encrypt}" == "no" ]]; then + until set_mode; do : ; done + until confirm_status; do : ; done + elif [[ "${encrypt}" == "yes" ]]; then + until sec_erase; do : ; done + until luks; do : ; done + until opt_pcmn; do : ; done + until pacstrap_system; do : ; done + if [[ "${swapmode}" == "2" ]]; then until "${swaptype}"; do : ; done fi - if [[ "${encrypt}" == "no" ]]; then - until set_mode; do : ; done - until confirm_status; do : ; done - elif [[ "${encrypt}" == "yes" ]]; then - until sec_erase; do : ; done - until luks; do : ; done - until opt_pcmn; do : ; done - until pacstrap_system; do : ; done - if [[ "${swapmode}" == "2" ]]; then - until "${swaptype}"; do : ; done - fi - if [[ -n "${REGDOM}" ]]; then - until wireless_regdom; do : ; done - fi - chroot_conf + if [[ -n "${REGDOM}" ]]; then + until wireless_regdom; do : ; done fi + chroot_conf + fi } -########################################################################################### +################################################################################################### swappart (){ local prompt="Swap Partition" sleep 0.3 NC " -____________________________ -${purple}###${nc} Swap Partition Setup ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Swap Partition Setup${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " if mkswap "${swap_dev}" > /dev/null 2>&1 ; then + swapon "${swap_dev}" > /dev/null 2>&1 || err_abort ok else - err_reload - until disk_mngr; do : ; done - until swappart; do : ; done + swapoff "${swap_dev}" > /dev/null 2>&1 + err_abort fi } -########################################################################################### +################################################################################################### set_mode (){ sleep 0.3 NC " -______________________ -${purple}###${nc} Mode Selection ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Mode Selection${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " YELLOW " @@ -2569,22 +2756,22 @@ Enter a Mode number: " sleep 0.3 NC " - + ==> [${green}Filesystems OK${nc}] " sleep 0.3 YELLOW " -###----------------------------------------[ FILESYSTEM OVERVIEW ]----------------------------------------### +###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### " - lsblk -f |GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' + lsblk -f|GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' YELLOW " - -###-------------------------------------------------------------------------------------------------------###" + +###-----------------------------------------------------------------------------------------------------------------###" echo sleep 1 } -########################################################################################### +################################################################################################### auto_mode (){ sleep 0.3 @@ -2597,78 +2784,62 @@ auto_mode (){ if [[ "${fs}" == "1" ]]; then if mkfs.ext4 -F -L Root "${root_dev}" > /dev/null 2>&1 ; then - if mount "${root_dev}" /mnt; then - sleep 0.3 - NC " + mount "${root_dev}" /mnt > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}/Root OK${nc}] - " - else - umount_manual - until disk_mngr; do : ; done - until form_root; do : ; done - until mount_mnt; do : ; done - fi + " else umount_manual until disk_mngr; do : ; done until form_root; do : ; done until mount_mnt; do : ; done fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- elif [[ "${fs}" == "2" ]]; then - mkfs.btrfs -f -L Root "${root_dev}" > /dev/null 2>&1 && - mount "${root_dev}" /mnt && - btrfs subvolume create /mnt/@ && - btrfs subvolume create /mnt/@home && - btrfs subvolume create /mnt/@cache && - btrfs subvolume create /mnt/@log && - btrfs subvolume create /mnt/@tmp && - btrfs subvolume create /mnt/@snapshots && - if [[ "${swapmode}" == "2" ]]; then - btrfs subvolume create /mnt/@swap - fi - if umount /mnt; then - mount -o "${sbvl_mnt_opts}",subvol=@ "${root_dev}" /mnt && - if [[ "${swapmode}" == "2" ]]; then - mkdir -p /mnt/swap > /dev/null 2>&1 && - mount -o rw,nodatacow,subvol=@swap "${root_dev}" /mnt/swap - fi - mkdir -p /mnt/{var/cache,home,var/log,var/tmp,"${snapname}"} > /dev/null 2>&1 && - mount -o "${sbvl_mnt_opts}",subvol=@cache "${root_dev}" /mnt/var/cache && - mount -o "${sbvl_mnt_opts}",subvol=@home "${root_dev}" /mnt/home && - mount -o "${sbvl_mnt_opts}",subvol=@log "${root_dev}" /mnt/var/log && - mount -o "${sbvl_mnt_opts}",subvol=@snapshots "${root_dev}" /mnt/"${snapname}" && - if mount -o "${sbvl_mnt_opts}",subvol=@tmp "${root_dev}" /mnt/var/tmp; then - sleep 0.3 - NC " -==> [${green}/@ OK${nc}] - " - else - umount_manual - until disk_mngr; do : ; done - until form_root; do : ; done - until mount_mnt; do : ; done + if mkfs.btrfs -f -L Root "${root_dev}" > /dev/null 2>&1 ; then + mount "${root_dev}" /mnt > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@ > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@home > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@cache > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@log > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@tmp > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@snapshots > /dev/null 2>&1 || err_abort + if [[ "${swapmode}" == "2" ]]; then + btrfs subvolume create /mnt/@swap > /dev/null 2>&1 || err_abort fi + umount /mnt > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@ "${root_dev}" /mnt > /dev/null 2>&1 || err_abort + if [[ "${swapmode}" == "2" ]]; then + mkdir -p /mnt/swap > /dev/null 2>&1 || err_abort + mount -o rw,nodatacow,subvol=@swap "${root_dev}" /mnt/swap > /dev/null 2>&1 || err_abort + fi + mkdir -p /mnt/{var/cache,home,var/log,var/tmp,"${snapname}"} > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@cache "${root_dev}" /mnt/var/cache > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@home "${root_dev}" /mnt/home > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@log "${root_dev}" /mnt/var/log > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@snapshots "${root_dev}" /mnt/"${snapname}" > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@tmp "${root_dev}" /mnt/var/tmp > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " +==> [${green}/@ OK${nc}] + " else - err_abort + umount_manual + until disk_mngr; do : ; done + until form_root; do : ; done + until mount_mnt; do : ; done fi fi sleep 0.3 -#------------------------------------------------------------------------------------------ - if mkdir -pv /mnt/boot > /dev/null 2>&1 ; then +#-------------------------------------------------------------------------------------------------- + mkdir -pv /mnt/boot > /dev/null 2>&1 || err_abort if mkfs.fat -F 32 -n Boot "${boot_dev}" > /dev/null 2>&1 ; then - if mount "${boot_dev}" /mnt/boot; then - sleep 0.3 - NC " + mount "${boot_dev}" /mnt/boot > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}/Boot OK${nc}] - " - else - umount_manual - until disk_mngr; do : ; done - until form_efi; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - fi + " else umount_manual until disk_mngr; do : ; done @@ -2676,14 +2847,8 @@ auto_mode (){ until mount_mnt; do : ; done until mount_boot; do : ; done fi - else - sleep 0.3 - RED " - [!] Failed creating /mnt/boot directory " - abort - fi - sleep 0.3 -#------------------------------------------------------------------------------------------ + sleep 0.3 +#-------------------------------------------------------------------------------------------------- if [[ -e "${home_dev}" && "${fs}" == "1" ]]; then BLUE " @@ -2695,34 +2860,20 @@ auto_mode (){ ==> " homeform if [[ "${homeform}" == "y" ]]; then - if mkdir -pv /mnt/home > /dev/null 2>&1 ; then - if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then - if mount "${home_dev}" /mnt/home; then - sleep 0.3 - NC " -==> [${green}/Home OK${nc}] - " - else - umount_manual - until disk_mngr; do : ; done - until form_home; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - until mount_home; do : ; done - fi - else - umount_manual - until disk_mngr; do : ; done - until form_home; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - until mount_home; do : ; done - fi - else + mkdir -pv /mnt/home > /dev/null 2>&1 || err_abort + if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then + mount "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort sleep 0.3 - RED " - [!] Failed creating /mnt/home directory " - abort + NC " +==> [${green}/Home OK${nc}] + " + else + umount_manual + until disk_mngr; do : ; done + until form_home; do : ; done + until mount_mnt; do : ; done + until mount_boot; do : ; done + until mount_home; do : ; done fi elif [[ "${homeform}" == "n" ]]; then skip @@ -2732,7 +2883,7 @@ auto_mode (){ fi fi } -########################################################################################### +################################################################################################### manual_mode (){ if [[ -e "${home_dev}" ]]; then @@ -2741,43 +2892,42 @@ manual_mode (){ until form_root; do : ; done until form_home; do : ; done until mount_mnt; do : ; done - mkdir -pv /mnt/{boot,home} > /dev/null 2>&1 + mkdir -pv /mnt/{boot,home} > /dev/null 2>&1 || err_abort until mount_boot; do : ; done until mount_home; do : ; done elif [[ "${fs}" == "2" ]]; then until form_efi; do : ; done until form_root; do : ; done until mount_mnt; do : ; done - mkdir -pv /mnt/boot > /dev/null 2>&1 + mkdir -pv /mnt/boot > /dev/null 2>&1 || err_abort until mount_boot; do : ; done fi else until form_efi; do : ; done until form_root; do : ; done until mount_mnt; do : ; done - mkdir -pv /mnt/boot > /dev/null 2>&1 + mkdir -pv /mnt/boot > /dev/null 2>&1 || err_abort until mount_boot; do : ; done fi } -########################################################################################### +################################################################################################### form_efi (){ sleep 0.3 NC " -_____________________________ -${purple}###${nc} Format Boot Partition ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Format Boot Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " form_boot_nmbr=" " while [[ -n "${form_boot_nmbr}" ]]; do - YELLOW " > Select a partition to format as EFI [/Boot] " NC " -${volumes} " +${volumes}" BLUE " @@ -2806,31 +2956,30 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " fi fi RED " - + [!] Warning: Partition NOT Formatted " skip done } -########################################################################################### +################################################################################################### form_root (){ sleep 0.3 NC " -_____________________________ -${purple}###${nc} Format Root Partition ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Format Root Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " form_root_nmbr=" " while [[ -n "${form_root_nmbr}" ]]; do - YELLOW " > Select a partition to format as ${fsname} [${roottype}] " NC " -${volumes} " +${volumes}" BLUE " @@ -2841,7 +2990,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " if [[ -n "${form_root_nmbr}" ]]; then rootpart="$(echo "${volumes}" | awk "\$1 == ${form_root_nmbr} { print \$2}")" if [[ -e "${rootpart}" ]]; then -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- if [[ "${fs}" == "1" ]]; then if mkfs.ext4 -F "${rootpart}" > /dev/null 2>&1 ; then sleep 0.3 @@ -2855,33 +3004,27 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " until form_root; do : ; done return 0 fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- elif [[ "${fs}" == "2" ]]; then if mkfs.btrfs -f "${rootpart}" > /dev/null 2>&1 ; then - mount "${rootpart}" /mnt && - btrfs subvolume create /mnt/@ && - btrfs subvolume create /mnt/@home && - btrfs subvolume create /mnt/@cache && - btrfs subvolume create /mnt/@log && - btrfs subvolume create /mnt/@tmp && - btrfs subvolume create /mnt/@snapshots && + mount "${rootpart}" /mnt > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@ > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@home > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@cache > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@log > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@tmp > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@snapshots > /dev/null 2>&1 || err_abort if [[ "${swapmode}" == "2" ]]; then - btrfs subvolume create /mnt/@swap + btrfs subvolume create /mnt/@swap > /dev/null 2>&1 || err_abort fi - if umount /mnt; then - sleep 0.3 - NC " + umount /mnt > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}Format ${roottype} OK${nc}] " - else - sleep 0.3 - RED " - [!] Unmounting failed " - abort - fi else - reload + umount_abort until disk_mngr; do : ; done until form_root; do : ; done return 0 @@ -2904,40 +3047,32 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " if [[ -n "${rootpartname}" ]]; then if [[ "${fs}" == "1" ]]; then - if e2label "${rootpart}" "${rootpartname}" > /dev/null 2>&1 ; then - sleep 0.3 - NC " + if e2label "${rootpart}" "${rootpartname}" > /dev/null 2>&1 ; then + sleep 0.3 + NC " ==> [${green}Label ${roottype} OK${nc}] " - return 0 + return 0 else - err_try - until disk_mngr; do : ; done - until form_root; do : ; done - return 0 + err_try + return 1 fi elif [[ "${fs}" == "2" ]]; then - mount "${rootpart}" /mnt && - btrfs filesystem label /mnt "${rootpartname}" > /dev/null 2>&1 && - if umount /mnt; then - sleep 0.3 - NC " + mount "${rootpart}" /mnt || err_abort + btrfs filesystem label /mnt "${rootpartname}" > /dev/null 2>&1 || err_abort + umount /mnt || err_abort + sleep 0.3 + NC " ==> [${green}Label ${roottype} OK${nc}] " - return 0 - else - err_try - until disk_mngr; do : ; done - until form_root; do : ; done - return 0 - fi + return 0 fi fi skip return 0 else RED " - + [!] Warning: Partition NOT Formatted " skip @@ -2945,11 +3080,10 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " fi done } -########################################################################################### +################################################################################################### ask_homepart_form (){ if [[ -e "${home_dev}" && "${fs}" == "1" ]]; then - BLUE " @@ -2963,36 +3097,22 @@ ask_homepart_form (){ echo if [[ "${homeform}" == "y" ]]; then - if mkdir -pv /mnt/home > /dev/null 2>&1 ; then - if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then - if mount "${home_dev}" /mnt/home; then - sleep 0.3 - NC " + mkdir -pv /mnt/home > /dev/null 2>&1 || err_abort + if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then + mount "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}/Home OK${nc}] - " - else - umount_manual - until disk_mngr; do : ; done - until form_home; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - until mount_home; do : ; done - fi - else - umount_manual - until disk_mngr; do : ; done - until form_home; do : ; done - until mount_mnt; do : ; done - until mount_boot; do : ; done - until mount_home; do : ; done - fi + " else - sleep 0.3 - RED " - [!] Failed creating /mnt/home directory " - abort + umount_manual + until disk_mngr; do : ; done + until form_home; do : ; done + until mount_mnt; do : ; done + until mount_boot; do : ; done + until mount_home; do : ; done fi elif [[ "${homeform}" == "n" ]]; then skip @@ -3003,19 +3123,18 @@ ask_homepart_form (){ fi fi } -########################################################################################### +################################################################################################### form_home (){ sleep 0.3 NC " -_____________________________ -${purple}###${nc} Format Home Partition ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Format Home Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " form_home_nmbr=" " while [[ -n "${form_home_nmbr}" ]]; do - YELLOW " > Select a partition to format as Ext4 [/Home] " @@ -3049,7 +3168,6 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " invalid return 1 fi - YELLOW " > Label the /Home partition " @@ -3061,7 +3179,7 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " ==> " homepartname if [[ -n "${homepartname}" ]]; then - if e2label "${homepart}" "${homepartname}"; then + if e2label "${homepart}" "${homepartname}" > /dev/null 2>&1 ;then sleep 0.3 NC " @@ -3069,9 +3187,7 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " return 0 else err_try - until disk_mngr; do : ; done - until form_home; do : ; done - return 0 + return 1 fi fi skip @@ -3082,15 +3198,15 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " fi done } -########################################################################################### +################################################################################################### mount_mnt (){ local prompt="Mount ${roottype}" sleep 0.3 NC " -____________________________ -${purple}###${nc} Mount Root Partition ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Mount Root Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " YELLOW " @@ -3110,9 +3226,9 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " if [[ -n "${mntroot_nmbr}" ]]; then rootpart="$(echo "${volumes}" | awk "\$1 == ${mntroot_nmbr} { print \$2}")" if [[ -e "${rootpart}" ]]; then -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- if [[ "${fs}" == "1" ]]; then - if mount "${rootpart}" /mnt; then + if mount "${rootpart}" /mnt > /dev/null 2>&1 ; then sleep 0.3 ok return 0 @@ -3120,28 +3236,28 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " umount_abort until mount_mnt; do : ; done fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- elif [[ "${fs}" == "2" ]]; then - mount -o "${sbvl_mnt_opts}",subvol=@ "${rootpart}" /mnt && - if [[ "${swapmode}" == "2" ]]; then - mkdir -p /mnt/swap > /dev/null 2>&1 && - mount -o rw,nodatacow,subvol=@swap "${rootpart}" /mnt/swap - fi - mkdir -p /mnt/{var/cache,home,var/log,var/tmp,"${snapname}"} > /dev/null 2>&1 && - mount -o "${sbvl_mnt_opts}",subvol=@cache "${rootpart}" /mnt/var/cache && - mount -o "${sbvl_mnt_opts}",subvol=@home "${rootpart}" /mnt/home && - mount -o "${sbvl_mnt_opts}",subvol=@log "${rootpart}" /mnt/var/log && - mount -o "${sbvl_mnt_opts}",subvol=@snapshots "${rootpart}" /mnt/"${snapname}" && - if mount -o "${sbvl_mnt_opts}",subvol=@tmp "${rootpart}" /mnt/var/tmp; then + if mount -o "${sbvl_mnt_opts}",subvol=@ "${rootpart}" /mnt > /dev/null 2>&1 ; then + if [[ "${swapmode}" == "2" ]]; then + mkdir -p /mnt/swap > /dev/null 2>&1 || err_abort + mount -o rw,nodatacow,subvol=@swap "${rootpart}" /mnt/swap > /dev/null 2>&1 || err_abort + fi + mkdir -p /mnt/{var/cache,home,var/log,var/tmp,"${snapname}"} > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@cache "${rootpart}" /mnt/var/cache > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@home "${rootpart}" /mnt/home > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@log "${rootpart}" /mnt/var/log > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@snapshots "${rootpart}" /mnt/"${snapname}" > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@tmp "${rootpart}" /mnt/var/tmp > /dev/null 2>&1 || err_abort sleep 0.3 ok - return 0 + return 0 else - umount_abort - until mount_mnt; do : ; done + umount_abort + until mount_mnt; do : ; done fi fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- else invalid return 1 @@ -3151,15 +3267,15 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " return 1 fi } -########################################################################################### +################################################################################################### mount_boot (){ local prompt="Mount /Boot" sleep 0.3 NC " -____________________________ -${purple}###${nc} Mount Boot Partition ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Mount Boot Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " YELLOW " @@ -3167,7 +3283,7 @@ ${purple}###${nc} Mount Boot Partition ${purple}###${nc} NC " -${volumes} " +${volumes}" BLUE " @@ -3179,7 +3295,7 @@ Enter your${nc} ${cyan}/Boot ${blue}partition number: " if [[ -n "${mntboot_nmbr}" ]]; then bootpart="$(echo "${volumes}" | awk "\$1 == ${mntboot_nmbr} { print \$2}")" if [[ -e "${bootpart}" ]]; then - if mount "${bootpart}" /mnt/boot; then + if mount "${bootpart}" /mnt/boot > /dev/null 2>&1 ; then ok return 0 else @@ -3196,15 +3312,15 @@ Enter your${nc} ${cyan}/Boot ${blue}partition number: " return 1 fi } -########################################################################################### +################################################################################################### mount_home (){ local prompt="Mount /Home" sleep 0.3 NC " -____________________________ -${purple}###${nc} Mount Home Partition ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Mount Home Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " YELLOW " @@ -3212,7 +3328,7 @@ ${purple}###${nc} Mount Home Partition ${purple}###${nc} NC " -${volumes} " +${volumes}" BLUE " @@ -3224,7 +3340,7 @@ Enter your${nc} ${cyan}/Home ${blue}partition number: " if [[ -n "${mnthome_nmbr}" ]]; then homepart="$(echo "${volumes}" | awk "\$1 == ${mnthome_nmbr} { print \$2}")" if [[ -e "${homepart}" ]]; then - if mount "${homepart}" /mnt/home; then + if mount "${homepart}" /mnt/home > /dev/null 2>&1 ; then ok return 0 else @@ -3242,15 +3358,15 @@ Enter your${nc} ${cyan}/Home ${blue}partition number: " return 1 fi } -########################################################################################### +################################################################################################### confirm_status (){ local prompt="System Ready" sleep 0.3 NC " -___________________________________ -${purple}###${nc} Confirm Installation Status ${purple}###${nc} + +${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm Installation Status${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} " BLUE " @@ -3273,18 +3389,18 @@ ${purple}###${nc} Confirm Installation Status ${purple}###${nc} until "${swaptype}"; do : ; done fi if [[ -n "${REGDOM}" ]]; then - until wireless_regdom; do : ; done + until wireless_regdom; do : ; done fi chroot_conf elif [[ "${agree}" == "no" ]]; then reload sleep 0.3 NC " -___________________________ -${purple}###${nc} Unmount Filesystems ${purple}###${nc} + +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} " - if umount -R /mnt; then + if umount -R /mnt > /dev/null 2>&1 ; then sleep 0.3 NC " @@ -3304,7 +3420,7 @@ ${purple}###${nc} Unmount Filesystems ${purple}###${nc} return 1 fi } -########################################################################################### +################################################################################################### revise (){ revision="yes" @@ -3319,35 +3435,35 @@ revise (){ until disk_mngr; do : ; done until instl_dsk; do : ; done until ask_crypt; do : ; done - if [[ "${swapmode}" == "1" ]]; then + if [[ "${swapmode}" == "1" ]]; then + until "${swaptype}"; do : ; done + fi + if [[ "${encrypt}" == "no" ]]; then + until set_mode; do : ; done + until confirm_status; do : ; done + elif [[ "${encrypt}" == "yes" ]]; then + until sec_erase; do : ; done + until luks; do : ; done + until opt_pcmn; do : ; done + until pacstrap_system; do : ; done + if [[ "${swapmode}" == "2" ]]; then until "${swaptype}"; do : ; done fi - if [[ "${encrypt}" == "no" ]]; then - until set_mode; do : ; done - until confirm_status; do : ; done - elif [[ "${encrypt}" == "yes" ]]; then - until sec_erase; do : ; done - until luks; do : ; done - until opt_pcmn; do : ; done - until pacstrap_system; do : ; done - if [[ "${swapmode}" == "2" ]]; then - until "${swaptype}"; do : ; done - fi - if [[ -n "${REGDOM}" ]]; then - until wireless_regdom; do : ; done - fi - chroot_conf + if [[ -n "${REGDOM}" ]]; then + until wireless_regdom; do : ; done fi + chroot_conf + fi } -########################################################################################### +################################################################################################### sec_erase (){ local prompt="Secure Erasure" sleep 0.3 NC " -___________________________ -${purple}###${nc} Secure Disk Erasure ${purple}###${nc} + +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Secure Disk Erasure${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} " erase_dsk_nmbr=" " @@ -3372,9 +3488,9 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " if [[ -n "${erase_dsk_nmbr}" ]]; then erasedrive="$(echo "${disks}" | awk "\$1 == ${erase_dsk_nmbr} {print \$2}")" if [[ -e "${erasedrive}" ]]; then - cryptsetup open --type plain -d /dev/urandom "${erasedrive}" temp && - dd if=/dev/zero of=/dev/mapper/temp status=progress bs=1M oflag=direct && - cryptsetup close temp + cryptsetup open --type plain -d /dev/urandom "${erasedrive}" temp || err_abort + dd if=/dev/zero of=/dev/mapper/temp status=progress bs=1M oflag=direct || err_abort + cryptsetup close temp || err_abort sleep 0.3 NC " @@ -3384,7 +3500,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " NC " ==> [${green}Rebooting${nc}] " - sleep 3 + sleep 1 reboot else invalid @@ -3395,121 +3511,106 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " ok fi done -} -########################################################################################### +} +################################################################################################### luks (){ sleep 0.3 NC " -_______________________ -${purple}###${nc} LUKS Encryption ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS Encryption${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " if cryptsetup -y -v luksFormat --label CRYPTROOT "${root_dev}"; then if [[ "${rota}" == "0" ]]; then - cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${root_dev}" "${ENCROOT}" + cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${root_dev}" "${ENCROOT}" || err_abort else - cryptsetup luksOpen "${root_dev}" "${ENCROOT}" + cryptsetup luksOpen "${root_dev}" "${ENCROOT}" || err_abort fi #------------------------------------------------------------------------------------------ if [[ "${fs}" == "1" ]]; then - if mkfs.ext4 -F -L Root /dev/mapper/"${ENCROOT}" > /dev/null 2>&1 ; then - if mount /dev/mapper/"${ENCROOT}" /mnt; then - sleep 0.3 - NC " + mkfs.ext4 -F -L Root /dev/mapper/"${ENCROOT}" > /dev/null 2>&1 || err_abort + mount /dev/mapper/"${ENCROOT}" /mnt > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}Encrypted /Root OK${nc}] - " - else - err_abort - fi - else - err_abort - fi + " #------------------------------------------------------------------------------------------ elif [[ "${fs}" == "2" ]]; then - if mkfs.btrfs -L Root /dev/mapper/"${ENCROOT}" > /dev/null 2>&1 ; then - mount /dev/mapper/"${ENCROOT}" /mnt && - btrfs subvolume create /mnt/@ && - btrfs subvolume create /mnt/@home && - btrfs subvolume create /mnt/@cache && - btrfs subvolume create /mnt/@log && - btrfs subvolume create /mnt/@snapshots && - btrfs subvolume create /mnt/@tmp && - if [[ "${swapmode}" == "2" ]]; then - btrfs subvolume create /mnt/@swap - fi - umount /mnt && - mount -o "${sbvl_mnt_opts}",subvol=@ /dev/mapper/"${ENCROOT}" /mnt && - if [[ "${swapmode}" == "2" ]]; then - mkdir -p /mnt/swap > /dev/null 2>&1 && - mount -o rw,nodatacow,subvol=@swap /dev/mapper/"${ENCROOT}" /mnt/swap - fi - mkdir -p /mnt/{var/cache,home,var/log,var/tmp,"${snapname}"} > /dev/null 2>&1 && - mount -o "${sbvl_mnt_opts}",subvol=@cache /dev/mapper/"${ENCROOT}" /mnt/var/cache && - mount -o "${sbvl_mnt_opts}",subvol=@home /dev/mapper/"${ENCROOT}" /mnt/home && - mount -o "${sbvl_mnt_opts}",subvol=@log /dev/mapper/"${ENCROOT}" /mnt/var/log && - mount -o "${sbvl_mnt_opts}",subvol=@snapshots /dev/mapper/"${ENCROOT}" /mnt/"${snapname}" && - mount -o "${sbvl_mnt_opts}",subvol=@tmp /dev/mapper/"${ENCROOT}" /mnt/var/tmp && - sleep 0.3 - NC " -==> [${green}Encrypted /@ OK${nc}] - " - else - err_abort + mkfs.btrfs -L Root /dev/mapper/"${ENCROOT}" > /dev/null 2>&1 || err_abort + mount /dev/mapper/"${ENCROOT}" /mnt > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@ > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@home > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@cache > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@log > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@snapshots > /dev/null 2>&1 || err_abort + btrfs subvolume create /mnt/@tmp > /dev/null 2>&1 || err_abort + if [[ "${swapmode}" == "2" ]]; then + btrfs subvolume create /mnt/@swap > /dev/null 2>&1 || err_abort fi + umount /mnt > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@ /dev/mapper/"${ENCROOT}" /mnt > /dev/null 2>&1 || err_abort + if [[ "${swapmode}" == "2" ]]; then + mkdir -p /mnt/swap > /dev/null 2>&1 || err_abort + mount -o rw,nodatacow,subvol=@swap /dev/mapper/"${ENCROOT}" /mnt/swap > /dev/null 2>&1 || err_abort + fi + mkdir -p /mnt/{var/cache,home,var/log,var/tmp,"${snapname}"} > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@cache /dev/mapper/"${ENCROOT}" /mnt/var/cache > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@home /dev/mapper/"${ENCROOT}" /mnt/home > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@log /dev/mapper/"${ENCROOT}" /mnt/var/log > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@snapshots /dev/mapper/"${ENCROOT}" /mnt/"${snapname}" > /dev/null 2>&1 || err_abort + mount -o "${sbvl_mnt_opts}",subvol=@tmp /dev/mapper/"${ENCROOT}" /mnt/var/tmp > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " +==> [${green}Encrypted /@ OK${nc}] + " fi else umount_abort until luks; do : ; done fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- NC " " if [[ -e "${swap_dev}" ]]; then if cryptsetup -y -v luksFormat --label CRYPTSWAP "${swap_dev}"; then if [[ "${rota}" == "0" ]]; then - cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${swap_dev}" swap + cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${swap_dev}" swap || err_abort else - cryptsetup luksOpen "${swap_dev}" swap + cryptsetup luksOpen "${swap_dev}" swap || err_abort fi - if mkswap /dev/mapper/swap > /dev/null 2>&1 ; then - sleep 0.3 - NC " + mkswap /dev/mapper/swap > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}Encrypted /Swap OK${nc}] " - else - err_abort - fi else umount_abort until luks; do : ; done fi fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- NC " " if [[ "${homecrypt}" == "yes" ]]; then if cryptsetup -y -v luksFormat --label CRYPTHOME "${home_dev}"; then if [[ "${rota}" == "0" ]]; then - cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${home_dev}" "${ENCRHOME}" + cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${home_dev}" "${ENCRHOME}" || err_abort else - cryptsetup luksOpen "${home_dev}" "${ENCRHOME}" + cryptsetup luksOpen "${home_dev}" "${ENCRHOME}" || err_abort fi - mkfs.ext4 -F -L Home /dev/mapper/"${ENCRHOME}" > /dev/null 2>&1 && - mkdir -p /mnt/home > /dev/null 2>&1 && - if mount /dev/mapper/"${ENCRHOME}" /mnt/home; then - sleep 0.3 - NC " + mkfs.ext4 -F -L Home /dev/mapper/"${ENCRHOME}" > /dev/null 2>&1 || err_abort + mkdir -p /mnt/home > /dev/null 2>&1 || err_abort + mount /dev/mapper/"${ENCRHOME}" /mnt/home > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}Encrypted /Home OK${nc}] - " - else - err_abort - fi + " else umount_abort until luks; do : ; done @@ -3526,15 +3627,12 @@ ${purple}###${nc} LUKS Encryption ${purple}###${nc} if [[ "${homeform}" == "y" ]]; then if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then - mkdir -p /mnt/home > /dev/null 2>&1 && - if mount "${home_dev}" /mnt/home; then - sleep 0.3 - NC " + mkdir -p /mnt/home > /dev/null 2>&1 || err_abort + mount "${home_dev}" /mnt/home > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}/Home OK${nc}] - " - else - err_abort - fi + " else umount_abort until luks; do : ; done @@ -3546,18 +3644,14 @@ ${purple}###${nc} LUKS Encryption ${purple}###${nc} return 1 fi fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- if mkfs.fat -F 32 -n Boot "${boot_dev}" > /dev/null 2>&1 ; then - mkdir -pv /mnt/boot > /dev/null 2>&1 && - if mount "${boot_dev}" /mnt/boot; then - sleep 0.3 - NC " + mkdir -pv /mnt/boot > /dev/null 2>&1 || err_abort + mount "${boot_dev}" /mnt/boot > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}/Boot OK${nc}] - " - else - umount_abort - until luks; do : ; done - fi + " else umount_abort until luks; do : ; done @@ -3567,41 +3661,40 @@ ${purple}###${nc} LUKS Encryption ${purple}###${nc} ==> [${green}Encryption OK${nc}]" sleep 0.3 NC " - + ==> [${green}Filesystems OK${nc}] " sleep 0.3 YELLOW " -###----------------------------------------[ FILESYSTEM OVERVIEW ]----------------------------------------### +###---------------------------------------------[ FILESYSTEM OVERVIEW ]---------------------------------------------### " - lsblk -f |GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' + lsblk -f|GREP_COLORS='mt=01;36' grep -E --color=always 'vfat|$'|GREP_COLORS='mt=01;32' grep -E --color=always 'ext4|$'|GREP_COLORS='mt=01;35' grep -E --color=always 'btrfs|$'|GREP_COLORS='mt=01;31' grep -E --color=always 'ntfs|$'|GREP_COLORS='mt=01;33' grep -E --color=always 'swap|$' YELLOW " - -###-------------------------------------------------------------------------------------------------------###" + +###-----------------------------------------------------------------------------------------------------------------###" echo sleep 1 -} -########################################################################################### +} +################################################################################################### opt_pcmn (){ local prompt="PacMan" sleep 0.3 NC " -_______________________ -${purple}###${nc} Optimize PacMan ${purple}###${nc} + +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Pacman Optimization${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} " YELLOW " > Select a Country for your Arch Mirrors: - - + + ### [Hit ${nc}'l' ${yellow}to list Countries, then ${nc}'enter' ${yellow}to search or ${nc}'q' ${yellow}to quit] " BLUE " - Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " read -r -p " ==> " COUNTRY @@ -3612,11 +3705,9 @@ Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " NC " ==> [${green}Default Mirrors OK${nc}] " - elif [[ "${COUNTRY}" == "l" ]]; then reflector --list-countries | more return 1 - elif [[ -n "${COUNTRY}" ]] ; then NC " " @@ -3625,13 +3716,12 @@ Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " NC " ==> [${green}${COUNTRY}'s Mirrors OK${nc}] " - else err_try return 1 fi fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- YELLOW " @@ -3639,7 +3729,6 @@ Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " BLUE " - Enter [y/n]: " read -r -p " ==> " parallel @@ -3661,22 +3750,22 @@ Enter [y/n]: " ${red}*****${nc} [5] " BLUE " + Enter a number: " read -r -p " ==> " parallelnmbr echo - if [[ "${parallelnmbr}" =~ ^(2|3|4|5)$ ]]; then - sed -i "s|#ParallelDownloads = 5|ParallelDownloads = ${parallelnmbr}|g" /etc/pacman.conf - else - invalid - return 1 - fi - sleep 0.3 - NC " + if [[ "${parallelnmbr}" =~ ^(2|3|4|5)$ ]]; then + sed -i "s|#ParallelDownloads = 5|ParallelDownloads = ${parallelnmbr}|g" /etc/pacman.conf > /dev/null 2>&1 || err_abort + else + invalid + return 1 + fi + sleep 0.3 + NC " ==> [${green}${parallelnmbr} Parallel Downloads OK${nc}]" - elif [[ "${parallel}" == "n" ]]; then skip elif [[ -z "${parallel}" ]]; then @@ -3691,15 +3780,15 @@ Enter a number: " fi ok } -########################################################################################### +################################################################################################### pacstrap_system (){ - local prompt="${desktopname}" + local prompt="Pacstrap System" sleep 0.3 NC " -_______________________ -${purple}###${nc} Pacstrap System ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacstrap System${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " @@ -3710,7 +3799,6 @@ ${purple}###${nc} Pacstrap System ${purple}###${nc} bootldr_pkgs="efibootmgr grub-btrfs os-prober" fi fi - if [[ "${vendor}" == "Virtual Machine" ]]; then basepkgs="base nano sudo vim ${bootldr_pkgs} ${fstools} ${kernel} ${microcode} ${vmpkgs} ${devel}" elif [[ "${vendor}" == "Nvidia" ]]; then @@ -3718,7 +3806,6 @@ ${purple}###${nc} Pacstrap System ${purple}###${nc} else basepkgs="base linux-firmware nano sudo vim ${bootldr_pkgs} ${fstools} ${kernel} ${microcode} ${vgapkgs} ${wireless_reg} ${devel}" fi - case "${packages}" in 1) # NOTE: Plasma Desktop: @@ -3797,14 +3884,11 @@ ${purple}###${nc} Pacstrap System ${purple}###${nc} if pacstrap -K -i /mnt ${deskpkgs}; then if [[ "${fs}" == "2" ]]; then - if genfstab -t PARTUUID /mnt >> /mnt/etc/fstab ; then - sleep 0.3 - NC " + genfstab -t PARTUUID /mnt >> /mnt/etc/fstab > /dev/null 2>&1 || err_abort + sleep 0.3 + NC " ==> [${green}Fstab OK${nc}] " - else - err_try - fi fi ok else @@ -3813,69 +3897,57 @@ ${purple}###${nc} Pacstrap System ${purple}###${nc} return 1 fi } -########################################################################################### +################################################################################################### swapfile (){ local prompt="Swapfile" sleep 0.3 NC " -___________________________ -${purple}###${nc} Swapfile Activation ${purple}###${nc} + +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Swapfile Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} " if arch-chroot /mnt <<-SWAP ; then - mkswap -U clear --size ${swapsize}G --file /swapfile > /dev/null 2>&1 + mkswap -U clear --size ${swapsize}G --file /swapfile > /dev/null 2>&1 || exit SWAP - if cat >> /mnt/etc/fstab <<-FSTAB ; then + cat >> /mnt/etc/fstab <<-FSTAB || err_abort /swapfile none swap defaults 0 0 FSTAB - ok - else - sleep 0.3 - RED " - [!] Populating the 'fstab' file has failed " - abort - fi + ok else err_swapfile fi } -########################################################################################### +################################################################################################### swapfile_btrfs (){ local prompt="Btfrs Swapfile" sleep 0.3 NC " -_________________________________ -${purple}###${nc} Btrfs Swapfile Activation ${purple}###${nc} + +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Btrfs Swapfile Setup${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} " if arch-chroot /mnt <<-SWAP ; then - btrfs filesystem mkswapfile --size ${swapsize}g --uuid clear /swap/swapfile > /dev/null 2>&1 + btrfs filesystem mkswapfile --size ${swapsize}g --uuid clear /swap/swapfile > /dev/null 2>&1 || exit SWAP - if cat >> /mnt/etc/fstab <<-FSTAB ; then + cat >> /mnt/etc/fstab <<-FSTAB || err_abort /swap/swapfile none swap defaults 0 0 FSTAB ok - else - sleep 0.3 - RED " - [!] Populating the 'fstab' file has failed " - abort - fi else err_swapfile fi } -########################################################################################### +################################################################################################### wireless_regdom (){ local prompt="Wireless-Regdom" sleep 0.3 NC " -__________________________________ -${purple}###${nc} Setting Up Wireless-Regdom ${purple}###${nc} + +${magenta}###${nc}--------------------------${magenta}[ ${bwhite}Setting Up Wireless Regulatory Domain${nc} ${magenta}]${nc}--------------------------${magenta}###${nc} " if cat >> /mnt/etc/conf.d/wireless-regdom <<-REGDOM ; then WIRELESS_REGDOM="${REGDOM}" @@ -3886,19 +3958,21 @@ REGDOM return 1 fi } -########################################################################################### +################################################################################################### chroot_conf (){ sleep 0.3 NC " -_________________________________ -${purple}###${nc} Chroot & Configure System ${purple}###${nc} + +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Chroot & Configure System${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} " - # Linux-Hardened = No Swap - [[ "${kernelnmbr}" == "3" ]] && swapmode="3" - - #### Encrypted Setup + # Linux-Hardened = No Swap + if [[ "${kernelnmbr}" == "3" ]]; then + swapmode="3" + fi + + #### Encrypted Setup Vars if [[ "${encrypt}" == "yes" ]]; then # Encrypted Root Device encr_root_dev="/dev/mapper/${ENCROOT}" @@ -3906,15 +3980,15 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc} encr_root_opts="rd.luks.name=$(blkid -s UUID -o value "${root_dev}")=${ENCROOT}" # Encrypted Kernel Boot Options encr_root_bootopts="root=${encr_root_dev} ${encr_root_opts} " - - ### Swap Setup - ## Swap Partition (Encryption) + + ### Encrypted Swap Setup + ## Encrypted Swap Partition if [[ "${swapmode}" == "1" ]]; then - # Swap Partition Options (Encryption) + # Encrypted Swap Partition Options encr_swap_opts="rd.luks.name=$(blkid -s UUID -o value "${swap_dev}")=swap" - # Swap Partition Kernel Main Boot Options (Encryption) + # Encrypted Swap Partition Kernel Main Boot Options encr_swap_bootopts="resume=/dev/mapper/swap ${encr_swap_opts} " - ## Swapfile (Encryption) + ## Encrypted Swapfile elif [[ "${swapmode}" == "2" ]]; then # Ext4 Offset if [[ "${fs}" == "1" ]]; then @@ -3923,14 +3997,15 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc} elif [[ "${fs}" == "2" ]]; then offst="$(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)" fi - # Swapfile Kernel Boot Options (Encryption) + # Encrypted Swapfile Kernel Boot Options encr_swap_bootopts="resume=${encr_root_dev} resume_offset=${offst} " ## No Swap elif [[ "${swapmode}" == "3" ]]; then - # No Swap Kernel Boot Options (Encryption) + # No Swap Kernel Boot Options encr_swap_bootopts="" fi - ### Graphics Setup + + ### Graphics Setup (Encryption) ## Configuration = 'Yes' if [[ "${vgaconf}" == "y" ]]; then # Intel @@ -3980,8 +4055,9 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc} fi ### Kernel Boot Options (Encryption) boot_opts="${encr_root_bootopts}${encr_swap_bootopts}${vga_bootopts}${cust_bootopts}${btrfs_bootopts}" -#------------------------------------------------------------------------------------------ - #### Unencrypted Setup +#------------------------------------------------------------------------------------------------------------- + + #### Unencrypted Setup Vars elif [[ "${encrypt}" == "no" ]]; then ### Swap Setup ## Swap Partition @@ -4004,6 +4080,7 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc} # No Swap Kernel Boot Options swap_bootopts="" fi + ### Graphics Setup ## Configuration = 'Yes' if [[ "${vgaconf}" == "y" ]]; then @@ -4057,67 +4134,71 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc} ### Kernel Boot Options (No Encryption) boot_opts="${swap_bootopts}${vga_bootopts}${cust_bootopts}${btrfs_bootopts}" fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- # NOTE: All Vanilla Desktops Basic Configuration: if [[ "${packages}" =~ ^(1|3|5|6|7|8|9|10|11)$ ]]; then - stage_prompt="Base System" + stage_prompt="Basic System" if arch-chroot /mnt <<-VANILLA_CONF ; then - sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen && - locale-gen && - echo LANG=${SETLOCALE} > /etc/locale.conf && - export LANG=${SETLOCALE} && - echo KEYMAP=${SETKBD} > /etc/vconsole.conf && + sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit + locale-gen || exit + echo LANG=${SETLOCALE} > /etc/locale.conf || exit + export LANG=${SETLOCALE} || exit + echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit echo " ${mkinitcpio_mods} - ${mkinitcpio_hooks}" | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf && - mkinitcpio -P && - ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime && - hwclock --systohc && - echo ${HOSTNAME} > /etc/hostname && + ${mkinitcpio_hooks}" | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit + mkinitcpio -P || exit + ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit + hwclock --systohc || exit + echo ${HOSTNAME} > /etc/hostname || exit echo " 127.0.0.1 localhost ::1 localhost - 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts && - echo root:${ROOTPASSWD2} | chpasswd && - useradd -m -G wheel -s /bin/bash ${USERNAME} && - echo ${USERNAME}:${USERPASSWD2} | chpasswd && + 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts || exit + echo root:${ROOTPASSWD2} | chpasswd || exit + useradd -m -G wheel -s /bin/bash ${USERNAME} || exit + echo ${USERNAME}:${USERPASSWD2} | chpasswd || exit echo " - %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd && - visudo -c /etc/sudoers.d/sudoersd + %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit + visudo -c /etc/sudoers.d/sudoersd || exit VANILLA_CONF stage_ok else stage_fail + failure fi if [[ -f /mnt/etc/lightdm/lightdm.conf ]]; then if [[ "${packages}" == "7" ]]; then stage_prompt="Deepin Greeter" if arch-chroot /mnt <<-DEEPIN ; then - sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-deepin-greeter|g' /etc/lightdm/lightdm.conf + sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-deepin-greeter|g' /etc/lightdm/lightdm.conf || exit DEEPIN stage_ok else stage_fail + failure fi elif [[ "${packages}" == "8" ]]; then stage_prompt="GTK Greeter" if arch-chroot /mnt <<-GTK ; then - sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf + sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf || exit GTK stage_ok else stage_fail + failure fi else stage_prompt="Slick Greeter" if arch-chroot /mnt <<-SLICK ; then - sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf + sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf || exit SLICK stage_ok else stage_fail + failure fi fi fi @@ -4125,55 +4206,59 @@ SLICK if [[ "${bootloader}" == "1" ]]; then stage_prompt="Systemd-boot" if arch-chroot /mnt <<-BOOTCTL ; then - bootctl install --graceful && - echo "default arch.conf" > /boot/loader/loader.conf && + bootctl install --graceful || exit + echo "default arch.conf" > /boot/loader/loader.conf || exit echo " title ${entrname} linux /vmlinuz-${kernel} initrd /initramfs-${kernel}.img - options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf && - systemctl enable systemd-boot-update ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services} + options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf || exit + systemctl enable systemd-boot-update ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services} || exit BOOTCTL stage_ok else stage_fail + failure fi elif [[ "${bootloader}" == "2" ]]; then stage_prompt="Grub" if arch-chroot /mnt <<-GRUB ; then - grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB && + grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB || exit sed -i \ -e 's|^GRUB_CMDLINE_LINUX_DEFAULT.*|GRUB_CMDLINE_LINUX_DEFAULT="${boot_opts}"|g' \ -e "/^#GRUB_DISABLE_OS_PROBER=false/s/^#//" \ - /etc/default/grub && - grub-mkconfig -o /boot/grub/grub.cfg && - systemctl enable ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services} + /etc/default/grub || exit + grub-mkconfig -o /boot/grub/grub.cfg || exit + systemctl enable ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services} || exit GRUB stage_ok else stage_fail + failure fi - + if [[ "${bootloader}" == "2" && "${fs}" == "2" ]]; then stage_prompt="Grub-Btrfsd" if arch-chroot /mnt <<-GRUBBTRFSD ; then - systemctl enable grub-btrfsd + systemctl enable grub-btrfsd || exit GRUBBTRFSD stage_ok else stage_fail + failure fi fi if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then stage_prompt="Grub-Nvidia" if arch-chroot /mnt <<-NVIDIAGRUB ; then - sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub && - grub-mkconfig -o /boot/grub/grub.cfg + sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub || exit + grub-mkconfig -o /boot/grub/grub.cfg || exit NVIDIAGRUB stage_ok else stage_fail + failure fi fi fi @@ -4182,7 +4267,7 @@ NVIDIAGRUB if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && "${nvdriver}" == "2" ]]; then stage_prompt="Nvidia-Hook" if arch-chroot /mnt <<-NVIDIAHOOK ; then - mkdir -p /etc/pacman.d/hooks/ > /dev/null 2>&1 && + mkdir -p /etc/pacman.d/hooks/ > /dev/null 2>&1 || exit echo " [Trigger] Operation=Install @@ -4197,22 +4282,23 @@ NVIDIAGRUB Depends=mkinitcpio When=PostTransaction NeedsTargets - Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' " | tee /etc/pacman.d/hooks/nvidia.hook + Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' " | tee /etc/pacman.d/hooks/nvidia.hook || exit NVIDIAHOOK stage_ok else stage_fail + failure fi fi fi completion fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- # NOTE: Plasma / Gnome & Systemd-boot Optimized-System Configuration: if [[ "${packages}" == "2" ]] || [[ "${packages}" == "4" ]]; then - stage_prompt="Main System" - + stage_prompt="System" + if [[ "${packages}" == "2" ]]; then displaymanager="sddm" elif [[ "${packages}" == "4" ]]; then @@ -4226,20 +4312,20 @@ NRG fi if arch-chroot /mnt <<-OPTIMIZED_CONF ; then - sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen && - locale-gen && - echo LANG=${SETLOCALE} > /etc/locale.conf && - export LANG=${SETLOCALE} && - echo KEYMAP=${SETKBD} > /etc/vconsole.conf && - sed -i "/^#Color/s/^#//" /etc/pacman.conf && - update-pciids && + sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit + locale-gen || exit + echo LANG=${SETLOCALE} > /etc/locale.conf || exit + export LANG=${SETLOCALE} || exit + echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit + sed -i "/^#Color/s/^#//" /etc/pacman.conf || exit + update-pciids || exit echo ' ${mkinitcpio_mods} ${mkinitcpio_hooks} COMPRESSION="zstd" COMPRESSION_OPTIONS=(-c -T$(nproc) --auto-threads=logical -) - MODULES_DECOMPRESS="yes"' | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf && - mkinitcpio -P && + MODULES_DECOMPRESS="yes"' | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit + mkinitcpio -P || exit echo ' CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \ @@ -4253,14 +4339,14 @@ NRG OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto) COMPRESSGZ=(pigz -c -f -n) COMPRESSBZ2=(pbzip2 -c -f) - COMPRESSZST=(zstd -c -T0 --ultra -20 --auto-threads=logical -)' | tee /etc/makepkg.conf.d/makepkgd.conf && - ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime && - hwclock --systohc && - echo ${HOSTNAME} > /etc/hostname && + COMPRESSZST=(zstd -c -T0 --ultra -20 --auto-threads=logical -)' | tee /etc/makepkg.conf.d/makepkgd.conf || exit + ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit + hwclock --systohc || exit + echo ${HOSTNAME} > /etc/hostname || exit echo " 127.0.0.1 localhost ::1 localhost - 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts && + 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts || exit echo " net.core.netdev_max_backlog = 16384 net.core.somaxconn = 8192 @@ -4292,14 +4378,14 @@ NRG vm.vfs_cache_pressure = 50 vm.mmap_min_addr = 65536 kernel.printk = 0 0 0 0 - ${perf_stream}" | tee /etc/sysctl.d/99-sysctld.conf && + ${perf_stream}" | tee /etc/sysctl.d/99-sysctld.conf || exit echo " [defaults] - ntfs:ntfs3_defaults=uid=1000,gid=1000,windows_names" | tee /etc/udisks2/mount_options.conf && + ntfs:ntfs3_defaults=uid=1000,gid=1000,windows_names + ntfs:ntfs3_allow=uid=1000,gid=1000,umask,dmask,fmask,iocharset,discard,nodiscard,sparse,nosparse,hidden,nohidden,sys_immutable,nosys_immutable,showmeta,noshowmeta,prealloc,noprealloc,hide_dot_files,nohide_dot_files,windows_names,nocase,case" | tee /etc/udisks2/mount_options.conf || exit echo ' // Original rules: https://github.com/coldfix/udiskie/wiki/Permissions // Changes: Added org.freedesktop.udisks2.filesystem-mount-system, as this is used by Dolphin. - polkit.addRule(function(action, subject) { var YES = polkit.Result.YES; var permission = { @@ -4326,53 +4412,53 @@ NRG if (subject.isInGroup("wheel")) { return permission[action.id]; } - });' | tee /etc/polkit-1/rules.d/99-udisks2.rules && - mkdir -p /etc/systemd/journald.conf.d > /dev/null 2>&1 && + });' | tee /etc/polkit-1/rules.d/99-udisks2.rules || exit + mkdir -p /etc/systemd/journald.conf.d > /dev/null 2>&1 || exit echo " [Journal] - SystemMaxUse=100M" | tee /etc/systemd/journald.conf.d/00-journald.conf && - mkdir -p /etc/systemd/user.conf.d > /dev/null 2>&1 && + SystemMaxUse=100M" | tee /etc/systemd/journald.conf.d/00-journald.conf || exit + mkdir -p /etc/systemd/user.conf.d > /dev/null 2>&1 || exit echo " [Manager] DefaultTimeoutStopSec=5s - DefaultTimeoutAbortSec=5s" | tee /etc/systemd/user.conf.d/00-userd.conf && - sed -i 's|^hosts.*|hosts: mymachines mdns_minimal resolve [!UNAVAIL=return] files myhostname dns|g' /etc/nsswitch.conf && - sed -i 's/ interface = [^ ]*/ interface = all/g' /etc/ipp-usb/ipp-usb.conf && - sed -i "/# set linenumbers/"'s/^#//' /etc/nanorc && - echo tcp_bbr | tee /etc/modules-load.d/modulesd.conf && + DefaultTimeoutAbortSec=5s" | tee /etc/systemd/user.conf.d/00-userd.conf || exit + sed -i 's|^hosts.*|hosts: mymachines mdns_minimal resolve [!UNAVAIL=return] files myhostname dns|g' /etc/nsswitch.conf || exit + sed -i 's/ interface = [^ ]*/ interface = all/g' /etc/ipp-usb/ipp-usb.conf || exit + sed -i "/# set linenumbers/"'s/^#//' /etc/nanorc || exit + echo tcp_bbr | tee /etc/modules-load.d/modulesd.conf || exit echo " country=${REGDOM} wps_cred_add_sae=1 - pmf=2" | tee /etc/wpa_supplicant/wpa_supplicant.conf && - bootctl install --graceful && - echo "default arch.conf" > /boot/loader/loader.conf && + pmf=2" | tee /etc/wpa_supplicant/wpa_supplicant.conf || exit + bootctl install --graceful || exit + echo "default arch.conf" > /boot/loader/loader.conf || exit echo " title ${entrname} linux /vmlinuz-${kernel} initrd /initramfs-${kernel}.img - options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf && - echo root:${ROOTPASSWD2} | chpasswd && - chsh -s /bin/zsh && - useradd -m -G wheel,realtime -s /bin/zsh ${USERNAME} && - echo ${USERNAME}:${USERPASSWD2} | chpasswd && + options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf || exit + echo root:${ROOTPASSWD2} | chpasswd || exit + chsh -s /bin/zsh || exit + useradd -m -G wheel,realtime -s /bin/zsh ${USERNAME} || exit + echo ${USERNAME}:${USERPASSWD2} | chpasswd || exit echo " - Defaults env_reset Defaults pwfeedback Defaults editor=/usr/bin/nano - %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd && - visudo -c /etc/sudoers.d/sudoersd && - systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd systemd-boot-update ${displaymanager} ${trim} ${vm_services} + %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit + visudo -c /etc/sudoers.d/sudoersd || exit + systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd systemd-boot-update ${displaymanager} ${trim} ${vm_services} || exit OPTIMIZED_CONF stage_ok else stage_fail + failure fi if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && "${nvdriver}" == "2" ]]; then stage_prompt="Nvidia-Hook" if arch-chroot /mnt <<-NVIDIAHOOK ; then - mkdir -p /etc/pacman.d/hooks/ > /dev/null 2>&1 && + mkdir -p /etc/pacman.d/hooks/ > /dev/null 2>&1 || exit echo " [Trigger] Operation=Install @@ -4387,68 +4473,72 @@ OPTIMIZED_CONF Depends=mkinitcpio When=PostTransaction NeedsTargets - Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' " | tee /etc/pacman.d/hooks/nvidia.hook + Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' " | tee /etc/pacman.d/hooks/nvidia.hook || exit NVIDIAHOOK stage_ok else stage_fail + failure fi fi fi completion fi -#------------------------------------------------------------------------------------------ +#-------------------------------------------------------------------------------------------------- # NOTE: Custom System Configuration (Add any extra configuration below): if [[ "${packages}" == "12" ]]; then - stage_prompt="Base System" + stage_prompt="Basic System" if arch-chroot /mnt <<-CUSTOM_CONF ; then - sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen && - locale-gen && - echo LANG=${SETLOCALE} > /etc/locale.conf && - export LANG=${SETLOCALE} && - echo KEYMAP=${SETKBD} > /etc/vconsole.conf && + sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit + locale-gen || exit + echo LANG=${SETLOCALE} > /etc/locale.conf || exit + export LANG=${SETLOCALE} || exit + echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit echo " ${mkinitcpio_mods} - ${mkinitcpio_hooks}" | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf && - mkinitcpio -P && - ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime && - hwclock --systohc && - echo ${HOSTNAME} > /etc/hostname && + ${mkinitcpio_hooks}" | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit + mkinitcpio -P || exit + ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit + hwclock --systohc || exit + echo ${HOSTNAME} > /etc/hostname || exit echo " 127.0.0.1 localhost ::1 localhost - 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts && - echo root:${ROOTPASSWD2} | chpasswd && - useradd -m -G wheel -s /bin/bash ${USERNAME} && - echo ${USERNAME}:${USERPASSWD2} | chpasswd && + 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME}" >> /etc/hosts || exit + echo root:${ROOTPASSWD2} | chpasswd || exit + useradd -m -G wheel -s /bin/bash ${USERNAME} || exit + echo ${USERNAME}:${USERPASSWD2} | chpasswd || exit echo " - %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd && - visudo -c /etc/sudoers.d/sudoersd + %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit + visudo -c /etc/sudoers.d/sudoersd || exit CUSTOM_CONF stage_ok else stage_fail + failure fi if [[ -f /mnt/etc/lightdm/lightdm.conf ]]; then if [[ "${greeternmbr}" == "1" ]]; then stage_prompt="GTK Greeter" if arch-chroot /mnt <<-GTK ; then - sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf + sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf || exit GTK stage_ok else stage_fail - fi + failure + fi elif [[ "${greeternmbr}" == "2" ]]; then stage_prompt="Slick Greeter" if arch-chroot /mnt <<-SLICK ; then - sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf + sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf || exit SLICK stage_ok else stage_fail + failure fi fi fi @@ -4456,65 +4546,70 @@ SLICK if [[ "${bootloader}" == "1" ]]; then stage_prompt="Systemd-boot" if arch-chroot /mnt <<-BOOTCTL ; then - bootctl install --graceful && - echo "default arch.conf" > /boot/loader/loader.conf && + bootctl install --graceful || exit + echo "default arch.conf" > /boot/loader/loader.conf || exit echo " title ${entrname} linux /vmlinuz-${kernel} initrd /initramfs-${kernel}.img - options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf && - systemctl enable systemd-boot-update ${customservices} ${trim} ${vm_services} + options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf || exit + systemctl enable systemd-boot-update ${customservices} ${trim} ${vm_services} || exit BOOTCTL stage_ok else stage_fail + failure fi elif [[ "${bootloader}" == "2" ]]; then stage_prompt="Grub" if arch-chroot /mnt <<-GRUB ; then - grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB && + grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB || exit sed -i \ -e 's|^GRUB_CMDLINE_LINUX_DEFAULT.*|GRUB_CMDLINE_LINUX_DEFAULT="${boot_opts}"|g' \ -e "/^#GRUB_DISABLE_OS_PROBER=false/s/^#//" \ - /etc/default/grub && - grub-mkconfig -o /boot/grub/grub.cfg + /etc/default/grub || exit + grub-mkconfig -o /boot/grub/grub.cfg || exit GRUB stage_ok else stage_fail + failure fi if [[ -n "${customservices}" || -n "${trim}" || -n "${vm_services}" ]]; then stage_prompt="Services" if arch-chroot /mnt <<-SERVICES ; then - systemctl enable ${customservices} ${trim} ${vm_services} + systemctl enable ${customservices} ${trim} ${vm_services} || exit SERVICES stage_ok else stage_fail + failure fi fi if [[ "${bootloader}" == "2" && "${fs}" == "2" ]]; then stage_prompt="Grub-Btrfsd" if arch-chroot /mnt <<-GRUBBTRFSD ; then - systemctl enable grub-btrfsd + systemctl enable grub-btrfsd || exit GRUBBTRFSD stage_ok else stage_fail + failure fi fi if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then stage_prompt="Grub-Nvidia" if arch-chroot /mnt <<-NVIDIAGRUB ; then - sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub && - grub-mkconfig -o /boot/grub/grub.cfg + sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub || exit + grub-mkconfig -o /boot/grub/grub.cfg || exit NVIDIAGRUB stage_ok else stage_fail + failure fi fi fi @@ -4523,7 +4618,7 @@ NVIDIAGRUB if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && "${nvdriver}" == "2" ]]; then stage_prompt="Nvidia-Hook" if arch-chroot /mnt <<-NVIDIAHOOK ; then - mkdir -p /etc/pacman.d/hooks/ > /dev/null 2>&1 && + mkdir -p /etc/pacman.d/hooks/ > /dev/null 2>&1 || exit echo " [Trigger] Operation=Install @@ -4538,11 +4633,12 @@ NVIDIAGRUB Depends=mkinitcpio When=PostTransaction NeedsTargets - Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' " | tee /etc/pacman.d/hooks/nvidia.hook + Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' " | tee /etc/pacman.d/hooks/nvidia.hook || exit NVIDIAHOOK stage_ok else stage_fail + failure fi fi fi @@ -4551,17 +4647,24 @@ NVIDIAHOOK umount -R /mnt exit } -# ### END FUNCTIONS ### -########################################################################################### +# END FUNCTIONS +################################################################################################### run_as="$(whoami)" tty="$(tty)" disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)" + LOCALESET="" SETLOCALE="" + lcl_slct="" USERNAME="" kernelnmbr="" fs="" vgaconf="" + vga_setup="" + vendor1="" + vendor2="" + vendor3="" + vendor_slct="" packages="" efi_entr_del="" wrlss_rgd="" @@ -4585,29 +4688,33 @@ NVIDIAHOOK perf_stream="" displaymanager="" wireless_reg="" + bootmode="" trg="" s="" clear first_check sleep 1 - CYAN " + NC " - -********************************* - -### Arch Linux Installation ### - - - $(date) - -********************************* + " + CYANBG "************************************************************************************************* " + CYANBG " " + CYANBG " ### Amelia Installer ### " + CYANBG " " + CYANBG "************************************************************************************************* " + NC " - ${bwhite}Press any key to start${nc}" + + + + + ${bwhite}Press any key to start${nc} " read -r -s -n 1 + clear uefi_check connection_check upd_clock