Compare commits
4 commits
3830c28b84
...
1fb3415e2f
Author | SHA1 | Date | |
---|---|---|---|
1fb3415e2f | |||
72054dd06b | |||
14366c7eac | |||
f46f7f83b0 |
1 changed files with 65 additions and 14 deletions
|
@ -5,12 +5,40 @@ eprintln() {
|
||||||
cat <<<"$@" 1>&2
|
cat <<<"$@" 1>&2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
join_by() {
|
||||||
|
local d=${1-} f=${2-}
|
||||||
|
if shift 2; then
|
||||||
|
printf %s "$f" "${@/#/$d}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
prompt() {
|
prompt() {
|
||||||
variable=$1
|
variable="$1"
|
||||||
default=$2
|
shift
|
||||||
prompt=$3
|
default="$1"
|
||||||
echo "$prompt"
|
shift
|
||||||
read -rep "> " -i "$default" "${variable?}"
|
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
|
## Disk info
|
||||||
mapfile -t devices < <(lsblk --paths --output NAME,SiZE --noheadings --nodeps)
|
mapfile -t devices < <(lsblk --paths --output NAME,SiZE --noheadings --nodeps)
|
||||||
|
|
||||||
paste <(printf "%s\n" "${!devices[@]}") <(printf "%s\n" "${devices[@]}")
|
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
|
if [[ "${want_home?}" -eq 1 ]]; then
|
||||||
prompt home_drive "" "Which device do you want to be home drive?"
|
prompt home_drive "" "Which device do you want to be home drive?" "${!devices[@]}"
|
||||||
prompt home_fmt "" "Do you want to format home? (0|1)"
|
prompt home_fmt "" "Do you want to format home?" 0 1
|
||||||
fi
|
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
|
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
|
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
|
# Pre-installation
|
||||||
part_boot=",+1G,C12A7328-F81F-11D2-BA4B-00A0C93EC93B"
|
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
|
mkinitcpio -P
|
||||||
|
|
||||||
### root password
|
### root password
|
||||||
printf "password\npassword" | passwd
|
printf "%s\n%s" "${password?}" "${password?}" | passwd
|
||||||
|
|
||||||
### Boot loader
|
### Boot loader
|
||||||
bootctl install
|
bootctl install
|
||||||
|
|
Loading…
Reference in a new issue