269 lines
4.2 KiB
Bash
Executable File
269 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
|
|
BASEDIR="$(dirname "${0}" | sed "s|^\.|${PWD}|")"
|
|
|
|
|
|
cat << EOF
|
|
#######################################
|
|
## ##
|
|
## $(cat "${BASEDIR}/title") Script ##
|
|
## ##
|
|
## Jean <jean@easthighnerd.net> ##
|
|
## ##
|
|
#######################################
|
|
|
|
|
|
#################
|
|
## ##
|
|
## Configure ##
|
|
## ##
|
|
#################
|
|
|
|
EOF
|
|
|
|
|
|
printf \
|
|
'ZOL_FEDORA_VER="2-6"\n' | \
|
|
tee \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
|
|
printf \
|
|
'(NVMe) SSD or HDD?\n'
|
|
select OPTION in 'SSD' 'HDD'
|
|
do
|
|
case "${OPTION}" in
|
|
'SSD'|'HDD')
|
|
break
|
|
;;
|
|
*)
|
|
printf \
|
|
'Invalid option\n'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
printf \
|
|
"DISK_TYPE=\"${OPTION}\"\n" | \
|
|
tee \
|
|
--append \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
|
|
printf \
|
|
'\033[2J\033[H'
|
|
|
|
printf \
|
|
'\nGet disk from:\n'
|
|
select OPTION in '/dev/disk/by-id/' '/dev/'
|
|
do
|
|
case "${OPTION}" in
|
|
'/dev/disk/by-id/'|'/dev/')
|
|
break
|
|
;;
|
|
*)
|
|
printf \
|
|
'Invalid option\n'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
printf \
|
|
'\033[2J\033[H'
|
|
|
|
if [[ "${OPTION}" == '/dev/disk/by-id/' ]]; then
|
|
DRIVES="$(ls -Ago /dev/disk/by-id/ | grep -v 'sr' | grep -v 'dm-' | grep -v 'nvme-eui.' | grep -v '\-part' | grep -v 'wwn-' | grep -v '_[1-9] -> ' | grep -v 'total' | sed 's|^.*\:[0-5][0-9] ||g; s| -> .*$||g' | tr -d '[:blank:]')"
|
|
|
|
printf \
|
|
'\nSelect the disk you want to use:\n'
|
|
|
|
DRIVES=( ${DRIVES} )
|
|
shopt -s extglob
|
|
MENU="@(${DRIVES[0]}"
|
|
|
|
for ((i=1;i<${#DRIVES[@]};i++)); do
|
|
MENU+="|${DRIVES[$i]}"
|
|
done
|
|
|
|
MENU+=")"
|
|
|
|
select DRIVE in "${DRIVES[@]}"
|
|
do
|
|
case ${DRIVE} in
|
|
${MENU})
|
|
break
|
|
;;
|
|
*)
|
|
printf \
|
|
'Invalid option\n'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
printf \
|
|
"DISK=\"/dev/disk/by-id/${DRIVE}\"\n" | \
|
|
tee \
|
|
--append \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
elif [[ "${OPTION}" == '/dev/' ]]; then
|
|
DRIVES="$(lsblk -do name | grep -v 'loop' | grep -v 'sr' | grep -v 'zram' | grep -v 'NAME' | tr -d '[:blank:]')"
|
|
|
|
printf \
|
|
'\nSelect the disk you want to use:\n'
|
|
|
|
DRIVES=( ${DRIVES} )
|
|
shopt -s extglob
|
|
MENU="@(${DRIVES[0]}"
|
|
|
|
for ((i=1;i<${#DRIVES[@]};i++)); do
|
|
MENU+="|${DRIVES[$i]}"
|
|
done
|
|
|
|
MENU+=")"
|
|
|
|
select DRIVE in "${DRIVES[@]}"
|
|
do
|
|
case ${DRIVE} in
|
|
${MENU})
|
|
break
|
|
;;
|
|
*)
|
|
printf \
|
|
'Invalid option\n'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
printf \
|
|
"DISK=\"/dev/${DRIVE}\"\n" | \
|
|
tee \
|
|
--append \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
fi
|
|
|
|
printf \
|
|
'\033[2J\033[H'
|
|
|
|
HOSTNAME='-'
|
|
|
|
while [[ "${HOSTNAME}" == '-' ]] || [[ -z "${HOSTNAME}" ]] || [[ "${HOSTNAME}" = *' '* ]] || [[ "${HOSTNAME}" = *_* ]]; do
|
|
printf \
|
|
'\nEnter a hostname for this machine (no spaces or underscores):\n'
|
|
read \
|
|
-r \
|
|
HOSTNAME
|
|
|
|
if [[ "${HOSTNAME}" = *' '* ]] || [[ "${HOSTNAME}" = *_* ]]; then
|
|
printf \
|
|
'ERROR:\tNo spaces or underscores in the hostname!\n'
|
|
fi
|
|
done
|
|
|
|
printf \
|
|
"HOSTNAME=\"${HOSTNAME}\"\n" | \
|
|
tee \
|
|
--append \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
|
|
printf \
|
|
'\033[2J\033[H'
|
|
|
|
USERNAME='-'
|
|
|
|
while [[ "${USERNAME}" == '-' ]] || [[ -z "${USERNAME}" ]] || [[ "${USERNAME}" = *' '* ]] || [[ "${USERNAME}" = *[A-Z]* ]]; do
|
|
printf \
|
|
'\nEnter a name for the new user account (lowercase, no spaces):\n'
|
|
read \
|
|
-r \
|
|
USERNAME
|
|
|
|
if [[ "${USERNAME}" = *' '* ]] || [[ "${USERNAME}" = *[A-Z]* ]]; then
|
|
printf \
|
|
'ERROR:\tNo spaces or uppercase letters in the username!\n'
|
|
fi
|
|
done
|
|
|
|
printf \
|
|
"USERNAME=\"${USERNAME}\"\n" | \
|
|
tee \
|
|
--append \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
|
|
printf \
|
|
'\033[2J\033[H'
|
|
|
|
printf \
|
|
'\nEnable SWAP?\n'
|
|
select OPTION in 'yes' 'no'
|
|
do
|
|
case "${OPTION}" in
|
|
'yes'|'no')
|
|
break
|
|
;;
|
|
*)
|
|
printf \
|
|
'Invalid option\n'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
printf \
|
|
"ENABLE_SWAP=\"${OPTION}\"\n" | \
|
|
tee \
|
|
--append \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
|
|
printf \
|
|
'\033[2J\033[H'
|
|
|
|
printf \
|
|
'\nEnable encryption?\n'
|
|
select OPTION in 'yes' 'no'
|
|
do
|
|
case "${OPTION}" in
|
|
'yes'|'no')
|
|
break
|
|
;;
|
|
*)
|
|
printf \
|
|
'Invalid option\n'
|
|
;;
|
|
esac
|
|
done
|
|
|
|
printf \
|
|
"ENCRYPTION=\"${OPTION}\"\n" | \
|
|
tee \
|
|
--append \
|
|
"${BASEDIR}/system.conf" \
|
|
&> \
|
|
/dev/null
|
|
|
|
printf \
|
|
'\033[2J\033[H'
|
|
|
|
cat << EOF
|
|
|
|
Configuration stored in '${BASEDIR}/system.conf'
|
|
|
|
Press any key to return to the main menu
|
|
EOF
|
|
|
|
read \
|
|
-srn \
|
|
1
|