#!/bin/ksh

set -a
set -e

if [ -z "$1" ]; then
  echo Usage: $0 disk.img
  exit 1
fi

IMG="$1"
NAME=`basename "$IMG" .img`
mkdir "$NAME"
mv "$IMG" "$NAME/$NAME-flat.vmdk"
cd "$NAME"

size=`stat -c %s "$NAME-flat.vmdk"`
blocks=`echo $size / 512 | bc`
sectors=63
heads=16
cylinders=`echo $blocks / \($sectors \* $heads\) | bc`

cat > "$NAME.vmdk" <<EOF
# Disk DescriptorFile
version=1
CID=09bc92c3
parentCID=ffffffff
createType="monolithicFlat"

# Extent description
RW $blocks FLAT "$NAME-flat.vmdk" 0

# The Disk Data Base
#DDB

ddb.toolsVersion = "0"
ddb.adapterType = "ide"
ddb.geometry.sectors = "$sectors"
ddb.geometry.heads = "$heads"
ddb.geometry.cylinders = "$cylinders"
ddb.virtualHWVersion = "3"
EOF

cat > "$NAME.vmx" <<EOF
config.version = "7"
virtualHW.version = "3"
scsi0.present = "FALSE"
memsize = "384"
ide0:0.present = "TRUE"
ide0:0.fileName = "$NAME.vmdk"
ide0:0.deviceType = "plainDisk"
ide1:0.present = "TRUE"
ide1:0.fileName = "/tmp/cdrom.iso"
ide1:0.deviceType = "cdrom-image"
floppy0.fileName = "/dev/fd0"
usb.present = "FALSE"
displayName = "$NAME"
guestOS = "freebsd"
priority.grabbed = "normal"
priority.ungrabbed = "normal"
powerType.powerOff = "hard"
powerType.powerOn = "hard"
powerType.suspend = "hard"
powerType.reset = "hard"
Ethernet0.present = "TRUE"
Ethernet0.connectionType = "bridged"
ide1:0.startConnected = "FALSE"
Ethernet0.addressType = "generated"
tools.syncTime = "FALSE"
floppy0.startConnected = "FALSE"
isolation.tools.dnd.disable = "TRUE"
tools.remindInstall = "FALSE"
EOF

chmod +x "$NAME.vmx"

