diff --git a/Amelia.sh b/Amelia.sh index 2a6bf65..76010bb 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -1,32 +1,32 @@ #!/bin/bash # Amelia Installer -# Version: 7.6.1 +# Version: 8.0 -set -euo pipefail -trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR + set -euo pipefail ################################################################################################### # COLOR FUNCTIONS - redbgbl="\e[5;1;41m" #blink bg - redbg="\e[1;41m" #bg + + redbgbl="\e[5;1;41m" + redbg="\e[1;41m" red="\e[31m" - greenbgbl="\e[5;1;42m" #blink bg - greenbg="\e[1;42m" #bg + greenbgbl="\e[5;1;42m" + greenbg="\e[1;42m" green="\e[32m" - yellowbgbl="\e[5;1;43m" #blink bg - yellowbg="\e[1;43m" #bg + yellowbgbl="\e[5;1;43m" + yellowbg="\e[1;43m" yellow="\e[33m" yellowl="\e[93m" - bluebgbl="\e[5;1;44m" #blink bg - bluebg="\e[1;44m" #bg + bluebgbl="\e[5;1;44m" + bluebg="\e[1;44m" blue="\e[94m" - magentabgbl="\e[5;1;45m" #blink bg - magentabg="\e[1;45m" #bg + magentabgbl="\e[5;1;45m" + magentabg="\e[1;45m" magenta="\e[35m" - cyanbgbl="\e[5;1;46m" #blink bg - cyanbg="\e[1;46m" #bg + cyanbgbl="\e[5;1;46m" + cyanbg="\e[1;46m" cyan="\e[36m" - bwhite="\e[0;97m" #bright + bwhite="\e[0;97m" nc="\e[0m" REDBGBL() { @@ -113,6 +113,13 @@ process() { --> [${green}Processing..${nc}] " } +vm() { + sleep 0.2 + RED " + ---------------------------------- + ### ${yellow}Virtual Machine detected ${red}### + ----------------------------------" +} invalid() { sleep 0.2 RED " @@ -155,7 +162,7 @@ unmount() { NC " -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}### " if umount -R /mnt > /dev/null 2>&1 ; then sleep 0.2 @@ -174,37 +181,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmoun failure fi } -unmount_noabort() { - sleep 0.2 - line3 - REDBG " ${yellow}------------------------- " - REDBG " ${yellow}[!] Unmount and Retry [!] " - REDBG " ${yellow}------------------------- " - sleep 0.2 - NC " - - -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Unmount Filesystems${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} - " - if umount -R /mnt > /dev/null 2>&1 ; then - sleep 0.2 - NC " - - ------------------ - ### ${green}Unmount OK ${nc}### - ------------------" - reload - else - sleep 0.2 - RED " - - ----------------------------- - ### ${yellow}Unmounting Failed.. ${red}### - -----------------------------" - reload - fi -} -umount_abort() { +do_umount() { unmount reload } @@ -264,8 +241,8 @@ completion_err() { - [!] Please complete${nc} '${stage_prompt}' ${cyan}to continue - " + (*) ${nc}Please complete${yellowl} '${stage_prompt}' ${nc}to continue + "| pv -qL 60 } intel() { line2 @@ -274,7 +251,9 @@ intel() { BLUEBG " --------------------------------- " NC " + * ${vgacard} + " } nvidia() { @@ -284,7 +263,9 @@ nvidia() { GREENBG " ---------------------------------- " NC " + * ${vgacard} + " } amd() { @@ -294,7 +275,9 @@ amd() { REDBG " ------------------------------- " NC " + * ${vgacard} + " } arch() { @@ -314,10 +297,11 @@ cnfg() { MAGENTABG " ### Configuring ### " MAGENTABG "------------------------------------------------------------------------------------------------- " line2 - YELLOWL " + NC " + ... Please Wait ... - " + " sleep 0.2 } completion() { @@ -339,7 +323,7 @@ failure() { REDBG " " REDBG "************************************************************************************************* " line3 - umount -R /mnt + umount -R /mnt > /dev/null 2>&1 exit } # END PROMPT FUNCTIONS @@ -352,7 +336,7 @@ first_check() { if [[ "${tty}" == *"tty"* && "${run_as}" == "root" ]]; then until slct_font; do : ; done else - MAGENTABG " 'Terminus Font' detected > Log In as 'ROOT' in console & re-run to enable " + MAGENTABG " 'Terminus Font' detected ==> Log in as 'ROOT' in console & re-run to enable "| pv -qL 60 echo fi fi @@ -374,7 +358,7 @@ slct_font() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Font Selection${nc} ${magenta}]${nc}--------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Font Selection${nc} ${magenta}]${nc}--------------------------------------${magenta}### " YELLOW " @@ -411,9 +395,8 @@ uefi_check() { NC " -${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}UEFI Mode Verification${nc} ${magenta}]${nc}---------------------------------${magenta}###${nc} +${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}UEFI Mode Verification${nc} ${magenta}]${nc}---------------------------------${magenta}### " - if [[ "${bootmode}" == "64" || "${bootmode}" == "32" ]]; then ok else @@ -432,9 +415,8 @@ connection_check() { NC " -${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Internet Connection Check${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Internet Connection Check${nc} ${magenta}]${nc}--------------------------------${magenta}### " - if ping -c 3 archlinux.org > /dev/null 2>&1; then ok else @@ -456,7 +438,7 @@ upd_clock() { NC " -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}System Clock Update${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}System Clock Update${nc} ${magenta}]${nc}-----------------------------------${magenta}### " @@ -472,9 +454,8 @@ dtct_microcode() { NC " -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Microcode Detection${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Microcode Detection${nc} ${magenta}]${nc}-----------------------------------${magenta}### " - CPU="$(grep -E 'vendor_id' /proc/cpuinfo)" if [[ "${CPU}" == *"GenuineIntel"* ]]; then microcode="intel-ucode" @@ -498,15 +479,15 @@ main_menu() { NC " -${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}Main Menu${nc} ${magenta}]${nc}----------------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}Main Menu${nc} ${magenta}]${nc}----------------------------------------${magenta}### " YELLOW " > Make a selection: " - YELLOWL " + CYAN " - >>> ${nc}Select ${bwhite}[4] ${nc}to utilize ${yellowl}Guided Navigation ${nc}& ${yellowl}Smart Partitioning ${nc}functions - " + (*) ${nc}Select ${bwhite}[4] ${nc}to utilize ${yellowl}'Guided Navigation' ${nc}& ${yellowl}'Smart Partitioning' ${nc}functions + " | pv -qL 60 NC " [1] Personalization @@ -553,7 +534,7 @@ persnl_submn() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Personalization${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Personalization${nc} ${magenta}]${nc}-------------------------------------${magenta}### " YELLOW " @@ -598,7 +579,7 @@ slct_locale() { NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Locale Selection${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Locale Selection${nc} ${magenta}]${nc}------------------------------------${magenta}### " YELLOW " @@ -648,7 +629,7 @@ slct_kbd() { NC " -${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Keyboard Layout Selection${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Keyboard Layout Selection${nc} ${magenta}]${nc}--------------------------------${magenta}### " YELLOW " @@ -695,7 +676,7 @@ user_setup() { NC " -${magenta}###${nc}---------------------------------------${magenta}[ ${bwhite}User Setup${nc} ${magenta}]${nc}---------------------------------------${magenta}###${nc} +${magenta}###${nc}---------------------------------------${magenta}[ ${bwhite}User Setup${nc} ${magenta}]${nc}---------------------------------------${magenta}### " BLUE " @@ -763,7 +744,7 @@ rootuser_setup() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Root User Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Root User Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}### " BLUE " @@ -807,7 +788,7 @@ slct_hostname() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Hostname Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Hostname Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}### " BLUE " @@ -842,14 +823,14 @@ sys_submn() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}System Configuration${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}System Configuration${nc} ${magenta}]${nc}----------------------------------${magenta}### " YELLOW " > Select a Submenu: " NC " - [1] Kernel, Bootloader, ESP Mountpoint & UKI Setup + [1] Kernel, Bootloader, ESP Mountpoint & Secure Signing [2] Filesystem & Swap Setup @@ -872,17 +853,17 @@ Enter a number: " case "${sysmenu}" in 1) + until dtct_hyper; do : ; done until slct_krnl; do : ; done until ask_bootldr; do : ; done until slct_espmnt; do : ; done - until set_uki; do : ; done + until ask_sign; do : ; done return 1 ;; 2) until ask_fs; do : ; done until ask_swap; do : ; done return 1 ;; 3) - until dtct_hyper; do : ; done until dtct_vga; do : ; done return 1 ;; 4) @@ -902,6 +883,30 @@ Enter a number: " esac } ################################################################################################### +dtct_hyper() { + + hypervisor="$(systemd-detect-virt)" + if [[ "${hypervisor}" != "none" ]]; then + vendor="Virtual Machine" + vgaconf="n" + vgapkgs="" + fi + case "${hypervisor}" in + kvm) + vmpkgs="spice spice-vdagent spice-protocol spice-gtk qemu-guest-agent swtpm" + vm_services="qemu-guest-agent" ;; + vmware) + vmpkgs="open-vm-tools" + vm_services="vmtoolsd vmware-vmblock-fuse" ;; + oracle) + vmpkgs="virtualbox-guest-utils" + vm_services="vboxservice" ;; + microsoft) + vmpkgs="hyperv" + vm_services="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon" ;; + esac +} +################################################################################################### slct_krnl() { local prompt="Kernel" @@ -909,7 +914,7 @@ slct_krnl() { NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Kernel Selection${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Kernel Selection${nc} ${magenta}]${nc}------------------------------------${magenta}### " YELLOW " @@ -934,20 +939,16 @@ Enter a number: " case "${kernelnmbr}" in 1) kernel="linux" - kernelname="Linux" - entrname="Arch Linux" ;; + kernelname="Linux" ;; 2) kernel="linux-lts" - kernelname="Linux LTS" - entrname="Arch Linux LTS" ;; + kernelname="Linux LTS" ;; 3) kernel="linux-hardened" - kernelname="Linux Hardened" - entrname="Arch Linux Hardened" ;; + kernelname="Linux Hardened" ;; 4) kernel="linux-zen" - kernelname="Linux Zen" - entrname="Arch Linux Zen" ;; + kernelname="Linux Zen" ;; "") sleep 0.2 RED " @@ -969,7 +970,7 @@ Enter a number: " if [[ "${kernelnmbr}" == "3" ]]; then CYAN " - [!] Swapping is not supported [!] + (*) ${nc}Swapping is ${yellowl}NOT SUPPORTED " fi ok @@ -988,7 +989,7 @@ ask_bootldr() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Bootloader Selection${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Bootloader Selection${nc} ${magenta}]${nc}----------------------------------${magenta}### " YELLOW " @@ -1008,12 +1009,15 @@ Enter a number: " case "${bootloader}" in 1) + uki="y" + ukify="systemd-ukify" sleep 0.2 YELLOW " ### Systemd-boot has been selected " ;; 2) + uki="n" sleep 0.2 YELLOW " @@ -1031,6 +1035,8 @@ Enter a number: " invalid return 1 ;; esac + + local prompt="Bootloader Selection" ok } ################################################################################################### @@ -1041,7 +1047,7 @@ slct_espmnt() { NC " -${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}ESP Mountpoint Selection${nc} ${magenta}]${nc}---------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}ESP Mountpoint Selection${nc} ${magenta}]${nc}--------------------------------${magenta}### " YELLOW " @@ -1085,39 +1091,60 @@ Enter a number: " fi } ################################################################################################### -set_uki() { +ask_sign() { - local prompt="UKI Setup" sleep 0.2 NC " -${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}UKI Setup${nc} ${magenta}]${nc}-----------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Secure Signing${nc} ${magenta}]${nc}-------------------------------------${magenta}### " + if [[ "${bootloader}" == "1" ]]; then YELLOW " - > Make use of Unified Kernel Image(s) ? [y/n]" + > Sign Unified Kernel Image(s) for use with ${nc}Secure Boot ${nc}${yellow}? [Y/n]" + elif [[ "${bootloader}" == "2" ]]; then + YELLOW " + + > Sign Kernel for use with ${nc}Secure Boot ${nc}${yellow}? [Y/n]" + fi BLUE " -Enter [y/n]: " +Enter [Y/n]: " read -r -p " -==> " uki +==> " sb_sign + echo + sb_sign="${sb_sign:-y}" + sb_sign="${sb_sign,,}" - if [[ "${uki}" == "y" ]]; then - sleep 0.2 - ukify="systemd-ukify" - YELLOW " + if [[ "${sb_sign}" == "y" ]]; then + local prompt="Secure Boot 'Setup' Mode Verification" + SB_Status="$(bootctl status 2> /dev/null | grep -E 'Secure Boot' | awk "{print \$4}")" + if [[ ${SB_Status} == "(setup)" ]]; then + ok + else + sleep 0.2 + RED " + ----------------------------------------- + ### ${yellow}Secure Boot Not in 'Setup' Mode ${red}### + -----------------------------------------" + failure + fi + sleep 0.2 + YELLOW " - ### 'UKI' has been selected - " - elif [[ "${uki}" == "n" ]]; then - skip - else - y_n - return 1 - fi + + ### 'Secure Boot Signing' has been selected + " + elif [[ "${sb_sign}" == "n" ]]; then + skip + else + y_n + return 1 + fi + local prompt="Secure Signing" ok } ################################################################################################### @@ -1128,7 +1155,7 @@ ask_fs() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Filesystem Selection${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Filesystem Selection${nc} ${magenta}]${nc}----------------------------------${magenta}### " YELLOW " @@ -1158,14 +1185,17 @@ Enter a number: " ### NOTE: Keeping User Data on a separate /Home Partition is supported - > Make use of a dedicated /Home Partition ? [y/n] " + > Make use of a dedicated /Home Partition ? [Y/n] " BLUE " -Enter [y/n]: " +Enter [Y/n]: " read -r -p " ==> " sep_home + echo + sep_home="${sep_home:-y}" + sep_home="${sep_home,,}" case "${sep_home}" in y) @@ -1176,10 +1206,6 @@ Enter [y/n]: " n) skip echo;; - "") - sleep 0.2 - y_n - return 1 ;; *) invalid return 1 ;; @@ -1202,7 +1228,7 @@ Enter [y/n]: " sleep 0.2 YELLOW " - > Label your Btrfs snapshot directory: " + > Label your Btrfs snapshots directory: " BLUE " @@ -1237,8 +1263,38 @@ ask_swap() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Swap Selection${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Swap Selection${nc} ${magenta}]${nc}-------------------------------------${magenta}### " + if [[ "${kernelnmbr}" == "3" ]]; then + sleep 0.2 + RED " + + ----------------------------------------------- + ### ${yellow}Incompatible Kernel has been detected ${red}### + -----------------------------------------------" + CYAN " + + (*) ${nc}Swap type will default to ${yellowl}'None' " + NC " + + + + ${bwhite}Press any key to continue${nc} + + + " + read -r -s -n 1 + swapmode="4" + skip + ok + if [[ "${vga_slct}" == "yes" ]]; then + local stage_prompt="Graphics Setup" + completion_err + until dtct_hyper; do : ; done + until dtct_vga; do : ; done + fi + return 0 + fi YELLOW " > Select Swap type: " @@ -1261,27 +1317,6 @@ Enter a number: " case "${swapmode}" in 1) - if [[ "${kernelnmbr}" == "3" ]]; then - sleep 0.2 - RED " - ----------------------------------------------- - ### ${yellow}Incompatible Kernel has been detected ${red}### - -----------------------------------------------" - CYAN " - [!] Swap type will default to ${nc}'None' [!] - " - sleep 2 - swapmode="4" - skip - ok - if [[ "${vga_slct}" == "yes" ]]; then - local stage_prompt="Graphics Setup" - completion_err - until dtct_hyper; do : ; done - until dtct_vga; do : ; done - fi - return 0 - fi swaptype="swappart" sleep 0.2 YELLOW " @@ -1289,27 +1324,6 @@ Enter a number: " ### Swap Partition has been selected " ;; 2) - if [[ "${kernelnmbr}" == "3" ]]; then - sleep 0.2 - RED " - ----------------------------------------------- - ### ${yellow}Incompatible Kernel has been detected ${red}### - -----------------------------------------------" - CYAN " - [!] Swap type will default to ${nc}'None' [!] - " - sleep 2 - swapmode="4" - skip - ok - if [[ "${vga_slct}" == "yes" ]]; then - local stage_prompt="Graphics Setup" - completion_err - until dtct_hyper; do : ; done - until dtct_vga; do : ; done - fi - return 0 - fi if [[ "${fs}" == "1" ]]; then swaptype="swapfile" elif [[ "${fs}" == "2" ]]; then @@ -1323,33 +1337,11 @@ Enter a number: " " until set_swapsize; do : ; done ;; 3) - if [[ "${kernelnmbr}" == "3" ]]; then - sleep 0.2 - RED " - ----------------------------------------------- - ### ${yellow}Incompatible Kernel has been detected ${red}### - -----------------------------------------------" - CYAN " - [!] Swap type will default to ${nc}'None' [!] - " - sleep 2 - swapmode="4" - skip - ok - if [[ "${vga_slct}" == "yes" ]]; then - local stage_prompt="Graphics Setup" - completion_err - until dtct_hyper; do : ; done - until dtct_vga; do : ; done - fi - return 0 - else - zram="zram-generator" - YELLOW " + zram="zram-generator" + YELLOW " ### Zram Swap has been selected - " - fi ;; + " ;; 4) sleep 0.2 YELLOW " @@ -1358,7 +1350,6 @@ Enter a number: " " skip ;; "") - sleep 0.2 choice return 1 ;; *) @@ -1407,42 +1398,24 @@ Enter Swap size ${bwhite}(in GB)${blue}: " fi } ################################################################################################### -dtct_hyper() { - - hypervisor="$(systemd-detect-virt)" - if [[ "${hypervisor}" != "none" ]]; then - vendor="Virtual Machine" - vgaconf="n" - vgapkgs="" - fi - case "${hypervisor}" in - kvm) - vmpkgs="spice spice-vdagent spice-protocol spice-gtk qemu-guest-agent" - vm_services="qemu-guest-agent" ;; - vmware) - vmpkgs="open-vm-tools" - vm_services="vmtoolsd vmware-vmblock-fuse" ;; - oracle) - vmpkgs="virtualbox-guest-utils" - vm_services="vboxservice" ;; - microsoft) - vmpkgs="hyperv" - vm_services="hv_fcopy_daemon hv_kvp_daemon hv_vss_daemon" ;; - esac -} -################################################################################################### dtct_vga() { if [[ "${hypervisor}" != "none" ]]; then + vm + sleep 0.2 + YELLOW " + + --> Graphics Setup skipped + " return 0 fi if [[ -z "${kernelnmbr}" ]]; then - local stage_prompt="Kernel, Bootloader, ESP Mountpoint & UKI Setup" + local stage_prompt="Kernel, Bootloader, ESP Mountpoint & Secure Signing" completion_err until slct_krnl; do : ; done until ask_bootldr; do : ; done until slct_espmnt; do : ; done - until set_uki; do : ; done + until ask_sign; do : ; done return 1 fi if [[ -z "${fs}" ]]; then @@ -1456,7 +1429,7 @@ dtct_vga() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Graphics Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Graphics Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}### " vgacount="$(lspci | grep -E -c 'VGA|Display|3D')" vgacard="$(lspci | grep -E 'VGA|Display|3D' | sed 's/^.*: //g')" @@ -1506,20 +1479,29 @@ dtct_single_vga() { YELLOW " - > Configure the Graphics subsystem and enable HW acceleration ? [y/n] + > Configure the Graphics subsystem and enable HW acceleration ? [Y/n] " if [[ "${vendor}" == "Nvidia" ]]; then YELLOW " - ### Selecting 'n' defaults to the Open-source 'nouveau' driver" + + ### Selecting 'n' defaults to using the open-source 'nouveau' driver" fi BLUE " -Enter [y/n]: " +Enter [Y/n]: " read -r -p " ==> " vgaconf + vgaconf="${vgaconf:-y}" + vgaconf="${vgaconf,,}" + + if [[ "${vgaconf}" == "y" || "${vgaconf}" == "n" ]]; then vga_conf + else + invalid + return 1 + fi } ################################################################################################### dtct_multi_vga() { @@ -1605,9 +1587,9 @@ Enter a number: " NC " [1] Intel - - [2] Nvidia ${red}[!] Only for NV110 (Maxwell) Graphics or newer [!]${nc} - + ${red}----------------------------------------------------${nc} + [2] Nvidia ${red}### ${yellow}Only for NV110 ${nc}(Maxwell) ${yellow}Graphics or newer ${red}###${nc} + ${red}----------------------------------------------------${nc} [3] None " BLUE " @@ -1628,9 +1610,9 @@ Enter a number: " NC " [1] Amd - - [2] Nvidia ${red}[!] Only for NV110 (Maxwell) Graphics or newer [!]${nc} - + ${red}----------------------------------------------------${nc} + [2] Nvidia ${red}### ${yellow}Only for NV110 ${nc}(Maxwell) ${yellow}Graphics or newer ${red}###${nc} + ${red}----------------------------------------------------${nc} [3] None " BLUE " @@ -1654,7 +1636,6 @@ Enter a number: " sourcetype="Proprietary" vgaconf="y" elif [[ "${vendor}" == "none" ]]; then - sourcetype="No" vgaconf="n" vgapkgs="" echo @@ -1662,12 +1643,14 @@ Enter a number: " ok return 0 fi + if [[ "${vendor}" != "none" ]]; then sleep 0.2 YELLOW " ### ${sourcetype} drivers will be used " + fi vga_conf } ################################################################################################### @@ -1678,9 +1661,9 @@ vga_conf() { if [[ "${vgaconf}" == "y" ]]; then if [[ "${vendor}" == "Intel" ]]; then perf_stream="dev.i915.perf_stream_paranoid = 0" - vgapkgs="intel-media-driver intel-media-sdk libva-intel-driver vpl-gpu-rt vulkan-intel vulkan-mesa-layers" + vgapkgs="intel-media-driver intel-media-sdk libva-intel-driver vpl-gpu-rt vkd3d vulkan-intel vulkan-mesa-layers" elif [[ "${vendor}" == "AMD" ]]; then - vgapkgs="libva-mesa-driver mesa-vdpau vulkan-mesa-layers vulkan-radeon" + vgapkgs="libva-mesa-driver mesa-vdpau vkd3d vulkan-mesa-layers vulkan-radeon" sleep 0.2 YELLOW " @@ -1754,78 +1737,53 @@ Enter a number: " # Linux Kernel if [[ "${kernelnmbr}" == "1" ]]; then nvname="nvidia-open" - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open nvidia-settings nvidia-utils opencl-nvidia" + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open nvidia-settings nvidia-utils opencl-nvidia vkd3d" # Other Kernels else - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open-dkms nvidia-settings nvidia-utils opencl-nvidia" + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-open-dkms nvidia-settings nvidia-utils opencl-nvidia vkd3d" fi # Maxwell+ Family elif [[ "${family}" == "2" ]]; then # Linux Kernel if [[ "${kernelnmbr}" == "1" ]]; then nvname="nvidia" - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia nvidia-settings nvidia-utils opencl-nvidia" + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia nvidia-settings nvidia-utils opencl-nvidia vkd3d" # Linux LTS Kernel elif [[ "${kernelnmbr}" == "2" ]]; then nvname="nvidia-lts" - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-lts nvidia-settings nvidia-utils opencl-nvidia" + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-lts nvidia-settings nvidia-utils opencl-nvidia vkd3d" # Other Kernels else - vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia" + vgapkgs="libva-nvidia-driver libvdpau-va-gl nvidia-dkms nvidia-settings nvidia-utils opencl-nvidia vkd3d" fi fi - sleep 0.2 - YELLOW " - - - > Enable Nvidia's 'Suspend-Hibernate-Resume' Video Memory Preserving feature ? [y/n] " - BLUE " - - -Enter [y/n]: " - read -r -p " -==> " nvidia_suspend - echo - - if [[ "${nvidia_suspend}" == "n" ]]; then - skip - elif [[ "${nvidia_suspend}" == "y" ]] && [[ "${swapmode}" == "3" || "${swapmode}" == "4" ]]; then + if [[ "${swapmode}" == "3" || "${swapmode}" == "4" ]]; then sleep 0.2 RED " ----------------------------------------------------- ### ${yellow}Incompatible Swap setting has been detected ${red}### -----------------------------------------------------" CYAN " - [!] Nvidia's Video Memory Preserving feature will ${nc}NOT ${cyan}be enabled [!] - " - sleep 3 - nvidia_suspend="n" - skip - elif [[ "${nvidia_suspend}" == "y" ]]; then - sleep 0.2 - YELLOW " - ### Nvidia's 'Suspend-Hibernate-Resume' Video Memory Preserving feature will be enabled " - else - echo - invalid + (*) ${nc}Nvidia's ${yellowl}'Suspend/Resume' ${nc}feature needs a valid ${yellowl}swapping ${nc}mechanism to work + " + reload + until ask_swap; do : ; done return 1 fi fi - sleep 0.2 YELLOW " ### ${vendor} Graphics will be automatically configured " elif [[ "${vgaconf}" == "n" ]]; then - vgapkgs="" + if [[ "${vendor}" == "nvidia" ]]; then + vgapkgs="vulkan-nouveau" + fi echo skip - else - invalid - return 1 fi vga_slct="yes" ok @@ -1839,7 +1797,7 @@ slct_dsktp() { NC " -${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Desktop Setup${nc} ${magenta}]${nc}--------------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Desktop Setup${nc} ${magenta}]${nc}--------------------------------------${magenta}### " YELLOW " @@ -1868,7 +1826,7 @@ ${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Des [11] Basic Arch Linux (No GUI) - [12] Custom Arch Linux ${red}# EXPERTS ONLY # " + [12] Custom Arch Linux ${red}### ${yellow}EXPERTS ONLY ${red}### " BLUE " @@ -1878,7 +1836,7 @@ Enter a number: " echo case "${packages}" in - 1) + 1) desktopname="Plasma" ;; 2) desktopname="Minimal Plasma (System Optimized)" ;; @@ -1899,14 +1857,17 @@ Enter a number: " ### You can use linux console (ctrl+alt+F3) for shell access - > Install ${nc}'gnome-terminal' ${yellow}for convenience ? [y/n] " + > Install ${nc}'gnome-terminal' ${yellow}for convenience ? [Y/n] " BLUE " -Enter [y/n]: " +Enter [Y/n]: " read -r -p " ==> " console + console="${console:-y}" + console="${console,,}" + case "${console}" in y) terminal="gnome-terminal" @@ -1917,10 +1878,6 @@ Enter [y/n]: " n) echo skip ;; - "") - sleep 0.2 - y_n - return 1 ;; *) invalid return 1 ;; @@ -1939,14 +1896,17 @@ Enter [y/n]: " ### You can use linux console (ctrl+alt+F3) for shell access - > Install ${nc}'gnome-terminal' ${yellow}for convenience ? [y/n] " + > Install ${nc}'gnome-terminal' ${yellow}for convenience ? [Y/n] " BLUE " -Enter [y/n]: " +Enter [Y/n]: " read -r -p " ==> " console + console="${console:-y}" + console="${console,,}" + case "${console}" in y) terminal="gnome-terminal" @@ -1957,10 +1917,6 @@ Enter [y/n]: " n) echo skip ;; - "") - sleep 0.2 - y_n - return 1 ;; *) invalid return 1 ;; @@ -1992,14 +1948,17 @@ Enter [y/n]: " ### NOTE: 'base' meta-package does not include the tools needed for building packages - > Install ${nc}'base-devel' ${yellow}meta-package ? [y/n] " + > Install ${nc}'base-devel' ${yellow}meta-package ? [Y/n] " BLUE " -Enter [y/n]: " +Enter [Y/n]: " read -r -p " ==> " dev + dev="${dev:-y}" + dev="${dev,,}" + case "${dev}" in y) devel="base-devel" @@ -2010,10 +1969,6 @@ Enter [y/n]: " n) echo skip ;; - "") - sleep 0.2 - y_n - return 1 ;; *) invalid return 1 ;; @@ -2025,24 +1980,23 @@ Enter [y/n]: " ### NOTE: Custom Kernel Parameters can be set at boot time - > Enter your own Kernel Parameters ? [y/n] " + > Enter your own Kernel Parameters ? [y/N] " BLUE " -Enter [y/n]: " +Enter [y/N]: " read -r -p " ==> " ask_param + ask_param="${ask_param:-n}" + ask_param="${ask_param,,}" + case "${ask_param}" in y) add_prmtrs ;; n) echo skip ;; - "") - sleep 0.2 - y_n - return 1 ;; *) invalid return 1 ;; @@ -2067,7 +2021,7 @@ add_pkgs() { NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Add Your Packages${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Add Your Packages${nc} ${magenta}]${nc}------------------------------------${magenta}### " YELLOW " @@ -2094,7 +2048,7 @@ Enter any additional packages ${bwhite}(space-seperated)${blue}: " NC " -${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}LightDM Greeter Selection${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}LightDM Greeter Selection${nc} ${magenta}]${nc}--------------------------------${magenta}### " YELLOW " @@ -2151,7 +2105,7 @@ add_services() { NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Add Your Services${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Add Your Services${nc} ${magenta}]${nc}------------------------------------${magenta}### " YELLOW " @@ -2179,7 +2133,7 @@ add_prmtrs() { NC " -${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Add Your Kernel Parameters${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Add Your Kernel Parameters${nc} ${magenta}]${nc}-------------------------------${magenta}### " YELLOW " @@ -2204,14 +2158,21 @@ boot_entr() { if [[ "${hypervisor}" != "none" ]]; then efi_entr_del="yes" + vm + sleep 0.2 + YELLOW " + + --> EFI Boot Entries Deletion skipped + " return 0 fi + local prompt="Boot Entries" sleep 0.2 NC " -${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}EFI Boot Entries Deletion${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}EFI Boot Entries Deletion${nc} ${magenta}]${nc}--------------------------------${magenta}### " YELLOW " @@ -2220,13 +2181,15 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}EFI Boot " sleep 0.2 efibootmgr --unicode + entrnmbr="$(efibootmgr --unicode | grep -E 'BootOrder' | awk "{print \$2}")" boot_entry=" " while [[ -n "${boot_entry}" ]]; do BLUE " -Enter a${nc} ${cyan}BootOrder${blue} number for Deletion ${bwhite}(empty to skip)${blue}: " +Enter a Boot Entry number for Deletion ${bwhite}(empty to skip)${blue}: +${cyan}Entries: ${yellow}${entrnmbr} " read -r -p " ==> " boot_entry echo @@ -2262,14 +2225,21 @@ wireless_rgd() { if [[ "${hypervisor}" != "none" ]]; then wrlss_rgd="yes" + vm + sleep 0.2 + YELLOW " + + --> Wireless Regulatory Domain Setup skipped + " return 0 fi + local prompt="Wireless Regdom Setup" sleep 0.2 NC " -${magenta}###${nc}----------------------------${magenta}[ ${bwhite}Wireless Regulatory Domain Setup${nc} ${magenta}]${nc}----------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------${magenta}[ ${bwhite}Wireless Regulatory Domain Setup${nc} ${magenta}]${nc}----------------------------${magenta}### " YELLOW " @@ -2320,7 +2290,7 @@ dsks_submn() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Disk Management${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Disk Management${nc} ${magenta}]${nc}-------------------------------------${magenta}### " YELLOW " @@ -2360,7 +2330,7 @@ gpt_mngr() { NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Disk GPT Manager${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Disk GPT Manager${nc} ${magenta}]${nc}------------------------------------${magenta}### " gpt_dsk_nmbr=" " @@ -2385,7 +2355,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " echo 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.2 @@ -2428,12 +2398,12 @@ ask_multibooting() { sleep 0.2 NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}MultiBoot Status${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}MultiBoot Status${nc} ${magenta}]${nc}-------------------------------------${magenta}### " YELLOW " - > Are you Multi-Booting with other OS's ? [y/n]" + > Are you Dual/Multi-Booting with other OS's ? [y/n]" BLUE " @@ -2446,12 +2416,12 @@ Enter [y/n]: " sleep 0.2 YELLOW " - ### Multi-Boot selected + ### Dual/Multi-Boot selected " ;; n) sleep 0.2 YELLOW " - ### No Multi-Boot + ### No Dual/Multi-Boot " ;; "") y_n @@ -2474,7 +2444,7 @@ disk_mngr() { NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Partition Manager${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Partition Manager${nc} ${magenta}]${nc}------------------------------------${magenta}### " YELLOW " @@ -2515,7 +2485,7 @@ man_preset() { sleep 0.2 NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Preset Selection${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Preset Selection${nc} ${magenta}]${nc}------------------------------------${magenta}### " YELLOW " @@ -2528,13 +2498,13 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Prese - [1] Create 'ESP' and '/Root' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) + [1] Create '/ESP' and '/Root' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) - [2] Create 'ESP', '/Root' and '/Swap' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) + [2] Create '/ESP', '/Root' and '/Swap' (${cyan}Ext4${nc},${magenta}Btrfs${nc}) - [3] Create 'ESP', '/Root' and '/Home' (${cyan}Ext4${nc}) + [3] Create '/ESP', '/Root' and '/Home' (${cyan}Ext4${nc}) - [4] Create 'ESP', '/Root', '/Home' and '/Swap' (${cyan}Ext4${nc}) " + [4] Create '/ESP', '/Root', '/Home' and '/Swap' (${cyan}Ext4${nc}) " BLUE " @@ -2559,7 +2529,7 @@ auto_part() { NC " -${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automatic Partitioning${nc} ${magenta}]${nc}---------------------------------${magenta}###${nc} +${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automatic Partitioning${nc} ${magenta}]${nc}---------------------------------${magenta}### " sleep 0.2 line2 @@ -2570,14 +2540,14 @@ ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automati if [[ -e "${instl_drive}" && "${use_manpreset}" != "yes" ]]; then sleep 0.2 NC " - ----------------------------------------------------------------- - ${yellowl}>>> ${nc}Apply ${bwhite}'Smart Partitioning' ${nc}on disk ${bwhite}'${instl_drive}'${nc} ? [y/n] ${yellowl}<<<${nc} - ----------------------------------------------------------------- + ----------------------------------------------------------- + ${cyan}>> ${nc}Apply ${yellowl}'Smart Partitioning' ${nc}on disk ${bwhite}'${instl_drive}'${nc} ? ${cyan}[y/n]${nc} + ----------------------------------------------------------- " read -r -p " ==> " smartpart - echo + echo if [[ "${smartpart}" == "y" ]]; then sgdsk_nmbr="${instl_dsk_nmbr}" elif [[ "${smartpart}" == "n" ]]; then @@ -2706,84 +2676,46 @@ Enter a Custom Percentage number ${nc}e.g. 30 ${bwhite}(empty to skip)${blue}: " case "${preset}" in 1) - if [[ "${xbootloader}" == "yes" ]]; then - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+200M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:+300M -t2:ea00 -c2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n3:0:0 -t3:8304 -c3:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - else - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:0 -t2:8304 -c2:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - fi + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:0 -t2:8304 -c2:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail if [[ "${install}" == "yes" ]]; then until sanity_check; do : ; done else ok fi ;; 2) - if [[ "${xbootloader}" == "yes" ]]; then - until set_swapsize; do : ; done - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+200M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:+300M -t2:ea00 -c2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n3:0:+"${swapsize}"G -t3:8200 -c3:SWAP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n4:0:0 -t4:8304 -c4:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - else - until set_swapsize; do : ; done - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:SWAP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n3:0:0 -t3:8304 -c3:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - fi + until set_swapsize; do : ; done + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:SWAP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n3:0:0 -t3:8304 -c3:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail if [[ "${install}" == "yes" ]]; then until sanity_check; do : ; done else ok fi ;; 3) - if [[ "${xbootloader}" == "yes" ]]; then - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+200M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:+300M -t2:ea00 -c2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n3:0:+"${rootsize}"G -t3:8304 -c3:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n4:0:0 -t4:8302 -c4:HOME "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - else - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:+"${rootsize}"G -t2:8304 -c2:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n3:0:0 -t3:8302 -c3:HOME "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - fi + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:+"${rootsize}"G -t2:8304 -c2:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n3:0:0 -t3:8302 -c3:HOME "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail if [[ "${install}" == "yes" ]]; then until sanity_check; do : ; done else ok fi ;; 4) - if [[ "${xbootloader}" == "yes" ]]; then - until set_swapsize; do : ; done - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:+300M -t2:ea00 -c2:XBOOTLDR "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n3:0:+"${swapsize}"G -t3:8200 -c3:SWAP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n4:0:+"${rootsize}"G -t4:8304 -c4:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n5:0:0 -t5:8302 -c5:HOME "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - else - until set_swapsize; do : ; done - sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:SWAP "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n3:0:+"${rootsize}"G -t3:8304 -c3:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail - sgdisk -I -n4:0:0 -t4:8302 -c4:HOME "${sgdrive}" > /dev/null 2>&1 || stage_fail - partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail - fi + until set_swapsize; do : ; done + sgdisk -o "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n1:0:+512M -t1:ef00 -c1:ESP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n2:0:+"${swapsize}"G -t2:8200 -c2:SWAP "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n3:0:+"${rootsize}"G -t3:8304 -c3:ROOT "${sgdrive}" > /dev/null 2>&1 || stage_fail + sgdisk -I -n4:0:0 -t4:8302 -c4:HOME "${sgdrive}" > /dev/null 2>&1 || stage_fail + partprobe -s "${sgdrive}" > /dev/null 2>&1 || stage_fail if [[ "${install}" == "yes" ]]; then until sanity_check; do : ; done else @@ -2847,7 +2779,7 @@ manual_part() { NC " -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Manual Partitioning${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Manual Partitioning${nc} ${magenta}]${nc}-----------------------------------${magenta}### " cgdsk_nmbr=" " while [[ -n "${cgdsk_nmbr}" ]]; do @@ -2907,7 +2839,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " ==> [${green}Disk ${cgdrive} OK${nc}] " - partprobe -s "${cgdrive}" + partprobe -s "${cgdrive}" return 1 else invalid @@ -2940,7 +2872,7 @@ instl_dsk() { NC " -${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Installation Disk Selection${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Installation Disk Selection${nc} ${magenta}]${nc}-------------------------------${magenta}### " YELLOW " @@ -3006,7 +2938,7 @@ sanity_check() { sleep 0.2 NC " -${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Sanity Check${nc} ${magenta}]${nc}--------------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------------${magenta}[ ${bwhite}Sanity Check${nc} ${magenta}]${nc}--------------------------------------${magenta}### " rootcount="$(fdisk -l "${instl_drive}" | grep -E -c 'root' | awk "{print \$1}")" root_dev="$(fdisk -l "${instl_drive}" | grep -E 'root' | awk "{print \$1}")" @@ -3063,10 +2995,13 @@ ${multi_root} BLUE " - > Proceed ? [y/n]" + > Proceed ? [Y/n]" read -r -p " ==> " autoroot + autoroot="${autoroot:-y}" + autoroot="${autoroot,,}" + if [[ "${autoroot}" == "y" ]]; then root_dev="${root_comply}" multiroot_opts="root=PARTUUID=$(blkid -s PARTUUID -o value "${root_dev}") " @@ -3118,10 +3053,13 @@ ${multi_esp} BLUE " - > Proceed ? [y/n]" + > Proceed ? [Y/n]" read -r -p " ==> " autoesp + autoesp="${autoesp:-y}" + autoesp="${autoesp,,}" + if [[ "${autoesp}" == "y" ]]; then esp_dev="${esp_comply}" elif [[ "${autoesp}" == "n" ]]; then @@ -3166,10 +3104,13 @@ ${multi_xboot} BLUE " - > Proceed ? [y/n]" + > Proceed ? [Y/n]" read -r -p " ==> " autoxboot + autoxboot="${autoxboot:-y}" + autoxboot="${autoxboot,,}" + if [[ "${autoxboot}" == "y" ]]; then xboot_dev="${xboot_comply}" elif [[ "${autoxboot}" == "n" ]]; then @@ -3214,10 +3155,13 @@ ${multi_home} BLUE " - > Proceed ? [y/n]" + > Proceed ? [Y/n]" read -r -p " ==> " autohome + autohome="${autohome:-y}" + autohome="${autohome,,}" + if [[ "${autohome}" == "y" ]]; then home_dev="${home_comply}" elif [[ "${autohome}" == "n" ]]; then @@ -3262,10 +3206,13 @@ ${multi_swap} BLUE " - > Proceed ? [y/n]" + > Proceed ? [Y/n]" read -r -p " ==> " autoswap + autoswap="${autoswap:-y}" + autoswap="${autoswap,,}" + if [[ "${autoswap}" == "y" ]]; then swap_dev="${swap_comply}" elif [[ "${autoswap}" == "n" ]]; then @@ -3275,7 +3222,8 @@ ${multi_swap} return 1 fi fi -#--------------------------------------------------------------------------------------------------# +#-------------------------------------------------------------------------------------------------- + if [[ -e "${root_dev}" ]]; then rootprt="ok" if [[ "${autoroot}" == "y" ]]; then @@ -3296,41 +3244,7 @@ ${multi_swap} ---------------------------------------------------" fi #.................................................................................................. - if [[ "${bootloader}" == "1" && "${espmnt}" == "1" ]]; then - xbootloader="yes" - if [[ -e "${xboot_dev}" ]]; then - xbootprt="ok" - if [[ "${autoxboot}" == "y" ]]; then - local prompt="Confirm /XBOOTLDR Partition" - ok - else - sleep 0.2 - NC " -==> [Linux Extended Boot ${green}OK${nc}] " - fi - else - xbootprt="fail" - sleep 0.2 - RED " - ------------------------------------------------------ - ### ${yellow}A Linux Extended Boot Partition is mandatory ${red}### - ------------------------------------------------------" - sleep 0.2 - RED " - ---------------------------------------------------- - ### ${yellow}Linux Extended Boot Partition not detected ${red}### - ----------------------------------------------------" - fi - else - xbootloader="no" - fi -#.................................................................................................. - - if [[ -e "${esp_dev}" ]]; then - espsize="$(lsblk -dno SIZE --bytes "${esp_dev}")" - fi - if [[ ! -e "${esp_dev}" ]]; then espprt="fail" sleep 0.2 @@ -3338,44 +3252,82 @@ ${multi_swap} ------------------------------------------- ### ${yellow}EFI System Partition not detected ${red}### -------------------------------------------" - elif [[ -e "${esp_dev}" && "${espsize}" -lt "209715200" && "${xbootloader}" == "yes" ]]; then - if [[ "${xbootprt}" == "ok" ]]; then - espprt="ok" - sleep 0.2 - NC " + fi + + if [[ -e "${esp_dev}" ]]; then + espsize="$(lsblk -dno SIZE --bytes "${esp_dev}")" + fi + + if [[ "${espsize}" -ge "209715200" ]]; then + espprt="ok" + xbootloader="no" + sleep 0.2 + NC " ==> [EFI System Partition ${green}OK${nc}] " - elif [[ "${xbootprt}" == "fail" ]]; then - espprt="fail" + fi + + if [[ -e "${esp_dev}" && "${espsize}" -lt "209715200" ]]; then + if [[ "${bootloader}" == "1" ]]; then + if [[ "${multibooting}" == "y" ]]; then + xbootloader="yes" + if [[ -e "${xboot_dev}" ]]; then + xbootprt="ok" + espprt="ok" + sleep 0.2 + NC " + +==> [EFI System Partition ${green}OK${nc}] " + if [[ "${autoxboot}" == "y" ]]; then + local prompt="Confirm /XBOOTLDR Partition" + ok + else + sleep 0.2 + NC " + +==> [Linux Extended Boot Partition ${green}OK${nc}] " + fi + else + xbootprt="fail" + espprt="fail" + sleep 0.2 + RED " + --------------------------------------------- + ### ${yellow}WARNING: ESP's size is not adequate ${red}### + ---------------------------------------------" + sleep 0.2 + RED " + ---------------------------------------------------- + ### ${yellow}Linux Extended Boot Partition not detected ${red}### + ----------------------------------------------------" + fi + elif [[ "${multibooting}" == "n" ]]; then + espprt="fail" + xbootloader="no" + sleep 0.2 + RED " + --------------------------------------------- + ### ${yellow}WARNING: ESP's size is not adequate ${red}### + ---------------------------------------------" + fi + elif [[ "${bootloader}" == "2" ]]; then + if [[ "${espmnt}" == "2" ]]; then + espprt="fail" + xbootloader="no" + sleep 0.2 + RED " + --------------------------------------------- + ### ${yellow}WARNING: ESP's size is not adequate ${red}### + ---------------------------------------------" + elif [[ "${espmnt}" == "1" ]]; then + espprt="ok" + xbootloader="no" + sleep 0.2 + NC " + +==> [EFI System Partition ${green}OK${nc}] " + fi fi - elif [[ -e "${esp_dev}" && "${espsize}" -lt "209715200" && "${xbootloader}" == "no" ]]; then - if [[ "${bootloader}" == "1" ]]; then - espprt="fail" - sleep 0.2 - RED " - --------------------------------------------- - ### ${yellow}WARNING: ESP's size is not adequate ${red}### - ---------------------------------------------" - elif [[ "${bootloader}" == "2" && "${espmnt}" == "2" ]]; then - espprt="fail" - sleep 0.2 - RED " - --------------------------------------------- - ### ${yellow}WARNING: ESP's size is not adequate ${red}### - ---------------------------------------------" - elif [[ "${bootloader}" == "2" && "${espmnt}" == "1" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " - fi - elif [[ -e "${esp_dev}" && "${espsize}" -ge "209715200" ]]; then - espprt="ok" - sleep 0.2 - NC " - -==> [EFI System Partition ${green}OK${nc}] " fi #.................................................................................................. if [[ "${fs}" == "1" ]]; then @@ -3462,32 +3414,35 @@ ${multi_swap} BLUE " - > Proceed using the ${nc}${cyan}current ${blue}partitioning layout ? [y/n] + > Proceed using the ${nc}${cyan}current ${blue}partitioning layout ? [Y/n] " read -r -p " ==> " partok + echo + partok="${partok:-y}" + partok="${partok,,}" local prompt="Confirm Disk" local stage_prompt="Partitioning" - + if [[ "${partok}" == "y" ]]; then ok return 0 elif [[ "${partok}" == "n" ]]; then - if [[ "${multibooting}" == "n" ]]; then - if [[ "${smartpart}" == "y" ]]; then - process - until manual_part; do : ; done + if [[ "${multibooting}" == "n" ]]; then + if [[ "${smartpart}" == "y" ]]; then + process + until manual_part; do : ; done else - process - if [[ "${slct_autoprt}" != "yes" ]]; then - until auto_part; do : ; done - else - until manual_part; do : ; done - fi + process + if [[ "${slct_autoprt}" != "yes" && "${xbootloader}" != "yes" ]]; then + until auto_part; do : ; done + else + until manual_part; do : ; done + fi fi - elif [[ "${multibooting}" == "y" ]]; then + elif [[ "${multibooting}" == "y" ]]; then process until manual_part; do : ; done fi @@ -3580,7 +3535,7 @@ ask_crypt() { NC " -${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Encryption Setup${nc} ${magenta}]${nc}------------------------------------${magenta}###${nc} +${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Encryption Setup${nc} ${magenta}]${nc}------------------------------------${magenta}### " BLUE " @@ -3600,6 +3555,46 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Encry ok return 0 elif [[ "${encrypt}" == "yes" ]]; then + if [[ "${bootloader}" == "2" && "${espmnt}" == "1" ]]; then + sleep 0.2 + RED " + -------------------------------------------------- + ### ${yellow}Incompatible selection has been detected ${red}### + --------------------------------------------------" + YELLOW " + + ### ESP cannot be mounted at '/efi' when using Grub on a LUKS formatted Root partition + + + > Change ESP mountpoint to '/boot' instead ? [Y/n] " + BLUE " + + +Enter [Y/n]: " + read -r -p " +==> " cng_espmnt + + echo + cng_espmnt="${cng_espmnt:-y}" + cng_espmnt="${cng_espmnt,,}" + + if [[ "${cng_espmnt}" == "y" ]]; then + espmnt="2" + esp_mount="/mnt/boot" + btldr_esp_mount="/boot" + sleep 0.2 + YELLOW " + + ### '/mnt/boot' mountpoint has been selected + + " + elif [[ "${cng_espmnt}" == "n" ]]; then + failure + else + y_n + return 1 + fi + fi sleep 0.2 YELLOW " > Enter a name for your Encrypted ${roottype} Partition: " @@ -3713,8 +3708,8 @@ instl() { CYAN " - [!] Please complete ${nc}'Locale & Keyboard Layout Selection'${cyan} to continue - " + (*) ${nc}Please complete ${yellowl}'Locale & Keyboard Layout Selection'${nc} to continue + "| pv -qL 60 until slct_locale; do : ; done until slct_kbd; do : ; done fi @@ -3728,12 +3723,13 @@ instl() { fi if [[ -z "${kernelnmbr}" ]]; then - local stage_prompt="Kernel, Bootloader, ESP Mountpoint & UKI Setup" + local stage_prompt="Kernel, Bootloader, ESP Mountpoint & Secure Signing" completion_err + until dtct_hyper; do : ; done until slct_krnl; do : ; done until ask_bootldr; do : ; done until slct_espmnt; do : ; done - until set_uki; do : ; done + until ask_sign; do : ; done fi if [[ -z "${fs}" ]]; then @@ -3743,13 +3739,10 @@ instl() { until ask_swap; do : ; done fi - if [[ -z "${hypervisor}" ]]; then - until dtct_hyper; do : ; done - if [[ "${hypervisor}" == "none" ]]; then - local stage_prompt="Graphics Setup" - completion_err - until dtct_vga; do : ; done - fi + if [[ "${hypervisor}" == "none" ]]; then + local stage_prompt="Graphics Setup" + completion_err + until dtct_vga; do : ; done fi if [[ -z "${packages}" ]]; then @@ -3807,7 +3800,7 @@ swappart() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Swap Partition Setup${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Swap Partition Setup${nc} ${magenta}]${nc}----------------------------------${magenta}### " if mkswap "${swap_dev}" > /dev/null 2>&1 ; then stage_ok @@ -3844,7 +3837,7 @@ set_mode() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Mode Selection${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Mode Selection${nc} ${magenta}]${nc}-------------------------------------${magenta}### " YELLOW " @@ -3901,7 +3894,7 @@ auto_mode() { sleep 0.2 NC " -${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}Auto Mode${nc} ${magenta}]${nc}----------------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}Auto Mode${nc} ${magenta}]${nc}----------------------------------------${magenta}### " sleep 0.2 YELLOW " @@ -4025,12 +4018,15 @@ ${magenta}###${nc}----------------------------------------${magenta}[ ${bwhite}A BLUE " - > A ${nc}/Home ${blue}partition has been detected. Format as ${nc}${fsname}${blue} ? [y/n] + > A ${nc}/Home ${blue}partition has been detected. Format as ${nc}${fsname}${blue} ? [y/N] " read -r -p " ==> " homeform + echo + homeform="${homeform:-n}" + homeform="${homeform,,}" fi if [[ "${homeform}" == "y" ]]; then @@ -4087,7 +4083,7 @@ form_esp() { NC " -${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Format EFI System Partition${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Format EFI System Partition${nc} ${magenta}]${nc}-------------------------------${magenta}### " form_esp_nmbr=" " @@ -4106,7 +4102,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> " form_esp_nmbr if [[ -n "${form_esp_nmbr}" ]]; then - esppart="$(echo "${volumes}" | awk "\$1 == ${form_esp_nmbr} { print \$2}")" + esppart="$(echo "${volumes}" | awk "\$1 == ${form_esp_nmbr} {print \$2}")" manespfs="$(lsblk -dno FSTYPE "${esppart}")" if [[ -e "${esppart}" ]]; then if [[ "${multibooting}" == "n" ]]; then @@ -4117,7 +4113,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> [${green}Format & Label /ESP OK${nc}] " return 0 else - umount_abort + do_umount until manual_part; do : ; done until form_esp; do : ; done return 0 @@ -4136,7 +4132,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> [${green}Format & Label /ESP OK${nc}] " return 0 else - umount_abort + do_umount until manual_part; do : ; done until form_esp; do : ; done return 0 @@ -4162,7 +4158,7 @@ form_xboot() { NC " -${magenta}###${nc}--------------------------${magenta}[ ${bwhite}Format Linux Extended Boot Partition${nc} ${magenta}]${nc}--------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------${magenta}[ ${bwhite}Format Linux Extended Boot Partition${nc} ${magenta}]${nc}--------------------------${magenta}### " form_xboot_nmbr=" " @@ -4181,7 +4177,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> " form_xboot_nmbr if [[ -n "${form_xboot_nmbr}" ]]; then - xbootpart="$(echo "${volumes}" | awk "\$1 == ${form_xboot_nmbr} { print \$2}")" + xbootpart="$(echo "${volumes}" | awk "\$1 == ${form_xboot_nmbr} {print \$2}")" if [[ -e "${xbootpart}" ]]; then if mkfs.fat -F 32 -n XBOOTLDR "${xbootpart}" > /dev/null 2>&1 ; then sleep 0.2 @@ -4190,7 +4186,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> [${green}Format & Label /XBOOTLDR OK${nc}] " return 0 else - umount_abort + do_umount until manual_part; do : ; done until form_xboot; do : ; done return 0 @@ -4215,7 +4211,7 @@ form_root() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Format Root Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Format Root Partition${nc} ${magenta}]${nc}----------------------------------${magenta}### " form_root_nmbr=" " @@ -4234,7 +4230,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> " 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 @@ -4245,7 +4241,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> [${green}Format ${roottype} OK${nc}] " else - umount_abort + do_umount until manual_part; do : ; done until form_root; do : ; done return 0 @@ -4270,7 +4266,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> [${green}Format ${roottype} OK${nc}] " else - umount_abort + do_umount until manual_part; do : ; done until form_root; do : ; done return 0 @@ -4294,24 +4290,24 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " if [[ -n "${rootpartname}" ]]; then if [[ "${fs}" == "1" ]]; then if e2label "${rootpart}" "${rootpartname}" > /dev/null 2>&1 ; then - sleep 0.2 - NC " + sleep 0.2 + NC " ==> [${green}Label ${roottype} OK${nc}] " - return 0 - else - err_try - return 1 - fi + return 0 + else + err_try + return 1 + fi elif [[ "${fs}" == "2" ]]; then mount "${rootpart}" /mnt || err_abort btrfs filesystem label /mnt "${rootpartname}" > /dev/null 2>&1 || err_abort umount /mnt || err_abort - sleep 0.2 - NC " + sleep 0.2 + NC " ==> [${green}Label ${roottype} OK${nc}] " - return 0 + return 0 fi fi skip @@ -4325,7 +4321,7 @@ Enter a name ${bwhite}(empty to skip and proceed)${blue}: " skip return 0 fi - done + done } ################################################################################################### ask_homepart_form() { @@ -4339,12 +4335,15 @@ ask_homepart_form() { BLUE " - > A${nc} ${cyan}/Home ${blue}partition has been detected. Format as ${nc}${fsname}${blue} ? [y/n] + > A${nc} ${cyan}/Home ${blue}partition has been detected. Format as ${nc}${fsname}${blue} ? [y/N] " read -r -p " ==> " homeform + echo + homeform="${homeform:-n}" + homeform="${homeform,,}" fi if [[ "${homeform}" == "y" ]]; then @@ -4380,7 +4379,7 @@ form_home() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Format Home Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Format Home Partition${nc} ${magenta}]${nc}----------------------------------${magenta}### " form_home_nmbr=" " @@ -4400,7 +4399,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> " 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}" > /dev/null 2>&1 ; then sleep 0.2 @@ -4409,7 +4408,7 @@ Enter a partition number ${bwhite}(empty to skip and proceed)${blue}: " ==> [${green}Format /Home OK${nc}] " else - umount_abort + do_umount until manual_part; do : ; done until form_home; do : ; done return 0 @@ -4460,7 +4459,7 @@ mount_mnt() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Mount Root Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Mount Root Partition${nc} ${magenta}]${nc}----------------------------------${magenta}### " YELLOW " @@ -4478,7 +4477,7 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " 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 @@ -4487,7 +4486,7 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " ok return 0 else - umount_abort + do_umount until mount_mnt; do : ; done fi #-------------------------------------------------------------------------------------------------- @@ -4505,7 +4504,7 @@ Enter your${nc} ${cyan}${roottype} ${blue}partition number: " ok return 0 else - umount_abort + do_umount until mount_mnt; do : ; done fi fi @@ -4527,7 +4526,7 @@ mount_esp() { NC " -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Mount ESP Partition${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Mount ESP Partition${nc} ${magenta}]${nc}-----------------------------------${magenta}### " YELLOW " @@ -4545,13 +4544,13 @@ Enter your${nc} ${cyan}/ESP ${blue}partition number: " echo if [[ -n "${mntesp_nmbr}" ]]; then - esppart="$(echo "${volumes}" | awk "\$1 == ${mntesp_nmbr} { print \$2}")" + esppart="$(echo "${volumes}" | awk "\$1 == ${mntesp_nmbr} {print \$2}")" if [[ -e "${esppart}" ]]; then if mount --mkdir "${esppart}" "${esp_mount}" > /dev/null 2>&1 ; then ok return 0 else - umount_abort + do_umount until mount_mnt; do : ; done until mount_esp; do : ; done fi @@ -4572,7 +4571,7 @@ mount_xboot() { NC " -${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Mount XBOOTLDR Partition${nc} ${magenta}]${nc}--------------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Mount XBOOTLDR Partition${nc} ${magenta}]${nc}--------------------------------${magenta}### " YELLOW " @@ -4590,13 +4589,13 @@ Enter your${nc} ${cyan}/XBOOTLDR ${blue}partition number: " echo if [[ -n "${mntxboot_nmbr}" ]]; then - xbootpart="$(echo "${volumes}" | awk "\$1 == ${mntxboot_nmbr} { print \$2}")" + xbootpart="$(echo "${volumes}" | awk "\$1 == ${mntxboot_nmbr} {print \$2}")" if [[ -e "${xbootpart}" ]]; then if mount --mkdir "${xbootpart}" /mnt/boot > /dev/null 2>&1 ; then ok return 0 else - umount_abort + do_umount until mount_mnt; do : ; done until mount_esp; do : ; done until mount_xboot; do : ; done @@ -4618,7 +4617,7 @@ mount_home() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Mount Home Partition${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Mount Home Partition${nc} ${magenta}]${nc}----------------------------------${magenta}### " YELLOW " @@ -4636,13 +4635,13 @@ Enter your${nc} ${cyan}/Home ${blue}partition number: " 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 --mkdir "${homepart}" /mnt/home > /dev/null 2>&1 ; then ok return 0 else - umount_abort + do_umount until mount_mnt; do : ; done until mount_esp; do : ; done until mount_xboot; do : ; done @@ -4665,7 +4664,7 @@ confirm_status() { NC " -${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm Installation Status${nc} ${magenta}]${nc}-------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm Installation Status${nc} ${magenta}]${nc}-------------------------------${magenta}### " BLUE " @@ -4704,31 +4703,28 @@ ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm In revise() { revision="yes" - xbootloader="" - vgaconf="" - vendor_slct="" - packages="" - custompkgs="" - customservices="" - cust_bootopts="" - REGDOM="" - preset="" + reset=(xbootloader="" vgaconf="" vendor_slct="" packages="" custompkgs="" customservices="" cust_bootopts="" REGDOM="" preset="") + export "${reset[@]}" + until dtct_hyper; do : ; done until slct_krnl; do : ; done until ask_bootldr; do : ; done until slct_espmnt; do : ; done - until set_uki; do : ; done + until ask_sign; do : ; done until ask_fs; do : ; done until ask_swap; do : ; done - until dtct_hyper; do : ; done + if [[ "${hypervisor}" == "none" ]]; then until dtct_vga; do : ; done + fi until slct_dsktp; do : ; done + if [[ "${hypervisor}" == "none" ]]; then until boot_entr; do : ; done until wireless_rgd; do : ; done + fi until instl_dsk; do : ; done until ask_crypt; do : ; done - if [[ "${swapmode}" == "1" ]]; then - until "${swaptype}"; do : ; done - fi + if [[ "${swapmode}" == "1" ]]; then + until "${swaptype}"; do : ; done + fi if [[ "${encrypt}" == "no" ]]; then until set_mode; do : ; done until confirm_status; do : ; done @@ -4737,12 +4733,12 @@ revise() { until luks; do : ; done until opt_pcmn; do : ; done until pacstrap_system; do : ; done - if [[ "${swapmode}" == "2" ]]; then - until "${swaptype}"; do : ; done - fi - if [[ -n "${REGDOM}" ]]; then - until wireless_regdom; do : ; done - fi + if [[ "${swapmode}" == "2" ]]; then + until "${swaptype}"; do : ; done + fi + if [[ -n "${REGDOM}" ]]; then + until wireless_regdom; do : ; done + fi set_vars chroot_conf fi @@ -4755,7 +4751,7 @@ sec_erase() { NC " -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Secure Disk Erasure${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Secure Disk Erasure${nc} ${magenta}]${nc}-----------------------------------${magenta}### " erase_dsk_nmbr=" " @@ -4765,7 +4761,7 @@ ${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Secure > Select a disk for Secure Erasure ${red}[!] (CAUTION) [!]${yellow} " RED " -------------------------------------------------------------------------- - ### ${yellow}A reboot is ${yellowl}mandatory ${nc}${yellow}and will take effect ${yellowl}immediately ${nc}${yellow}when done ${red}### + ### ${yellow}A reboot is ${nc}mandatory ${yellow}and will take effect ${nc}immediately ${yellow}when done ${red}### --------------------------------------------------------------------------" NC " @@ -4780,7 +4776,7 @@ Enter a disk number ${bwhite}(empty to skip)${blue}: " 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 || err_abort dd if=/dev/zero of=/dev/mapper/temp status=progress bs=1M oflag=direct || err_abort @@ -4814,7 +4810,7 @@ luks() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS Encryption${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS Encryption${nc} ${magenta}]${nc}-------------------------------------${magenta}### @@ -4864,12 +4860,12 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS else line2 err_try - unmount_noabort + do_umount return 1 fi #-------------------------------------------------------------------------------------------------- - line3 - if [[ -e "${swap_dev}" ]]; then + if [[ -e "${swap_dev}" && "${swapmode}" == "1" ]]; then + line2 if cryptsetup -y -v luksFormat --label CRYPTSWAP "${swap_dev}"; then if [[ "${rota}" == "0" ]]; then cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${swap_dev}" swap || err_abort @@ -4884,13 +4880,13 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS else line2 err_try - unmount_noabort + do_umount return 1 fi fi #-------------------------------------------------------------------------------------------------- - line3 if [[ "${homecrypt}" == "yes" ]]; then + line2 if cryptsetup -y -v luksFormat --label CRYPTHOME "${home_dev}"; then if [[ "${rota}" == "0" ]]; then cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent luksOpen "${home_dev}" "${ENCRHOME}" || err_abort @@ -4906,18 +4902,21 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS else line2 err_try - unmount_noabort + do_umount return 1 fi elif [[ "${homecrypt}" == "no" ]]; then BLUE " - > A ${nc}/Home ${blue}partition has been detected. Format as${nc} ${fsname}${blue}? [y/n] + > A ${nc}/Home ${blue}partition has been detected. Format as${nc} ${fsname}${blue}? [y/N] " read -r -p " ==> " homeform + echo + homeform="${homeform:-n}" + homeform="${homeform,,}" if [[ "${homeform}" == "y" ]]; then if mkfs.ext4 -F -L Home "${home_dev}" > /dev/null 2>&1 ; then @@ -4929,7 +4928,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS else line2 err_try - unmount_noabort + do_umount return 1 fi elif [[ "${homeform}" == "n" ]]; then @@ -4948,7 +4947,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS ==> [${green}/ESP OK${nc}] " else - umount_abort + do_umount until luks; do : ; done fi elif [[ "${multibooting}" == "y" && "${espfs}" == "vfat" ]]; then @@ -4960,7 +4959,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS else line2 err_try - unmount_noabort + do_umount return 1 fi elif [[ "${multibooting}" == "y" && "${espfs}" != "vfat" ]]; then @@ -4971,7 +4970,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS ==> [${green}/ESP OK${nc}] " else - umount_abort + do_umount until luks; do : ; done fi fi @@ -4986,7 +4985,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}LUKS else line2 err_try - unmount_noabort + do_umount return 1 fi fi @@ -5019,7 +5018,7 @@ opt_pcmn() { NC " -${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Pacman Optimization${nc} ${magenta}]${nc}-----------------------------------${magenta}###${nc} +${magenta}###${nc}-----------------------------------${magenta}[ ${bwhite}Pacman Optimization${nc} ${magenta}]${nc}-----------------------------------${magenta}### " YELLOW " @@ -5043,7 +5042,7 @@ Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " elif [[ "${COUNTRY}" == "l" ]]; then reflector --list-countries | more return 1 - elif [[ -n "${COUNTRY}" ]] ; then + elif [[ -n "${COUNTRY}" ]]; then line2 if reflector --verbose -c "${COUNTRY}" -l 10 -p https -f 10 --sort rate --save /etc/pacman.d/mirrorlist ; then sleep 0.2 @@ -5059,27 +5058,30 @@ Enter country name or country code ${bwhite}(Empty for Defaults)${blue}: " YELLOW " - > Enable Pacman's 'Parallel Downloads' feature? [y/n] " + > Enable Pacman's 'Parallel Downloads' feature? [Y/n] " BLUE " -Enter [y/n]: " +Enter [Y/n]: " read -r -p " ==> " parallel + echo + parallel="${parallel:-y}" + parallel="${parallel,,}" if [[ "${parallel}" == "y" ]]; then sleep 0.2 YELLOW " - > Select number of Parallel Downloads [2-5] " + > Select number of Parallel Downloads [Default: 3] " NC " ${green}**${nc} [2] - ${cyan}***${nc} [3] + ${cyan}***${nc} ${bwhite}[3] - ${yellow}****${nc} [4] + ${nc}${yellow}****${nc} [4] ${red}*****${nc} [5] " BLUE " @@ -5088,7 +5090,10 @@ Enter [y/n]: " Enter a number: " read -r -p " ==> " parallelnmbr + echo + parallelnmbr="${parallelnmbr:-3}" + parallelnmbr="${parallelnmbr,,}" if [[ "${parallelnmbr}" =~ ^(2|3|4|5)$ ]]; then sed -i "s|#ParallelDownloads = 5|ParallelDownloads = ${parallelnmbr}|g" /etc/pacman.conf > /dev/null 2>&1 || err_abort @@ -5116,7 +5121,7 @@ pacstrap_system() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacstrap System${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacstrap System${nc} ${magenta}]${nc}-------------------------------------${magenta}### " cnfg if [[ "${bootloader}" == "2" ]]; then @@ -5141,7 +5146,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs bluetooth="bluetooth" network="NetworkManager" ;; - 2) # Minimal Plasma & Apps & System optimizations: + 2) # Minimal Plasma & Apps: 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 mold nano-syntax-highlighting nss-mdns ntfs-3g okular opus-tools p7zip packagekit-qt6 pacman-contrib partitionmanager pbzip2 pdfmixtool pigz pipewire-alsa pipewire-jack pipewire-pulse 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 wget xdg-desktop-portal xdg-desktop-portal-gtk xdg-desktop-portal-kde zip zsh zsh-autosuggestions zsh-completions zsh-syntax-highlighting ${nrg_plc}" ;; 3) # Gnome Desktop: @@ -5150,7 +5155,7 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs bluetooth="bluetooth" network="NetworkManager" ;; - 4) # Minimal Gnome & Apps & System optimizations: + 4) # Minimal Gnome & Apps: 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-shell-extension-appindicator 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 glib2-devel 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 mold nano-syntax-highlighting nss-mdns ntfs-3g p7zip pacman-contrib pbzip2 pdfmixtool pigz pipewire-alsa pipewire-jack pipewire-pulse powerline powerline-fonts qbittorrent realtime-privileges reflector rng-tools sof-firmware sox 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) # Xfce Desktop: @@ -5218,15 +5223,15 @@ swapfile() { NC " -${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Swapfile Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###${nc} +${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Swapfile Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}### " if arch-chroot /mnt <<-SWAPFILE > /dev/null 2>&1 ; then mkswap -U clear --size ${swapsize}G --file /swapfile > /dev/null 2>&1 || exit SWAPFILE - cat >> /mnt/etc/fstab <<-FSTAB || err_abort + cat >> /mnt/etc/fstab <<-FSTAB || err_abort /swapfile none swap defaults 0 0 FSTAB - stage_ok + stage_ok else stage_fail fi @@ -5239,7 +5244,7 @@ swapfile_btrfs() { NC " -${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Btrfs Swapfile Setup${nc} ${magenta}]${nc}----------------------------------${magenta}###${nc} +${magenta}###${nc}----------------------------------${magenta}[ ${bwhite}Btrfs Swapfile Setup${nc} ${magenta}]${nc}----------------------------------${magenta}### " if arch-chroot /mnt <<-SWAPFILE > /dev/null 2>&1 ; then btrfs filesystem mkswapfile --size ${swapsize}g --uuid clear /swap/swapfile > /dev/null 2>&1 || exit @@ -5260,7 +5265,7 @@ wireless_regdom() { NC " -${magenta}###${nc}--------------------------${magenta}[ ${bwhite}Setting Up Wireless Regulatory Domain${nc} ${magenta}]${nc}--------------------------${magenta}###${nc} +${magenta}###${nc}--------------------------${magenta}[ ${bwhite}Setting Up Wireless Regulatory Domain${nc} ${magenta}]${nc}--------------------------${magenta}### " if sed -i "/^#WIRELESS_REGDOM=\"${REGDOM}\"/s/^#//" /mnt/etc/conf.d/wireless-regdom ; then stage_ok @@ -5278,10 +5283,10 @@ main_chroot() { echo LANG=${SETLOCALE} > /etc/locale.conf || exit export LANG=${SETLOCALE} || exit echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit - cat <<-MKINIT_CONF > /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit + cat <<-MKINITCPIO > /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit ${mkinitcpio_mods} ${mkinitcpio_hooks} -MKINIT_CONF +MKINITCPIO mkinitcpio -P || exit ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit hwclock --systohc || exit @@ -5297,86 +5302,48 @@ HOSTS echo "%wheel ALL=(ALL) ALL" | tee /etc/sudoers.d/sudoersd || exit visudo -c /etc/sudoers.d/sudoersd || exit CONF - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi } ################################################################################################### -btldr_conf() { +btldrcfg() { if [[ "${bootloader}" == "1" ]]; then cnfg local stage_prompt="Systemd-boot" - if [[ "${espmnt}" == "1" ]]; then - if [[ "${uki}" == "n" ]]; then - if arch-chroot /mnt <<-XBOOTCTL > /dev/null 2>&1 ; then - bootctl --esp-path=/efi --boot-path=/boot install || exit - echo "default arch.conf" > /boot/loader/loader.conf || exit - cat <<-SDBOOT_CONF > /boot/loader/entries/arch.conf || exit - title ${entrname} - linux /vmlinuz-${kernel} - initrd /initramfs-${kernel}.img - options rw ${boot_opts} -SDBOOT_CONF - systemctl enable systemd-boot-update || exit -XBOOTCTL - stage_ok - else - stage_fail - fi - elif [[ "${uki}" == "y" ]]; then - if arch-chroot /mnt <<-XBOOTCTL > /dev/null 2>&1 ; then - bootctl --esp-path=/efi --boot-path=/boot install || exit - systemctl enable systemd-boot-update || exit -XBOOTCTL - stage_ok - else - stage_fail - fi + if [[ "${xbootloader}" == "no" ]]; then + if arch-chroot /mnt <<-BOOTCTL > /dev/null 2>&1 ; then + bootctl install || exit + systemctl enable systemd-boot-update || exit +BOOTCTL + stage_ok + else + stage_fail fi - elif [[ "${espmnt}" == "2" ]]; then - if [[ "${uki}" == "n" ]]; then - if arch-chroot /mnt <<-BOOTCTL > /dev/null 2>&1 ; then - bootctl install || exit - echo "default arch.conf" > /boot/loader/loader.conf || exit - cat <<-SDBOOT_CONF > /boot/loader/entries/arch.conf || exit - title ${entrname} - linux /vmlinuz-${kernel} - initrd /initramfs-${kernel}.img - options rw ${boot_opts} -SDBOOT_CONF - systemctl enable systemd-boot-update || exit -BOOTCTL - stage_ok - else - stage_fail - fi - elif [[ "${uki}" == "y" ]]; then - if arch-chroot /mnt <<-BOOTCTL > /dev/null 2>&1 ; then - bootctl install || exit - systemctl enable systemd-boot-update || exit -BOOTCTL - stage_ok - else - stage_fail - fi + elif [[ "${xbootloader}" == "yes" ]]; then + if arch-chroot /mnt <<-XBOOTCTL > /dev/null 2>&1 ; then + bootctl --esp-path=/efi --boot-path=/boot install || exit + systemctl enable systemd-boot-update || exit +XBOOTCTL + stage_ok + else + stage_fail fi fi elif [[ "${bootloader}" == "2" ]]; then cnfg local stage_prompt="Grub" - if arch-chroot /mnt <<-GRUB > /dev/null 2>&1 ; then - grub-install --target=x86_64-efi --efi-directory=${btldr_esp_mount} --bootloader-id=GRUB || exit - mkdir -p /etc/default/grub.d/ || exit - cat <<-GRUB_CONF > /etc/default/grub.d/00-custom.cfg || exit + if arch-chroot /mnt <<-GRUB > /dev/null 2>&1 ; then + cp /etc/default/grub /etc/default/grub.bak + cat <<-CFG > /etc/default/grub || exit GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="Arch" GRUB_CMDLINE_LINUX_DEFAULT="${boot_opts}" GRUB_CMDLINE_LINUX="" GRUB_PRELOAD_MODULES="part_gpt part_msdos" - GRUB_ENABLE_CRYPTODISK=y GRUB_TIMEOUT_STYLE=menu GRUB_TERMINAL_INPUT=console GRUB_GFXMODE=auto @@ -5384,62 +5351,64 @@ BOOTCTL GRUB_DISABLE_RECOVERY=true GRUB_DISABLE_OS_PROBER=false #GRUB_TERMINAL_OUTPUT=console -GRUB_CONF - grub-mkconfig -o /boot/grub/grub.cfg +CFG GRUB stage_ok else stage_fail - fi - - if [[ "${uki}" == "y" ]]; then - cnfg - local stage_prompt="Grub_Uki-Entry" - esp_dev_uuid="$(lsblk -dno UUID "${esp_dev}")" - if arch-chroot /mnt <<-GRUB_UKI > /dev/null 2>&1 ; then - cat <<-GRUB_UKI_ENTRY >> /boot/grub/custom.cfg - menuentry "Arch Linux" { - insmod fat - insmod chain - search --no-floppy --set=root --fs-uuid ${esp_dev_uuid} - chainloader /EFI/Linux/arch-${kernel}.efi - } -GRUB_UKI_ENTRY -GRUB_UKI - stage_ok - else - stage_fail + fi + + cnfg + local stage_prompt="Grub Installation" + if [[ "${sb_sign}" == "y" ]]; then + if arch-chroot /mnt <<-SBGRUBINST > /dev/null 2>&1 ; then + grub-install --target=x86_64-efi --efi-directory=${btldr_esp_mount} --bootloader-id=GRUB --modules="tpm" --disable-shim-lock --recheck || exit + sed -i 's/SecureBoot/SecureB00t/' ${btldr_esp_mount}/EFI/GRUB/grubx64.efi || exit + grub-mkconfig -o /boot/grub/grub.cfg || exit +SBGRUBINST + stage_ok + else + stage_fail + fi + elif [[ "${sb_sign}" == "n" ]]; then + if arch-chroot /mnt <<-GRUBINST > /dev/null 2>&1 ; then + grub-install --target=x86_64-efi --efi-directory=${btldr_esp_mount} --bootloader-id=GRUB --recheck || exit + grub-mkconfig -o /boot/grub/grub.cfg || exit +GRUBINST + stage_ok + else + stage_fail fi fi if [[ "${fs}" == "2" ]]; then cnfg - local stage_prompt="Grub-Btrfsd" + stage_prompt="Grub-Btrfsd" if arch-chroot /mnt <<-GRUB_BTRFSD > /dev/null 2>&1 ; then systemctl enable grub-btrfsd || exit GRUB_BTRFSD - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi fi if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then cnfg local stage_prompt="Grub-Nvidia" - if arch-chroot /mnt <<-NVIDIA_GRUB > /dev/null 2>&1 ; then - sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub.d/00-custom.cfg || exit + if arch-chroot /mnt <<-NVGRUB > /dev/null 2>&1 ; then + sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub || exit grub-mkconfig -o /boot/grub/grub.cfg || exit -NVIDIA_GRUB - stage_ok - else - stage_fail - fi +NVGRUB + stage_ok + else + stage_fail + fi fi fi } ################################################################################################### -trim_conf() { +trimcfg() { if [[ -n "${trim}" ]]; then cnfg @@ -5447,14 +5416,14 @@ trim_conf() { if arch-chroot /mnt <<-TRIM > /dev/null 2>&1 ; then systemctl enable ${trim} || exit TRIM - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi fi } ################################################################################################### -vm_serv_conf() { +vm_serv() { if [[ -n "${vm_services}" ]]; then cnfg @@ -5462,58 +5431,49 @@ vm_serv_conf() { if arch-chroot /mnt <<-VM > /dev/null 2>&1 ; then systemctl enable ${vm_services} || exit VM - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi fi } ################################################################################################### -nvidia_serv_conf() { - - if [[ -n "${nvidia_services}" ]]; then - cnfg - local stage_prompt="Nvidia Services" - if arch-chroot /mnt <<-NVIDIA_SERV > /dev/null 2>&1 ; then - systemctl enable ${nvidia_services} || exit -NVIDIA_SERV - stage_ok - else - stage_fail - fi - fi -} -################################################################################################### -zram_conf() { +zramcfg() { if [[ -n "${zram}" ]]; then cnfg local stage_prompt="Zram Swap" zram_service="systemd-zram-setup@zram0.service" - if arch-chroot /mnt <<-ZRAM > /dev/null 2>&1 ; then + if arch-chroot /mnt <<-ZRAMCONF > /dev/null 2>&1 ; then mkdir -p /etc/systemd/zram-generator.conf.d - cat <<-ZRAM_CONF > /etc/systemd/zram-generator.conf.d/zram.conf || exit + cat <<-ZCONF > /etc/systemd/zram-generator.conf.d/zram.conf || exit [zram0] zram-size = ram / 2 compression-algorithm = zstd -ZRAM_CONF +ZCONF + cat <<-VMZCONF > /etc/sysctl.d/99-vm-zram-parameters.conf || exit + vm.swappiness = 180 + vm.watermark_boost_factor = 0 + vm.watermark_scale_factor = 125 + vm.page-cluster = 0 +VMZCONF systemctl daemon-reload || exit systemctl start ${zram_service} || exit -ZRAM - stage_ok +ZRAMCONF + stage_ok else - stage_fail + stage_fail fi fi } ################################################################################################### -nvidia_hook_conf() { +nvidia_hook() { if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then if [[ "${nvname}" == "nvidia-open" ]] || [[ "${nvname}" == "nvidia" ]] || [[ "${nvname}" == "nvidia-lts" ]]; then cnfg local stage_prompt="Nvidia-Hook" - if arch-chroot /mnt <<-NVIDIA_HOOK > /dev/null 2>&1 ; then + if arch-chroot /mnt <<-NVIDIAHOOK > /dev/null 2>&1 ; then mkdir -p /etc/pacman.d/hooks/ || exit cat <<-HOOK > /etc/pacman.d/hooks/nvidia.hook || exit [Trigger] @@ -5531,71 +5491,101 @@ nvidia_hook_conf() { NeedsTargets Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P' HOOK -NVIDIA_HOOK - stage_ok - else - stage_fail - fi +NVIDIAHOOK + stage_ok + else + stage_fail + fi fi fi } ################################################################################################### -uki_conf() { +mkinitcpio_preset() { + + cnfg + local stage_prompt="Mkinitcpio Kernel Presets" if [[ "${uki}" == "y" ]]; then - cnfg - local stage_prompt="UKI" - if [[ ! -e "${esp_mount}"/EFI/Linux ]]; then mkdir -p "${esp_mount}"/EFI/Linux || exit fi - - if [[ "${bootloader}" == "1" ]]; then - if arch-chroot /mnt <<- UKI > /dev/null 2>&1 ; then - mkdir /etc/cmdline.d || exit - echo "rw ${boot_opts}" | tee /etc/cmdline.d/cmdline.conf || exit - cp /etc/mkinitcpio.d/${kernel}.preset /etc/mkinitcpio.d/${kernel}.preset.bak - cat <<-MKINITCPIO_PRESET > /etc/mkinitcpio.d/${kernel}.preset || exit - ALL_kver="/boot/vmlinuz-${kernel}" - PRESETS=('default') - default_config="/etc/mkinitcpio.conf.d/mkinitcpiod.conf" - default_uki="${btldr_esp_mount}/EFI/Linux/arch-${kernel}.efi" -MKINITCPIO_PRESET - mkinitcpio -P || exit + if arch-chroot /mnt <<-UKI > /dev/null 2>&1 ; then + mkdir /etc/cmdline.d || exit + echo "rw ${boot_opts}" | tee /etc/cmdline.d/cmdline.conf || exit + cp /etc/mkinitcpio.d/${kernel}.preset /etc/mkinitcpio.d/${kernel}.preset.bak + cat <<-MKINITPRESET > /etc/mkinitcpio.d/${kernel}.preset || exit + ALL_kver="/boot/vmlinuz-${kernel}" + PRESETS=('default') + default_config="/etc/mkinitcpio.conf.d/mkinitcpiod.conf" + default_uki="${btldr_esp_mount}/EFI/Linux/arch-${kernel}.efi" +MKINITPRESET + mkinitcpio -P || exit UKI - stage_ok - else - stage_fail - fi - - if [[ -e /mnt/boot/initramfs-"${kernel}".img ]]; then - rm /mnt/boot/initramfs-"${kernel}".img || exit - fi - - if [[ -e /mnt/boot/initramfs-"${kernel}"-fallback.img ]]; then - rm /mnt/boot/initramfs-"${kernel}"-fallback.img || exit - fi - - elif [[ "${bootloader}" == "2" ]]; then - if arch-chroot /mnt <<- UKI > /dev/null 2>&1 ; then - mkdir /etc/cmdline.d || exit - echo "rw ${boot_opts}" | tee /etc/cmdline.d/cmdline.conf || exit - cp /etc/mkinitcpio.d/${kernel}.preset /etc/mkinitcpio.d/${kernel}.preset.bak - cat <<-MKINITCPIO_PRESET > /etc/mkinitcpio.d/${kernel}.preset || exit - ALL_kver="/boot/vmlinuz-${kernel}" - PRESETS=('default') - default_config="/etc/mkinitcpio.conf.d/mkinitcpiod.conf" - default_image="/boot/initramfs-${kernel}.img" - default_uki="${btldr_esp_mount}/EFI/Linux/arch-${kernel}.efi" -MKINITCPIO_PRESET - mkinitcpio -P || exit -UKI - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail fi - fi + if [[ -e /mnt/boot/initramfs-"${kernel}".img ]]; then + rm /mnt/boot/initramfs-"${kernel}".img || exit + fi + if [[ -e /mnt/boot/initramfs-"${kernel}"-fallback.img ]]; then + rm /mnt/boot/initramfs-"${kernel}"-fallback.img || exit + fi + elif [[ "${uki}" == "n" ]]; then + if arch-chroot /mnt <<-NOUKI > /dev/null 2>&1 ; then + cp /etc/mkinitcpio.d/${kernel}.preset /etc/mkinitcpio.d/${kernel}.preset.bak + cat <<-MKINITPRESET > /etc/mkinitcpio.d/${kernel}.preset || exit + ALL_kver="/boot/vmlinuz-${kernel}" + PRESETS=('default' 'fallback') + default_config="/etc/mkinitcpio.conf.d/mkinitcpiod.conf" + default_image="/boot/initramfs-${kernel}.img" + fallback_image="/boot/initramfs-${kernel}-fallback.img" + fallback_options="-S autodetect" +MKINITPRESET + mkinitcpio -P || exit +NOUKI + stage_ok + else + stage_fail + fi + fi +} +################################################################################################### +secboot_sign() { + + if [[ ${sb_sign} == "y" ]]; then + cnfg + local stage_prompt="Secure Boot Signing" + if [[ ${bootloader} == "1" ]]; then + if arch-chroot /mnt <<-SECSIGN > /dev/null 2>&1 ; then + systemctl disable systemd-boot-update || exit + pacman -S --noconfirm sbctl || exit + sbctl create-keys || exit + sbctl enroll-keys -m || exit + sbctl sign -s /boot/vmlinuz-${kernel} || exit + sbctl sign -s ${btldr_esp_mount}/EFI/BOOT/BOOTX64.EFI || exit + sbctl sign -s ${btldr_esp_mount}/EFI/Linux/arch-linux.efi || exit + sbctl sign -s ${btldr_esp_mount}/EFI/systemd/systemd-bootx64.efi || exit + sbctl sign -s -o /usr/lib/systemd/boot/efi/systemd-bootx64.efi.signed /usr/lib/systemd/boot/efi/systemd-bootx64.efi || exit +SECSIGN + stage_ok + else + stage_fail + fi + elif [[ ${bootloader} == "2" ]]; then + if arch-chroot /mnt <<-SECSIGN > /dev/null 2>&1 ; then + pacman -S --noconfirm sbctl || exit + sbctl create-keys || exit + sbctl enroll-keys -m || exit + sbctl sign -s /boot/vmlinuz-${kernel} || exit + sbctl sign -s ${btldr_esp_mount}/EFI/GRUB/grubx64.efi || exit +SECSIGN + stage_ok + else + stage_fail + fi + fi + fi } ################################################################################################### set_vars() { @@ -5612,7 +5602,7 @@ set_vars() { # Encrypted Root Options encr_root_opts="rd.luks.name=$(blkid -s UUID -o value "${root_dev}")=${ENCROOT}" # Encrypted Kernel Boot Options - encr_root_bootopts="root=${encr_root_dev} ${encr_root_opts} " + encr_root_bootopts="${encr_root_opts} root=${encr_root_dev} " ### Encrypted Swap Setup ## Encrypted Swap Partition @@ -5635,7 +5625,7 @@ set_vars() { ## Zram Swap elif [[ "${swapmode}" == "3" ]]; then # Zram Swap Kernel Boot Options - zram_bootopts="zswap.enabled=0" + zram_bootopts="zswap.enabled=0 " ## No Swap elif [[ "${swapmode}" == "4" ]]; then # No Swap Kernel Boot Options @@ -5655,26 +5645,10 @@ set_vars() { elif [[ "${vendor}" == "Nvidia" ]]; then # Mkinitcpio Hooks (Encryption) mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf sd-vconsole block sd-encrypt filesystems fsck)" - # Preserve-Nvidia-Video-Memory after suspend/hibernate/resume - if [[ ${nvidia_suspend} == "y" ]]; then - # Mkinitcpio Modules (Encryption) [No Early Nvidia KMS] - mkinitcpio_mods="MODULES=(nvidia_modeset nvidia_uvm nvidia_drm ${fs_mod})" - # Nvidia Services - nvidia_services="nvidia-suspend nvidia-hibernate nvidia-resume" - if [[ ${fs} == "1" ]]; then - # Set Custom '/Temp' path - vga_bootopts="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 nvidia.NVreg_UsePageAttributeTable=1 nvidia.NVreg_PreserveVideoMemoryAllocations=1 nvidia.NVreg_TemporaryFilePath=/var/tmp " - else - # Set Default '/Temp' path - vga_bootopts="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 nvidia.NVreg_UsePageAttributeTable=1 nvidia.NVreg_PreserveVideoMemoryAllocations=1 " - fi - # No-Preserve-Nvidia-Video-Memory after suspend/hibernate/resume - else - # Mkinitcpio Modules (Encryption) [Early Nvidia KMS] - mkinitcpio_mods="MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm ${fs_mod})" - # Graphics Kernel Boot Options - vga_bootopts="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 nvidia.NVreg_UsePageAttributeTable=1 " - fi + # Mkinitcpio Modules (Encryption) [Early Nvidia KMS] + mkinitcpio_mods="MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm ${fs_mod})" + # Graphics Kernel Boot Options + vga_bootopts="nvidia.NVreg_UsePageAttributeTable=1 " # Amd elif [[ "${vendor}" == "AMD" ]]; then # Mkinitcpio Modules (Encryption) @@ -5697,7 +5671,7 @@ set_vars() { ## Configuration = 'No' elif [[ "${vgaconf}" == "n" ]]; then # Mkinitcpio Hooks (Encryption) - mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf kms sd-vconsole block sd-encrypt filesystems fsck)" + mkinitcpio_hooks="HOOKS=(systemd keyboard autodetect microcode modconf kms sd-vconsole block sd-encrypt filesystems fsck)" # Nvidia if [[ "${vendor}" == "Nvidia" ]]; then # Mkinitcpio Modules (Encryption) @@ -5718,7 +5692,7 @@ set_vars() { ## Zram Swap if [[ "${swapmode}" == "3" ]]; then # Zram Swap Kernel Boot Options - zram_bootopts="zswap.enabled=0" + zram_bootopts="zswap.enabled=0 " fi ### Graphics Setup ## Configuration = 'Yes' @@ -5733,26 +5707,10 @@ set_vars() { elif [[ "${vendor}" == "Nvidia" ]]; then # Mkinitcpio Hooks mkinitcpio_hooks="HOOKS=(systemd autodetect microcode modconf keyboard sd-vconsole block filesystems fsck)" - # Preserve-Nvidia-Video-Memory after suspend/hibernate/resume - if [[ ${nvidia_suspend} == "y" ]]; then - # Mkinitcpio Modules [No Early Nvidia KMS] - mkinitcpio_mods="MODULES=(nvidia_modeset nvidia_uvm nvidia_drm)" - # Nvidia Services - nvidia_services="nvidia-suspend nvidia-hibernate nvidia-resume" - if [[ ${fs} == "1" ]]; then - # Set Custom '/Temp' path - vga_bootopts="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 nvidia.NVreg_UsePageAttributeTable=1 nvidia.NVreg_PreserveVideoMemoryAllocations=1 nvidia.NVreg_TemporaryFilePath=/var/tmp " - else - # Set Default '/Temp' path - vga_bootopts="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 nvidia.NVreg_UsePageAttributeTable=1 nvidia.NVreg_PreserveVideoMemoryAllocations=1 " - fi - # NO Preserve-Nvidia-Video-Memory after suspend/hibernate/resume - else - # Mkinitcpio Modules [Early Nvidia KMS] - mkinitcpio_mods="MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)" - # Graphics Kernel Boot Options - vga_bootopts="nvidia_drm.modeset=1 nvidia_drm.fbdev=1 nvidia.NVreg_UsePageAttributeTable=1 " - fi + # Mkinitcpio Modules [Early Nvidia KMS] + mkinitcpio_mods="MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)" + # Graphics Kernel Boot Options + vga_bootopts="nvidia.NVreg_UsePageAttributeTable=1 " # Amd elif [[ "${vendor}" == "AMD" ]]; then # Mkinitcpio Modules @@ -5819,28 +5777,28 @@ ${magenta}###${nc}--------------------------------${magenta}[ ${bwhite}Chroot & if arch-chroot /mnt <<-DEEPIN > /dev/null 2>&1 ; then sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-deepin-greeter|g' /etc/lightdm/lightdm.conf || exit DEEPIN - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi elif [[ "${packages}" == "5" || "${packages}" == "8" || "${packages}" == "10" ]]; then stage_prompt="GTK Greeter" if arch-chroot /mnt <<-GTK > /dev/null 2>&1 ; then sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf || exit GTK - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi elif [[ "${packages}" == "6" ]]; then stage_prompt="Slick Greeter" if arch-chroot /mnt <<-SLICK > /dev/null 2>&1 ; then sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf || exit SLICK - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi fi fi @@ -5850,22 +5808,22 @@ SLICK if arch-chroot /mnt <<-BLUETOOTH > /dev/null 2>&1 ; then systemctl enable ${bluetooth} || exit BLUETOOTH - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi fi if [[ -n "${displaymanager}" ]]; then cnfg stage_prompt="Display Manager Service" - if arch-chroot /mnt <<-DM_SERVICE > /dev/null 2>&1 ; then + if arch-chroot /mnt <<-DMSERVICE > /dev/null 2>&1 ; then systemctl enable ${displaymanager} || exit -DM_SERVICE - stage_ok - else - stage_fail - fi +DMSERVICE + stage_ok + else + stage_fail + fi fi if [[ -n "${network}" ]]; then @@ -5874,19 +5832,19 @@ DM_SERVICE if arch-chroot /mnt <<-NETWORK > /dev/null 2>&1 ; then systemctl enable ${network} || exit NETWORK - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi fi - btldr_conf - trim_conf - vm_serv_conf - nvidia_serv_conf - zram_conf - nvidia_hook_conf - uki_conf + btldrcfg + trimcfg + vm_serv + zramcfg + nvidia_hook + mkinitcpio_preset + secboot_sign completion fi #-------------------------------------------------------------------------------------------------- @@ -5902,50 +5860,50 @@ NETWORK if arch-chroot /mnt <<-GTK > /dev/null 2>&1 ; then sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-gtk-greeter|g' /etc/lightdm/lightdm.conf || exit GTK - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi elif [[ "${greeternmbr}" == "2" ]]; then stage_prompt="Slick Greeter" if arch-chroot /mnt <<-SLICK > /dev/null 2>&1 ; then sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-slick-greeter|g' /etc/lightdm/lightdm.conf || exit SLICK - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi elif [[ "${greeternmbr}" == "3" ]]; then stage_prompt="Deepin Greeter" if arch-chroot /mnt <<-DEEPIN > /dev/null 2>&1 ; then sed -i 's|^#greeter-session=example-gtk-gnome|greeter-session=lightdm-deepin-greeter|g' /etc/lightdm/lightdm.conf || exit DEEPIN - stage_ok - else - stage_fail - fi + stage_ok + else + stage_fail + fi fi fi if [[ -n "${customservices}" ]]; then cnfg stage_prompt="Custom Service(s)" - if arch-chroot /mnt <<-CUSTOM_SERV > /dev/null 2>&1 ; then + if arch-chroot /mnt <<-CUSTOMSERV > /dev/null 2>&1 ; then systemctl enable ${customservices} || exit -CUSTOM_SERV - stage_ok - else - stage_fail - fi +CUSTOMSERV + stage_ok + else + stage_fail + fi fi - btldr_conf - trim_conf - vm_serv_conf - nvidia_serv_conf - zram_conf - nvidia_hook_conf - uki_conf + btldrcfg + trimcfg + vm_serv + zramcfg + nvidia_hook + mkinitcpio_preset + secboot_sign completion fi #-------------------------------------------------------------------------------------------------- @@ -5966,23 +5924,23 @@ CUSTOM_SERV NRG fi - if arch-chroot /mnt <<-OPTIMIZED_CONF > /dev/null 2>&1 ; then + if arch-chroot /mnt <<-OPTIMIZED > /dev/null 2>&1 ; then sed -i "/^#${SETLOCALE}/s/^#//" /etc/locale.gen || exit locale-gen || exit echo LANG=${SETLOCALE} > /etc/locale.conf || exit export LANG=${SETLOCALE} || exit echo KEYMAP=${SETKBD} > /etc/vconsole.conf || exit - sed -i "/^#Color/s/^#//" /etc/pacman.conf || exit + sed -i 's/^#Color/Color\nILoveCandy/' /etc/pacman.conf || exit update-pciids || exit - cat <<-MKINITCPIO_CONF > /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit + cat <<-MKINITCPIO > /etc/mkinitcpio.conf.d/mkinitcpiod.conf || exit ${mkinitcpio_mods} ${mkinitcpio_hooks} COMPRESSION="zstd" COMPRESSION_OPTIONS=(-c -T$(nproc) --auto-threads=logical -) MODULES_DECOMPRESS="yes" -MKINITCPIO_CONF +MKINITCPIO mkinitcpio -P || exit - cat <<-MAKEPKG_CONF > /etc/makepkg.conf.d/makepkgd.conf || exit + cat <<-MAKEPKG > /etc/makepkg.conf.d/makepkgd.conf || exit CFLAGS="-march=native -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection \ @@ -5993,7 +5951,7 @@ MKINITCPIO_CONF COMPRESSGZ=(pigz -c -f -n) COMPRESSBZ2=(pbzip2 -c -f) COMPRESSZST=(zstd -c -T0 --auto-threads=logical -) -MAKEPKG_CONF +MAKEPKG ln -sf /usr/share/zoneinfo/$(curl -s http://ip-api.com/line?fields=timezone) /etc/localtime || exit hwclock --systohc || exit echo ${HOSTNAME} > /etc/hostname || exit @@ -6002,7 +5960,7 @@ MAKEPKG_CONF ::1 localhost 127.0.1.1 ${HOSTNAME}.localdomain ${HOSTNAME} HOSTS - cat <<-SYSCTL_CONF > /etc/sysctl.d/99-sysctld.conf || exit + cat <<-SYSCTL > /etc/sysctl.d/99-sysctld.conf || exit net.core.netdev_max_backlog = 16384 net.core.somaxconn = 8192 net.core.rmem_default = 1048576 @@ -6032,15 +5990,16 @@ HOSTS net.ipv4.conf.all.rp_filter = 1 vm.vfs_cache_pressure = 50 vm.mmap_min_addr = 65536 + vm.max_map_count=1048576 kernel.printk = 0 0 0 0 ${perf_stream} -SYSCTL_CONF - cat <<-UDISKS2_CONF > /etc/udisks2/mount_options.conf || exit +SYSCTL + cat <<-UDISKS2 > /etc/udisks2/mount_options.conf || exit [defaults] ntfs:ntfs3_defaults=uid=1000,gid=1000,windows_names ntfs:ntfs3_allow=uid=1000,gid=1000,umask,dmask,fmask,iocharset,discard,nodiscard,sparse,nosparse,hidden,nohidden,sys_immutable,nosys_immutable,showmeta,noshowmeta,prealloc,noprealloc,hide_dot_files,nohide_dot_files,windows_names,nocase,case -UDISKS2_CONF - cat <<-POLKIT_CONF > /etc/polkit-1/rules.d/99-udisks2.rules || exit +UDISKS2 + cat <<-POLKIT > /etc/polkit-1/rules.d/99-udisks2.rules || exit // Original rules: https://github.com/coldfix/udiskie/wiki/Permissions // Changes: Added org.freedesktop.udisks2.filesystem-mount-system, as this is used by Dolphin. polkit.addRule(function(action, subject) { @@ -6070,48 +6029,51 @@ UDISKS2_CONF return permission[action.id]; } }); -POLKIT_CONF +POLKIT mkdir -p /etc/systemd/journald.conf.d > /dev/null 2>&1 || exit - cat <<-JOURNAL_CONF > /etc/systemd/journald.conf.d/00-journald.conf || exit + cat <<-JOURNAL > /etc/systemd/journald.conf.d/00-journald.conf || exit [Journal] SystemMaxUse=100M -JOURNAL_CONF +JOURNAL mkdir -p /etc/systemd/user.conf.d > /dev/null 2>&1 || exit - cat <<-USER_CONF > /etc/systemd/user.conf.d/00-userd.conf || exit + cat <<-USER > /etc/systemd/user.conf.d/00-userd.conf || exit [Manager] DefaultTimeoutStopSec=5s DefaultTimeoutAbortSec=5s -USER_CONF +USER sed -i 's|^hosts.*|hosts: mymachines mdns_minimal resolve [!UNAVAIL=return] files myhostname dns|g' /etc/nsswitch.conf || exit sed -i 's/ interface = [^ ]*/ interface = all/g' /etc/ipp-usb/ipp-usb.conf || exit sed -i "/# set linenumbers/"'s/^#//' /etc/nanorc || exit + sed -i "s/^# set minibar/set minibar/" /etc/nanorc || exit + sed -i "s/^# set mouse/set mouse/" /etc/nanorc || exit echo tcp_bbr | tee /etc/modules-load.d/modulesd.conf || exit - cat <<-SUPPLICANT_CONF > /etc/wpa_supplicant/wpa_supplicant.conf || exit + cat <<-SUPPLICANT > /etc/wpa_supplicant/wpa_supplicant.conf || exit country=${REGDOM} wps_cred_add_sae=1 pmf=2 -SUPPLICANT_CONF +SUPPLICANT echo root:${ROOTPASSWD2} | chpasswd || exit chsh -s /bin/zsh || exit useradd -m -G wheel,realtime -s /bin/zsh ${USERNAME} || exit echo ${USERNAME}:${USERPASSWD2} | chpasswd || exit - cat <<-SUDOERS_CONF > /etc/sudoers.d/sudoersd || exit + cat <<-SUDOERS > /etc/sudoers.d/sudoersd || exit Defaults pwfeedback Defaults editor=/usr/bin/nano %wheel ALL=(ALL) ALL -SUDOERS_CONF - visudo -c /etc/sudoers.d/sudoersd - systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd ${displaymanager} ${trim} ${vm_services} ${nvidia_services} || exit -OPTIMIZED_CONF - stage_ok - else +SUDOERS + visudo -c /etc/sudoers.d/sudoersd + systemctl enable avahi-daemon bluetooth cups ipp-usb NetworkManager rngd ${displaymanager} ${trim} ${vm_services} || exit +OPTIMIZED + stage_ok + else stage_fail - fi + fi - btldr_conf - zram_conf - nvidia_hook_conf - uki_conf + btldrcfg + zramcfg + nvidia_hook + mkinitcpio_preset + secboot_sign completion fi @@ -6124,85 +6086,9 @@ OPTIMIZED_CONF run_as="$(whoami)" tty="$(tty)" disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)" - LOCALESET="" - SETLOCALE="" - lcl_slct="" - USERNAME="" - kernelnmbr="" - fs="" - vgaconf="" - vga_setup="" - vendor1="" - vendor2="" - vendor3="" - vendor_slct="" - packages="" - efi_entr_del="" - wrlss_rgd="" - sanity="" - install="" - bootldr_pkgs="" - devel="" - REGDOM="" - vga_bootopts="" - btrfs_bootopts="" - trim="" - swapmode="" - homecrypt="" - greeter="" - revision="" - greeternmbr="" - cust_bootopts="" - bluetooth="" - vmpkgs="" - vm_services="" - perf_stream="" - displaymanager="" - wireless_reg="" - bootmode="" - trg="" - s="" - bootloader="" - vga_slct="" - nvidia_services="" - nvidia_suspend="" - autoroot="" - autoesp="" - autoxboot="" - autohome="" - autoswap="" - espsize="" - rootprt="" - espprt="" - xbootprt="" - homeprt="" - swapprt="" - smartpart="" - partok="" - use_manpreset="" - instl_drive="" - sgdsk_nmbr="" - part_mode="" - preset="" - capacity="" - cap_gib="" - rootsize="" - sgdrive="" - cgdrive="" - sep_home="" - presetpart="" - prcnt="" - roottype="" - stage_prompt="" - zram="" - zram_bootopts="" - xbootloader="" - multibooting="" - hypervisor="" - mkinitcpio_mods="" - ukify="" - slct_autoprt="" - + trg="" + vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" vga_setup="" vendor1="" vendor2="" vendor3="" vendor_slct="" packages="" efi_entr_del="" wrlss_rgd="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" vga_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" revision="" greeternmbr="" cust_bootopts="" bluetooth="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bootmode="" bootloader="" vga_slct="" espsize="" autoroot="" autoesp="" autoxboot="" autohome="" autoswap="" rootprt="" espprt="" xbootprt="" homeprt="" swapprt="" partok="" use_manpreset="" instl_drive="" sgdsk_nmbr="" part_mode="" preset="" capacity="" cap_gib="" rootsize="" sgdrive="" cgdrive="" smartpart="" presetpart="" prcnt="" roottype="" stage_prompt="" zram="" zram_bootopts="" xbootloader="" multibooting="" hypervisor="" mkinitcpio_mods="" uki="" ukify="" slct_autoprt="" cng_espmnt="" sep_home="" encr_swap_bootopts="") + export "${vars[@]}" clear first_check sleep 0.2