_fdisk_module()
{
	local cur prev OPTS
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-s'|'--getsz')
			COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) )
			return 0
			;;
		'-b'|'--sector-size')
			COMPREPLY=( $(compgen -W "512 1024 2048 4096" -- $cur) )
			return 0
			;;
		'-c'|'--compatibility')
			COMPREPLY=( $(compgen -W "dos nondos" -- $cur) )
			return 0
			;;
		'-L'|'--color')
			COMPREPLY=( $(compgen -W "auto never always" -- $cur) )
			return 0
			;;
		'-u'|'--units')
			COMPREPLY=( $(compgen -W "cylinders sectors" -- $cur) )
			return 0
			;;
		'-C'|'--geom-cylinders'|'-H'|'--geom-heads'|'-S'|'--geom-sectors')
			COMPREPLY=( $(compgen -W "number" -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-v'|'--version'|'-V'|'--list')
			return 0
			;;
	esac
	case $cur in
		-*)
			OPTS="--sector-size
				--protect-boot
				--compatibility
				--color
				--list
				--type
				--units
				--getsz
				--geom-cylinders
				--geom-heads
				--geom-sectors
				--help
				--version"
			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
			return 0
			;;
	esac
	COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) )
	return 0
}
complete -F _fdisk_module fdisk
