From f181bc6ada585b5104c1c23cab123c86a25cf8ac Mon Sep 17 00:00:00 2001
From: Jane Doe <ifeelsosecurenow@gmail.com>
Date: Sun, 12 May 2024 11:52:14 +0000
Subject: [PATCH] Changes to comply with 'shellcheck' Added: Stage-Success
 verification to prevent (and abort) an errored installation Code cleanup,
 cosmetic changes, warning prompt added against pacstrap errors & minor script
 corrections

---
 Amelia.sh | 693 ++++++++++++++++++++++++++++++++----------------------
 1 file changed, 410 insertions(+), 283 deletions(-)

diff --git a/Amelia.sh b/Amelia.sh
index e564284..3c382be 100644
--- a/Amelia.sh
+++ b/Amelia.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 # Amelia Installer
-# Version: 4.0
+# Version: 4.1
 
 set -euo pipefail
 trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
@@ -16,16 +16,10 @@ trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
         cyan="\e[36m"
         purple="\e[35m"
         nc="\e[0m"
-        blink="\e[5m"
-        reverse="\e[7m"
-        bright="\e[1m"
         bwhite="\e[0;97m"
 RED (){
         echo -e "${red} $1${nc}"
 }
-REDB (){
-        echo -e "${redb} $1${nc}"
-}
 REDBG (){
         echo -e "${redbg} $1${nc}"
 }
@@ -294,7 +288,7 @@ ${purple}###${nc} Font Selection ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " fontselect
 
     if [[ "${fontselect}" == "1" ]]; then
@@ -311,7 +305,7 @@ Enter a number: "
 uefi_check (){
 
 		bootmode=$(cat /sys/firmware/efi/fw_platform_size)
-        local prompt="UEFI "${bootmode}"-bit Mode"
+        local prompt="UEFI ${bootmode}-bit Mode"
         sleep 0.5
         NC "
 
@@ -419,7 +413,7 @@ ${purple}###${nc} Main Menu ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " menu
 
     case "${menu}" in
@@ -466,7 +460,7 @@ ${purple}###${nc} Personalization ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " persmenu
 
     case "${persmenu}" in
@@ -507,7 +501,7 @@ ${purple}###${nc} Locale Selection ${purple}###${nc}
 
 
 Enter your Locale ${bwhite}(empty for 'en_US.UTF-8')${blue}: "
-        read -p "
+        read -r -p "
 ==> " SETLOCALE
 
     if [[ -z "${SETLOCALE}" ]]; then
@@ -529,7 +523,7 @@ Enter your Locale ${bwhite}(empty for 'en_US.UTF-8')${blue}: "
         sleep 0.5
         YELLOW "
 
-        ###  '"${SETLOCALE}"' Locale has been selected
+        ###  '${SETLOCALE}' Locale has been selected
         "
     fi
         ok
@@ -555,7 +549,7 @@ ${purple}###${nc} Keyboard Layout Selection ${purple}###${nc}
 
 
 Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: "
-        read -p "
+        read -r -p "
 ==> " SETKBD
 
     if [[ -z "${SETKBD}" ]]; then
@@ -577,7 +571,7 @@ Enter your keyboard layout ${bwhite}(empty for 'us')${blue}: "
         sleep 0.5
         YELLOW "
 
-        ###  '"${SETKBD}"' Keyboard Layout has been selected
+        ###  '${SETKBD}' Keyboard Layout has been selected
         "
         loadkeys "${SETKBD}" > /dev/null 2>&1
     fi
@@ -596,7 +590,7 @@ ${purple}###${nc} User Setup ${purple}###${nc}
         BLUE "
 
 Enter a username: "
-        read -p "
+        read -r -p "
 ==> " USERNAME
         echo
 
@@ -615,22 +609,22 @@ Enter a username: "
         return 1
     fi
         BLUE "
-Enter a password for${nc} ${cyan}"${USERNAME}"${blue}: "
-        read -p "
+Enter a password for${nc} ${cyan}${USERNAME}${blue}: "
+        read -r -p "
 ==> " USERPASSWD
         echo
 
     if [[ -z "${USERPASSWD}" ]]; then
         sleep 0.5
         RED "
-        [!] Please enter a password for "${USERNAME}" to continue "
+        [!] Please enter a password for ${USERNAME} to continue "
         reload
         return 1
     fi
 
         BLUE "
-Re-enter${nc} ${cyan}"${USERNAME}"'s ${blue}password: "
-        read -p "
+Re-enter${nc} ${cyan}${USERNAME}'s ${blue}password: "
+        read -r -p "
 ==> " USERPASSWD2
         echo
 
@@ -656,7 +650,7 @@ ${purple}###${nc} Root User Setup ${purple}###${nc}
         BLUE "
 
 Enter a password for the${nc}${cyan} Root ${blue}user: "
-        read -p "
+        read -r -p "
 ==> " ROOTPASSWD
 
     if [[ -z "${ROOTPASSWD}" ]]; then
@@ -671,7 +665,7 @@ Enter a password for the${nc}${cyan} Root ${blue}user: "
         BLUE "
 
 Re-enter${nc} ${cyan}Root ${blue}user's password: "
-        read -p "
+        read -r -p "
 ==> " ROOTPASSWD2
         echo
 
@@ -697,7 +691,7 @@ ${purple}###${nc} Hostname Setup ${purple}###${nc}
         BLUE "
 
 Enter a hostname: "
-        read -p "
+        read -r -p "
 ==> " HOSTNAME
         echo
 
@@ -748,7 +742,7 @@ ${purple}###${nc} System Configuration ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " sysmenu
 
     case "${sysmenu}" in
@@ -805,7 +799,7 @@ ${purple}###${nc} Kernel Selection ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " kernelnmbr
 
     case "${kernelnmbr}" in
@@ -872,7 +866,7 @@ ${purple}###${nc} Bootloader Selection ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " bootloader
 
     case "${bootloader}" in
@@ -923,29 +917,29 @@ ${purple}###${nc} Filesystem Selection ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " fs
         echo
 
     case "${fs}" in
         1)
-            fsname="'Ext4'"
+            fsname="Ext4"
             fs_mod="ext4"
             fstools="e2fsprogs"
             roottype="/ROOT"
             sleep 0.5
             YELLOW "
-        ###  "${fsname}" has been selected
+        ###  ${fsname} has been selected
             " ;;
         2)
-            fsname="'Btrfs'"
+            fsname="Btrfs"
             fs_mod="btrfs"
             fstools="btrfs-progs"
             roottype="/@"
             btrfs_opts="rootflags=subvol=@"
             sleep 0.5
             YELLOW "
-        ###  "${fsname}" has been selected
+        ###  ${fsname} has been selected
             "
             sleep 0.5
             YELLOW "
@@ -955,7 +949,7 @@ Enter a number: "
 
 
 Enter a name: "
-            read -p "
+            read -r -p "
 ==> " snapname
 
             if [[ -z "${snapname}" ]]; then
@@ -998,7 +992,7 @@ ${purple}###${nc} Swap Selection ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " swapmode
 
     case "${swapmode}" in
