95 lines
2.6 KiB
Bash
Executable File
95 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/bash
|
|
|
|
# shellcheck disable=2154,2034,2153
|
|
# vim:fdm=marker:fmr={,}
|
|
|
|
# This program is free software, provided under the GNU GPL
|
|
# Written by Nathaniel Maia for use in Archlabs
|
|
# Some ideas and code has been taken from other installers
|
|
# AIF, Cnichi, Calamares, The Arch Wiki.. Credit where credit is due
|
|
|
|
|
|
# immutable globals
|
|
readonly VER="1.7.45" # Installer version
|
|
readonly DIST="ArchLabs" # Linux distributor
|
|
readonly MNT="/mnt" # Install mountpoint
|
|
readonly ERR="/tmp/errlog" # Built-in error log
|
|
readonly DBG="/tmp/debuglog" # Built-in error log
|
|
|
|
main()
|
|
{
|
|
if [[ $CURRENT_MENU != "main" && $SAVED ]]; then
|
|
CURRENT_MENU="main"
|
|
SELECTED=$((SAVED + 1))
|
|
unset SAVED
|
|
elif [[ $CURRENT_MENU != "main" ]]; then
|
|
SELECTED=1
|
|
CURRENT_MENU="main"
|
|
elif (( SELECTED < 9 )); then
|
|
((SELECTED++)) # increment the highlighted menu item
|
|
fi
|
|
|
|
tput civis
|
|
SELECTED=$(dialog --cr-wrap --stdout --backtitle "$BT" \
|
|
--title " $_PrepTitle " --default-item $SELECTED \
|
|
--cancel-label "Exit" --menu "$_PrepBody" 0 0 0 \
|
|
"1" "$_PrepShowDev" \
|
|
"2" "$_PrepParts" \
|
|
"3" "$_PrepLUKS" \
|
|
"4" "$_PrepLVM" \
|
|
"5" "$_PrepMount" \
|
|
"6" "$_PrepConfig" \
|
|
"7" "Pick Packages" \
|
|
"8" "Check Choices" \
|
|
"9" "$_PrepInstall")
|
|
|
|
if [[ $WARN != true && $SELECTED =~ (2|5) ]]; then
|
|
WARN=true
|
|
msgbox "$_PrepTitle" "$_WarnMount"
|
|
fi
|
|
|
|
case $SELECTED in
|
|
1) device_tree ;;
|
|
2) partition || SELECTED=$((SELECTED - 1)) ;;
|
|
3) luks_menu || SELECTED=$((SELECTED - 1)) ;;
|
|
4) lvm_menu || SELECTED=$((SELECTED - 1)) ;;
|
|
5) mnt_menu || SELECTED=$((SELECTED - 1)) ;;
|
|
6) preinstall_checks && { cfg_menu || SELECTED=$((SELECTED - 1)); } ;;
|
|
7) preinstall_checks 1 && { select_packages || SELECTED=$((SELECTED - 2)); } ;;
|
|
8) preinstall_checks 1 && show_cfg ;;
|
|
9) preinstall_checks 1 && install ;;
|
|
*) yesno "$_CloseInst" "$_CloseInstBody" "Exit" "Back" && die
|
|
esac
|
|
}
|
|
|
|
# source all the lib files
|
|
for i in /usr/share/archlabs/installer/lib/?*.sh; do
|
|
if ! . "$i" 2>/dev/null; then
|
|
printf "\nFailed to source library file %s\n" "$i"
|
|
die 1
|
|
fi
|
|
done
|
|
|
|
# trap Ctrl-C to properly exit
|
|
trap sigint INT
|
|
|
|
for arg in "$@"; do
|
|
[[ $arg =~ (--debug|-d) ]] && debug
|
|
done
|
|
|
|
# initial prep
|
|
select_language
|
|
select_keymap
|
|
|
|
# call checks before identify so we can try mounting efivarfs
|
|
system_checks
|
|
system_identify
|
|
system_devices
|
|
|
|
# welcome message
|
|
msgbox "$_WelTitle $DIST Installer" "$_WelBody"
|
|
|
|
while true; do
|
|
main
|
|
done
|