From 219b4f2a736d54ce9986d2160122e7f87485fd59 Mon Sep 17 00:00:00 2001 From: Jane Doe Date: Wed, 19 Mar 2025 21:19:25 +0200 Subject: [PATCH] Add: 'Desktop Setup': Support for selecting a Web Browser has been added Add: 'Desktop Setup': Offering Printer support has been added Add: 'Desktop Setup': Additional packages have been added to Desktop Setups where missing ('gvfs' 'pipewire-pulse' 'pavucontrol' 'cosmic-player' 'xdg-user-dirs') Change: Some variables & functions have been edited/renamed for clarity Change: 'set_vars' function has been greatly optimized Change: A few prompts have been edited for aesthetic purposes --- Amelia.sh | 544 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 298 insertions(+), 246 deletions(-) diff --git a/Amelia.sh b/Amelia.sh index 041bf70..9d8f834 100644 --- a/Amelia.sh +++ b/Amelia.sh @@ -2,7 +2,7 @@ # Amelia Installer # Source: https://gitlab.com/prism7/archery -# Version: 8.11.0 +# Version: 8.12.0 set -euo pipefail ################################################################################################### @@ -22,7 +22,6 @@ cyan="\e[36m" red="\e[31m" nc="\e[0m" - MAGENTABG() { echo -e "${magentabg} $1${nc}" ;} YELLOWBG() { echo -e "${yellowbg} $1${nc}" ;} YELLOWL() { echo -e "${yellowl} $1${nc}" ;} @@ -67,6 +66,13 @@ ${green}Packages to be installed${nc}: ${deskpkgs}" } +deskname() { + sleep 0.2 + YELLOW " + + ### ${desktopname} has been selected + " +} vm() { sleep 0.2 RED " @@ -242,7 +248,7 @@ amd() { NC " - * ${vgacard} + * ${gfxcard} " } @@ -254,7 +260,7 @@ intel() { NC " - * ${vgacard} + * ${gfxcard} " } @@ -266,7 +272,7 @@ nvidia() { NC " - * ${vgacard} + * ${gfxcard} " } @@ -478,7 +484,7 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Machi if [[ "${hypervisor}" != "none" ]]; then vm vendor="Virtual Machine" - vgaconf="n" + gfxconf="n" fi if [[ "${CPU}" == *"GenuineIntel"* ]]; then @@ -511,6 +517,7 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Machi fi YELLOW " + > Disable ${nc}Watchdogs ${yellow}in the installed system ? [Y/n] @@ -931,15 +938,15 @@ Enter a number: " 1) until slct_krnl; do : ; done until ask_sign; do : ; done - until ask_bootldr; do : ; done + until slct_bootldr; do : ; done until slct_espmnt; do : ; done return 1 ;; 2) - until ask_fs; do : ; done - until ask_swap; do : ; done + until slct_fs; do : ; done + until slct_swap; do : ; done return 1 ;; 3) - until dtct_vga; do : ; done + until dtct_gfx; do : ; done return 1 ;; 4) until slct_dsktp; do : ; done @@ -1100,7 +1107,7 @@ Enter [Y/n]: " ok } ################################################################################################### -ask_bootldr() { +slct_bootldr() { local prompt="Bootloader Selection" sleep 0.2 @@ -1207,7 +1214,7 @@ Enter a number: " fi } ################################################################################################### -ask_fs() { +slct_fs() { local prompt="Filesystem Setup" sleep 0.2 @@ -1315,7 +1322,7 @@ Enter a name: " ok } ################################################################################################### -ask_swap() { +slct_swap() { local prompt="Swap Setup" sleep 0.2 @@ -1454,7 +1461,7 @@ Enter Swap size ${bwhite}(in GB)${blue}: " fi } ################################################################################################### -dtct_vga() { +dtct_gfx() { if [[ "${hypervisor}" != "none" ]]; then vm @@ -1471,24 +1478,24 @@ dtct_vga() { ${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')" + gfxcount="$(lspci | grep -E -c 'VGA|Display|3D')" + gfxcard="$(lspci | grep -E 'VGA|Display|3D' | sed 's/^.*: //g')" intelcount="$(lspci | grep -E 'VGA|Display|3D' | grep -E -c 'Intel Corporation')" intelcards="$(lspci | grep -E 'VGA|Display|3D' | grep -E 'Intel Corporation'| sed 's/.*Corporation //g' | cat --number | sed 's/.[0-9]//')" amdcount="$(lspci | grep -E 'VGA|Display|3D' | grep -E -c 'Advanced Micro Devices')" amdcards="$(lspci | grep -E 'VGA|Display|3D' | grep -E 'Advanced Micro Devices' | sed 's/.*\[AMD\/ATI\] //g' | cat --number | sed 's/.[0-9]//')" nvidiacount="$(lspci | grep -E 'VGA|Display|3D' | grep -E -c 'NVIDIA Corporation')" nvidiacards="$(lspci | grep -E 'VGA|Display|3D' | grep -E 'NVIDIA Corporation'| sed 's/.*Corporation //g' | cat --number | sed 's/.[0-9]//')" - vga_slct="yes" + gfx_slct="yes" - if [[ "${vgacount}" == "1" ]]; then - dtct_single_vga + if [[ "${gfxcount}" == "1" ]]; then + dtct_single_gfx else - dtct_multi_vga + dtct_multi_gfx fi } ################################################################################################### -dtct_single_vga() { +dtct_single_gfx() { if [[ "${intelcount}" -eq "1" ]]; then vendor="Intel" @@ -1527,14 +1534,14 @@ dtct_single_vga() { Enter [Y/n]: " read -r -p " -==> " vgaconf +==> " gfxconf - vgaconf="${vgaconf:-y}" - vgaconf="${vgaconf,,}" + gfxconf="${gfxconf:-y}" + gfxconf="${gfxconf,,}" - if [[ "${vgaconf}" == "y" ]]; then - vga_conf - elif [[ "${vgaconf}" == "n" ]]; then + if [[ "${gfxconf}" == "y" ]]; then + gfx_conf + elif [[ "${gfxconf}" == "n" ]]; then local prompt="Graphics Setup" skip ok @@ -1544,18 +1551,18 @@ Enter [Y/n]: " fi } ################################################################################################### -dtct_multi_vga() { +dtct_multi_gfx() { - if [[ "${vgacount}" == "2" ]]; then - vga_setup="Dual" - elif [[ "${vgacount}" == "3" ]]; then - vga_setup="Triple" + if [[ "${gfxcount}" == "2" ]]; then + gfx_setup="Dual" + elif [[ "${gfxcount}" == "3" ]]; then + gfx_setup="Triple" fi sleep 0.2 YELLOW " - ### ${vga_setup} Graphics setup detected, consisting of: " + ### ${gfx_setup} Graphics setup detected, consisting of: " NC " ____________________________________________________________________" @@ -1707,33 +1714,33 @@ Enter a number: " fi if [[ "${vendor}" == "Intel" || "${vendor}" == "AMD" ]]; then sourcetype="Open-source" - vgaconf="y" - vga_conf + gfxconf="y" + gfx_conf elif [[ "${vendor}" == "Nvidia" ]]; then sourcetype="Proprietary" - vgaconf="y" - vga_conf + gfxconf="y" + gfx_conf elif [[ "${vendors}" == "Intel & AMD" ]]; then sourcetype="Open-source" - vgaconf="y" - vga_conf + gfxconf="y" + gfx_conf elif [[ "${vendors}" == "Intel & Nvidia" ]]; then sourcetype="Open-source & Proprietary" - vgaconf="y" - vga_conf + gfxconf="y" + gfx_conf elif [[ "${vendors}" == "AMD & Nvidia" ]]; then sourcetype="Open-source & Proprietary" - vgaconf="y" - vga_conf + gfxconf="y" + gfx_conf elif [[ "${vendor}" == "none" ]]; then local prompt="Graphics Setup" - vgaconf="n" + gfxconf="n" skip ok fi } ################################################################################################### -vga_conf() { +gfx_conf() { if [[ "${vendor}" != "none" ]]; then sleep 0.2 @@ -1885,7 +1892,7 @@ gfxpkgs_set() { gfxpkgs=() # Configure Graphics = yes - if [[ "${vgaconf}" == "y" ]]; then + if [[ "${gfxconf}" == "y" ]]; then # Intel Graphics if [[ "${vendor}" == "Intel" || "${vendors}" =~ "Intel" ]]; then # /etc/sysctl.d/99-sysctld.conf @@ -1944,7 +1951,7 @@ gfxpkgs_set() { fi fi # Configure Graphics = no - elif [[ "${vgaconf}" == "n" ]]; then + elif [[ "${gfxconf}" == "n" ]]; then # Nvidia Graphics if [[ "${vendor}" == "Nvidia" || "${vendors}" =~ "Nvidia" ]]; then gfxpkgs+=(libva-mesa-driver vulkan-nouveau) @@ -2002,17 +2009,23 @@ Enter a number: " case "${packages}" in 1) - desktopname="Plasma" ;; + desktopname="Plasma" + deskname ;; 2) - desktopname="Minimal Plasma (System Optimized)" ;; + desktopname="Minimal Plasma (System Optimized)" + deskname ;; 3) - desktopname="Gnome" ;; + desktopname="Gnome" + deskname ;; 4) - desktopname="Minimal Gnome (System Optimized)" ;; + desktopname="Minimal Gnome (System Optimized)" + deskname ;; 5) - desktopname="Xfce" ;; + desktopname="Xfce" + deskname ;; 6) desktopname="Cinnamon" + deskname sleep 0.2 YELLOW " @@ -2048,9 +2061,11 @@ Enter [Y/n]: " esac ;; 7) - desktopname="Deepin" ;; + desktopname="Deepin" + deskname ;; 8) desktopname="Budgie" + deskname sleep 0.2 YELLOW " @@ -2086,17 +2101,21 @@ Enter [Y/n]: " esac ;; 9) - desktopname="Lxqt" ;; + desktopname="Lxqt" + deskname ;; 10) - desktopname="Mate" ;; + desktopname="Mate" + deskname ;; 11) - desktopname="Basic Arch Linux" ;; + desktopname="Basic Arch Linux" + deskname ;; 12) desktopname="Custom Arch Linux" until cust_sys; do :; done return 0 ;; 13) - desktopname="Cosmic" ;; + desktopname="Cosmic" + deskname ;; "") choice return 1 ;; @@ -2104,13 +2123,11 @@ Enter [Y/n]: " invalid return 1 ;; esac + sleep 0.2 YELLOW " - ### ${desktopname} has been selected - - ### NOTE: 'base' meta-package does not include the tools needed for building packages > Install ${nc}'base-devel' ${yellow}meta-package ? [Y/n] " @@ -2126,11 +2143,9 @@ Enter [Y/n]: " case "${dev}" in y) + local prompt="base-devel" devel="base-devel" - sleep 0.2 - NC " - -==> [${green}base-devel OK${nc}] " ;; + ok ;; n) skip ;; *) @@ -2142,9 +2157,77 @@ Enter [Y/n]: " YELLOW " - ### NOTE: Custom Kernel Parameters can be set at boot time + ### Web Browser support is available - > Enter your own Kernel Parameters ? [y/N] " + > Select Web Browser to install " + NC " + + [1] Firefox + + [2] Chromium + + [3] Vivaldi " + BLUE " + + +Enter a number ${bwhite}(empty to skip)${blue}: " + read -r -p " +==> " web + + local prompt="Web Browser" + case "${web}" in + 1) + web_browser="firefox" + ok ;; + 2) + web_browser="chromium" + ok ;; + 3) + web_browser="vivaldi" + ok ;; + "") + skip ;; + *) + invalid + return 1 ;; + esac + + sleep 0.2 + YELLOW " + + + ### Printing support is available + + > Enable Printing support ? [Y/n] " + BLUE " + + +Enter [Y/n]: " + read -r -p " +==> " printer + + printer="${printer:-y}" + printer="${printer,,}" + + case "${printer}" in + y) + local prompt="Printer Support" + print_pkgs="cups-pdf cups-browsed ipp-usb xdg-utils colord" + ok ;; + n) + skip ;; + *) + invalid + return 1 ;; + esac + + sleep 0.2 + YELLOW " + + + ### Custom Kernel Parameters can be set at boot time + + > Enter your own additional Kernel Parameters ? [y/N] " BLUE " @@ -2155,15 +2238,16 @@ Enter [y/N]: " ask_param="${ask_param:-n}" ask_param="${ask_param,,}" - case "${ask_param}" in - y) - add_prmtrs ;; - n) - skip ;; - *) - invalid - return 1 ;; - esac + case "${ask_param}" in + y) + add_prmtrs ;; + n) + skip ;; + *) + invalid + return 1 ;; + esac + local prompt="Desktop Setup" ok } ################################################################################################### @@ -2735,12 +2819,15 @@ ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automati sleep 0.2 NC " ----------------------------------------------------------- - ${cyan}>> ${nc}Apply ${yellowl}'Smart Partitioning' ${nc}on disk ${bwhite}'${instl_drive}'${nc} ? ${cyan}[y/n]${nc} + ${cyan}>> ${nc}Apply ${yellowl}'Smart Partitioning' ${nc}on disk ${bwhite}'${instl_drive}'${nc} ? ${cyan}[Y/n]${nc} ----------------------------------------------------------- " read -r -p " ==> " smartpart + echo + smartpart="${smartpart:-y}" + smartpart="${smartpart,,}" if [[ "${smartpart}" == "y" ]]; then sgdsk_nmbr="${instl_dsk_nmbr}" @@ -4023,21 +4110,21 @@ instl() { completion_err until slct_krnl; do : ; done until ask_sign; do : ; done - until ask_bootldr; do : ; done + until slct_bootldr; do : ; done until slct_espmnt; do : ; done fi if [[ -z "${fs}" ]]; then local stage_prompt="Filesystem & Swap Setup" completion_err - until ask_fs; do : ; done - until ask_swap; do : ; done + until slct_fs; do : ; done + until slct_swap; do : ; done fi - if [[ "${hypervisor}" == "none" && "${vga_slct}" != "yes" ]]; then + if [[ "${hypervisor}" == "none" && "${gfx_slct}" != "yes" ]]; then local stage_prompt="Graphics Setup" completion_err - until dtct_vga; do : ; done + until dtct_gfx; do : ; done fi if [[ -z "${packages}" ]]; then @@ -5001,23 +5088,22 @@ ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm In revise() { revision="yes" - reset=(xbootloader="" vgaconf="" vendor_slct="" vendor="" packages="" custompkgs="" customservices="" cust_bootopts="" REGDOM="" preset="" autoroot="" autoxboot="" autohome="" autoswap="" vendors="" lowlat="" vendors="" nogsp="") + reset=(xbootloader="" gfxconf="" vendor_slct="" vendor="" packages="" custompkgs="" customservices="" cust_bootopts="" REGDOM="" preset="" autoroot="" autoxboot="" autohome="" autoswap="" vendors="" lowlat="" vendors="" nogsp="") export "${reset[@]}" gfxpkgs=() if [[ "${hypervisor}" != "none" ]]; then - vm vendor="Virtual Machine" - vgaconf="n" + gfxconf="n" fi until slct_krnl; do : ; done until ask_sign; do : ; done - until ask_bootldr; do : ; done + until slct_bootldr; do : ; done until slct_espmnt; do : ; done - until ask_fs; do : ; done - until ask_swap; do : ; done + until slct_fs; do : ; done + until slct_swap; do : ; done if [[ "${hypervisor}" == "none" ]]; then - until dtct_vga; do : ; done + until dtct_gfx; do : ; done fi until slct_dsktp; do : ; done if [[ "${hypervisor}" == "none" ]]; then @@ -5443,6 +5529,12 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs if [[ -n "${wireless_reg}" ]]; then basepkgs+=("${wireless_reg}") fi + if [[ -n "${print_pkgs}" ]]; then + basepkgs+=("${print_pkgs}") + fi + if [[ -n "${web_browser}" ]]; then + basepkgs+=("${web_browser}") + fi case "${packages}" in @@ -5465,18 +5557,18 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs deskpkgs="${basepkgs[*]} dconf-editor evince file-roller gdm gnome-calculator gnome-clocks gnome-connections gnome-console gnome-control-center gnome-disk-utility gnome-keyring gnome-menus gnome-remote-desktop gnome-session gnome-shell-extensions gnome-system-monitor gnome-text-editor gnome-tweaks gnome-user-share 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 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 nano-syntax-highlighting nss-mdns ntfs-3g p7zip pacman-contrib pbzip2 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: - deskpkgs="${basepkgs[*]} xfce4 xdg-user-dirs lightdm-gtk-greeter network-manager-applet" + deskpkgs="${basepkgs[*]} xfce4 gvfs lightdm-gtk-greeter network-manager-applet pavucontrol pipewire-pulse xfce4-screensaver xdg-user-dirs" displaymanager="lightdm" network="NetworkManager" ;; 6) # Cinnamon Desktop: - deskpkgs="${basepkgs[*]} cinnamon blueberry lightdm-slick-greeter system-config-printer gnome-keyring xdg-user-dirs ${terminal}" + deskpkgs="${basepkgs[*]} cinnamon blueberry gnome-keyring gvfs lightdm-slick-greeter system-config-printer xdg-user-dirs ${terminal}" displaymanager="lightdm" bluetooth="bluetooth" network="NetworkManager" ;; 7) # Deepin Desktop: - deskpkgs="${basepkgs[*]} deepin deepin-terminal deepin-kwin networkmanager" + deskpkgs="${basepkgs[*]} deepin deepin-kwin deepin-terminal" displaymanager="lightdm" network="NetworkManager" ;; @@ -5486,12 +5578,12 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs network="NetworkManager" ;; 9) # Lxqt Desktop: - deskpkgs="${basepkgs[*]} lxqt lxqt-wayland-session breeze-icons network-manager-applet sddm xscreensaver" + deskpkgs="${basepkgs[*]} lxqt breeze-icons gvfs network-manager-applet sddm xscreensaver" displaymanager="sddm" network="NetworkManager" ;; 10) # Mate Desktop: - deskpkgs="${basepkgs[*]} mate mate-terminal mate-media blueman network-manager-applet mate-power-manager system-config-printer lightdm-gtk-greeter xdg-user-dirs" + deskpkgs="${basepkgs[*]} mate mate-terminal mate-media blueman network-manager-applet mate-power-manager pipewire-pulse system-config-printer lightdm-gtk-greeter xdg-user-dirs" displaymanager="lightdm" bluetooth="bluetooth" network="NetworkManager" ;; @@ -5526,10 +5618,16 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs if [[ -n "${wireless_reg}" ]]; then custarray+=("${wireless_reg}") fi + if [[ -n "${print_pkgs}" ]]; then + custarray+=("${print_pkgs}") + fi + if [[ -n "${web_browser}" ]]; then + custarray+=("${web_browser}") + fi deskpkgs="${custarray[*]}" ;; 13) # Cosmic Desktop: - deskpkgs="${basepkgs[*]} cosmic networkmanager" + deskpkgs="${basepkgs[*]} cosmic cosmic-player networkmanager pipewire-pulse xdg-user-dirs" displaymanager="cosmic-greeter" network="NetworkManager" ;; esac @@ -5739,7 +5837,7 @@ GRUB_BTRFSD fi fi - if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then + if [[ "${gfxconf}" == "y" && "${vendor}" == "Nvidia" ]]; then local stage_prompt="Grub/Nvidia Configuration" if arch-chroot /mnt <<-NVGRUB > /dev/null 2>&1 2> amelia_log.txt ; then sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub || exit @@ -5811,7 +5909,7 @@ ZRAMCONF ################################################################################################### nvidia_hook() { - if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]] || [[ "${vgaconf}" == "y" && "${vendors}" =~ "Nvidia" ]]; then + if [[ "${gfxconf}" == "y" && "${vendor}" == "Nvidia" ]] || [[ "${gfxconf}" == "y" && "${vendors}" =~ "Nvidia" ]]; then if [[ "${nvname}" == "nvidia-open" ]] || [[ "${nvname}" == "nvidia" ]] || [[ "${nvname}" == "nvidia-lts" ]]; then local stage_prompt="Nvidia Hook Creation" if arch-chroot /mnt <<-NVIDIAHOOK > /dev/null 2>&1 2> amelia_log.txt ; then @@ -5974,6 +6072,17 @@ SYSTEMD_OOMD stage_fail fi fi + + if [[ "${printer}" == "y" ]]; then + local stage_prompt="Print Services Activation" + if arch-chroot /mnt <<-PRINT_CONF > /dev/null 2>&1 2> amelia_log.txt ; then + systemctl enable cups.socket cups-browsed || exit +PRINT_CONF + stage_ok + else + stage_fail + fi + fi } ################################################################################################### secboot_sign() { @@ -6024,23 +6133,39 @@ SECSIGN ################################################################################################### set_vars() { - #### Encryption = yes + # Main Kernel Parameters + boot_opts=() + # Graphics Kernel Parameters + gfx_bootopts=() + # Mkinitcpio Modules + MODULES=() + # Mkinitcpio Hooks + HOOKS=() + # Zram Swap + if [[ "${swapmode}" == "3" ]]; then + # Zram Swap Kernel Parameters + zram_bootopts="zswap.enabled=0" + fi +#-------------------------------------------------------------------------------------------------- + # ENCRYPTION = 'YES' if [[ "${encrypt}" == "yes" ]]; then - ### Encrypted Root Device + # Mkinitcpio Modules (Encryption) + MODULES+=("${fs_mod}") + # Encrypted Root Device encr_root_dev="/dev/mapper/${ENCROOT}" - ### Encrypted Root Options + # Encrypted Root Options encr_root_opts="rd.luks.name=$(blkid -s UUID -o value "${root_dev}")=${ENCROOT}" - ### Encryption_Kernel Parameters + # Encryption Kernel Parameters encr_root_bootopts="${encr_root_opts} root=${encr_root_dev}" -#--------------------------------------------------------------------------------------------------------- - ### Swap Setup (Encryption) - ## Encrypted Swap Partition + + # SWAP SETUP (Encryption) + # Encrypted Swap Partition if [[ "${swapmode}" == "1" ]]; then # Encrypted Swap Partition Options encr_swap_opts="rd.luks.name=$(blkid -s UUID -o value "${swap_dev}")=swap" - # Encrypted Swap Partition Kernel Parameters + # Encrypted Swap Kernel Parameters encr_swap_bootopts="resume=/dev/mapper/swap ${encr_swap_opts}" - ## Encrypted Swapfile + # Encrypted Swapfile elif [[ "${swapmode}" == "2" ]]; then # Ext4 Offset calculation if [[ "${fs}" == "1" ]]; then @@ -6049,171 +6174,98 @@ set_vars() { elif [[ "${fs}" == "2" ]]; then offst="$(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)" fi - # Encrypted Swapfile Kernel Parameters + # Encrypted Swap Kernel Parameters encr_swap_bootopts="resume=${encr_root_dev} resume_offset=${offst}" - ## Zram Swap - elif [[ "${swapmode}" == "3" ]]; then - # Zram Swap Kernel Parameters - zram_bootopts="zswap.enabled=0" fi -#--------------------------------------------------------------------------------------------------------- - ### Graphics Setup (Encryption) - ## Mkinitcpio Modules (Encryption) - MODULES=("${fs_mod}") - ## Mkinitcpio Hooks (Encryption) - HOOKS=() - ## Graphics Kernel Parameters - vga_bootopts=() - # Nvidia Only + # HOOKS SETUP (Encryption) + # Nvidia Only Vendor if [[ "${vendor}" == "Nvidia" ]]; then HOOKS+=(systemd keyboard autodetect microcode modconf sd-vconsole block sd-encrypt filesystems fsck) - # Other Vendors/Multi-Vendors + # Other Vendors / Multi-Vendors else HOOKS+=(systemd keyboard autodetect microcode modconf kms sd-vconsole block sd-encrypt filesystems fsck) fi - ## Configuration = 'Yes' - if [[ "${vgaconf}" == "y" ]]; then - # Nvidia - if [[ "${vendor}" == "Nvidia" || "${vendors}" =~ "Nvidia" ]]; then - MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm) - vga_bootopts+=(nvidia.NVreg_UsePageAttributeTable=1) - - # Disable GSP Firmware - if [[ "${nogsp}" == "y" ]]; then - vga_bootopts+=(nvidia.NVreg_EnableGpuFirmware=0) - fi - - # Enable Experimental Low Latency Interrupts - if [[ "${lowlat}" == "y" ]]; then - vga_bootopts+=(nvidia.NVreg_RegistryDwords=RMIntrLockingMode=1) - fi - fi - - # AMD - if [[ "${vendor}" == "AMD" || "${vendors}" =~ "AMD" ]]; then - if [[ -n "${islands}" ]]; then - MODULES+=(amdgpu) - fi - # 'Southern Islands' support - if [[ "${islands}" == "1" ]]; then - vga_bootopts+=(amdgpu.dc=1 radeon.si_support=0 amdgpu.si_support=1) - # 'Sea Islands' support - elif [[ "${islands}" == "2" ]]; then - vga_bootopts+=(amdgpu.dc=1 radeon.cik_support=0 amdgpu.cik_support=1) - fi - fi - fi - #### Main Mkinitcpio Modules (Encryption) - mkinitcpio_mods="MODULES=(${MODULES[*]})" - #### Main Mkinitcpio Hooks (Encryption) - mkinitcpio_hooks="HOOKS=(${HOOKS[*]})" - #### Main Kernel Parameters (Encryption) - boot_opts=("${encr_root_bootopts}") - + # MAIN KERNEL PARAMETERS (Encryption) + # Encrypted Root Kernel Parameters + boot_opts+=("${encr_root_bootopts}") + # Encrypted Swap Kernel Parameters if [[ -n "${encr_swap_bootopts}" ]]; then boot_opts+=("${encr_swap_bootopts}") fi - if [[ "${kill_watchdog}" == "y" ]]; then - boot_opts+=(nowatchdog) - fi - if [[ -n "${vga_bootopts[*]}" ]]; then - boot_opts+=("${vga_bootopts[*]}") - fi - if [[ -n "${cust_bootopts}" ]]; then - boot_opts+=("${cust_bootopts}") - fi - if [[ -n "${btrfs_bootopts}" ]]; then - boot_opts+=("${btrfs_bootopts}") - fi - if [[ -n "${zram_bootopts}" ]]; then - boot_opts+=("${zram_bootopts}") - fi -#------------------------------------------------------------------------------------------------------------- - #### No Encryption + + # ENCRYPTION = 'NO' elif [[ "${encrypt}" == "no" ]]; then - - ### Swap Setup - ## Zram Swap - if [[ "${swapmode}" == "3" ]]; then - # Zram Swap Kernel Parameters - zram_bootopts="zswap.enabled=0" - fi -#--------------------------------------------------------------------------------------------------------- - ### Graphics Setup - ## Mkinitcpio Modules - MODULES=() - ## Mkinitcpio Hooks - HOOKS=() - ## Graphics Kernel Parameters - vga_bootopts=() - - # Nvidia Only + # HOOKS SETUP + # Nvidia Only Vendor if [[ "${vendor}" == "Nvidia" ]]; then HOOKS+=(systemd autodetect microcode modconf keyboard sd-vconsole block filesystems fsck) - # Other Vendors/Multi-Vendors + # Other Vendors / Multi-Vendors else HOOKS+=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck) fi - ## Configuration = 'Yes' - if [[ "${vgaconf}" == "y" ]]; then - # Nvidia - if [[ "${vendor}" == "Nvidia" || "${vendors}" =~ "Nvidia" ]]; then - MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm) - vga_bootopts+=(nvidia.NVreg_UsePageAttributeTable=1) - - # Disable GSP Firmware - if [[ "${nogsp}" == "y" ]]; then - vga_bootopts+=(nvidia.NVreg_EnableGpuFirmware=0) - fi - - # Enable Experimental Low Latency Interrupts - if [[ "${lowlat}" == "y" ]]; then - vga_bootopts+=(nvidia.NVreg_RegistryDwords=RMIntrLockingMode=1) - fi - fi - - # AMD - if [[ "${vendor}" == "AMD" || "${vendors}" =~ "AMD" ]]; then - if [[ -n "${islands}" ]]; then - MODULES+=(amdgpu) - fi - # 'Southern Islands' support - if [[ "${islands}" == "1" ]]; then - vga_bootopts+=(amdgpu.dc=1 radeon.si_support=0 amdgpu.si_support=1) - # 'Sea Islands' support - elif [[ "${islands}" == "2" ]]; then - vga_bootopts+=(amdgpu.dc=1 radeon.cik_support=0 amdgpu.cik_support=1) - fi - fi - fi - #### Main Mkinitcpio Modules - mkinitcpio_mods="MODULES=(${MODULES[*]})" - #### Main Mkinitcpio Hooks - mkinitcpio_hooks="HOOKS=(${HOOKS[*]})" - #### Main Kernel Parameters - boot_opts=() + # MAIN KERNEL PARAMETERS if [[ "${autoroot}" == "y" ]]; then boot_opts+=("${multiroot_bootopts}") fi - if [[ "${kill_watchdog}" == "y" ]]; then - boot_opts+=(nowatchdog) + fi +#-------------------------------------------------------------------------------------------------- + # GFX CONFIGURATION = 'YES' + if [[ "${gfxconf}" == "y" ]]; then + # Nvidia + if [[ "${vendor}" == "Nvidia" || "${vendors}" =~ "Nvidia" ]]; then + MODULES+=(nvidia nvidia_modeset nvidia_uvm nvidia_drm) + gfx_bootopts+=(nvidia.NVreg_UsePageAttributeTable=1) + + # Disable GSP Firmware + if [[ "${nogsp}" == "y" ]]; then + gfx_bootopts+=(nvidia.NVreg_EnableGpuFirmware=0) + fi + + # Enable Experimental Low Latency Interrupts + if [[ "${lowlat}" == "y" ]]; then + gfx_bootopts+=(nvidia.NVreg_RegistryDwords=RMIntrLockingMode=1) + fi fi - if [[ -n "${vga_bootopts[*]}" ]]; then - boot_opts+=("${vga_bootopts[*]}") - fi - if [[ -n "${cust_bootopts}" ]]; then - boot_opts+=("${cust_bootopts}") - fi - if [[ -n "${btrfs_bootopts}" ]]; then - boot_opts+=("${btrfs_bootopts}") - fi - if [[ -n "${zram_bootopts}" ]]; then - boot_opts+=("${zram_bootopts}") + + # AMD + if [[ "${vendor}" == "AMD" || "${vendors}" =~ "AMD" ]]; then + if [[ -n "${islands}" ]]; then + MODULES+=(amdgpu) + fi + # 'Southern Islands' support + if [[ "${islands}" == "1" ]]; then + gfx_bootopts+=(amdgpu.dc=1 radeon.si_support=0 amdgpu.si_support=1) + # 'Sea Islands' support + elif [[ "${islands}" == "2" ]]; then + gfx_bootopts+=(amdgpu.dc=1 radeon.cik_support=0 amdgpu.cik_support=1) + fi fi fi +#-------------------------------------------------------------------------------------------------- + # MAIN KERNEL PARAMETERS + if [[ -n "${gfx_bootopts[*]}" ]]; then + boot_opts+=("${gfx_bootopts[*]}") + fi + if [[ "${kill_watchdog}" == "y" ]]; then + boot_opts+=(nowatchdog) + fi + if [[ -n "${cust_bootopts}" ]]; then + boot_opts+=("${cust_bootopts}") + fi + if [[ -n "${btrfs_bootopts}" ]]; then + boot_opts+=("${btrfs_bootopts}") + fi + if [[ -n "${zram_bootopts}" ]]; then + boot_opts+=("${zram_bootopts}") + fi + + # MAIN MKINITCPIO MODULES + mkinitcpio_mods="MODULES=(${MODULES[*]})" + # MAIN MKINITCPIO HOOKS + mkinitcpio_hooks="HOOKS=(${HOOKS[*]})" } ################################################################################################### chroot_conf() { @@ -6544,7 +6596,7 @@ OPTIMIZED tty="$(tty)" disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)" trg="" - vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" vgacount="" vgacard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" vgaconf="" vga_conf="" vga_setup="" vendor="" 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="" bitness="" 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="" uefimode="" luks_encrypt="" nrg_plc="" multilib="" nvname="" nogsp="" luks_root="" luks_swap="" luks_home="" installation="" kill_watchdog="" oomd="" setrescue="" lowlat="" vendors="") + vars=(LOCALESET="" SETLOCALE="" lcl_slct="" USERNAME="" kernelnmbr="" fs="" gfxcount="" gfxcard="" intelcount="" intelcards="" nvidiacount="" nvidiacards="" amdcount="" amdcards="" gfxconf="" gfx_conf="" gfx_setup="" vendor="" vendor1="" vendor2="" vendor3="" vendor_slct="" packages="" efi_entr_del="" wrlss_rgd="" sanity="" install="" bootldr_pkgs="" devel="" REGDOM="" gfx_bootopts="" btrfs_bootopts="" trim="" swapmode="" homecrypt="" greeter="" revision="" greeternmbr="" cust_bootopts="" bluetooth="" vmpkgs="" vm_services="" perf_stream="" displaymanager="" wireless_reg="" bitness="" bootloader="" gfx_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="" uefimode="" luks_encrypt="" nrg_plc="" multilib="" nvname="" nogsp="" luks_root="" luks_swap="" luks_home="" installation="" kill_watchdog="" oomd="" setrescue="" lowlat="" vendors="" printer="" print_pkgs="" web="" web_browser="") export "${vars[@]}" clear first_check