@@ -1048,7 +1042,7 @@ set_swapsize (){
         local prompt="Swapsize"
         BLUE "
 Enter Swapfile size ${bwhite}(in GiB)${blue}: "
-        read -p "
+        read -r -p "
 ==> " swapsize
         echo
 
@@ -1129,7 +1123,7 @@ ${purple}###${nc} Graphics Setup ${purple}###${nc}
         sleep 0.5
         YELLOW "
 
-        ###  ""${vendor}"" Graphics detected : ${nc}""${vgacard}"""
+        ###  ${vendor} Graphics detected : ${nc}${vgacard}"
 
             if [[ "${vendor}" == "Virtual Machine" ]]; then
                 vgaconf="n"
@@ -1140,7 +1134,7 @@ ${purple}###${nc} Graphics Setup ${purple}###${nc}
             fi
 
         YELLOW "
-        ###  "${sourcetype}" drivers will be used
+        ###  ${sourcetype} drivers will be used
 
 
         >  Enable HW acceleration and auto-configure the graphics subsystem ? [y/n]
@@ -1154,7 +1148,7 @@ BLUE "
 
 
 Enter [y/n]: "
-        read -p "
+        read -r -p "
 ==> " vgaconf
 
         if [[ "${vgaconf}" == "y" ]]; then
@@ -1173,7 +1167,7 @@ Enter [y/n]: "
 
 
 Enter a number ${bwhite}(empty to skip)${blue}: "
-                read -p "
+                read -r -p "
 ==> " islands
                     if [[ -z "${islands}" ]]; then
                         skip
@@ -1209,7 +1203,7 @@ Enter a number ${bwhite}(empty to skip)${blue}: "
 
 
 Enter a number: "
-                read -p "
+                read -r -p "
 ==> " family
 
                     if [[ "${family}" == "1" ]]; then
@@ -1230,7 +1224,7 @@ Enter a number: "
 
 
 Enter a number: "
-                        read -p "
+                        read -r -p "
 ==> " nvdriver
 
                         if [[ "${nvdriver}" == "1" ]]; then
@@ -1305,6 +1299,7 @@ Enter a number: "
         ###  ""${vendor}"" Graphics will be automatically configured
             "
         elif [[ "${vgaconf}" == "n" ]]; then
+            vgapkgs=""
             echo
             skip
         else
@@ -1321,7 +1316,7 @@ Enter a number: "
         sleep 0.5
         YELLOW "
 
-        ###  "${vendor}" Graphics setup detected, consisting of: "
+        ###  ${vendor} Graphics setup detected, consisting of: "
         NC "
 
         _______________________________"
@@ -1329,7 +1324,7 @@ Enter a number: "
             if [[ "${intelcount}" -ge "1" ]]; then
                 perf_stream="dev.i915.perf_stream_paranoid = 0"
                 NC "
-        ["${intelcount}"]  Intel   Graphics device(s)
+        [${intelcount}]  Intel   Graphics device(s)
 
 ${intelcards}
         _______________________________"
@@ -1337,7 +1332,7 @@ ${intelcards}
 
             if [[ "${amdcount}" -ge "1" ]]; then
                 NC "
-        ["${amdcount}"]  AMD     Graphics device(s)
+        [${amdcount}]  AMD     Graphics device(s)
 
 ${amdcards}
         _______________________________"
@@ -1345,7 +1340,7 @@ ${amdcards}
 
             if [[ "${nvidiacount}" -ge "1" ]]; then
                 NC "
-        ["${nvidiacount}"]  Nvidia  Graphics device(s)
+        [${nvidiacount}]  Nvidia  Graphics device(s)
 
 ${nvidiacards}
         _______________________________"
@@ -1402,7 +1397,7 @@ ${purple}###${nc} Desktop Setup ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " packages
 
     case "${packages}" in
@@ -1432,7 +1427,7 @@ Enter a number: "
 
 
 Enter [y/n]: "
-            read -p "
+            read -r -p "
 ==> " console
 
         case "${console}" in
@@ -1475,7 +1470,7 @@ Enter [y/n]: "
 
 
 Enter [y/n]: "
-            read -p "
+            read -r -p "
 ==> " console
 
         case "${console}" in
@@ -1528,15 +1523,15 @@ Enter [y/n]: "
 
         ###  ${desktopname} has been selected
 
-        ###  NOTE: 'base' package group does not include the tools needed for building packages
 
+        ###  NOTE: 'base' meta-package does not include the tools needed for building packages
 
-        >  Install 'base-devel' package group ? [y/n] "
+        >  Install 'base-devel' meta-package ? [y/n] "
         BLUE "
 
 
 Enter [y/n]: "
-        read -p "
+        read -r -p "
 ==> " dev
 
     case "${dev}" in
@@ -1567,13 +1562,12 @@ Enter [y/n]: "
 
         ###  NOTE: Custom Kernel Parameters can be set at boot time
 
-
         >  Enter your own Kernel Parameters ? [y/n] "
         BLUE "
 
 
 Enter [y/n]: "
-        read -p "
+        read -r -p "
 ==> " ask_param
 
         case "${ask_param}" in
@@ -1616,11 +1610,11 @@ ${purple}###${nc} Add Your Packages ${purple}###${nc}
         "
         YELLOW "
         
-        ###  base, linux-firmware (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 -p "
+        read -r -p "
 ==> " custompkgs
 
     if [[ -z "${custompkgs}" ]]; then
@@ -1652,7 +1646,7 @@ ${purple}###${nc} Lightdm Greeter Selection ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " greeternmbr
 
         case "${greeternmbr}" in
@@ -1704,7 +1698,7 @@ ${purple}###${nc} Add Your Services ${purple}###${nc}
         BLUE "
 
 Enter services to be enabled ${bwhite}(space-seperated)${blue}: "
-        read -p "
+        read -r -p "
 ==> " customservices
 
     if [[ -z "${customservices}" ]]; then
@@ -1731,7 +1725,7 @@ ${purple}###${nc} Add Your Kernel Parameters ${purple}###${nc}
         BLUE "
 
 Enter your Kernel parameters to be set at boot ${bwhite}(space-seperated)${blue}: "
-        read -p "
+        read -r -p "
 ==> " cust_bootopts
 
     if [[ -z "${cust_bootopts}" ]]; then
@@ -1766,7 +1760,7 @@ ${purple}###${nc} EFI Boot Entries Deletion ${purple}###${nc}
 
 
 Enter a${nc} ${cyan}BootOrder${blue} number for Deletion ${bwhite}(empty to skip)${blue}: "
-        read -p "
+        read -r -p "
 ==> " boot_entry
         echo
 
@@ -1784,7 +1778,7 @@ Enter a${nc} ${cyan}BootOrder${blue} number for Deletion ${bwhite}(empty to skip
                     sleep 0.5
                     NC "
 
-==> [${green}Entry "${boot_entry}" Deleted${nc}] "
+==> [${green}Entry ${boot_entry} Deleted${nc}] "
                 else
                     err_try
                     return 1
@@ -1822,7 +1816,7 @@ ${purple}###${nc} Wireless Regulatory Domain Setup ${purple}###${nc}
         BLUE "
 
 Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: "
-        read -p "
+        read -r -p "
 ==> " REGDOM
 
     if [[ -z "${REGDOM}" ]]; then
@@ -1843,7 +1837,7 @@ Enter your Country Code, ie:${nc} ${cyan}US ${bwhite}(empty to skip)${blue}: "
         sleep 0.5
         YELLOW "
 
-        ###  '"${REGDOM}"' Country Code has been selected
+        ###  '${REGDOM}' Country Code has been selected
         "
     fi
         ok
@@ -1873,7 +1867,7 @@ ${purple}###${nc} Disk Management ${purple}###${nc}
 
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " diskmenu
 
     case ${diskmenu} in
@@ -1924,11 +1918,11 @@ ${disks} "
 
 
 Enter a disk number ${bwhite}(empty to skip)${blue}: "
-        read -p "
+        read -r -p "
 ==> " gpt_dsk_nmbr
 
         if [[ -n "${gpt_dsk_nmbr}" ]]; then
-            gptdrive="$(echo "${disks}" | awk "\$1 == "${gpt_dsk_nmbr}" { print \$2}")"
+            gptdrive="$(echo "${disks}" | awk "\$1 == ${gpt_dsk_nmbr} { print \$2}")"
                 if [[ -e "${gptdrive}" ]]; then
                     if [[ "${run_as}" != "root" ]]; then
                         sleep 0.5
@@ -1997,11 +1991,11 @@ ${disks}"
 
 
 Enter a disk number ${bwhite}(empty to skip)${blue}: "
-        read -p "
+        read -r -p "
 ==> " cgdsk_nmbr
 
         if [[ -n "${cgdsk_nmbr}" ]]; then
-            drive="$(echo "${disks}" | awk "\$1 =="${cgdsk_nmbr}" {print \$2}")"
+            drive="$(echo "${disks}" | awk "\$1 == ${cgdsk_nmbr} {print \$2}")"
                 if [[ -e "${drive}" ]]; then
                     if [[ "${run_as}" != "root" ]]; then
                         sleep 0.5
@@ -2017,7 +2011,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: "
                     NC "
 
 
-==> [${green}Disk "${drive}" OK${nc}] "
+==> [${green}Disk ${drive} OK${nc}] "
                     return 1
                 else
                     invalid
@@ -2061,12 +2055,12 @@ ${disks} "
 
 
 Enter a disk number: "
-        read -p "
+        read -r -p "
 ==> " instl_dsk_nmbr
         echo
 
     if [[ -n "${instl_dsk_nmbr}" ]]; then
-        instl_drive="$(echo "${disks}" | awk "\$1 == "${instl_dsk_nmbr}" {print \$2}")"
+        instl_drive="$(echo "${disks}" | awk "\$1 == ${instl_dsk_nmbr} {print \$2}")"
             if [[ -e "${instl_drive}" ]]; then
                 if [[ "${run_as}" != "root" ]]; then
                     sleep 0.5
@@ -2261,14 +2255,14 @@ ${purple}###${nc} Encryption Setup ${purple}###${nc}
         "
         BLUE "
 
-        >  Enable "${roottype}" Encryption? [LUKS] "
+        >  Enable ${roottype} Encryption? [LUKS] "
         NC "
 
             * Type '${cyan}no${nc}' to proceed without encryption
 
-            * Type '${cyan}yes${nc}' to encrypt your "${roottype}"
+            * Type '${cyan}yes${nc}' to encrypt your ${roottype}
         "
-        read -p "
+        read -r -p "
 ==> " encrypt
         echo
 
@@ -2280,12 +2274,12 @@ ${purple}###${nc} Encryption Setup ${purple}###${nc}
     elif [[ "${encrypt}" == "yes" ]]; then
         sleep 0.5
         YELLOW "
-        >  Enter a name for your Encrypted "${roottype}" Partition: "
+        >  Enter a name for your Encrypted ${roottype} Partition: "
         BLUE "
 
 
 Enter a name: "
-        read -p "
+        read -r -p "
 ==> " ENCROOT
         echo
 
@@ -2305,7 +2299,7 @@ Enter a name: "
             sleep 0.5
             NC "
 
-==> [${green}Encrypted "${roottype}" Label OK${nc}] "
+==> [${green}Encrypted ${roottype} Label OK${nc}] "
         fi
 
         if [[ -e "${home_dev}" ]]; then
@@ -2326,7 +2320,7 @@ Enter a name: "
 
             * Type '${cyan}yes${nc}' to encrypt your /HOME
                 "
-                read -p "
+                read -r -p "
 ==> " homecrypt
                 echo
 
@@ -2341,7 +2335,7 @@ Enter a name: "
 
 
 Enter a name: "
-                        read -p "
+                        read -r -p "
 ==> " ENCRHOME
                         echo
 
@@ -2374,14 +2368,13 @@ Enter a name: "
                     fi
             fi
         fi
+        ok
     else
         sleep 0.5
         RED "
         [!] Please type 'yes' or 'no' to continue "
         reload
         return 1
-
-        ok
     fi
 }
 ###########################################################################################
@@ -2522,7 +2515,7 @@ instl (){
                 until wireless_regdom; do : ; done
             fi
 
-            until chroot_conf; do : ; done
+            chroot_conf
         fi
 }
 ###########################################################################################
@@ -2564,7 +2557,7 @@ ${purple}###${nc} Mode Selection ${purple}###${nc}
 
 
 Enter a Mode number: "
-        read -p "
+        read -r -p "
 ==> " setmode
         echo
 
@@ -2705,11 +2698,11 @@ auto_mode (){
     if [[ -e "${home_dev}" && "${fs}" == "1" ]]; then
         BLUE "
 
-        >  A /Home partition has been detected. Format as "${fsname}"? [y/n]
+        >  A /Home partition has been detected. Format as ${fsname}? [y/n]
 
 
         "
-        read -p "
+        read -r -p "
 ==> " homeform
 
         if [[ "${homeform}" == "y" ]]; then
@@ -2807,11 +2800,11 @@ ${volumes} "
 
 
 Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: "
-        read -p "
+        read -r -p "
 ==> " form_boot_nmbr
 
     if [[ -n "${form_boot_nmbr}" ]]; then
-        bootpart="$(echo "${volumes}" | awk "\$1 == "${form_boot_nmbr}" { print \$2}")"
+        bootpart="$(echo "${volumes}" | awk "\$1 == ${form_boot_nmbr} { print \$2}")"
             if [[ -e "${bootpart}" ]]; then
                 if mkfs.fat -F 32 -n Boot "${bootpart}"; then
                     sleep 0.5
@@ -2855,7 +2848,7 @@ ${purple}###${nc} Format Root Partition ${purple}###${nc}
 
         YELLOW "
 
-        >  Select a partition to format as "${fsname}" ["${roottype}"] "
+        >  Select a partition to format as ${fsname} [${roottype}] "
         NC "
 
 ${volumes} "
@@ -2863,11 +2856,11 @@ ${volumes} "
 
 
 Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: "
-        read -p "
+        read -r -p "
 ==> " form_root_nmbr
 
     if [[ -n "${form_root_nmbr}" ]]; then
-        rootpart="$(echo "${volumes}" | awk "\$1 == "${form_root_nmbr}" { print \$2}")"
+        rootpart="$(echo "${volumes}" | awk "\$1 == ${form_root_nmbr} { print \$2}")"
             if [[ -e "${rootpart}" ]]; then
 #------------------------------------------------------------------------------------------
                 if [[ "${fs}" == "1" ]]; then
@@ -2876,7 +2869,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: "
                         NC "
 
 
-==> [${green}Format "${roottype}" OK${nc}] "
+==> [${green}Format ${roottype} OK${nc}] "
                     else
                         umount_abort
                         until disk_mngr; do : ; done
@@ -2902,7 +2895,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: "
                             NC "
 
 
-==> [${green}Format "${roottype}" OK${nc}] "
+==> [${green}Format ${roottype} OK${nc}] "
                         else
                             sleep 0.5
                             RED "
@@ -2923,52 +2916,62 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: "
 
             YELLOW "
 
-        >  Label the "${roottype}" partition "
+        >  Label the ${roottype} partition "
             BLUE "
 
 
 Enter a name ${bwhite}(empty to skip and proceed)${blue}: "
-            read -p "
+            read -r -p "
 ==> " rootpartname
 
             if [[ -n "${rootpartname}" ]]; then
 
                 if [[ "${fs}" == "1" ]]; then
-                    e2label "${rootpart}" "${rootpartname}"
+                		if e2label "${rootpart}" "${rootpartname}"; then
+                    		sleep 0.5
+                    		NC "
+
+==> [${green}Label ${roottype} OK${nc}] "
+                    		return 0
+                		else
+                    		err_try
+                    		until disk_mngr; do : ; done
+                    		until form_root; do : ; done
+                    		return 0
+                		fi
+                    	
                 elif [[ "${fs}" == "2" ]]; then
                     mount "${rootpart}" /mnt &&
                     btrfs filesystem label /mnt "${rootpartname}" &&
-                    umount /mnt
-                fi
+                    if umount /mnt; then
+                    		sleep 0.5
+                    		NC "
 
-                if [[ "$?" -eq 0 ]]; then
-                    sleep 0.5
-                    NC "
-
-==> [${green}Label "${roottype}" OK${nc}] "
-                    return 0
-                else
-                    err_try
-                    until disk_mngr; do : ; done
-                    until form_root; do : ; done
-                    return 0
+==> [${green}Label ${roottype} OK${nc}] "
+                    		return 0
+                		else
+                    		err_try
+                    		until disk_mngr; do : ; done
+                    		until form_root; do : ; done
+                    		return 0
+                		fi
                 fi
             fi
 
             skip
             NC "
 
-==> [${green}Label "${roottype}" OK${nc}] "
+==> [${green}Label ${roottype} OK${nc}] "
             return 0
-        else
-            skip
-            NC "
+    else
+        skip
+        NC "
 
 
-==> [${green}Format "${roottype}" OK${nc}] "
-            return 0
-        fi
-    done
+==> [${green}Format ${roottype} OK${nc}] "
+        return 0
+    fi
+  	done
 }
 ###########################################################################################
 ask_homepart_form (){
@@ -2979,11 +2982,11 @@ ask_homepart_form (){
 
 
 
-        >  A /Home partition has been detected. Format as "${fsname}"? [y/n]
+        >  A /Home partition has been detected. Format as ${fsname}? [y/n]
 
 
         "
-        read -p "
+        read -r -p "
 ==> " homeform
         echo
 
@@ -3056,11 +3059,11 @@ ${volumes} "
 
 
 Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: "
-        read -p "
+        read -r -p "
 ==> " form_home_nmbr
 
         if [[ -n "${form_home_nmbr}" ]]; then
-            homepart="$(echo "${volumes}" | awk "\$1 == "${form_home_nmbr}" { print \$2}")"
+            homepart="$(echo "${volumes}" | awk "\$1 == ${form_home_nmbr} { print \$2}")"
                 if [[ -e "${homepart}" ]]; then
                     if mkfs.ext4 -F "${homepart}"; then
                         sleep 0.5
@@ -3086,7 +3089,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: "
 
 
 Enter a name ${bwhite}(empty to skip and proceed)${blue}: "
-            read -p "
+            read -r -p "
 ==> " homepartname
 
             if [[ -n "${homepartname}" ]]; then
@@ -3139,17 +3142,28 @@ ${volumes} "
         BLUE "
 
 
-Enter your${nc} ${cyan}"${roottype}"${blue} partition number: "
-        read -p "
+Enter your${nc} ${cyan}${roottype}${blue} partition number: "
+        read -r -p "
 ==> " mntroot_nmbr
         echo
 
     if [[ -n "${mntroot_nmbr}" ]]; then
-        rootpart="$(echo "${volumes}" | awk "\$1 == "${mntroot_nmbr}" { print \$2}")"
+        rootpart="$(echo "${volumes}" | awk "\$1 == ${mntroot_nmbr} { print \$2}")"
             if [[ -e "${rootpart}" ]]; then
 #------------------------------------------------------------------------------------------
                 if [[ "${fs}" == "1" ]]; then
-                    mount "${rootpart}" /mnt
+                		if mount "${rootpart}" /mnt; then
+                    		sleep 0.5
+                    		NC "
+
+==> [${green}Mount ${roottype} OK${nc}]
+
+                    		"
+                    		return 0
+                		else
+                    		umount_abort
+                    		until mount_mnt; do : ; done
+                		fi                		
 #------------------------------------------------------------------------------------------
                 elif [[ "${fs}" == "2" ]]; then
                     mount -o "${sbvl_mnt_opts}",subvol=@ "${rootpart}" /mnt &&
@@ -3162,21 +3176,20 @@ Enter your${nc} ${cyan}"${roottype}"${blue} partition number: "
                     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}" &&
-                    mount -o "${sbvl_mnt_opts}",subvol=@tmp "${rootpart}" /mnt/var/tmp
+                    		if mount -o "${sbvl_mnt_opts}",subvol=@tmp "${rootpart}" /mnt/var/tmp; then
+                    				sleep 0.5
+                    				NC "
+
+==> [${green}Mount ${roottype} OK${nc}]
+
+                    				"
+                    				return 0
+                				else
+                    				umount_abort
+                    				until mount_mnt; do : ; done
+                				fi
                 fi
 #------------------------------------------------------------------------------------------
-                if [[ "$?" -eq 0 ]]; then
-                    sleep 0.5
-                    NC "
-
-==> [${green}Mount "${roottype}" OK${nc}]
-
-                    "
-                    return 0
-                else
-                    umount_abort
-                    until mount_mnt; do : ; done
-                fi
             else
                 invalid
                 return 1
@@ -3207,12 +3220,12 @@ ${volumes} "
 
 
 Enter your${nc} ${cyan}/BOOT${blue} partition number: "
-        read -p "
+        read -r -p "
 ==> " mntboot_nmbr
         echo
 
     if [[ -n "${mntboot_nmbr}" ]]; then
-        bootpart="$(echo "${volumes}" | awk "\$1 == "${mntboot_nmbr}" { print \$2}")"
+        bootpart="$(echo "${volumes}" | awk "\$1 == ${mntboot_nmbr} { print \$2}")"
             if [[ -e "${bootpart}" ]]; then
                 if mount "${bootpart}" /mnt/boot; then
                     ok
@@ -3252,12 +3265,12 @@ ${volumes} "
 
 
 Enter your${nc} ${cyan}/HOME${blue} partition number: "
-        read -p "
+        read -r -p "
 ==> " mnthome_nmbr
         echo
 
     if [[ -n "${mnthome_nmbr}" ]]; then
-        homepart="$(echo "${volumes}" | awk "\$1 == "${mnthome_nmbr}" { print \$2}")"
+        homepart="$(echo "${volumes}" | awk "\$1 == ${mnthome_nmbr} { print \$2}")"
             if [[ -e "${homepart}" ]]; then
                 if mount "${homepart}" /mnt/home; then
                     ok
@@ -3297,7 +3310,7 @@ ${purple}###${nc} Confirm Installation Status ${purple}###${nc}
             * Type '${cyan}no${nc}' to revise installation
 
         "
-        read -p "
+        read -r -p "
 ==> " agree
 
     if [[ "${agree}" == "yes" ]]; then
@@ -3310,8 +3323,9 @@ ${purple}###${nc} Confirm Installation Status ${purple}###${nc}
         if [[ -n "${REGDOM}" ]]; then
             until wireless_regdom; do : ; done
         fi
-        until chroot_conf; do : ; done
-
+        
+        chroot_conf
+        
     elif [[ "${agree}" == "no" ]]; then
         reload
         sleep 0.5
@@ -3390,12 +3404,12 @@ ${disks}"
 
 
 Enter a disk number ${bwhite}(empty to skip)${blue}: "
-        read -p "
+        read -r -p "
 ==> " erase_dsk_nmbr
         echo
 
         if [[ -n "${erase_dsk_nmbr}" ]]; then
-            erasedrive="$(echo "${disks}" | awk "\$1 == "${erase_dsk_nmbr}" {print \$2}")"
+            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 &&
@@ -3404,7 +3418,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: "
                     NC "
 
 
-==> [${green}Drive "${erasedrive}" Erased OK${nc}] "
+==> [${green}Drive ${erasedrive} Erased OK${nc}] "
 
                     sleep 1
                     NC "
@@ -3552,10 +3566,10 @@ ${purple}###${nc} LUKS Encryption ${purple}###${nc}
     elif [[ "${homecrypt}" == "no" ]]; then
         BLUE "
 
-        >  A /Home partition has been detected. Format as "${fsname}"? [y/n]
+        >  A /Home partition has been detected. Format as ${fsname}? [y/n]
 
         "
-        read -p "
+        read -r -p "
 ==> " homeform
         echo
 
@@ -3643,13 +3657,13 @@ ${purple}###${nc} Optimize PacMan ${purple}###${nc}
 
         "
     for countries in "${list[*]}"; do
-        echo ${countries}
+        echo "${countries}"
     done
         BLUE "
 
 
 Enter country name or code ${bwhite}(Empty for Defaults)${blue}: "
-        read -p "
+        read -r -p "
 ==> " COUNTRY
         echo
 
@@ -3666,7 +3680,7 @@ Enter country name or code ${bwhite}(Empty for Defaults)${blue}: "
             sleep 0.5
             NC "
 
-==> [${green}"${COUNTRY}"'s Mirrors OK${nc}] "
+==> [${green}${COUNTRY}'s Mirrors OK${nc}] "
 
         else
             err_try
@@ -3683,7 +3697,7 @@ Enter country name or code ${bwhite}(Empty for Defaults)${blue}: "
 
 
 Enter [y/n]: "
-        read -p "
+        read -r -p "
 ==> " parallel
         echo
 
@@ -3704,12 +3718,12 @@ Enter [y/n]: "
         BLUE "
 
 Enter a number: "
-        read -p "
+        read -r -p "
 ==> " parallelnmbr
         echo
 
             if [[ "${parallelnmbr}" =~ ^(2|3|4|5)$ ]]; then
-            	sed -i "s|#ParallelDownloads = 5|ParallelDownloads = "${parallelnmbr}"|g" /etc/pacman.conf
+            	sed -i "s|#ParallelDownloads = 5|ParallelDownloads = ${parallelnmbr}|g" /etc/pacman.conf
             else
                 invalid
                 return 1
@@ -3717,7 +3731,7 @@ Enter a number: "
                 sleep 0.5
                 NC "
 
-==> [${green}"${parallelnmbr}" Parallel Downloads OK${nc}]"
+==> [${green}${parallelnmbr} Parallel Downloads OK${nc}]"
 
     elif [[ "${parallel}" == "n" ]]; then
         skip
@@ -3756,96 +3770,104 @@ ${purple}###${nc} Pacstrap System ${purple}###${nc}
     fi
 
     if [[ "${vendor}" == "Virtual Machine" ]]; then
-        basepkgs="base nano sudo vim "${bootldr_pkgs}" "${fstools}" "${kernel}" "${microcode}" "${vmpkgs}" "${devel}""
+        basepkgs="base nano sudo vim ${bootldr_pkgs} ${fstools} ${kernel} ${microcode} ${vmpkgs} ${devel}"
     elif [[ "${vendor}" == "Nvidia" ]]; then
-        basepkgs="base linux-firmware nano sudo vim "${bootldr_pkgs}" "${fstools}" "${kernel}" "${kernel}"-headers "${microcode}" "${vgapkgs}" "${wireless_reg}" "${devel}""
+        basepkgs="base linux-firmware nano sudo vim ${bootldr_pkgs} ${fstools} ${kernel} ${kernel}-headers ${microcode} ${vgapkgs} ${wireless_reg} ${devel}"
     else
-        basepkgs="base linux-firmware nano sudo vim "${bootldr_pkgs}" "${fstools}" "${kernel}" "${microcode}" "${vgapkgs}" "${wireless_reg}" "${devel}""
+        basepkgs="base linux-firmware nano sudo vim ${bootldr_pkgs} ${fstools} ${kernel} ${microcode} ${vgapkgs} ${wireless_reg} ${devel}"
     fi
 
     case "${packages}" in
 
         1)  # NOTE: Plasma Desktop:
 
-            deskpkgs=""${basepkgs}" plasma konsole"
+            deskpkgs="${basepkgs} plasma konsole"
             displaymanager="sddm"
             bluetooth="bluetooth"
             network="NetworkManager" ;;
 
         2)  # NOTE: Custom Plasma & Systemd-boot & Optimized System:
 
-            deskpkgs=""${basepkgs}" alsa-firmware alsa-utils arj ark bluedevil breeze-gtk ccache cups-pdf cups-pk-helper dolphin-plugins e2fsprogs efibootmgr exfatprogs fdkaac ffmpegthumbs firefox git glibc-locales gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb kamera kamoso kate kcalc kde-gtk-config kdegraphics-mobipocket kdegraphics-thumbnailers kdenetwork-filesharing kdeplasma-addons kdesdk-kio kdesdk-thumbnailers kdialog keditbookmarks kget kimageformats kinit kio-admin kio-gdrive kio-zeroconf kompare konsole kscreen kvantum kwrited libappimage libfido2 libktorrent libmms libnfs libva-utils lirc lrzip lua52-socket lzop mac man-db man-pages mesa-demos mesa-utils nano-syntax-highlighting nss-mdns ntfs-3g okular opus-tools p7zip packagekit-qt6 pacman-contrib partitionmanager pdfmixtool pigz pipewire-alsa pipewire-pulse pkgstats plasma-browser-integration plasma-desktop plasma-disks plasma-firewall plasma-nm plasma-pa plasma-wayland-protocols power-profiles-daemon powerdevil powerline powerline-fonts print-manager python-pyqt6 python-reportlab qbittorrent qt6-imageformats qt6-scxml qt6-virtualkeyboard realtime-privileges reflector rng-tools sddm-kcm skanlite sof-firmware sox spectacle sshfs system-config-printer terminus-font timidity++ ttf-ubuntu-font-family unarchiver unrar unzip usb_modeswitch usbutils vdpauinfo vlc vorbis-tools vorbisgain wget xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-kde xsane zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting "${nrg_plc}"" ;;
+            deskpkgs="${basepkgs} alsa-firmware alsa-utils arj ark bluedevil breeze-gtk ccache cups-pdf cups-pk-helper dolphin-plugins e2fsprogs efibootmgr exfatprogs fdkaac ffmpegthumbs firefox git glibc-locales gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb kamera kamoso kate kcalc kde-gtk-config kdegraphics-mobipocket kdegraphics-thumbnailers kdenetwork-filesharing kdeplasma-addons kdesdk-kio kdesdk-thumbnailers kdialog keditbookmarks kget kimageformats kinit kio-admin kio-gdrive kio-zeroconf kompare konsole kscreen kvantum kwrited libappimage libfido2 libktorrent libmms libnfs libva-utils lirc lrzip lua52-socket lzop mac man-db man-pages mesa-demos mesa-utils nano-syntax-highlighting nss-mdns ntfs-3g okular opus-tools p7zip packagekit-qt6 pacman-contrib partitionmanager pdfmixtool pigz pipewire-alsa pipewire-pulse pkgstats plasma-browser-integration plasma-desktop plasma-disks plasma-firewall plasma-nm plasma-pa plasma-wayland-protocols power-profiles-daemon powerdevil powerline powerline-fonts print-manager python-pyqt6 python-reportlab qbittorrent qt6-imageformats qt6-scxml qt6-virtualkeyboard realtime-privileges reflector rng-tools sddm-kcm skanlite sof-firmware sox spectacle sshfs system-config-printer terminus-font timidity++ ttf-ubuntu-font-family unarchiver unrar unzip usb_modeswitch usbutils vdpauinfo vlc vorbis-tools vorbisgain wget xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-kde xsane zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting ${nrg_plc}" ;;
 
         3)  # NOTE: Gnome Desktop:
 
-            deskpkgs=""${basepkgs}" gnome networkmanager"
+            deskpkgs="${basepkgs} gnome networkmanager"
             displaymanager="gdm"
             bluetooth="bluetooth"
             network="NetworkManager" ;;
 
         4)  # NOTE: Custom Gnome & Systemd-boot & Optimized System:
 
