From 71aa9f31a0217997d5cf04f38140a0226ebdd163 Mon Sep 17 00:00:00 2001 From: clerie Date: Sat, 21 Oct 2023 00:19:00 +0200 Subject: [PATCH] pkgs/nixfiles: make nixfiles-auto-install interactive --- pkgs/nixfiles/nixfiles-auto-install.sh | 84 ++++++++++++++++++++------ 1 file changed, 65 insertions(+), 19 deletions(-) diff --git a/pkgs/nixfiles/nixfiles-auto-install.sh b/pkgs/nixfiles/nixfiles-auto-install.sh index 040201d..7456b75 100644 --- a/pkgs/nixfiles/nixfiles-auto-install.sh +++ b/pkgs/nixfiles/nixfiles-auto-install.sh @@ -2,17 +2,9 @@ set -euo pipefail -hostname=host${RANDOM} - -echo "[I] Deploying with hostname ${hostname}" - +hostname="" device="" -for dev in "/dev/vda" "/dev/sda"; do - if [[ -b $dev ]]; then - device=$dev - break - fi -done +no_confirm="" while [[ $# -gt 0 ]]; do case $1 in @@ -21,6 +13,15 @@ while [[ $# -gt 0 ]]; do shift shift ;; + --device) + device=$2 + shift + shift + ;; + --no-confirm) + no_confirm=1 + shift + ;; *) echo "unknown option: $1" exit 1 @@ -28,30 +29,75 @@ while [[ $# -gt 0 ]]; do esac done -echo "[I] Formatting disk" +echo "" +echo " This is clerie's nixfiles auto install for new hosts" +echo " It will do dangerous things like format your disk" +echo " So be careful when using it" +echo "" + +if [[ -z $no_confirm ]]; then + read -e -r -p "Continue?" confirm + echo "$confirm" > /dev/null +fi + +if [[ -z $hostname ]]; then + fallback_hostname="host${RANDOM}" + read -e -r -p "Hostname [$fallback_hostname]: " hostname + if [[ -z $hostname ]]; then + hostname=$fallback_hostname + fi +fi + +echo "[I] Deploying with hostname ${hostname}" if [[ -z $device ]]; then - echo "[E] No device to install to" + device="/dev/sda" + while true; do + read -e -r -p "Disk [$device]: " dev + if [[ -z $dev ]]; then + dev=$device + fi + + if [[ -b $dev ]]; then + device=$dev + break + else + echo "[E] Disk $dev does not exist" + fi + done +fi + +echo "[I] Deploying on disk ${device}" + +if [[ -z $no_confirm ]]; then + read -e -r -p "Deploy host?" deploy + echo "$deploy" > /dev/null +fi + +echo "[I] Formatting disk" + +if [[ ! -b $device ]]; then + echo "Disk $device does not exist" exit 1 fi echo "[I] Using ${device}" -parted --script $device mklabel gpt -parted --script $device disk_set pmbr_boot on +parted --script "$device" mklabel gpt +parted --script "$device" disk_set pmbr_boot on -parted --script $device mkpart boot 0% 512M -parted --script $device set 1 bios_grub on +parted --script "$device" mkpart boot 0% 512M +parted --script "$device" set 1 bios_grub on -parted --script $device mkpart root 512M 100% +parted --script "$device" mkpart root 512M 100% echo "[I] Creating file system" -mkfs.ext4 -F ${device}2 +mkfs.ext4 -F "${device}2" echo "[I] Mount file system" -mount ${device}2 /mnt +mount "${device}2" /mnt echo "[I] Generate NixOS configuration"