Compare commits
4 Commits
3830c28b84
...
1fb3415e2f
Author | SHA1 | Date |
---|---|---|
everyone | 1fb3415e2f | |
everyone | 72054dd06b | |
everyone | 14366c7eac | |
everyone | f46f7f83b0 |
|
@ -5,12 +5,40 @@ eprintln() {
|
|||
cat <<<"$@" 1>&2
|
||||
}
|
||||
|
||||
join_by() {
|
||||
local d=${1-} f=${2-}
|
||||
if shift 2; then
|
||||
printf %s "$f" "${@/#/$d}"
|
||||
fi
|
||||
}
|
||||
|
||||
prompt() {
|
||||
variable=$1
|
||||
default=$2
|
||||
prompt=$3
|
||||
echo "$prompt"
|
||||
read -rep "> " -i "$default" "${variable?}"
|
||||
variable="$1"
|
||||
shift
|
||||
default="$1"
|
||||
shift
|
||||
prompt="$1"
|
||||
shift
|
||||
requiments=("$@")
|
||||
|
||||
[[ -z "${requiments[*]}" ]] && {
|
||||
printf "<prompt> requires an array of requirements"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [[ "${requiments[0]}" == "null" ]]; then
|
||||
printf "\n%s\n" "$prompt"
|
||||
read -rep "> " -i "$default" "${variable?}"
|
||||
else
|
||||
# shellcheck disable=SC2086,SC2048
|
||||
printf "\n%s (Accepted values: %s)\n" "$prompt" "$(join_by ' | ' ${requiments[*]})"
|
||||
while :; do
|
||||
read -rep "> " -i "$default" "${variable?}"
|
||||
[[ "${requiments[0]}" == "null" ]] && break
|
||||
[[ -n ${!variable} && ${requiments[*]} =~ ${!variable} ]] && break
|
||||
printf "Invalid option\n"
|
||||
done
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
@ -35,24 +63,47 @@ _is_uefi=$([[ -f /sys/firmware/efi/fw_platform_size ]] && echo 1 || echo 0)
|
|||
|
||||
## Disk info
|
||||
mapfile -t devices < <(lsblk --paths --output NAME,SiZE --noheadings --nodeps)
|
||||
|
||||
paste <(printf "%s\n" "${!devices[@]}") <(printf "%s\n" "${devices[@]}")
|
||||
prompt root_drive "" "Which device do you want to be root drive?"
|
||||
|
||||
prompt want_home "" "Do you want to store home on another drive? (0 | 1)"
|
||||
prompt root_drive "" "Which device do you want to be root drive?" "${!devices[@]}"
|
||||
|
||||
prompt want_home "" "Do you want to store home on another drive?" 0 1
|
||||
|
||||
if [[ "${want_home?}" -eq 1 ]]; then
|
||||
prompt home_drive "" "Which device do you want to be home drive?"
|
||||
prompt home_fmt "" "Do you want to format home? (0|1)"
|
||||
prompt home_drive "" "Which device do you want to be home drive?" "${!devices[@]}"
|
||||
prompt home_fmt "" "Do you want to format home?" 0 1
|
||||
fi
|
||||
|
||||
prompt want_swap "" "Do you want a swap space? (0 | 1)"
|
||||
prompt want_swap "" "Do you want a swap space?" 0 1
|
||||
|
||||
if [[ "${want_swap?}" -eq 1 ]]; then
|
||||
prompt swap_size "2g" "Swap size. Default is 2g. (accepting k/m/g/e/p suffix)"
|
||||
prompt swap_size "2g" "Swap size. Default is 2g. (accepting k/m/g/e/p suffix)" null
|
||||
fi
|
||||
|
||||
# Summary of what is going to happen and user confirmation
|
||||
## root password
|
||||
stty -echo
|
||||
while :; do
|
||||
prompt password "" "Enter root password" null
|
||||
[[ "${password?}" == "" ]] && {
|
||||
printf "\nPassword cannot be empty"
|
||||
continue
|
||||
}
|
||||
prompt pass_conf "" "Confirm root password" null
|
||||
[[ "${pass_conf?}" == "${password?}" ]] && break
|
||||
printf "\nPassword does not match."
|
||||
done
|
||||
stty echo
|
||||
|
||||
# user confirmation
|
||||
while :; do
|
||||
printf "\nThis script is descructive."
|
||||
prompt confirmed "" "Are you sure you want to contiue." YES NO
|
||||
[[ "${confirmed?}" == "YES" ]] && break
|
||||
[[ "${confirmed?}" == "NO" ]] && {
|
||||
printf "Exiting script\n"
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
|
||||
# Pre-installation
|
||||
part_boot=",+1G,C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
|
||||
|
@ -164,7 +215,7 @@ sed --in-place 's/#COMPRESSION=\"zstd\"/COMPRESSION=\"zstd\"/' /etc/mkinitcpio.c
|
|||
mkinitcpio -P
|
||||
|
||||
### root password
|
||||
printf "password\npassword" | passwd
|
||||
printf "%s\n%s" "${password?}" "${password?}" | passwd
|
||||
|
||||
### Boot loader
|
||||
bootctl install
|
||||
|
|
Loading…
Reference in New Issue