-            deskpkgs=""${basepkgs}" evince file-roller gdm gnome-calculator gnome-clocks gnome-console gnome-control-center gnome-disk-utility gnome-keyring gnome-menus gnome-session gnome-shell-extensions gnome-system-monitor gnome-text-editor gnome-tweaks gvfs gvfs-afc gvfs-mtp loupe malcontent nautilus networkmanager power-profiles-daemon simple-scan sushi system-config-printer xdg-desktop-portal-gnome xdg-user-dirs-gtk alsa-firmware alsa-utils ccache cups-pdf e2fsprogs efibootmgr exfatprogs fdkaac git glibc-locales gnome-browser-connector gparted gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb libfido2 libva-utils lrzip mac man-db man-pages meld mesa-utils nano-syntax-highlighting nss-mdns ntfs-3g p7zip pacman-contrib pdfmixtool pigz pipewire-alsa pipewire-pulse pkgstats powerline powerline-fonts qbittorrent realtime-privileges reflector rng-tools sof-firmware terminus-font ttf-ubuntu-font-family unrar unzip usb_modeswitch usbutils vdpauinfo vlc wget zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting "${nrg_plc}"" ;;
+            deskpkgs="${basepkgs} evince file-roller gdm gnome-calculator gnome-clocks gnome-console gnome-control-center gnome-disk-utility gnome-keyring gnome-menus gnome-session gnome-shell-extensions gnome-system-monitor gnome-text-editor gnome-tweaks gvfs gvfs-afc gvfs-mtp loupe malcontent nautilus networkmanager power-profiles-daemon simple-scan sushi system-config-printer xdg-desktop-portal-gnome xdg-user-dirs-gtk alsa-firmware alsa-utils ccache cups-pdf e2fsprogs efibootmgr exfatprogs fdkaac git glibc-locales gnome-browser-connector gparted gst-libav gst-plugin-libcamera gst-plugin-msdk gst-plugin-opencv gst-plugin-pipewire gst-plugin-qmlgl gst-plugin-va gst-plugin-wpe gst-plugins-ugly gstreamer-vaapi htop icoutils ipp-usb libfido2 libva-utils lrzip mac man-db man-pages meld mesa-utils nano-syntax-highlighting nss-mdns ntfs-3g p7zip pacman-contrib pdfmixtool pigz pipewire-alsa pipewire-pulse pkgstats powerline powerline-fonts qbittorrent realtime-privileges reflector rng-tools sof-firmware terminus-font ttf-ubuntu-font-family unrar unzip usb_modeswitch usbutils vdpauinfo vlc wget zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting ${nrg_plc}" ;;
             
         5)  # NOTE: Xfce Desktop:
 
