diff --git a/extra/firefox/PKGBUILD b/extra/firefox/PKGBUILD
index 6ebc54262..7fcdfdb18 100644
--- a/extra/firefox/PKGBUILD
+++ b/extra/firefox/PKGBUILD
@@ -11,14 +11,14 @@ buildarch=12
 highmem=1
 
 pkgname=firefox
-pkgver=57.0.4
+pkgver=58.0
 pkgrel=1
 pkgdesc="Standalone web browser from mozilla.org"
 arch=(x86_64)
 license=(MPL GPL LGPL)
 url="https://www.mozilla.org/firefox/"
 depends=(gtk3 gtk2 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg
-         nss hunspell sqlite ttf-font libpulse)
+         nss hunspell sqlite ttf-font libpulse libvpx icu)
 makedepends=(unzip zip diffutils python2 yasm mesa imake gconf inetutils xorg-server-xvfb
              autoconf2.13 rust mercurial clang llvm jack)
 optdepends=('networkmanager: Location detection via available WiFi networks'
@@ -28,19 +28,12 @@ optdepends=('networkmanager: Location detection via available WiFi networks'
 options=(!emptydirs !makeflags !strip)
 source=(https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz
         $pkgname.desktop firefox-symbolic.svg
-        0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch
-        0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch
-        wifi-disentangle.patch wifi-fix-interface.patch
-        firefox-install-dir.patch no-plt.diff)
-sha256sums=('97cced69abfd5c57d968f0095631f86beff4f7b61883edd5a4f207e7f9c43b33'
+        firefox-install-dir.patch no-crmf.diff)
+sha256sums=('0e0a39caabf94d7467d8bb4008fa9e7340a7be57b8c78ccf0cf98791a3bfaaff'
             '677e1bde4c6b3cff114345c211805c7c43085038ca0505718a11e96432e9811a'
             'a2474b32b9b2d7e0fb53a4c89715507ad1c194bef77713d798fa39d507def9e9'
-            'd45c97782a77e7c5ebacfa7b983019f6bb831794d3c707abbe3bb01cddb80f72'
-            '52c56c33f7ab98232d9c0644965f149da9b7266f607c84b80aca8a5534cee3bb'
-            'f068b84ad31556095145d8fefc012dd3d1458948533ed3fff6cbc7250b6e73ed'
-            'e98a3453d803cc7ddcb81a7dc83f883230dd8591bdf936fc5a868428979ed1f1'
             'a94f80abe65608cd49054a30acc31e4d0885fe5b2a38cf08ded5e5b51b87c99d'
-            'ea8e1b871c0f1dd29cdea1b1a2e7f47bf4713e2ae7b947ec832dba7dfcc67daa')
+            'fb85a538044c15471c12cf561d6aa74570f8de7b054a7063ef88ee1bdfc1ccbb')
 
 # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
 # Note: These are for Arch Linux use ONLY. For your own distribution, please
@@ -62,18 +55,8 @@ prepare() {
   cd $pkgname-$pkgver
   patch -Np1 -i ../firefox-install-dir.patch
 
-  # https://bugzilla.mozilla.org/show_bug.cgi?id=1360278
-  patch -Np1 -i ../0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch
-
-  # https://bugzilla.mozilla.org/show_bug.cgi?id=1419426
-  patch -Np1 -i ../0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch
-
-  # https://bugzilla.mozilla.org/show_bug.cgi?id=1314968
-  patch -Np1 -i ../wifi-disentangle.patch
-  patch -Np1 -i ../wifi-fix-interface.patch
-
-  # https://bugzilla.mozilla.org/show_bug.cgi?id=1382942
-  patch -Np1 -i ../no-plt.diff
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1371991
+  patch -Np1 -i ../no-crmf.diff
 
   echo -n "$_google_api_key" >google-api-key
   echo -n "$_mozilla_api_key" >mozilla-api-key
@@ -106,6 +89,11 @@ ac_add_options --disable-webrtc
 # System libraries
 ac_add_options --with-system-zlib
 ac_add_options --with-system-bz2
+ac_add_options --with-system-icu
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
 ac_add_options --enable-system-hunspell
 ac_add_options --enable-system-sqlite
 ac_add_options --enable-system-ffi
@@ -210,8 +198,4 @@ END
   # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
   ln -srf "$pkgdir/usr/bin/$pkgname" \
     "$pkgdir/usr/lib/$pkgname/firefox-bin"
-
-  # Use system certificates
-  ln -srf "$pkgdir/usr/lib/libnssckbi.so" \
-    "$pkgdir/usr/lib/$pkgname/libnssckbi.so"
 }
diff --git a/extra/firefox/no-crmf.diff b/extra/firefox/no-crmf.diff
new file mode 100644
index 000000000..242304eb4
--- /dev/null
+++ b/extra/firefox/no-crmf.diff
@@ -0,0 +1,15 @@
+diff --git i/old-configure.in w/old-configure.in
+index 0a06e470d2085922..d41c8e9d5dd2dbfb 100644
+--- i/old-configure.in
++++ w/old-configure.in
+@@ -2020,9 +2020,7 @@ if test -n "$_USE_SYSTEM_NSS"; then
+     AM_PATH_NSS(3.31, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+ fi
+ 
+-if test -n "$MOZ_SYSTEM_NSS"; then
+-   NSS_LIBS="$NSS_LIBS -lcrmf"
+-else
++if test -z "$MOZ_SYSTEM_NSS"; then
+    NSS_CFLAGS="-I${DIST}/include/nss"
+    case "${OS_ARCH}" in
+         # Only few platforms have been tested with GYP
diff --git a/extra/firefox/no-plt.diff b/extra/firefox/no-plt.diff
deleted file mode 100644
index 9014f8b79..000000000
--- a/extra/firefox/no-plt.diff
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git i/security/nss/lib/freebl/mpi/mpi_x86.s w/security/nss/lib/freebl/mpi/mpi_x86.s
-index 8f7e2130c3264754..b3ca1ce5b41b3771 100644
---- i/security/nss/lib/freebl/mpi/mpi_x86.s
-+++ w/security/nss/lib/freebl/mpi/mpi_x86.s
-@@ -22,22 +22,41 @@ is_sse: .long	-1
- #
- .ifndef NO_PIC
- .macro GET   var,reg
--    movl   \var@GOTOFF(%ebx),\reg
-+    call   thunk.ax
-+    addl   $_GLOBAL_OFFSET_TABLE_, %eax
-+    movl   \var@GOTOFF(%eax),\reg
- .endm
- .macro PUT   reg,var
--    movl   \reg,\var@GOTOFF(%ebx)
-+    call   thunk.dx
-+    addl   $_GLOBAL_OFFSET_TABLE_, %edx
-+    movl   \reg,\var@GOTOFF(%edx)
- .endm
- .else
- .macro GET   var,reg
-     movl   \var,\reg
- .endm
- .macro PUT   reg,var
-     movl   \reg,\var
- .endm
- .endif
- 
- .text
- 
-+.ifndef NO_PIC
-+.globl	thunk.ax
-+.hidden	thunk.ax
-+.type	thunk.ax, @function
-+thunk.ax:
-+       movl   (%esp),%eax
-+       ret
-+
-+.globl	thunk.dx
-+.hidden	thunk.dx
-+.type	thunk.dx, @function
-+thunk.dx:
-+       movl   (%esp),%edx
-+       ret
-+.endif
- 
-  #  ebp - 36:	caller's esi
-  #  ebp - 32:	caller's edi