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
This commit is contained in:
Jane Doe
2025-03-19 21:19:25 +02:00
parent f436b609e1
commit 219b4f2a73
+298 -246
View File
@@ -2,7 +2,7 @@
# Amelia Installer # Amelia Installer
# Source: https://gitlab.com/prism7/archery # Source: https://gitlab.com/prism7/archery
# Version: 8.11.0 # Version: 8.12.0
set -euo pipefail set -euo pipefail
################################################################################################### ###################################################################################################
@@ -22,7 +22,6 @@
cyan="\e[36m" cyan="\e[36m"
red="\e[31m" red="\e[31m"
nc="\e[0m" nc="\e[0m"
MAGENTABG() { echo -e "${magentabg} $1${nc}" ;} MAGENTABG() { echo -e "${magentabg} $1${nc}" ;}
YELLOWBG() { echo -e "${yellowbg} $1${nc}" ;} YELLOWBG() { echo -e "${yellowbg} $1${nc}" ;}
YELLOWL() { echo -e "${yellowl} $1${nc}" ;} YELLOWL() { echo -e "${yellowl} $1${nc}" ;}
@@ -67,6 +66,13 @@ ${green}Packages to be installed${nc}:
${deskpkgs}" ${deskpkgs}"
} }
deskname() {
sleep 0.2
YELLOW "
### ${desktopname} has been selected
"
}
vm() { vm() {
sleep 0.2 sleep 0.2
RED " RED "
@@ -242,7 +248,7 @@ amd() {
NC " NC "
* ${vgacard} * ${gfxcard}
" "
} }
@@ -254,7 +260,7 @@ intel() {
NC " NC "
* ${vgacard} * ${gfxcard}
" "
} }
@@ -266,7 +272,7 @@ nvidia() {
NC " NC "
* ${vgacard} * ${gfxcard}
" "
} }
@@ -478,7 +484,7 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Machi
if [[ "${hypervisor}" != "none" ]]; then if [[ "${hypervisor}" != "none" ]]; then
vm vm
vendor="Virtual Machine" vendor="Virtual Machine"
vgaconf="n" gfxconf="n"
fi fi
if [[ "${CPU}" == *"GenuineIntel"* ]]; then if [[ "${CPU}" == *"GenuineIntel"* ]]; then
@@ -511,6 +517,7 @@ ${magenta}###${nc}------------------------------------${magenta}[ ${bwhite}Machi
fi fi
YELLOW " YELLOW "
> Disable ${nc}Watchdogs ${yellow}in the installed system ? [Y/n] > Disable ${nc}Watchdogs ${yellow}in the installed system ? [Y/n]
@@ -931,15 +938,15 @@ Enter a number: "
1) 1)
until slct_krnl; do : ; done until slct_krnl; do : ; done
until ask_sign; do : ; done until ask_sign; do : ; done
until ask_bootldr; do : ; done until slct_bootldr; do : ; done
until slct_espmnt; do : ; done until slct_espmnt; do : ; done
return 1 ;; return 1 ;;
2) 2)
until ask_fs; do : ; done until slct_fs; do : ; done
until ask_swap; do : ; done until slct_swap; do : ; done
return 1 ;; return 1 ;;
3) 3)
until dtct_vga; do : ; done until dtct_gfx; do : ; done
return 1 ;; return 1 ;;
4) 4)
until slct_dsktp; do : ; done until slct_dsktp; do : ; done
@@ -1100,7 +1107,7 @@ Enter [Y/n]: "
ok ok
} }
################################################################################################### ###################################################################################################
ask_bootldr() { slct_bootldr() {
local prompt="Bootloader Selection" local prompt="Bootloader Selection"
sleep 0.2 sleep 0.2
@@ -1207,7 +1214,7 @@ Enter a number: "
fi fi
} }
################################################################################################### ###################################################################################################
ask_fs() { slct_fs() {
local prompt="Filesystem Setup" local prompt="Filesystem Setup"
sleep 0.2 sleep 0.2
@@ -1315,7 +1322,7 @@ Enter a name: "
ok ok
} }
################################################################################################### ###################################################################################################
ask_swap() { slct_swap() {
local prompt="Swap Setup" local prompt="Swap Setup"
sleep 0.2 sleep 0.2
@@ -1454,7 +1461,7 @@ Enter Swap size ${bwhite}(in GB)${blue}: "
fi fi
} }
################################################################################################### ###################################################################################################
dtct_vga() { dtct_gfx() {
if [[ "${hypervisor}" != "none" ]]; then if [[ "${hypervisor}" != "none" ]]; then
vm vm
@@ -1471,24 +1478,24 @@ dtct_vga() {
${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Graphics Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}### ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Graphics Setup${nc} ${magenta}]${nc}-------------------------------------${magenta}###
" "
vgacount="$(lspci | grep -E -c 'VGA|Display|3D')" gfxcount="$(lspci | grep -E -c 'VGA|Display|3D')"
vgacard="$(lspci | grep -E 'VGA|Display|3D' | sed 's/^.*: //g')" gfxcard="$(lspci | grep -E 'VGA|Display|3D' | sed 's/^.*: //g')"
intelcount="$(lspci | grep -E 'VGA|Display|3D' | grep -E -c 'Intel Corporation')" 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]//')" 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')" 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]//')" 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')" 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]//')" 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 if [[ "${gfxcount}" == "1" ]]; then
dtct_single_vga dtct_single_gfx
else else
dtct_multi_vga dtct_multi_gfx
fi fi
} }
################################################################################################### ###################################################################################################
dtct_single_vga() { dtct_single_gfx() {
if [[ "${intelcount}" -eq "1" ]]; then if [[ "${intelcount}" -eq "1" ]]; then
vendor="Intel" vendor="Intel"
@@ -1527,14 +1534,14 @@ dtct_single_vga() {
Enter [Y/n]: " Enter [Y/n]: "
read -r -p " read -r -p "
==> " vgaconf ==> " gfxconf
vgaconf="${vgaconf:-y}" gfxconf="${gfxconf:-y}"
vgaconf="${vgaconf,,}" gfxconf="${gfxconf,,}"
if [[ "${vgaconf}" == "y" ]]; then if [[ "${gfxconf}" == "y" ]]; then
vga_conf gfx_conf
elif [[ "${vgaconf}" == "n" ]]; then elif [[ "${gfxconf}" == "n" ]]; then
local prompt="Graphics Setup" local prompt="Graphics Setup"
skip skip
ok ok
@@ -1544,18 +1551,18 @@ Enter [Y/n]: "
fi fi
} }
################################################################################################### ###################################################################################################
dtct_multi_vga() { dtct_multi_gfx() {
if [[ "${vgacount}" == "2" ]]; then if [[ "${gfxcount}" == "2" ]]; then
vga_setup="Dual" gfx_setup="Dual"
elif [[ "${vgacount}" == "3" ]]; then elif [[ "${gfxcount}" == "3" ]]; then
vga_setup="Triple" gfx_setup="Triple"
fi fi
sleep 0.2 sleep 0.2
YELLOW " YELLOW "
### ${vga_setup} Graphics setup detected, consisting of: " ### ${gfx_setup} Graphics setup detected, consisting of: "
NC " NC "
____________________________________________________________________" ____________________________________________________________________"
@@ -1707,33 +1714,33 @@ Enter a number: "
fi fi
if [[ "${vendor}" == "Intel" || "${vendor}" == "AMD" ]]; then if [[ "${vendor}" == "Intel" || "${vendor}" == "AMD" ]]; then
sourcetype="Open-source" sourcetype="Open-source"
vgaconf="y" gfxconf="y"
vga_conf gfx_conf
elif [[ "${vendor}" == "Nvidia" ]]; then elif [[ "${vendor}" == "Nvidia" ]]; then
sourcetype="Proprietary" sourcetype="Proprietary"
vgaconf="y" gfxconf="y"
vga_conf gfx_conf
elif [[ "${vendors}" == "Intel & AMD" ]]; then elif [[ "${vendors}" == "Intel & AMD" ]]; then
sourcetype="Open-source" sourcetype="Open-source"
vgaconf="y" gfxconf="y"
vga_conf gfx_conf
elif [[ "${vendors}" == "Intel & Nvidia" ]]; then elif [[ "${vendors}" == "Intel & Nvidia" ]]; then
sourcetype="Open-source & Proprietary" sourcetype="Open-source & Proprietary"
vgaconf="y" gfxconf="y"
vga_conf gfx_conf
elif [[ "${vendors}" == "AMD & Nvidia" ]]; then elif [[ "${vendors}" == "AMD & Nvidia" ]]; then
sourcetype="Open-source & Proprietary" sourcetype="Open-source & Proprietary"
vgaconf="y" gfxconf="y"
vga_conf gfx_conf
elif [[ "${vendor}" == "none" ]]; then elif [[ "${vendor}" == "none" ]]; then
local prompt="Graphics Setup" local prompt="Graphics Setup"
vgaconf="n" gfxconf="n"
skip skip
ok ok
fi fi
} }
################################################################################################### ###################################################################################################
vga_conf() { gfx_conf() {
if [[ "${vendor}" != "none" ]]; then if [[ "${vendor}" != "none" ]]; then
sleep 0.2 sleep 0.2
@@ -1885,7 +1892,7 @@ gfxpkgs_set() {
gfxpkgs=() gfxpkgs=()
# Configure Graphics = yes # Configure Graphics = yes
if [[ "${vgaconf}" == "y" ]]; then if [[ "${gfxconf}" == "y" ]]; then
# Intel Graphics # Intel Graphics
if [[ "${vendor}" == "Intel" || "${vendors}" =~ "Intel" ]]; then if [[ "${vendor}" == "Intel" || "${vendors}" =~ "Intel" ]]; then
# /etc/sysctl.d/99-sysctld.conf # /etc/sysctl.d/99-sysctld.conf
@@ -1944,7 +1951,7 @@ gfxpkgs_set() {
fi fi
fi fi
# Configure Graphics = no # Configure Graphics = no
elif [[ "${vgaconf}" == "n" ]]; then elif [[ "${gfxconf}" == "n" ]]; then
# Nvidia Graphics # Nvidia Graphics
if [[ "${vendor}" == "Nvidia" || "${vendors}" =~ "Nvidia" ]]; then if [[ "${vendor}" == "Nvidia" || "${vendors}" =~ "Nvidia" ]]; then
gfxpkgs+=(libva-mesa-driver vulkan-nouveau) gfxpkgs+=(libva-mesa-driver vulkan-nouveau)
@@ -2002,17 +2009,23 @@ Enter a number: "
case "${packages}" in case "${packages}" in
1) 1)
desktopname="Plasma" ;; desktopname="Plasma"
deskname ;;
2) 2)
desktopname="Minimal Plasma (System Optimized)" ;; desktopname="Minimal Plasma (System Optimized)"
deskname ;;
3) 3)
desktopname="Gnome" ;; desktopname="Gnome"
deskname ;;
4) 4)
desktopname="Minimal Gnome (System Optimized)" ;; desktopname="Minimal Gnome (System Optimized)"
deskname ;;
5) 5)
desktopname="Xfce" ;; desktopname="Xfce"
deskname ;;
6) 6)
desktopname="Cinnamon" desktopname="Cinnamon"
deskname
sleep 0.2 sleep 0.2
YELLOW " YELLOW "
@@ -2048,9 +2061,11 @@ Enter [Y/n]: "
esac ;; esac ;;
7) 7)
desktopname="Deepin" ;; desktopname="Deepin"
deskname ;;
8) 8)
desktopname="Budgie" desktopname="Budgie"
deskname
sleep 0.2 sleep 0.2
YELLOW " YELLOW "
@@ -2086,17 +2101,21 @@ Enter [Y/n]: "
esac ;; esac ;;
9) 9)
desktopname="Lxqt" ;; desktopname="Lxqt"
deskname ;;
10) 10)
desktopname="Mate" ;; desktopname="Mate"
deskname ;;
11) 11)
desktopname="Basic Arch Linux" ;; desktopname="Basic Arch Linux"
deskname ;;
12) 12)
desktopname="Custom Arch Linux" desktopname="Custom Arch Linux"
until cust_sys; do :; done until cust_sys; do :; done
return 0 ;; return 0 ;;
13) 13)
desktopname="Cosmic" ;; desktopname="Cosmic"
deskname ;;
"") "")
choice choice
return 1 ;; return 1 ;;
@@ -2104,13 +2123,11 @@ Enter [Y/n]: "
invalid invalid
return 1 ;; return 1 ;;
esac esac
sleep 0.2 sleep 0.2
YELLOW " YELLOW "
### ${desktopname} has been selected
### NOTE: 'base' meta-package does not include the tools needed for building packages ### 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] "
@@ -2126,11 +2143,9 @@ Enter [Y/n]: "
case "${dev}" in case "${dev}" in
y) y)
local prompt="base-devel"
devel="base-devel" devel="base-devel"
sleep 0.2 ok ;;
NC "
==> [${green}base-devel OK${nc}] " ;;
n) n)
skip ;; skip ;;
*) *)
@@ -2142,9 +2157,77 @@ Enter [Y/n]: "
YELLOW " 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 " BLUE "
@@ -2155,15 +2238,16 @@ Enter [y/N]: "
ask_param="${ask_param:-n}" ask_param="${ask_param:-n}"
ask_param="${ask_param,,}" ask_param="${ask_param,,}"
case "${ask_param}" in case "${ask_param}" in
y) y)
add_prmtrs ;; add_prmtrs ;;
n) n)
skip ;; skip ;;
*) *)
invalid invalid
return 1 ;; return 1 ;;
esac esac
local prompt="Desktop Setup"
ok ok
} }
################################################################################################### ###################################################################################################
@@ -2735,12 +2819,15 @@ ${magenta}###${nc}---------------------------------${magenta}[ ${bwhite}Automati
sleep 0.2 sleep 0.2
NC " 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 " read -r -p "
==> " smartpart ==> " smartpart
echo echo
smartpart="${smartpart:-y}"
smartpart="${smartpart,,}"
if [[ "${smartpart}" == "y" ]]; then if [[ "${smartpart}" == "y" ]]; then
sgdsk_nmbr="${instl_dsk_nmbr}" sgdsk_nmbr="${instl_dsk_nmbr}"
@@ -4023,21 +4110,21 @@ instl() {
completion_err completion_err
until slct_krnl; do : ; done until slct_krnl; do : ; done
until ask_sign; do : ; done until ask_sign; do : ; done
until ask_bootldr; do : ; done until slct_bootldr; do : ; done
until slct_espmnt; do : ; done until slct_espmnt; do : ; done
fi fi
if [[ -z "${fs}" ]]; then if [[ -z "${fs}" ]]; then
local stage_prompt="Filesystem & Swap Setup" local stage_prompt="Filesystem & Swap Setup"
completion_err completion_err
until ask_fs; do : ; done until slct_fs; do : ; done
until ask_swap; do : ; done until slct_swap; do : ; done
fi fi
if [[ "${hypervisor}" == "none" && "${vga_slct}" != "yes" ]]; then if [[ "${hypervisor}" == "none" && "${gfx_slct}" != "yes" ]]; then
local stage_prompt="Graphics Setup" local stage_prompt="Graphics Setup"
completion_err completion_err
until dtct_vga; do : ; done until dtct_gfx; do : ; done
fi fi
if [[ -z "${packages}" ]]; then if [[ -z "${packages}" ]]; then
@@ -5001,23 +5088,22 @@ ${magenta}###${nc}-------------------------------${magenta}[ ${bwhite}Confirm In
revise() { revise() {
revision="yes" 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[@]}" export "${reset[@]}"
gfxpkgs=() gfxpkgs=()
if [[ "${hypervisor}" != "none" ]]; then if [[ "${hypervisor}" != "none" ]]; then
vm
vendor="Virtual Machine" vendor="Virtual Machine"
vgaconf="n" gfxconf="n"
fi fi
until slct_krnl; do : ; done until slct_krnl; do : ; done
until ask_sign; do : ; done until ask_sign; do : ; done
until ask_bootldr; do : ; done until slct_bootldr; do : ; done
until slct_espmnt; do : ; done until slct_espmnt; do : ; done
until ask_fs; do : ; done until slct_fs; do : ; done
until ask_swap; do : ; done until slct_swap; do : ; done
if [[ "${hypervisor}" == "none" ]]; then if [[ "${hypervisor}" == "none" ]]; then
until dtct_vga; do : ; done until dtct_gfx; do : ; done
fi fi
until slct_dsktp; do : ; done until slct_dsktp; do : ; done
if [[ "${hypervisor}" == "none" ]]; then if [[ "${hypervisor}" == "none" ]]; then
@@ -5443,6 +5529,12 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs
if [[ -n "${wireless_reg}" ]]; then if [[ -n "${wireless_reg}" ]]; then
basepkgs+=("${wireless_reg}") basepkgs+=("${wireless_reg}")
fi fi
if [[ -n "${print_pkgs}" ]]; then
basepkgs+=("${print_pkgs}")
fi
if [[ -n "${web_browser}" ]]; then
basepkgs+=("${web_browser}")
fi
case "${packages}" in 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}" ;; 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: 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" displaymanager="lightdm"
network="NetworkManager" ;; network="NetworkManager" ;;
6) # Cinnamon Desktop: 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" displaymanager="lightdm"
bluetooth="bluetooth" bluetooth="bluetooth"
network="NetworkManager" ;; network="NetworkManager" ;;
7) # Deepin Desktop: 7) # Deepin Desktop:
deskpkgs="${basepkgs[*]} deepin deepin-terminal deepin-kwin networkmanager" deskpkgs="${basepkgs[*]} deepin deepin-kwin deepin-terminal"
displaymanager="lightdm" displaymanager="lightdm"
network="NetworkManager" ;; network="NetworkManager" ;;
@@ -5486,12 +5578,12 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs
network="NetworkManager" ;; network="NetworkManager" ;;
9) # Lxqt Desktop: 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" displaymanager="sddm"
network="NetworkManager" ;; network="NetworkManager" ;;
10) # Mate Desktop: 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" displaymanager="lightdm"
bluetooth="bluetooth" bluetooth="bluetooth"
network="NetworkManager" ;; network="NetworkManager" ;;
@@ -5526,10 +5618,16 @@ ${magenta}###${nc}-------------------------------------${magenta}[ ${bwhite}Pacs
if [[ -n "${wireless_reg}" ]]; then if [[ -n "${wireless_reg}" ]]; then
custarray+=("${wireless_reg}") custarray+=("${wireless_reg}")
fi fi
if [[ -n "${print_pkgs}" ]]; then
custarray+=("${print_pkgs}")
fi
if [[ -n "${web_browser}" ]]; then
custarray+=("${web_browser}")
fi
deskpkgs="${custarray[*]}" ;; deskpkgs="${custarray[*]}" ;;
13) # Cosmic Desktop: 13) # Cosmic Desktop:
deskpkgs="${basepkgs[*]} cosmic networkmanager" deskpkgs="${basepkgs[*]} cosmic cosmic-player networkmanager pipewire-pulse xdg-user-dirs"
displaymanager="cosmic-greeter" displaymanager="cosmic-greeter"
network="NetworkManager" ;; network="NetworkManager" ;;
esac esac
@@ -5739,7 +5837,7 @@ GRUB_BTRFSD
fi fi
fi fi
if [[ "${vgaconf}" == "y" && "${vendor}" == "Nvidia" ]]; then if [[ "${gfxconf}" == "y" && "${vendor}" == "Nvidia" ]]; then
local stage_prompt="Grub/Nvidia Configuration" local stage_prompt="Grub/Nvidia Configuration"
if arch-chroot /mnt <<-NVGRUB > /dev/null 2>&1 2> amelia_log.txt ; then 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 sed -i "/^#GRUB_TERMINAL_OUTPUT=console/s/^#//" /etc/default/grub || exit
@@ -5811,7 +5909,7 @@ ZRAMCONF
################################################################################################### ###################################################################################################
nvidia_hook() { 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 if [[ "${nvname}" == "nvidia-open" ]] || [[ "${nvname}" == "nvidia" ]] || [[ "${nvname}" == "nvidia-lts" ]]; then
local stage_prompt="Nvidia Hook Creation" local stage_prompt="Nvidia Hook Creation"
if arch-chroot /mnt <<-NVIDIAHOOK > /dev/null 2>&1 2> amelia_log.txt ; then if arch-chroot /mnt <<-NVIDIAHOOK > /dev/null 2>&1 2> amelia_log.txt ; then
@@ -5974,6 +6072,17 @@ SYSTEMD_OOMD
stage_fail stage_fail
fi fi
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() { secboot_sign() {
@@ -6024,23 +6133,39 @@ SECSIGN
################################################################################################### ###################################################################################################
set_vars() { 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 if [[ "${encrypt}" == "yes" ]]; then
### Encrypted Root Device # Mkinitcpio Modules (Encryption)
MODULES+=("${fs_mod}")
# Encrypted Root Device
encr_root_dev="/dev/mapper/${ENCROOT}" 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}" 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}" encr_root_bootopts="${encr_root_opts} root=${encr_root_dev}"
#---------------------------------------------------------------------------------------------------------
### Swap Setup (Encryption) # SWAP SETUP (Encryption)
## Encrypted Swap Partition # Encrypted Swap Partition
if [[ "${swapmode}" == "1" ]]; then if [[ "${swapmode}" == "1" ]]; then
# Encrypted Swap Partition Options # Encrypted Swap Partition Options
encr_swap_opts="rd.luks.name=$(blkid -s UUID -o value "${swap_dev}")=swap" 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}" encr_swap_bootopts="resume=/dev/mapper/swap ${encr_swap_opts}"
## Encrypted Swapfile # Encrypted Swapfile
elif [[ "${swapmode}" == "2" ]]; then elif [[ "${swapmode}" == "2" ]]; then
# Ext4 Offset calculation # Ext4 Offset calculation
if [[ "${fs}" == "1" ]]; then if [[ "${fs}" == "1" ]]; then
@@ -6049,171 +6174,98 @@ set_vars() {
elif [[ "${fs}" == "2" ]]; then elif [[ "${fs}" == "2" ]]; then
offst="$(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)" offst="$(btrfs inspect-internal map-swapfile -r /mnt/swap/swapfile)"
fi fi
# Encrypted Swapfile Kernel Parameters # Encrypted Swap Kernel Parameters
encr_swap_bootopts="resume=${encr_root_dev} resume_offset=${offst}" 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 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 if [[ "${vendor}" == "Nvidia" ]]; then
HOOKS+=(systemd keyboard autodetect microcode modconf sd-vconsole block sd-encrypt filesystems fsck) HOOKS+=(systemd keyboard autodetect microcode modconf sd-vconsole block sd-encrypt filesystems fsck)
# Other Vendors/Multi-Vendors # Other Vendors / Multi-Vendors
else else
HOOKS+=(systemd keyboard autodetect microcode modconf kms sd-vconsole block sd-encrypt filesystems fsck) HOOKS+=(systemd keyboard autodetect microcode modconf kms sd-vconsole block sd-encrypt filesystems fsck)
fi fi
## Configuration = 'Yes' # MAIN KERNEL PARAMETERS (Encryption)
if [[ "${vgaconf}" == "y" ]]; then # Encrypted Root Kernel Parameters
# Nvidia boot_opts+=("${encr_root_bootopts}")
if [[ "${vendor}" == "Nvidia" || "${vendors}" =~ "Nvidia" ]]; then # Encrypted Swap Kernel Parameters
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}")
if [[ -n "${encr_swap_bootopts}" ]]; then if [[ -n "${encr_swap_bootopts}" ]]; then
boot_opts+=("${encr_swap_bootopts}") boot_opts+=("${encr_swap_bootopts}")
fi fi
if [[ "${kill_watchdog}" == "y" ]]; then
boot_opts+=(nowatchdog) # ENCRYPTION = 'NO'
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
elif [[ "${encrypt}" == "no" ]]; then elif [[ "${encrypt}" == "no" ]]; then
# HOOKS SETUP
### Swap Setup # Nvidia Only Vendor
## 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
if [[ "${vendor}" == "Nvidia" ]]; then if [[ "${vendor}" == "Nvidia" ]]; then
HOOKS+=(systemd autodetect microcode modconf keyboard sd-vconsole block filesystems fsck) HOOKS+=(systemd autodetect microcode modconf keyboard sd-vconsole block filesystems fsck)
# Other Vendors/Multi-Vendors # Other Vendors / Multi-Vendors
else else
HOOKS+=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck) HOOKS+=(systemd autodetect microcode modconf kms keyboard sd-vconsole block filesystems fsck)
fi 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 if [[ "${autoroot}" == "y" ]]; then
boot_opts+=("${multiroot_bootopts}") boot_opts+=("${multiroot_bootopts}")
fi fi
if [[ "${kill_watchdog}" == "y" ]]; then fi
boot_opts+=(nowatchdog) #--------------------------------------------------------------------------------------------------
# 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 fi
if [[ -n "${vga_bootopts[*]}" ]]; then
boot_opts+=("${vga_bootopts[*]}") # AMD
fi if [[ "${vendor}" == "AMD" || "${vendors}" =~ "AMD" ]]; then
if [[ -n "${cust_bootopts}" ]]; then if [[ -n "${islands}" ]]; then
boot_opts+=("${cust_bootopts}") MODULES+=(amdgpu)
fi fi
if [[ -n "${btrfs_bootopts}" ]]; then # 'Southern Islands' support
boot_opts+=("${btrfs_bootopts}") if [[ "${islands}" == "1" ]]; then
fi gfx_bootopts+=(amdgpu.dc=1 radeon.si_support=0 amdgpu.si_support=1)
if [[ -n "${zram_bootopts}" ]]; then # 'Sea Islands' support
boot_opts+=("${zram_bootopts}") elif [[ "${islands}" == "2" ]]; then
gfx_bootopts+=(amdgpu.dc=1 radeon.cik_support=0 amdgpu.cik_support=1)
fi
fi 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() { chroot_conf() {
@@ -6544,7 +6596,7 @@ OPTIMIZED
tty="$(tty)" tty="$(tty)"
disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)" disks="$(lsblk --nodeps --paths --noheadings --output=name,size,model | cat --number)"
trg="" 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[@]}" export "${vars[@]}"
clear clear
first_check first_check