-            deskpkgs=""${basepkgs}" xfce4 lightdm-slick-greeter network-manager-applet"
+            deskpkgs="${basepkgs} xfce4 lightdm-slick-greeter network-manager-applet"
             displaymanager="lightdm"
             network="NetworkManager" ;;
 
         6)  # NOTE: Cinnamon Desktop:
 
-            deskpkgs=""${basepkgs}" cinnamon blueberry lightdm-slick-greeter system-config-printer gnome-keyring "${terminal}""
+            deskpkgs="${basepkgs} cinnamon blueberry lightdm-slick-greeter system-config-printer gnome-keyring ${terminal}"
             displaymanager="lightdm"
             bluetooth="bluetooth"
             network="NetworkManager" ;;
 
         7)  # NOTE: Deepin Desktop:
 
-            deskpkgs=""${basepkgs}" deepin deepin-terminal deepin-kwin networkmanager"
+            deskpkgs="${basepkgs} deepin deepin-terminal deepin-kwin networkmanager"
             displaymanager="lightdm"
             network="NetworkManager" ;;
 
         8)  # NOTE: Budgie Desktop:
 
-            deskpkgs=""${basepkgs}" budgie lightdm-gtk-greeter arc-gtk-theme papirus-icon-theme network-manager-applet "${terminal}""
+            deskpkgs="${basepkgs} budgie lightdm-gtk-greeter arc-gtk-theme papirus-icon-theme network-manager-applet ${terminal}"
             displaymanager="lightdm"
             network="NetworkManager" ;;
 
         9)  # NOTE: Lxqt Desktop:
 
