diff options
Diffstat (limited to 'guix-strap/guix-partition')
-rwxr-xr-x | guix-strap/guix-partition | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/guix-strap/guix-partition b/guix-strap/guix-partition new file mode 100755 index 0000000..184ea96 --- /dev/null +++ b/guix-strap/guix-partition @@ -0,0 +1,79 @@ +#!/usr/bin/env bash + +set -o emacs; + +CONFIRM="" +DISK="" + +source ./guix-log +source ./guix-env + +EVENT "Partitioning disks" + +confirm() { + if [ "$CONFIRM" == "y" ]; then + exit 0 + fi + read -p "Are you sure: ($1)? [y/N] " CONFIRM + if [ "$CONFIRM" == "y" ]; then + exit 0 + else + exit 1 + fi +} + +check_disk() { + lsblk $1 &> /dev/null || exit 1 + FS=$(df $1 | tail -n 1 | awk '{print $1}') + if [ "$FS" == "none" ]; then + exit 0 + else + exit 1 + fi +} + +get_disk() { + CONFIRM="" + read -ep "Enter disk (e.g. /dev/sda): " DISK + if [ ! -b "$DISK" ]; then + ERROR "$DISK: file does not exist" + get_disk + return + fi + (check_disk "$DISK"); + if [ "$?" -ne 0 ]; then + ERROR "$DISK: not a valid disk" + get_disk + return + fi + (confirm "$DISK"); + if [ "$?" -ne 0 ]; then + get_disk + fi +} + +get_disk + +EVENT "Partitioning disks with fdisk..." + +fdisk "$DISK" <<EOF +g +n + + ++1GiB +t +EFI System +n + + + +t +2 +Linux Filesystem +w +EOF + +echo "DISK=\"$DISK\"" >> ./guix-env + +EVENT "Disks have been successfully partitioned on $DISK" |