create_snapshot() {
	local num="$1"
	local desc="$2"
	local important="$3"
	pushd /
	if ! mountpoint -q .snapshots; then
		echo "/.snapshots is not mounted!" >&2
		return 1
	fi
	# we can't use snapper here due to missing dbus daemon in
	# firstboot. So we have to create a snapshot manually.
	#snapper --no-dbus -v create -d "Factory Status" --userdata "important=yes"
	mkdir ".snapshots/$num"
	btrfs subvolume snapshot -r / ".snapshots/$num/snapshot"
	retrofit_snapper_info "$num" "$desc" "$important"
	popd
}

retrofit_snapper_info() {
	local num="$1"
	local desc="$2"
	local important="$3"
	if [ -n "$important" ]; then
		if  [ "$important" = "yes" ]; then
			important="<userdata><key>important</key><value>yes</value></userdata>"
		else
			important=''
		fi
	fi

	now="`date '+%Y-%m-%d %H:%M:%S'`"
	cat > "/.snapshots/$num/info.xml" <<-EOF
	<?xml version="1.0"?>
	<snapshot>
	  <type>single</type>
	  <num>$num</num>
	  <uid>0</uid>
	  <date>$now</date>
	  <description>$desc</description>
	  <cleanup>number</cleanup>
	  $important
	</snapshot>
	EOF
}

kmscon_available() {
    # kmscon itself is installed
    kmscon --help >/dev/null 2>&1 || return 1
    # At least one monospace font is available
    [ -n "$(fc-match "monospace" 2>/dev/null)" ] || return 1

    return 0
}

fbiterm_available() {
    # fbiterm itself is installed
    fbiterm --help >/dev/null 2>&1 || return 1
    # fbiterm comes with its own fallback font

    return 0
}

is_raspberry() {
     grep -q Raspberry /proc/device-tree/model
}

# vim: syntax=sh