-            deskpkgs=""${basepkgs}" lxqt breeze-icons network-manager-applet sddm xscreensaver"
+            deskpkgs="${basepkgs} lxqt breeze-icons network-manager-applet sddm xscreensaver"
             displaymanager="sddm"
             network="NetworkManager" ;;
 
        10)  # NOTE: Mate Desktop:
 
-            deskpkgs=""${basepkgs}" mate mate-terminal mate-media blueman network-manager-applet mate-power-manager system-config-printer lightdm-slick-greeter"
+            deskpkgs="${basepkgs} mate mate-terminal mate-media blueman network-manager-applet mate-power-manager system-config-printer lightdm-slick-greeter"
             displaymanager="lightdm"
             bluetooth="bluetooth"
             network="NetworkManager" ;;
 
        11) # NOTE: Base System:
 
-            deskpkgs=""${basepkgs}" networkmanager"
+            deskpkgs="${basepkgs} networkmanager"
             network="NetworkManager" ;;
 
        12) # NOTE: Custom System:
 
             if [[ "${vendor}" == "Virtual Machine" ]]; then
-                deskpkgs="base sudo "${bootldr_pkgs}" "${custompkgs}" "${fstools}" "${kernel}" "${microcode}" "${vmpkgs}" "${greeter}""
+                deskpkgs="base sudo ${bootldr_pkgs} ${custompkgs} ${fstools} ${kernel} ${microcode} ${vmpkgs} ${greeter}"
             else
