diff --git a/eclass/meson.eclass b/eclass/meson.eclass
new file mode 100644
index 0000000..c9a5e0b
--- /dev/null
+++ b/eclass/meson.eclass
@@ -0,0 +1,429 @@
+# Copyright 2017-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: meson.eclass
+# @MAINTAINER:
+# William Hubbs <williamh@gentoo.org>
+# Mike Gilbert <floppym@gentoo.org>
+# @SUPPORTED_EAPIS: 6 7
+# @BLURB: common ebuild functions for meson-based packages
+# @DESCRIPTION:
+# This eclass contains the default phase functions for packages which
+# use the meson build system.
+#
+# @EXAMPLE:
+# Typical ebuild using meson.eclass:
+#
+# @CODE
+# EAPI=6
+#
+# inherit meson
+#
+# ...
+#
+# src_configure() {
+# 	local emesonargs=(
+# 		$(meson_use qt4)
+# 		$(meson_feature threads)
+# 		$(meson_use bindist official_branding)
+# 	)
+# 	meson_src_configure
+# }
+#
+# ...
+#
+# @CODE
+
+case ${EAPI:-0} in
+	6|7) ;;
+	*) die "EAPI=${EAPI} is not supported" ;;
+esac
+
+if [[ -z ${_MESON_ECLASS} ]]; then
+
+inherit multiprocessing ninja-utils python-utils-r1 toolchain-funcs
+
+if [[ ${EAPI} == 6 ]]; then
+	inherit eapi7-ver
+fi
+
+fi
+
+EXPORT_FUNCTIONS src_configure src_compile src_test src_install
+
+if [[ -z ${_MESON_ECLASS} ]]; then
+_MESON_ECLASS=1
+
+MESON_DEPEND=">=dev-util/meson-0.56.0
+	>=dev-util/ninja-1.8.2
+	dev-util/meson-format-array
+"
+
+if [[ ${EAPI:-0} == [6] ]]; then
+	DEPEND=${MESON_DEPEND}
+else
+	BDEPEND=${MESON_DEPEND}
+fi
+
+# @ECLASS-VARIABLE: BUILD_DIR
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Build directory, location where all generated files should be placed.
+# If this isn't set, it defaults to ${WORKDIR}/${P}-build.
+
+# @ECLASS-VARIABLE: EMESON_SOURCE
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# The location of the source files for the project; this is the source
+# directory to pass to meson.
+# If this isn't set, it defaults to ${S}
+
+# @VARIABLE: emesonargs
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Optional meson arguments as Bash array; this should be defined before
+# calling meson_src_configure.
+
+# @VARIABLE: emesontestargs
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Optional meson test arguments as Bash array; this should be defined before
+# calling meson_src_test.
+
+# @VARIABLE: MYMESONARGS
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# User-controlled environment variable containing arguments to be passed to
+# meson in meson_src_configure.
+
+# @FUNCTION: _meson_env_array
+# @INTERNAL
+# @DESCRIPTION:
+# Parses the command line flags and converts them into an array suitable for
+# use in a cross file.
+#
+# Input: --single-quote=\' --double-quote=\" --dollar=\$ --backtick=\`
+#        --backslash=\\ --full-word-double="Hello World"
+#        --full-word-single='Hello World'
+#        --full-word-backslash=Hello\ World
+#        --simple --unicode-8=© --unicode-16=𐐷 --unicode-32=𐤅
+#
+# Output: ['--single-quote=\'', '--double-quote="', '--dollar=$',
+#          '--backtick=`', '--backslash=\\', '--full-word-double=Hello World',
+#          '--full-word-single=Hello World',
+#          '--full-word-backslash=Hello World', '--simple', '--unicode-8=©',
+#          '--unicode-16=𐐷', '--unicode-32=𐤅']
+#
+_meson_env_array() {
+	meson-format-array "$@"
+}
+
+# @FUNCTION: _meson_get_machine_info
+# @USAGE: <tuple>
+# @RETURN: system/cpu_family/cpu variables
+# @INTERNAL
+# @DESCRIPTION:
+# Translate toolchain tuple into machine values for meson.
+_meson_get_machine_info() {
+	local tuple=$1
+
+	# system roughly corresponds to uname -s (lowercase)
+	case ${tuple} in
+		*-aix*)          system=aix ;;
+		*-cygwin*)       system=cygwin ;;
+		*-darwin*)       system=darwin ;;
+		*-freebsd*)      system=freebsd ;;
+		*-linux*)        system=linux ;;
+		mingw*|*-mingw*) system=windows ;;
+		*-solaris*)      system=sunos ;;
+	esac
+
+	cpu_family=$(tc-arch "${tuple}")
+	case ${cpu_family} in
+		amd64) cpu_family=x86_64 ;;
+		arm64) cpu_family=aarch64 ;;
+		riscv)
+			case ${tuple} in
+				riscv32*) cpu_family=riscv32 ;;
+				riscv64*) cpu_family=riscv64 ;;
+			esac ;;
+	esac
+
+	# This may require adjustment based on CFLAGS
+	cpu=${tuple%%-*}
+}
+
+# @FUNCTION: _meson_create_cross_file
+# @RETURN: path to cross file
+# @INTERNAL
+# @DESCRIPTION:
+# Creates a cross file. meson uses this to define settings for
+# cross-compilers. This function is called from meson_src_configure.
+_meson_create_cross_file() {
+	local system cpu_family cpu
+	_meson_get_machine_info "${CHOST}"
+
+	local fn=${T}/meson.${CHOST}.${ABI}.ini
+
+	cat > "${fn}" <<-EOF
+	[binaries]
+	ar = $(_meson_env_array "$(tc-getAR)")
+	c = $(_meson_env_array "$(tc-getCC)")
+	cpp = $(_meson_env_array "$(tc-getCXX)")
+	fortran = $(_meson_env_array "$(tc-getFC)")
+	llvm-config = '$(tc-getPROG LLVM_CONFIG llvm-config)'
+	nm = $(_meson_env_array "$(tc-getNM)")
+	objc = $(_meson_env_array "$(tc-getPROG OBJC cc)")
+	objcopy = $(_meson_env_array "$(tc-getOBJCOPY)")
+	objcpp = $(_meson_env_array "$(tc-getPROG OBJCXX c++)")
+	pkgconfig = '$(tc-getPKG_CONFIG)'
+	strip = $(_meson_env_array "$(tc-getSTRIP)")
+	windres = $(_meson_env_array "$(tc-getRC)")
+
+	[built-in options]
+	c_args = $(_meson_env_array "${CFLAGS} ${CPPFLAGS}")
+	c_link_args = $(_meson_env_array "${CFLAGS} ${LDFLAGS}")
+	cpp_args = $(_meson_env_array "${CXXFLAGS} ${CPPFLAGS}")
+	cpp_link_args = $(_meson_env_array "${CXXFLAGS} ${LDFLAGS}")
+	fortran_args = $(_meson_env_array "${FCFLAGS}")
+	fortran_link_args = $(_meson_env_array "${FCFLAGS} ${LDFLAGS}")
+	objc_args = $(_meson_env_array "${OBJCFLAGS} ${CPPFLAGS}")
+	objc_link_args = $(_meson_env_array "${OBJCFLAGS} ${LDFLAGS}")
+	objcpp_args = $(_meson_env_array "${OBJCXXFLAGS} ${CPPFLAGS}")
+	objcpp_link_args = $(_meson_env_array "${OBJCXXFLAGS} ${LDFLAGS}")
+
+	[properties]
+	needs_exe_wrapper = true
+	sys_root = '${SYSROOT}'
+	pkg_config_libdir = '${PKG_CONFIG_LIBDIR:-${EPREFIX}/usr/$(get_libdir)/pkgconfig}'
+
+	[host_machine]
+	system = '${system}'
+	cpu_family = '${cpu_family}'
+	cpu = '${cpu}'
+	endian = '$(tc-endian "${CHOST}")'
+	EOF
+
+	echo "${fn}"
+}
+
+# @FUNCTION: _meson_create_native_file
+# @RETURN: path to native file
+# @INTERNAL
+# @DESCRIPTION:
+# Creates a native file. meson uses this to define settings for
+# native compilers. This function is called from meson_src_configure.
+_meson_create_native_file() {
+	local system cpu_family cpu
+	_meson_get_machine_info "${CBUILD}"
+
+	local fn=${T}/meson.${CBUILD}.${ABI}.ini
+
+	cat > "${fn}" <<-EOF
+	[binaries]
+	ar = $(_meson_env_array "$(tc-getBUILD_AR)")
+	c = $(_meson_env_array "$(tc-getBUILD_CC)")
+	cpp = $(_meson_env_array "$(tc-getBUILD_CXX)")
+	fortran = $(_meson_env_array "$(tc-getBUILD_PROG FC gfortran)")
+	llvm-config = '$(tc-getBUILD_PROG LLVM_CONFIG llvm-config)'
+	nm = $(_meson_env_array "$(tc-getBUILD_NM)")
+	objc = $(_meson_env_array "$(tc-getBUILD_PROG OBJC cc)")
+	objcopy = $(_meson_env_array "$(tc-getBUILD_OBJCOPY)")
+	objcpp = $(_meson_env_array "$(tc-getBUILD_PROG OBJCXX c++)")
+	pkgconfig = '$(tc-getBUILD_PKG_CONFIG)'
+	strip = $(_meson_env_array "$(tc-getBUILD_STRIP)")
+	windres = $(_meson_env_array "$(tc-getBUILD_PROG RC windres)")
+
+	[built-in options]
+	c_args = $(_meson_env_array "${BUILD_CFLAGS} ${BUILD_CPPFLAGS}")
+	c_link_args = $(_meson_env_array "${BUILD_CFLAGS} ${BUILD_LDFLAGS}")
+	cpp_args = $(_meson_env_array "${BUILD_CXXFLAGS} ${BUILD_CPPFLAGS}")
+	cpp_link_args = $(_meson_env_array "${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}")
+	fortran_args = $(_meson_env_array "${BUILD_FCFLAGS}")
+	fortran_link_args = $(_meson_env_array "${BUILD_FCFLAGS} ${BUILD_LDFLAGS}")
+	objc_args = $(_meson_env_array "${BUILD_OBJCFLAGS} ${BUILD_CPPFLAGS}")
+	objc_link_args = $(_meson_env_array "${BUILD_OBJCFLAGS} ${BUILD_LDFLAGS}")
+	objcpp_args = $(_meson_env_array "${BUILD_OBJCXXFLAGS} ${BUILD_CPPFLAGS}")
+	objcpp_link_args = $(_meson_env_array "${BUILD_OBJCXXFLAGS} ${BUILD_LDFLAGS}")
+
+	[properties]
+	needs_exe_wrapper = false
+	pkg_config_libdir = '${BUILD_PKG_CONFIG_LIBDIR:-${EPREFIX}/usr/$(get_libdir)/pkgconfig}'
+
+	[build_machine]
+	system = '${system}'
+	cpu_family = '${cpu_family}'
+	cpu = '${cpu}'
+	endian = '$(tc-endian "${CBUILD}")'
+	EOF
+
+	echo "${fn}"
+}
+
+# @FUNCTION: meson_use
+# @USAGE: <USE flag> [option name]
+# @DESCRIPTION:
+# Given a USE flag and meson project option, outputs a string like:
+#
+#   -Doption=true
+#   -Doption=false
+#
+# If the project option is unspecified, it defaults to the USE flag.
+meson_use() {
+	usex "$1" "-D${2-$1}=true" "-D${2-$1}=false"
+}
+
+# @FUNCTION: meson_feature
+# @USAGE: <USE flag> [option name]
+# @DESCRIPTION:
+# Given a USE flag and meson project option, outputs a string like:
+#
+#   -Doption=enabled
+#   -Doption=disabled
+#
+# If the project option is unspecified, it defaults to the USE flag.
+meson_feature() {
+	usex "$1" "-D${2-$1}=enabled" "-D${2-$1}=disabled"
+}
+
+# @FUNCTION: meson_src_configure
+# @USAGE: [extra meson arguments]
+# @DESCRIPTION:
+# This is the meson_src_configure function.
+meson_src_configure() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local BUILD_CFLAGS=${BUILD_CFLAGS}
+	local BUILD_CPPFLAGS=${BUILD_CPPFLAGS}
+	local BUILD_CXXFLAGS=${BUILD_CXXFLAGS}
+	local BUILD_FCFLAGS=${BUILD_FCFLAGS}
+	local BUILD_OBJCFLAGS=${BUILD_OBJCFLAGS}
+	local BUILD_OBJCXXFLAGS=${BUILD_OBJCXXFLAGS}
+	local BUILD_LDFLAGS=${BUILD_LDFLAGS}
+	local BUILD_PKG_CONFIG_LIBDIR=${BUILD_PKG_CONFIG_LIBDIR}
+	local BUILD_PKG_CONFIG_PATH=${BUILD_PKG_CONFIG_PATH}
+
+	if tc-is-cross-compiler; then
+		: ${BUILD_CFLAGS:=-O1 -pipe}
+		: ${BUILD_CXXFLAGS:=-O1 -pipe}
+		: ${BUILD_FCFLAGS:=-O1 -pipe}
+		: ${BUILD_OBJCFLAGS:=-O1 -pipe}
+		: ${BUILD_OBJCXXFLAGS:=-O1 -pipe}
+	else
+		: ${BUILD_CFLAGS:=${CFLAGS}}
+		: ${BUILD_CPPFLAGS:=${CPPFLAGS}}
+		: ${BUILD_CXXFLAGS:=${CXXFLAGS}}
+		: ${BUILD_FCFLAGS:=${FCFLAGS}}
+		: ${BUILD_LDFLAGS:=${LDFLAGS}}
+		: ${BUILD_OBJCFLAGS:=${OBJCFLAGS}}
+		: ${BUILD_OBJCXXFLAGS:=${OBJCXXFLAGS}}
+		: ${BUILD_PKG_CONFIG_LIBDIR:=${PKG_CONFIG_LIBDIR}}
+		: ${BUILD_PKG_CONFIG_PATH:=${PKG_CONFIG_PATH}}
+	fi
+
+	local mesonargs=(
+		meson setup
+		--buildtype plain
+		--libdir "$(get_libdir)"
+		--localstatedir "${EPREFIX}/var/lib"
+		--prefix "${EPREFIX}/usr"
+		--sysconfdir "${EPREFIX}/etc"
+		--wrap-mode nodownload
+		--build.pkg-config-path "${BUILD_PKG_CONFIG_PATH}${BUILD_PKG_CONFIG_PATH:+:}${EPREFIX}/usr/share/pkgconfig"
+		--pkg-config-path "${PKG_CONFIG_PATH}${PKG_CONFIG_PATH:+:}${EPREFIX}/usr/share/pkgconfig"
+		--native-file "$(_meson_create_native_file)"
+	)
+
+	if tc-is-cross-compiler; then
+		mesonargs+=( --cross-file "$(_meson_create_cross_file)" )
+	fi
+
+	BUILD_DIR="${BUILD_DIR:-${WORKDIR}/${P}-build}"
+
+	# Handle quoted whitespace
+	eval "local -a MYMESONARGS=( ${MYMESONARGS} )"
+
+	mesonargs+=(
+		# Arguments from ebuild
+		"${emesonargs[@]}"
+
+		# Arguments passed to this function
+		"$@"
+
+		# Arguments from user
+		"${MYMESONARGS[@]}"
+
+		# Source directory
+		"${EMESON_SOURCE:-${S}}"
+
+		# Build directory
+		"${BUILD_DIR}"
+	)
+
+	# Used by symbolextractor.py
+	# https://bugs.gentoo.org/717720
+	tc-export NM
+	tc-getPROG READELF readelf >/dev/null
+
+	# https://bugs.gentoo.org/625396
+	python_export_utf8_locale
+
+	# https://bugs.gentoo.org/721786
+	local -x BOOST_INCLUDEDIR="${BOOST_INCLUDEDIR-${EPREFIX}/usr/include}"
+	local -x BOOST_LIBRARYDIR="${BOOST_LIBRARYDIR-${EPREFIX}/usr/$(get_libdir)}"
+
+	(
+		export -n {C,CPP,CXX,F,OBJC,OBJCXX,LD}FLAGS PKG_CONFIG_{LIBDIR,PATH}
+		echo "${mesonargs[@]}" >&2
+		"${mesonargs[@]}"
+	) || die
+}
+
+# @FUNCTION: meson_src_compile
+# @USAGE: [extra ninja arguments]
+# @DESCRIPTION:
+# This is the meson_src_compile function.
+meson_src_compile() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	eninja -C "${BUILD_DIR}" "$@"
+}
+
+# @FUNCTION: meson_src_test
+# @USAGE: [extra meson test arguments]
+# @DESCRIPTION:
+# This is the meson_src_test function.
+meson_src_test() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local mesontestargs=(
+		-C "${BUILD_DIR}"
+	)
+	[[ -n ${NINJAOPTS} || -n ${MAKEOPTS} ]] &&
+		mesontestargs+=(
+			--num-processes "$(makeopts_jobs ${NINJAOPTS:-${MAKEOPTS}})"
+		)
+
+	# Append additional arguments from ebuild
+	mesontestargs+=("${emesontestargs[@]}")
+
+	set -- meson test "${mesontestargs[@]}" "$@"
+	echo "$@" >&2
+	"$@" || die "tests failed"
+}
+
+# @FUNCTION: meson_src_install
+# @USAGE: [extra ninja install arguments]
+# @DESCRIPTION:
+# This is the meson_src_install function.
+meson_src_install() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	DESTDIR="${D}" eninja -C "${BUILD_DIR}" install "$@"
+
+	pushd "${S}" > /dev/null || die
+	einstalldocs
+	popd > /dev/null || die
+}
+
+fi
diff --git a/profiles/base/accounts/group/bluetooth-audio b/profiles/base/accounts/group/bluetooth-audio
new file mode 100644
index 0000000..7db8fe7
--- /dev/null
+++ b/profiles/base/accounts/group/bluetooth-audio
@@ -0,0 +1,4 @@
+group:bluetooth-audio
+gid:423
+# Users to access the domain socket for bluetooth audio data.
+users:bluetooth,cras
diff --git a/profiles/base/accounts/group/crosvm-root b/profiles/base/accounts/group/crosvm-root
new file mode 100644
index 0000000..db024f3
--- /dev/null
+++ b/profiles/base/accounts/group/crosvm-root
@@ -0,0 +1,2 @@
+group:crosvm-root
+gid:20182
diff --git a/profiles/base/accounts/group/disk b/profiles/base/accounts/group/disk
index 9ce306f..3d0ee1f 100644
--- a/profiles/base/accounts/group/disk
+++ b/profiles/base/accounts/group/disk
@@ -1,3 +1,3 @@
 group:disk
 gid:6
