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