diff --git a/srcpkgs/firefox/patches/firefox-i686-build.patch b/srcpkgs/firefox/patches/firefox-i686-build.patch
new file mode 100644
index 00000000000..01561761df9
--- /dev/null
+++ b/srcpkgs/firefox/patches/firefox-i686-build.patch
@@ -0,0 +1,14 @@
+https://src.fedoraproject.org/rpms/firefox/blob/rawhide/f/firefox-i686-build.patch
+
+diff -up firefox-105.0/mozglue/misc/SIMD_avx2.cpp.old firefox-105.0/mozglue/misc/SIMD_avx2.cpp
+--- firefox-105.0/mozglue/misc/SIMD_avx2.cpp.old	2022-09-22 21:35:07.006221995 +0200
++++ firefox-105.0/mozglue/misc/SIMD_avx2.cpp	2022-09-22 21:36:12.972480517 +0200
+@@ -55,7 +55,7 @@ __m256i CmpEq256(__m256i a, __m256i b) {
+   return _mm256_cmpeq_epi64(a, b);
+ }
+ 
+-#  if defined(__GNUC__) && !defined(__clang__)
++#  if 0
+ 
+ // See the comment in SIMD.cpp over Load32BitsIntoXMM. This is just adapted
+ // from that workaround. Testing this, it also yields the correct instructions
diff --git a/srcpkgs/firefox/patches/fix-i386-fdlibm.patch b/srcpkgs/firefox/patches/fix-i386-fdlibm.patch
new file mode 100644
index 00000000000..de719056eb0
--- /dev/null
+++ b/srcpkgs/firefox/patches/fix-i386-fdlibm.patch
@@ -0,0 +1,19 @@
+--- a/modules/fdlibm/src/math_private.h
++++ b/modules/fdlibm/src/math_private.h
+@@ -30,9 +30,15 @@
+  * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+  */
+ 
++#if defined(__linux__) && defined(__i386__) && !defined(__clang__)
++// rely on glibc's double_t
++typedef long double __double_t;
++typedef long double __float_t;
++#else
+ typedef double      __double_t;
+-typedef __double_t  double_t;
+ typedef float       __float_t;
++#endif
++typedef __double_t  double_t;
+ typedef __float_t   float_t;
+ 
+ /*
diff --git a/srcpkgs/firefox/patches/fix-i686-build-moz-1792159.patch b/srcpkgs/firefox/patches/fix-i686-build-moz-1792159.patch
new file mode 100644
index 00000000000..592dcad93eb
--- /dev/null
+++ b/srcpkgs/firefox/patches/fix-i686-build-moz-1792159.patch
@@ -0,0 +1,18 @@
+--- a/js/src/jit/shared/AtomicOperations-shared-jit.cpp
++++ b/js/src/jit/shared/AtomicOperations-shared-jit.cpp
+@@ -5,4 +5,9 @@
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
++// bug 1792159
++#if defined(__i386__) && defined(__GNUC__) && !defined(__clang__)
++#  include "../../../mfbt/Attributes.h"
++#endif
++
+ #include "jit/AtomicOperations.h"
+ 
+--- a/config/check_spidermonkey_style.py
++++ b/config/check_spidermonkey_style.py
+@@ -68,2 +68,3 @@
+         "jit/AtomicOperationsGenerated.h",  # generated in $OBJDIR
++        "../../../mfbt/Attributes.h",  # unrecognized path
+         "jit/CacheIROpsGenerated.h",  # generated in $OBJDIR
diff --git a/srcpkgs/firefox/template b/srcpkgs/firefox/template
index 3a689c0b2a6..13c6d4c9c9f 100644
--- a/srcpkgs/firefox/template
+++ b/srcpkgs/firefox/template
@@ -3,7 +3,7 @@
 # THIS PKG MUST BE SYNCHRONIZED WITH "srcpkgs/firefox-i18n".
 #
 pkgname=firefox
-version=105.0
+version=105.0.1
 revision=1
 build_helper="rust"
 short_desc="Mozilla Firefox web browser"
@@ -11,7 +11,7 @@ maintainer="Duncaen <duncaen@voidlinux.org>"
 license="MPL-2.0, GPL-2.0-or-later, LGPL-2.1-or-later"
 homepage="https://www.mozilla.org/firefox/"
 distfiles="${MOZILLA_SITE}/${pkgname}/releases/${version}/source/${pkgname}-${version}.source.tar.xz"
-checksum=2b5becbb89aa2b2007ba8c86ad517aeae1b54904d007d9d3acbf054be6a0ed62
+checksum=70ecea0d26242d0c3613b9524405d72a22b52ae346072ac229a58c48634975cd
 
 lib32disabled=yes
 
@@ -27,16 +27,16 @@ makedepends="nss-devel libjpeg-turbo-devel gtk+3-devel icu-devel
 depends="nss>=3.72 nspr>=4.32 desktop-file-utils hicolor-icon-theme"
 conflicts="firefox-esr>=0"
 
-build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland lto"
-build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland"
+build_options="alsa jack dbus pulseaudio xscreensaver sndio wayland lto clang"
+build_options_default="alsa jack dbus pulseaudio xscreensaver sndio wayland clang"
 
 desc_option_lto="Enable Link Time Optimization"
+desc_option_clang="Build with clang"
 
 case $XBPS_TARGET_MACHINE in
 	armv[56]*) broken="required NEON extensions are not supported on armv6" ;;
 	ppc64*) ;;
 	ppc*) broken="xptcall bitrot" ;;
-	# armv7*) broken="https://build.voidlinux.org/builders/armv7l_builder/builds/39410/steps/shell_3/logs/stdio" ;;
 esac
 
 # we need this because cargo verifies checksums of all files in vendor
@@ -63,57 +63,60 @@ post_patch() {
 }
 
 do_build() {
-	export CC=clang
-	export CXX=clang++
+	if [ "$build_option_clang" ]; then
+		export CC=clang
+		export CXX=clang++
 
-	if [ "$CROSS_BUILD" ]; then
-		mkdir -p wrapper
+		if [ "$CROSS_BUILD" ]; then
+			mkdir -p wrapper
 
-		local gcc_version=$(gcc -dumpversion)
-		local clang_version=$(clang -dumpversion)
+			local gcc_version=$(gcc -dumpversion)
+			local clang_version=$(clang -dumpversion)
 
-		cat <<-! >"wrapper/${XBPS_TARGET_MACHINE}-clang"
-		#!/bin/sh
-		exec clang \
-			--target="${XBPS_CROSS_TRIPLET}" \
-			--gcc-toolchain=/usr \
-			--sysroot="${XBPS_CROSS_BASE}" \
-			-nostdinc \
-			-isystem "${XBPS_CROSS_BASE}/usr/include" \
-			-isystem "/usr/lib/clang/${clang_version}/include" \
-			"\$@"
-		!
+			cat <<-! >"wrapper/${XBPS_TARGET_MACHINE}-clang"
+			#!/bin/sh
+			exec clang \
+				--target="${XBPS_CROSS_TRIPLET}" \
+				--gcc-toolchain=/usr \
+				--sysroot="${XBPS_CROSS_BASE}" \
+				-nostdinc \
+				-isystem "${XBPS_CROSS_BASE}/usr/include" \
+				-isystem "/usr/lib/clang/${clang_version}/include" \
+				"\$@"
+			!
 
-		cat <<-! >"wrapper/${XBPS_TARGET_MACHINE}-clang++"
-		#!/bin/sh
-		exec clang++ \
-			--target="${XBPS_CROSS_TRIPLET}" \
-			--gcc-toolchain=/usr \
-			--sysroot="${XBPS_CROSS_BASE}" \
-			-nostdinc++ \
-			-isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}" \
-			-isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}" \
-			-isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward" \
-			-nostdinc \
-			-isystem "${XBPS_CROSS_BASE}/usr/include" \
-			-isystem "/usr/lib/clang/${clang_version}/include" \
-			"\$@"
-		!
+			cat <<-! >"wrapper/${XBPS_TARGET_MACHINE}-clang++"
+			#!/bin/sh
+			exec clang++ \
+				--target="${XBPS_CROSS_TRIPLET}" \
+				--gcc-toolchain=/usr \
+				--sysroot="${XBPS_CROSS_BASE}" \
+				-nostdinc++ \
+				-isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}" \
+				-isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/${XBPS_CROSS_TRIPLET}" \
+				-isystem "${XBPS_CROSS_BASE}/usr/include/c++/${gcc_version%.*}/backward" \
+				-nostdinc \
+				-isystem "${XBPS_CROSS_BASE}/usr/include" \
+				-isystem "/usr/lib/clang/${clang_version}/include" \
+				"\$@"
+			!
 
-		chmod +x wrapper/*
+			chmod +x wrapper/*
 
-		export PATH="${wrksrc}/wrapper:$PATH"
-		export CC=${XBPS_TARGET_MACHINE}-clang
-		export CXX=${XBPS_TARGET_MACHINE}-clang++
+			export PATH="${wrksrc}/wrapper:$PATH"
+			export CC=${XBPS_TARGET_MACHINE}-clang
+			export CXX=${XBPS_TARGET_MACHINE}-clang++
+		fi
+
+		export AR=llvm-ar
+		export NM=llvm-nm
+		export HOST_CC=clang
+		export HOST_CXX=clang++
 	fi
 
-	export AR=llvm-ar
-	export NM=llvm-nm
 	export AS="${CC}"
-	export CFLAGS="-O2 -fno-plt"
-	export CXXFLAGS="-O2 -fno-plt"
-	export HOST_CC=clang
-	export HOST_CXX=clang++
+	export CFLAGS="-O2"
+	export CXXFLAGS="-O2"
 	export HOST_CFLAGS=""
 	export HOST_CXXFLAGS=""
 	export LDFLAGS="-Wl,-rpath=/usr/lib/firefox"
@@ -157,9 +160,9 @@ do_build() {
 	ac_add_options --libdir=/usr/lib
 	ac_add_options --host=${XBPS_TRIPLET}
 	ac_add_options --target=${XBPS_CROSS_TRIPLET:-${XBPS_TRIPLET}}
-	ac_add_options --enable-linker=lld
+	ac_add_options --enable-linker=$(vopt_if clang lld bfd)
 	$(vopt_if lto 'ac_add_options --enable-lto=cross')
-	ac_add_options --with-libclang-path=/usr/lib
+	$(vopt_if clang 'ac_add_options --with-libclang-path=/usr/lib')
 
 	ac_add_options --enable-official-branding
 	ac_add_options --enable-application=browser
@@ -216,9 +219,6 @@ do_build() {
 		echo "ac_add_options --disable-debug-symbols" >>.mozconfig
 		echo "ac_add_options --disable-debug" >>.mozconfig
 		export LDFLAGS+=" -Wl,--no-keep-memory"
-		# patch the rust debug level, this is hardcoded
-		vsed -i 's/debug_info = "2"/debug_info = "0"/' \
-			build/moz.configure/toolchain.configure
 	fi
 
 	if [ "$SOURCE_DATE_EPOCH" ]; then