-                deskpkgs="base linux-firmware sudo "${bootldr_pkgs}" "${custompkgs}" "${fstools}" "${kernel}" "${microcode}" "${vgapkgs}" "${wireless_reg}" "${greeter}""
+                deskpkgs="base linux-firmware sudo ${bootldr_pkgs} ${custompkgs} ${fstools} ${kernel} ${microcode} ${vgapkgs} ${wireless_reg} ${greeter}"
             fi ;;
     esac
 
     if pacstrap -K -i /mnt ${deskpkgs}; then
-        if [[ "${fs}" == "2"  ]]; then
-            genfstab -t PARTUUID /mnt >> /mnt/etc/fstab
-        fi
+            if [[ "${fs}" == "2"  ]]; then
+                if genfstab -t PARTUUID /mnt >> /mnt/etc/fstab ; then
+                    sleep 0.5
+                    NC "
+
+==> [${green}Fstab OK${nc}] "
+                else
+                    err_try
+                fi
+            fi
         ok
     else
         err_reload
+        sleep 5
         return 1
     fi
 }
@@ -3866,23 +3888,21 @@ ${purple}###${nc} Swapfile Activation ${purple}###${nc}
         swapon /swapfile
 SWAP
 
-    if [[ "$?" -eq 0 ]] ; then
-        cat >> /mnt/etc/fstab <<-FSTAB
+    if swapon /swapfile; then
+
+        if cat >> /mnt/etc/fstab <<-FSTAB ; then
         /swapfile none swap defaults 0 0
 FSTAB
-
+            ok
+        else
+            sleep 0.5
+            RED "
+        [!] Populating the 'fstab' file has failed "
+            abort
+        fi
     else
         err_swapfile
     fi
-
-    if [[ "$?" -eq 0 ]] ; then
-        ok
-    else
-        sleep 0.5
-        RED "
-        [!] Populating the 'fstab' file has failed "
-        abort
-    fi
 }
 ###########################################################################################
 swapfile_btrfs (){
@@ -3899,22 +3919,21 @@ ${purple}###${nc} Btrfs Swapfile Activation ${purple}###${nc}
         swapon /swap/swapfile
 SWAP
 
-    if [[ "$?" -eq 0 ]] ; then
-        cat >> /mnt/etc/fstab <<-FSTAB
+    if swapon /swap/swapfile; then
+
+        if cat >> /mnt/etc/fstab <<-FSTAB ; then
         /swap/swapfile none swap defaults 0 0
 FSTAB
-
-    else
-        err_swapfile
-    fi
-
-    if [[ "$?" -eq 0 ]] ; then
-        ok
-    else
-        sleep 0.5
-        RED "
+            ok
+        else
+            sleep 0.5
+            RED "
         [!] Populating the 'fstab' file has failed "
-        abort
+            abort
+        fi
+
+    else
+    	err_swapfile
     fi
 }
 ###########################################################################################
@@ -3927,11 +3946,9 @@ __________________________________
 
 ${purple}###${nc} Setting Up Wireless-Regdom ${purple}###${nc}
         "
-        cat >> /mnt/etc/conf.d/wireless-regdom <<-REGDOM
+    if cat >> /mnt/etc/conf.d/wireless-regdom <<-REGDOM ; then
         WIRELESS_REGDOM="${REGDOM}"
 REGDOM
-
-    if [[ "$?" -eq 0 ]] ; then
         ok
     else
         err_reload
@@ -3953,34 +3970,34 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc}
 
     if [[ "${encrypt}" == "yes" ]]; then
 
-        encr_root_dev="/dev/mapper/"${ENCROOT}""
-        encr_root_opts="rd.luks.name=$(blkid -s UUID -o value "${root_dev}")="${ENCROOT}""
-        encr_root_bootopts="root="${encr_root_dev}" "${encr_root_opts}""
+        encr_root_dev="/dev/mapper/${ENCROOT}"
+        encr_root_opts="rd.luks.name=$(blkid -s UUID -o value "${root_dev}")=${ENCROOT}"
+        encr_root_bootopts="root=${encr_root_dev} ${encr_root_opts}"
 
         if [[ "${swapmode}" == "1" ]]; then
             encr_swap_opts="rd.luks.name=$(blkid -s UUID -o value "${swap_dev}")=swap"
-            encr_swap_bootopts="resume=/dev/mapper/swap "${encr_swap_opts}""
+            encr_swap_bootopts="resume=/dev/mapper/swap ${encr_swap_opts}"
         elif [[ "${swapmode}" == "2" ]]; then
             if [[ "${fs}" == "1" ]]; then
                 offst="$(filefrag -v /mnt/swapfile | awk '$1=="0:" {print substr($4, 1, length($4)-2)}')"
             elif [[ "${fs}" == "2" ]]; then
                 offst="$(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)"
             fi
-            encr_swap_bootopts="resume="${encr_root_dev}" resume_offset="${offst}""
+            encr_swap_bootopts="resume=${encr_root_dev} resume_offset=${offst}"
         elif [[ "${swapmode}" == "3" ]]; then
             encr_swap_bootopts=""
         fi
 
         if [[ "${vgaconf}" == "y" ]]; then
             if [[ "${vendor}" == "Intel" ]]; then
-                mkinitcpio_mods="MODULES=(i915 "${fs_mod}")"
+                mkinitcpio_mods="MODULES=(i915 ${fs_mod})"
                 mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf kms keymap consolefont block sd-encrypt filesystems fsck)"
             elif [[ "${vendor}" == "Nvidia" ]]; then
-                mkinitcpio_mods="MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm "${fs_mod}")"
+                mkinitcpio_mods="MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm ${fs_mod})"
                 mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf keymap consolefont block sd-encrypt filesystems fsck)"
                 vga_bootopts="modeset=1"
             elif [[ "${vendor}" == "AMD" ]]; then
-                mkinitcpio_mods="MODULES=(amdgpu radeon "${fs_mod}")"
+                mkinitcpio_mods="MODULES=(amdgpu radeon ${fs_mod})"
                 mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf kms keymap consolefont block sd-encrypt filesystems fsck)"
                 if [[ "${islands}" == "1" ]]; then
                     vga_bootopts="radeon.si_support=0 amdgpu.si_support=1 amdgpu.dc=1"
@@ -3995,13 +4012,13 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc}
         	mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf kms keymap consolefont block sd-encrypt filesystems fsck)"
         	
             if [[ "${vendor}" == "Nvidia" ]]; then
-                mkinitcpio_mods="MODULES=("${fs_mod}" nouveau)"
+                mkinitcpio_mods="MODULES=(${fs_mod} nouveau)"
             else
-                mkinitcpio_mods="MODULES=("${fs_mod}")"
+                mkinitcpio_mods="MODULES=(${fs_mod})"
             fi
         fi
 
-        boot_opts=""${encr_root_bootopts}" "${encr_swap_bootopts}" "${vga_bootopts}" "${cust_bootopts}" "${btrfs_opts}" "
+        boot_opts="${encr_root_bootopts} ${encr_swap_bootopts} ${vga_bootopts} ${cust_bootopts} ${btrfs_opts}"
 
 #------------------------------------------------------------------------------------------
 
@@ -4015,7 +4032,7 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc}
             elif [[ "${fs}" == "2" ]]; then
                 offst="$(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)"
             fi
-            swap_bootopts="resume=UUID=$(blkid -s UUID -o value "${root_dev}") resume_offset="${offst}" "
+            swap_bootopts="resume=UUID=$(blkid -s UUID -o value "${root_dev}") resume_offset=${offst}"
         elif [[ "${swapmode}" == "3" ]]; then
             swap_bootopts=""
         fi
