#!/usr/bin/env bash # Print available devices excluding loop devices echo "Available devices:" lsblk -d -o NAME,SIZE,TYPE | grep disk echo "" # Prompt user for device echo "Enter the device to use for the ZFS pool (e.g., /dev/sdb):" read device # Confirm the device is not in use if mount | grep "$device"; then echo "Error: $device is already mounted. Exiting..." exit 1 fi # Ask for confirmation, since this script will destroy all data on the device echo "This script will destroy all data on $device. Are you sure you want to continue? (y/n)" read confirm if [ "$confirm" != "y" ]; then echo "Exiting..." exit 1 fi # Create ZFS pool sudo zpool create -f datapool "$device" # Check if this went well if [ $? -ne 0 ]; then echo "Error creating ZFS pool. Exiting..." exit 1 fi # Create datasets with mountpoint=legacy datasets=( isos vms ai downloads services audiobooks music photos movies tv_shows # old_backups ) for dataset in "${datasets[@]}"; do sudo zfs create -o mountpoint=legacy datapool/"$dataset" done zfs list echo "" echo "ZFS datasets created successfully." echo "You can now run \`dotf update\` and it should start mounting the datasets." echo ""