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
 |