@@ -4049,7 +4066,7 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc}
             fi
         fi
 
-        boot_opts=""${cust_bootopts}" "${swap_bootopts}" "${vga_bootopts}" "${btrfs_opts}""
+        boot_opts="${cust_bootopts} ${swap_bootopts} ${vga_bootopts} ${btrfs_opts}"
     fi
 
 #------------------------------------------------------------------------------------------
@@ -4058,7 +4075,8 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc}
 
     if [[ "${packages}" =~ ^(1|3|5|6|7|8|9|10|11)$ ]]; then
 
-        arch-chroot /mnt <<-VANILLA_CONF
+        if arch-chroot /mnt <<-VANILLA_CONF ; then
+
         sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen &&
         locale-gen &&
         echo LANG=${SETLOCALE} > /etc/locale.conf &&
@@ -4082,26 +4100,45 @@ ${purple}###${nc} Chroot & Configure System ${purple}###${nc}
         %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd &&
         visudo -c /etc/sudoers.d/sudoersd
 VANILLA_CONF
+			stage_1="success"
+		else
+			stage_1="fail"
+		fi
 
         if [[ -f /mnt/etc/lightdm/lightdm.conf ]]; then
 
             if [[ "${packages}" == "7" ]]; then
-                arch-chroot /mnt <<-DEEPIN
+                if arch-chroot /mnt <<-DEEPIN ; then
                 sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-deepin-greeter|g' /etc/lightdm/lightdm.conf
 DEEPIN
+					stage_2="success"
+				else
+					stage_2="fail"
+				fi
+
             elif [[ "${packages}" == "8" ]]; then
-                arch-chroot /mnt <<-GTK
+                if arch-chroot /mnt <<-GTK ; then
                 sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf
 GTK
+					stage_2="success"
+				else
+					stage_2="fail"
+				fi
+
             else
-                arch-chroot /mnt <<-SLICK
+                if arch-chroot /mnt <<-SLICK ; then
                 sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf
 SLICK
+					stage_2="success"
+				else
+					stage_2="fail"
+				fi
             fi
         fi
 
         if [[ "${bootloader}" == "1" ]]; then
-            arch-chroot /mnt <<-BOOTCTL
+
+            if arch-chroot /mnt <<-BOOTCTL ; then
             bootctl install --graceful &&
             echo "default arch.conf" > /boot/loader/loader.conf &&
             echo "
@@ -4111,9 +4148,14 @@ SLICK
             options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf &&
             systemctl enable systemd-boot-update ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services}
 BOOTCTL
+				stage_3="success"
+			else
+				stage_3="fail"
+			fi
 
         elif [[ "${bootloader}" == "2" ]]; then
-            arch-chroot /mnt <<-GRUB
+
+            if arch-chroot /mnt <<-GRUB ; then
             grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB &&
             sed -i \
             -e 's|^GRUB_CMDLINE_LINUX_DEFAULT.*|GRUB_CMDLINE_LINUX_DEFAULT="${boot_opts}"|g' \
@@ -4122,26 +4164,38 @@ BOOTCTL
             grub-mkconfig -o /boot/grub/grub.cfg &&
             systemctl enable ${bluetooth} ${displaymanager} ${network} ${trim} ${vm_services}
 GRUB
+				stage_3="success"
+			else
+				stage_3="fail"
+			fi
 
             if [[ "${bootloader}" == "2" && "${fs}" == "2" ]]; then
-                arch-chroot /mnt <<-GRUBBTRFSD
+                if arch-chroot /mnt <<-GRUBBTRFSD ; then
                 systemctl enable grub-btrfsd
 GRUBBTRFSD
+					stage_4="success"
+				else
+					stage_4="fail"
+				fi
             fi
 
             if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
-                arch-chroot /mnt <<-NVIDIAGRUB
+                if arch-chroot /mnt <<-NVIDIAGRUB ; then
                 sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub &&
                 grub-mkconfig -o /boot/grub/grub.cfg
 NVIDIAGRUB
+					stage_5="success"
+				else
+					stage_5="fail"
+				fi
             fi
         fi
 
         if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
 
-            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && ${nvdriver} == "2" ]]; then
-                arch-chroot /mnt <<-NVIDIAHOOK
-                sed -i "s|#HookDir     = /etc/pacman.d/hooks/|HookDir     = /etc/pacman.d/hooks/|g" /etc/pacman.conf &&
+            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && "${nvdriver}" == "2" ]]; then
+
+                if arch-chroot /mnt <<-NVIDIAHOOK ; then
                 mkdir -p /etc/pacman.d/hooks/ &&
                 echo "
                 [Trigger]
@@ -4159,14 +4213,18 @@ NVIDIAGRUB
                 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
 NVIDIAHOOK
+					stage_6="success"
+				else
+					stage_6="fail"
+				fi
             fi
         fi
 
-        if [[ "$?" -eq 0 ]]; then
-            ok
-            completion
+		if [[ "${stage_1}" == "fail" ]] || [[ "${stage_2}" == "fail" ]] || [[ "${stage_3}" == "fail" ]] || [[ "${stage_4}" == "fail" ]] || [[ "${stage_5}" == "fail" ]] || [[ "${stage_6}" == "fail" ]]; then
+			err_instl_abort
         else
-            err_instl_abort
+        	ok
+            completion
         fi
     fi
 
@@ -4182,7 +4240,8 @@ NVIDIAHOOK
 NRG
         fi
 
-        arch-chroot /mnt <<-KOPTIMIZED_CONF
+        if arch-chroot /mnt <<-KOPTIMIZED_CONF ; then
+
         sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen &&
         locale-gen &&
         echo LANG=${SETLOCALE} > /etc/locale.conf &&
@@ -4197,18 +4256,18 @@ NRG
         COMPRESSION_OPTIONS=(-c -T$(nproc) -)
         MODULES_DECOMPRESS="yes"' | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf &&
         mkinitcpio -P &&
-		    echo '
-		    CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions \
+		echo '
+		CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions \
         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
         -fstack-clash-protection -fcf-protection \
         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"      
-		    RUSTFLAGS="-C opt-level=3"
-		    MAKEFLAGS="-j$(nproc)"
-		    BUILDENV=(!distcc color ccache check !sign)
-		    OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
-		    COMPRESSGZ=(pigz -c -f -n)
-		    COMPRESSBZ2=(pbzip2 -c -f)
-		    COMPRESSXZ=(xz -c -z --threads=0 -)' | tee /etc/makepkg.conf.d/makepkgd.conf &&
+	    RUSTFLAGS="-C opt-level=3"
+	    MAKEFLAGS="-j$(nproc)"
+	    BUILDENV=(!distcc color ccache check !sign)
+	    OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
+	    COMPRESSGZ=(pigz -c -f -n)
+	    COMPRESSBZ2=(pbzip2 -c -f)
+	    COMPRESSXZ=(xz -c -z --threads=0 -)' | 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 &&
@@ -4318,12 +4377,17 @@ NRG
         visudo -c /etc/sudoers.d/sudoersd &&
         systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd sddm systemd-boot-update ${trim} ${vm_services}
 KOPTIMIZED_CONF
+			stage_1="success"
+		else
+			stage_1="fail"
+		fi
 
         if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
 
-            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && ${nvdriver} == "2" ]]; then
-                arch-chroot /mnt <<-NVIDIAHOOK
-                sed -i "s|#HookDir     = /etc/pacman.d/hooks/|HookDir     = /etc/pacman.d/hooks/|g" /etc/pacman.conf &&
+            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && "${nvdriver}" == "2" ]]; then
+
+                if arch-chroot /mnt <<-NVIDIAHOOK ; then
+
                 mkdir -p /etc/pacman.d/hooks/ &&
                 echo "
                 [Trigger]
@@ -4341,14 +4405,18 @@ KOPTIMIZED_CONF
                 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
 NVIDIAHOOK
+					stage_2="success"
+				else
+					stage_2="fail"
+				fi
             fi
         fi
-
-        if [[ "$?" -eq 0 ]]; then
-            ok
-            completion
+        
+		if [[ "${stage_1}" == "fail" ]] || [[ "${stage_2}" == "fail" ]] ; then
+			err_instl_abort
         else
-            err_instl_abort
+        	ok
+            completion
         fi
     fi
     
@@ -4364,7 +4432,8 @@ NVIDIAHOOK
 NRG
         fi
 
-        arch-chroot /mnt <<-GNOPTIMIZED_CONF
+        if arch-chroot /mnt <<-GNOPTIMIZED_CONF ; then
+
         sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen &&
         locale-gen &&
         echo LANG=${SETLOCALE} > /etc/locale.conf &&