-users:root,adm,cros-disks,cros_healthd,image-burner
+users:root,adm,cros-disks,cros_healthd,image-burner,fwupd
diff --git a/profiles/base/accounts/group/policy-readers b/profiles/base/accounts/group/policy-readers
index 075b4c0..7371f2c 100644
--- a/profiles/base/accounts/group/policy-readers
+++ b/profiles/base/accounts/group/policy-readers
@@ -1,4 +1,4 @@
-# Members have read access to the device policy in /var/lib/whitelist.
+# Members have read access to the device policy in /var/lib/devicesettings.
 group:policy-readers
 gid:303
 users:attestation,authpolicyd,chronos,hardware_verifier,u2f,shill
diff --git a/profiles/base/accounts/group/pstore-access b/profiles/base/accounts/group/pstore-access
new file mode 100644
index 0000000..b11e3b5
--- /dev/null
+++ b/profiles/base/accounts/group/pstore-access
@@ -0,0 +1,3 @@
+group:pstore-access
+gid:422
+users:debugd,oobe_config_restore
diff --git a/profiles/base/accounts/group/spaced b/profiles/base/accounts/group/spaced
new file mode 100644
index 0000000..4095bea
--- /dev/null
+++ b/profiles/base/accounts/group/spaced
@@ -0,0 +1,3 @@
+group:spaced
+gid:20181
+users:spaced
diff --git a/profiles/base/accounts/group/video b/profiles/base/accounts/group/video
index 1c41640..09f5c49 100644
--- a/profiles/base/accounts/group/video
+++ b/profiles/base/accounts/group/video
@@ -1,3 +1,3 @@
 group:video
 gid:27
-users:root,chronos,arc-camera,dlm,rtanalytics,crosvm,cfm-monitor,runtime_probe,smdisplay,cdm-oemcrypto
+users:root,chronos,arc-camera,dlm,rtanalytics,crosvm,cfm-monitor,runtime_probe,smdisplay,cdm-oemcrypto,cros_healthd
diff --git a/profiles/base/accounts/user/crosvm-root b/profiles/base/accounts/user/crosvm-root
new file mode 100644
index 0000000..06df005
--- /dev/null
+++ b/profiles/base/accounts/user/crosvm-root
@@ -0,0 +1,6 @@
+user:crosvm-root
+uid:20182
+gid:20182
+gecos:Root of the concierge user namespace
+home:/dev/null
+shell:/bin/false
diff --git a/profiles/base/accounts/user/spaced b/profiles/base/accounts/user/spaced
new file mode 100644
index 0000000..f28b055
--- /dev/null
+++ b/profiles/base/accounts/user/spaced
@@ -0,0 +1,6 @@
+user:spaced
+uid:20181
+gid:20181
+gecos:spaced provides disk usage information and will inform disk clean-up operations for other daemons
+home:/dev/null
+shell:/bin/false
