pkgs/nixfiles: make nixfiles-auto-install interactive
This commit is contained in:
		| @@ -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" | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user