@@ -4379,18 +4448,18 @@ NRG
         COMPRESSION_OPTIONS=(-c -T$(nproc) -)
         MODULES_DECOMPRESS="yes"' | tee /etc/mkinitcpio.conf.d/mkinitcpiod.conf &&
         mkinitcpio -P &&
-		    echo '
-		    CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions \
+		echo '
+	    CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions \
         -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \
         -fstack-clash-protection -fcf-protection \
         -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"      
-		    RUSTFLAGS="-C opt-level=3"
-		    MAKEFLAGS="-j$(nproc)"
-		    BUILDENV=(!distcc color ccache check !sign)
-		    OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
-		    COMPRESSGZ=(pigz -c -f -n)
-		    COMPRESSBZ2=(pbzip2 -c -f)
-		    COMPRESSXZ=(xz -c -z --threads=0 -)' | tee /etc/makepkg.conf.d/makepkgd.conf &&
+		RUSTFLAGS="-C opt-level=3"
+		MAKEFLAGS="-j$(nproc)"
+	    BUILDENV=(!distcc color ccache check !sign)
+	    OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
+	    COMPRESSGZ=(pigz -c -f -n)
+	    COMPRESSBZ2=(pbzip2 -c -f)
+	    COMPRESSXZ=(xz -c -z --threads=0 -)' | 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 &&
@@ -4500,12 +4569,16 @@ NRG
         visudo -c /etc/sudoers.d/sudoersd &&
         systemctl enable avahi-daemon bluetooth cups gdm ipp-usb NetworkManager rngd systemd-boot-update ${trim} ${vm_services}
 GNOPTIMIZED_CONF
+			stage_1="success"
+		else
+			stage_1="fail"
+		fi
 
         if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
 
-            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && ${nvdriver} == "2" ]]; then
-                arch-chroot /mnt <<-NVIDIAHOOK
-                sed -i "s|#HookDir     = /etc/pacman.d/hooks/|HookDir     = /etc/pacman.d/hooks/|g" /etc/pacman.conf &&
+            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && "${nvdriver}" == "2" ]]; then
+                if arch-chroot /mnt <<-NVIDIAHOOK ; then
+
                 mkdir -p /etc/pacman.d/hooks/ &&
                 echo "
                 [Trigger]
@@ -4523,14 +4596,18 @@ GNOPTIMIZED_CONF
                 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
 NVIDIAHOOK
+					stage_2="success"
+				else
+					stage_2="fail"
+				fi
             fi
         fi
 
-        if [[ "$?" -eq 0 ]]; then
-            ok
-            completion
+		if [[ "${stage_1}" == "fail" ]] || [[ "${stage_2}" == "fail" ]] ; then
+			err_instl_abort
         else
-            err_instl_abort
+        	ok
+            completion
         fi
     fi
 
@@ -4540,7 +4617,8 @@ NVIDIAHOOK
 
     if [[ "${packages}" == "12" ]]; then
 
-        arch-chroot /mnt <<-CUSTOM_CONF
+        if arch-chroot /mnt <<-CUSTOM_CONF ; then
+
         sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen &&
         locale-gen &&
         echo LANG=${SETLOCALE} > /etc/locale.conf &&
@@ -4564,22 +4642,35 @@ NVIDIAHOOK
         %wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd &&
         visudo -c /etc/sudoers.d/sudoersd
 CUSTOM_CONF
+			stage_1="success"
+		else
+			stage_1="fail"
+		fi
 
         if [[ -f /mnt/etc/lightdm/lightdm.conf ]]; then
 
-            if [[ "${greeternmbr}" == "1" ]]; then
-                arch-chroot /mnt <<-GTK
+        	if [[ "${greeternmbr}" == "1" ]]; then
+                if arch-chroot /mnt <<-GTK ; then
                 sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf
 GTK
+					stage_2="success"
+				else
+					stage_2="fail"
+				fi
+								
             elif [[ "${greeternmbr}" == "2" ]]; then
-                arch-chroot /mnt <<-SLICK
+                if arch-chroot /mnt <<-SLICK ; then
                 sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf
 SLICK
+					stage_2="success"
+				else
+					stage_2="fail"
+				fi
             fi
         fi
 
         if [[ "${bootloader}" == "1" ]]; then
-            arch-chroot /mnt <<-BOOTCTL
+            if arch-chroot /mnt <<-BOOTCTL ; then
             bootctl install --graceful &&
             echo "default arch.conf" > /boot/loader/loader.conf &&
             echo "
@@ -4589,9 +4680,13 @@ SLICK
             options rw ${boot_opts}" | tee /boot/loader/entries/arch.conf &&
             systemctl enable systemd-boot-update ${customservices} ${trim} ${vm_services}
 BOOTCTL
+				stage_3="success"
+			else
+				stage_3="fail"
+			fi
 
         elif [[ "${bootloader}" == "2" ]]; then
-            arch-chroot /mnt <<-GRUB
+            if arch-chroot /mnt <<-GRUB ; then
             grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB &&
             sed -i \
             -e 's|^GRUB_CMDLINE_LINUX_DEFAULT.*|GRUB_CMDLINE_LINUX_DEFAULT="${boot_opts}"|g' \
@@ -4599,32 +4694,49 @@ BOOTCTL
             /etc/default/grub &&
             grub-mkconfig -o /boot/grub/grub.cfg
 GRUB
+				stage_3="success"
+			else
+				stage_3="fail"
+			fi
 
             if [[ -n "${customservices}" || -n "${trim}" || -n "${vm_services}" ]]; then
-                arch-chroot /mnt <<-SERVICES
+                if arch-chroot /mnt <<-SERVICES ; then
                 systemctl enable ${customservices} ${trim} ${vm_services}
 SERVICES
+					stage_4="success"
+				else
+					stage_4="fail"
+				fi
             fi
 
             if [[ "${bootloader}" == "2" && "${fs}" == "2" ]]; then
-                arch-chroot /mnt <<-GRUBBTRFSD
+                if arch-chroot /mnt <<-GRUBBTRFSD ; then
                 systemctl enable grub-btrfsd
 GRUBBTRFSD
+					stage_5="success"
+				else
+					stage_5="fail"
+				fi
             fi
 
             if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
-                arch-chroot /mnt <<-NVIDIAGRUB
+                if arch-chroot /mnt <<-NVIDIAGRUB ; then
                 sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub &&
                 grub-mkconfig -o /boot/grub/grub.cfg
 NVIDIAGRUB
+					stage_6="success"
+				else
+					stage_6="fail"
+				fi
             fi
         fi
 
         if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
 
-            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && ${nvdriver} == "2" ]]; then
-                arch-chroot /mnt <<-NVIDIAHOOK
-                sed -i "s|#HookDir     = /etc/pacman.d/hooks/|HookDir     = /etc/pacman.d/hooks/|g" /etc/pacman.conf &&
+            if [[ "${kernelnmbr}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "1" ]] || [[ "${kernelnmbr}" == "2" && "${family}" == "2" && "${nvdriver}" == "2" ]]; then
+
+            	if arch-chroot /mnt <<-NVIDIAHOOK ; then
+
                 mkdir -p /etc/pacman.d/hooks/ &&
                 echo "
                 [Trigger]
@@ -4642,14 +4754,18 @@ NVIDIAGRUB
                 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
 NVIDIAHOOK
+					stage_7="success"
+				else
+					stage_7="fail"
+				fi
             fi
         fi
 
-        if [[ "$?" -eq 0 ]]; then
-            ok
-            completion
+				if [[ "${stage_1}" == "fail" ]] || [[ "${stage_2}" == "fail" ]] || [[ "${stage_3}" == "fail" ]] || [[ "${stage_4}" == "fail" ]] || [[ "${stage_5}" == "fail" ]] || [[ "${stage_6}" == "fail" ]] || [[ "${stage_7}" == "fail" ]] ; then
+			err_instl_abort
         else
-            err_instl_abort
+        	ok
+            completion
         fi
     fi
         umount -R /mnt
@@ -4687,6 +4803,17 @@ NVIDIAHOOK
         vmpkgs=""
         vm_services=""
         perf_stream=""
+		displaymanager=""
+		wireless_reg=""
+		trg=""
+		s=""
+		stage_1=""
+		stage_2=""
+		stage_3=""
+		stage_4=""
+		stage_5=""
+		stage_6=""
+		stage_7=""
 
         clear
         first_check
@@ -4707,7 +4834,7 @@ NVIDIAHOOK
 
 
      ${bwhite}Press any key to start"
-        read -s -n 1
+        read -r -s -n 1
         uefi_check
         connection_check
         upd_clock