I can think of 2 ways:
Accept an option like -t <argument>
Where argument can be desktop
or minimal
So your script will be called as:
./scriptname.sh -t desktop -n
OR
./scriptname.sh -t minimal -n
Another alternative is to enforce validation inside your script as this:
headless=
buildtype=
while getopts 'mdnh' flag; do
case "$flag" in
m) [ -n "$buildtype" ] && usage || buildtype='minimal' ;;
d) [ -n "$buildtype" ] && usage || buildtype='desktop' ;;
n) headless=1 ;;
h) usage ;;
\?) usage ;;
*) usage ;;
esac
done