diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # cpkg
 
+## 0.2.0.0
+
+  * Support more MIPS architectures
+
 ## 0.1.3.1
 
   * Don't install build-tool dependencies globally
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -257,12 +257,12 @@
 -------------------------------------------------------------------------------
  Bash                     3          43           35            3            5
  Cabal                    1         154          140            0           14
- Cabal Project            1           4            3            0            1
- Dhall                    3        4551         4089            0          462
- Haskell                 31        1707         1395           29          283
- Markdown                 3         474          400            0           74
+ Cabal Project            1          10            8            0            2
+ Dhall                    3        4572         4111            1          460
+ Haskell                 31        1728         1415           29          284
+ Markdown                 3         487          407            0           80
  YAML                     4         156          141            0           15
 -------------------------------------------------------------------------------
- Total                   46        7089         6203           32          854
+ Total                   46        7150         6257           33          860
 -------------------------------------------------------------------------------
 ```
diff --git a/cpkg.cabal b/cpkg.cabal
--- a/cpkg.cabal
+++ b/cpkg.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: cpkg
-version: 0.1.3.1
+version: 0.2.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018-2019 Vanessa McHale
@@ -71,7 +71,7 @@
     build-depends:
         base >=4.3 && <5,
         containers >=0.6.0.0,
-        dhall >=1.19.0,
+        dhall >=1.23.0,
         text -any,
         temporary -any,
         bytestring -any,
diff --git a/dhall/cpkg-prelude.dhall b/dhall/cpkg-prelude.dhall
--- a/dhall/cpkg-prelude.dhall
+++ b/dhall/cpkg-prelude.dhall
@@ -1,5 +1,5 @@
 {- Dhall prelude imports -}
-let concatMapSep = https://raw.githubusercontent.com/dhall-lang/dhall-lang/0a7f596d03b3ea760a96a8e03935f4baa64274e1/Prelude/Text/concatMapSep
+let concatMapSep = https://raw.githubusercontent.com/dhall-lang/dhall-lang/master/Prelude/Text/concatMapSep
 in
 
 let concatMapText = https://raw.githubusercontent.com/dhall-lang/dhall-lang/master/Prelude/Text/concatMap
@@ -36,25 +36,29 @@
 let printArch =
   λ(arch : types.Arch) →
     merge
-      { X64         = λ(_ : {}) → "x86_64"
-      , AArch       = λ(_ : {}) → "aarch64"
-      , Arm         = λ(_ : {}) → "arm"
-      , RISCV64     = λ(_ : {}) → "riscv64"
-      , PowerPC     = λ(_ : {}) → "powerpc"
-      , PowerPC64   = λ(_ : {}) → "powerpc64"
-      , PowerPC64le = λ(_ : {}) → "powerpc64le"
-      , Sparc64     = λ(_ : {}) → "sparc64"
-      , S390x       = λ(_ : {}) → "s390x"
-      , Alpha       = λ(_ : {}) → "alpha"
-      , M68k        = λ(_ : {}) → "m68k"
-      , Mips        = λ(_ : {}) → "mips"
-      , MipsEl      = λ(_ : {}) → "mipsel"
-      , Mips64      = λ(_ : {}) → "mips64"
-      , Mips64El    = λ(_ : {}) → "mips64el"
-      , X86         = λ(_ : {}) → "i686"
-      , SH4         = λ(_ : {}) → "sh4"
-      , HPPA        = λ(_ : {}) → "hppa"
-      , HPPA64      = λ(_ : {}) → "hppa64"
+      { X64           = "x86_64"
+      , AArch         = "aarch64"
+      , Arm           = "arm"
+      , RISCV64       = "riscv64"
+      , PowerPC       = "powerpc"
+      , PowerPC64     = "powerpc64"
+      , PowerPC64le   = "powerpc64le"
+      , Sparc64       = "sparc64"
+      , S390x         = "s390x"
+      , Alpha         = "alpha"
+      , M68k          = "m68k"
+      , Mips          = "mips"
+      , MipsEl        = "mipsel"
+      , Mips64        = "mips64"
+      , Mips64El      = "mips64el"
+      , X86           = "i686"
+      , SH4           = "sh4"
+      , HPPA          = "hppa"
+      , HPPA64        = "hppa64"
+      , MipsIsa32r6El = "mipsisa32r6el"
+      , MipsIsa32r6   = "mipsisa32r6"
+      , MipsIsa64r6El = "mipsisa64r6el"
+      , MipsIsa64r6   = "mipsisa64r6"
       }
       arch
 in
@@ -62,10 +66,10 @@
 let printManufacturer =
   λ(x : types.Manufacturer) →
     merge
-      { Unknown = λ(_ : {}) → "unknown"
-      , Apple   = λ(_ : {}) → "apple"
-      , IBM     = λ(_ : {}) → "ibm"
-      , PC      = λ(_ : {}) → "pc"
+      { Unknown = "unknown"
+      , Apple   = "apple"
+      , IBM     = "ibm"
+      , PC      = "pc"
       }
       x
 in
@@ -73,21 +77,21 @@
 let printOS =
   λ(os : types.OS) →
     merge
-      { FreeBSD   = λ(_ : {}) → "freebsd"
-      , OpenBSD   = λ(_ : {}) → "openbsd"
-      , NetBSD    = λ(_ : {}) → "netbsd"
-      , Solaris   = λ(_ : {}) → "solaris"
-      , Dragonfly = λ(_ : {}) → "dragonfly"
-      , Linux     = λ(_ : {}) → "linux"
-      , Darwin    = λ(_ : {}) → "darwin"
-      , Windows   = λ(_ : {}) → "w64"
-      , Redox     = λ(_ : {}) → "redox"
-      , Haiku     = λ(_ : {}) → "haiku"
-      , IOS       = λ(_ : {}) → "darwin"
-      , AIX       = λ(_ : {}) → "aix"
-      , Hurd      = λ(_ : {}) → "hurd"
-      , Android   = λ(_ : {}) → "android"
-      , NoOs      = λ(_ : {}) → "none"
+      { FreeBSD   = "freebsd"
+      , OpenBSD   = "openbsd"
+      , NetBSD    = "netbsd"
+      , Solaris   = "solaris"
+      , Dragonfly = "dragonfly"
+      , Linux     = "linux"
+      , Darwin    = "darwin"
+      , Windows   = "w64"
+      , Redox     = "redox"
+      , Haiku     = "haiku"
+      , IOS       = "darwin"
+      , AIX       = "aix"
+      , Hurd      = "hurd"
+      , Android   = "android"
+      , NoOs      = "none"
       }
       os
 in
@@ -96,12 +100,12 @@
 let printABI =
   λ(os : types.ABI) →
     merge
-      { GNU       = λ(_ : {}) → "gnu"
-      , GNUabi64  = λ(_ : {}) → "gnuabi64"
-      , GNUeabi   = λ(_ : {}) → "gnueabi"
-      , GNUeabihf = λ(_ : {}) → "gnueabihf"
-      , GNUspe    = λ(_ : {}) → "gnuspe"
-      , MinGw     = λ(_ : {}) → "mingw32"
+      { GNU       = "gnu"
+      , GNUabi64  = "gnuabi64"
+      , GNUeabi   = "gnueabi"
+      , GNUeabihf = "gnueabihf"
+      , GNUspe    = "gnuspe"
+      , MinGw     = "mingw32"
       }
       os
 in
@@ -121,27 +125,22 @@
 let makeExe =
   λ(os : types.OS) →
 
-    let gmake = λ(_ : {}) → "gmake"
-    in
-    let make  = λ(_ : {}) → "make"
-    in
-
     merge
-      { FreeBSD   = gmake
-      , OpenBSD   = gmake
-      , NetBSD    = gmake
-      , Solaris   = gmake
-      , Dragonfly = gmake
-      , Linux     = make
-      , Darwin    = make
-      , Windows   = make
-      , Redox     = make
-      , Haiku     = make
-      , IOS       = make
-      , AIX       = make
-      , Hurd      = make
-      , Android   = make
-      , NoOs      = make -- this is bad but it's meaningless in this context
+      { FreeBSD   = "gmake"
+      , OpenBSD   = "gmake"
+      , NetBSD    = "gmake"
+      , Solaris   = "gmake"
+      , Dragonfly = "gmake"
+      , Linux     = "make"
+      , Darwin    = "make"
+      , Windows   = "make"
+      , Redox     = "make"
+      , Haiku     = "make"
+      , IOS       = "make"
+      , AIX       = "make"
+      , Hurd      = "make"
+      , Android   = "make"
+      , NoOs      = "make" -- this is bad but it's meaningless in this context
       }
       os
 in
@@ -204,27 +203,22 @@
 let isUnix =
   λ(os : types.OS) →
 
-    let true = λ(_ : {}) → True
-    in
-    let false = λ(_ : {}) → False
-    in
-
     merge
-      { FreeBSD   = true
-      , OpenBSD   = true
-      , NetBSD    = true
-      , Solaris   = true
-      , Dragonfly = true
-      , Linux     = true
-      , Darwin    = true
-      , Windows   = false
-      , Redox     = false
-      , Haiku     = false
-      , IOS       = true
-      , AIX       = true
-      , Hurd      = true
-      , Android   = true
-      , NoOs      = false -- bad but this should never happen
+      { FreeBSD   = True
+      , OpenBSD   = True
+      , NetBSD    = True
+      , Solaris   = True
+      , Dragonfly = True
+      , Linux     = True
+      , Darwin    = True
+      , Windows   = False
+      , Redox     = False
+      , Haiku     = False
+      , IOS       = True
+      , AIX       = True
+      , Hurd      = True
+      , Android   = True
+      , NoOs      = False -- bad but this should never happen
       }
       os
 in
@@ -509,7 +503,7 @@
 let unbounded =
   λ(x : Text) →
     { name = x
-    , bound = types.VersionBound.NoBound {=}
+    , bound = types.VersionBound.NoBound
     }
 in
 
@@ -570,21 +564,21 @@
 let printCMakeOS =
   λ(os : types.OS) →
     merge
-      { FreeBSD   = λ(_ : {}) → "BSD"
-      , OpenBSD   = λ(_ : {}) → "BSD"
-      , NetBSD    = λ(_ : {}) → "BSD"
-      , Solaris   = λ(_ : {}) → "Solaris"
-      , Dragonfly = λ(_ : {}) → "BSD"
-      , Linux     = λ(_ : {}) → "Linux"
-      , Darwin    = λ(_ : {}) → "Darwin"
-      , Windows   = λ(_ : {}) → "Windows"
-      , Redox     = λ(_ : {}) → "Redox"
-      , Haiku     = λ(_ : {}) → "Haiku"
-      , IOS       = λ(_ : {}) → "Darwin"
-      , AIX       = λ(_ : {}) → "AIX"
-      , Hurd      = λ(_ : {}) → "Hurd"
-      , Android   = λ(_ : {}) → "Android"
-      , NoOs      = λ(_ : {}) → "Generic"
+      { FreeBSD   = "BSD"
+      , OpenBSD   = "BSD"
+      , NetBSD    = "BSD"
+      , Solaris   = "Solaris"
+      , Dragonfly = "BSD"
+      , Linux     = "Linux"
+      , Darwin    = "Darwin"
+      , Windows   = "Windows"
+      , Redox     = "Redox"
+      , Haiku     = "Haiku"
+      , IOS       = "Darwin"
+      , AIX       = "AIX"
+      , Hurd      = "Hurd"
+      , Android   = "Android"
+      , NoOs      = "Generic"
       }
       os
 in
@@ -1044,31 +1038,31 @@
 in
 
 let isX64 =
-  let true = λ(_ : {}) → True
-  in
-  let false = λ(_ : {}) → False
-  in
   λ(arch : types.Arch) →
     merge
-      { X64         = true
-      , AArch       = false
-      , Arm         = false
-      , RISCV64     = false
-      , PowerPC     = false
-      , PowerPC64   = false
-      , PowerPC64le = false
-      , Sparc64     = false
-      , S390x       = false
-      , Alpha       = false
-      , M68k        = false
-      , Mips        = false
-      , MipsEl      = false
-      , Mips64      = false
-      , Mips64El    = false
-      , X86         = false
-      , SH4         = false
-      , HPPA        = false
-      , HPPA64      = false
+      { X64           = True
+      , AArch         = False
+      , Arm           = False
+      , RISCV64       = False
+      , PowerPC       = False
+      , PowerPC64     = False
+      , PowerPC64le   = False
+      , Sparc64       = False
+      , S390x         = False
+      , Alpha         = False
+      , M68k          = False
+      , Mips          = False
+      , MipsEl        = False
+      , Mips64        = False
+      , Mips64El      = False
+      , X86           = False
+      , SH4           = False
+      , HPPA          = False
+      , HPPA64        = False
+      , MipsIsa32r6El = False
+      , MipsIsa32r6   = False
+      , MipsIsa64r6El = False
+      , MipsIsa64r6   = False
       }
       arch
 in
diff --git a/dhall/cpkg-types.dhall b/dhall/cpkg-types.dhall
--- a/dhall/cpkg-types.dhall
+++ b/dhall/cpkg-types.dhall
@@ -1,56 +1,60 @@
-let OS = < FreeBSD : {}
-         | OpenBSD : {}
-         | NetBSD : {}
-         | Solaris : {}
-         | Dragonfly : {}
-         | Linux : {}
-         | Darwin : {}
-         | Windows : {}
-         | Redox : {}
-         | Haiku : {}
-         | IOS : {}
-         | AIX : {}
-         | Hurd : {}
-         | Android : {}
-         | NoOs : {}
+let OS = < FreeBSD
+         | OpenBSD
+         | NetBSD
+         | Solaris
+         | Dragonfly
+         | Linux
+         | Darwin
+         | Windows
+         | Redox
+         | Haiku
+         | IOS
+         | AIX
+         | Hurd
+         | Android
+         | NoOs
          >
 in
 
-let Arch = < X64 : {}
-           | AArch : {}
-           | Arm : {}
-           | RISCV64 : {}
-           | PowerPC : {}
-           | PowerPC64 : {}
-           | PowerPC64le : {}
-           | Sparc64 : {}
-           | S390x : {}
-           | Alpha : {}
-           | M68k : {}
-           | Mips : {}
-           | MipsEl : {}
-           | Mips64 : {}
-           | Mips64El : {}
-           | X86 : {}
-           | SH4 : {}
-           | HPPA : {}
-           | HPPA64 : {}
+let Arch = < X64
+           | AArch
+           | Arm
+           | RISCV64
+           | PowerPC
+           | PowerPC64
+           | PowerPC64le
+           | Sparc64
+           | S390x
+           | Alpha
+           | M68k
+           | Mips
+           | MipsEl
+           | Mips64
+           | Mips64El
+           | X86
+           | SH4
+           | HPPA
+           | HPPA64
+           | MipsIsa32r6El
+           | MipsIsa32r6
+           | MipsIsa64r6El
+           | MipsIsa64r6
            >
 in
 
-let Manufacturer = < Unknown : {}
-                   | Apple : {}
-                   | IBM : {}
-                   | PC : {}
+let Manufacturer = < Unknown
+                   | Apple
+                   | IBM
+                   | PC
                    >
 in
 
-let ABI = < GNU : {}
-          | GNUabi64 : {}
-          | GNUeabi : {}
-          | GNUeabihf : {}
-          | GNUspe : {}
-          | MinGw : {}
+let ABI = < GNU
+          | GNUabi64
+          | GNUeabi
+          | GNUeabihf
+          | GNUspe
+          | MinGw
           >
 in
 
@@ -80,7 +84,7 @@
 let VersionBound = < Lower : { lower : List Natural }
                    | Upper : { upper : List Natural }
                    | LowerUpper : { lower : List Natural, upper : List Natural }
-                   | NoBound : {} >
+                   | NoBound >
 in
 
 let Dep = { name : Text, bound : VersionBound }
diff --git a/pkgs/patches/renderproto.patch b/pkgs/patches/renderproto.patch
new file mode 100644
--- /dev/null
+++ b/pkgs/patches/renderproto.patch
@@ -0,0 +1,11 @@
+--- config.sub	2010-08-10 09:11:53.000000000 -0500
++++ config.sub.new	2019-04-27 17:18:57.730988579 -0500
+@@ -248,7 +248,7 @@
+ 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ 	| am33_2.0 \
+-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
++	| arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ 	| bfin \
+ 	| c4x | clipper \
+ 	| d10v | d30v | dlx | dsp16xx \
diff --git a/pkgs/patches/scrnsaverproto.patch b/pkgs/patches/scrnsaverproto.patch
new file mode 100644
--- /dev/null
+++ b/pkgs/patches/scrnsaverproto.patch
@@ -0,0 +1,11 @@
+--- config.sub	2012-03-22 22:49:47.000000000 -0500
++++ config.sub	2019-04-28 04:52:47.247723846 -0500
+@@ -250,7 +250,7 @@
+ 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ 	| am33_2.0 \
+-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
++	| arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ 	| bfin \
+ 	| c4x | clipper \
+ 	| d10v | d30v | dlx | dsp16xx \
diff --git a/pkgs/patches/xineramaproto.patch b/pkgs/patches/xineramaproto.patch
new file mode 100644
--- /dev/null
+++ b/pkgs/patches/xineramaproto.patch
@@ -0,0 +1,11 @@
+--- config.sub	2009-10-01 05:35:23.000000000 -0500
++++ config.sub	2019-04-28 04:57:15.837809557 -0500
+@@ -242,7 +242,7 @@
+ 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ 	| am33_2.0 \
+-	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
++	| arc | aarch64 | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ 	| bfin \
+ 	| c4x | clipper \
+ 	| d10v | d30v | dlx | dsp16xx \
diff --git a/pkgs/pkg-set.dhall b/pkgs/pkg-set.dhall
--- a/pkgs/pkg-set.dhall
+++ b/pkgs/pkg-set.dhall
@@ -1,5 +1,5 @@
 {- Dhall prelue imports -}
-let concatMapSep = https://raw.githubusercontent.com/dhall-lang/dhall-lang/0a7f596d03b3ea760a96a8e03935f4baa64274e1/Prelude/Text/concatMapSep
+let concatMapSep = https://raw.githubusercontent.com/dhall-lang/dhall-lang/master/Prelude/Text/concatMapSep
 in
 
 let not = https://raw.githubusercontent.com/dhall-lang/dhall-lang/master/Prelude/Bool/not
@@ -782,21 +782,21 @@
     let printLuaOS =
       λ(os : types.OS) →
         merge
-          { FreeBSD   = λ(_ : {}) → "freebsd"
-          , OpenBSD   = λ(_ : {}) → "bsd"
-          , NetBSD    = λ(_ : {}) → "bsd"
-          , Solaris   = λ(_ : {}) → "solaris"
-          , Dragonfly = λ(_ : {}) → "bsd"
-          , Linux     = λ(_ : {}) → "linux"
-          , Darwin    = λ(_ : {}) → "macosx"
-          , Windows   = λ(_ : {}) → "mingw"
-          , Redox     = λ(_ : {}) → "generic"
-          , Haiku     = λ(_ : {}) → "generic"
-          , IOS       = λ(_ : {}) → "generic"
-          , AIX       = λ(_ : {}) → "generic"
-          , Hurd      = λ(_ : {}) → "generic"
-          , Android   = λ(_ : {}) → "generic"
-          , NoOs      = λ(_ : {}) → "c89"
+          { FreeBSD   = "freebsd"
+          , OpenBSD   = "bsd"
+          , NetBSD    = "bsd"
+          , Solaris   = "solaris"
+          , Dragonfly = "bsd"
+          , Linux     = "linux"
+          , Darwin    = "macosx"
+          , Windows   = "mingw"
+          , Redox     = "generic"
+          , Haiku     = "generic"
+          , IOS       = "generic"
+          , AIX       = "generic"
+          , Hurd      = "generic"
+          , Android   = "generic"
+          , NoOs      = "c89"
           }
           os
     in
@@ -1052,7 +1052,7 @@
 in
 
 let renderproto =
-  mkXProto "renderproto"
+  mkXProtoWithPatch "renderproto" (./patches/renderproto.patch as Text)
 in
 
 let randrproto =
@@ -1060,7 +1060,7 @@
 in
 
 let scrnsaverproto =
-  mkXProto "scrnsaverproto"
+  mkXProtoWithPatch "scrnsaverproto" (./patches/scrnsaverproto.patch as Text)
 in
 
 let recordproto =
@@ -1652,21 +1652,21 @@
     let printChickenOS =
       λ(os : types.OS) →
         merge
-          { FreeBSD   = λ(_ : {}) → "bsd"
-          , OpenBSD   = λ(_ : {}) → "bsd"
-          , NetBSD    = λ(_ : {}) → "bsd"
-          , Solaris   = λ(_ : {}) → "solaris"
-          , Dragonfly = λ(_ : {}) → "bsd"
-          , Linux     = λ(_ : {}) → "linux"
-          , Darwin    = λ(_ : {}) → "macosx"
-          , Windows   = λ(_ : {}) → "mingw"
-          , Haiku     = λ(_ : {}) → "haiku"
-          , IOS       = λ(_ : {}) → "ios"
-          , AIX       = λ(_ : {}) → "aix"
-          , Hurd      = λ(_ : {}) → "hurd"
-          , Android   = λ(_ : {}) → "android"
-          , Redox     = λ(_ : {}) → "error: no port for Redox OS"
-          , NoOs      = λ(_ : {}) → "error: no port for no OS"
+          { FreeBSD   = "bsd"
+          , OpenBSD   = "bsd"
+          , NetBSD    = "bsd"
+          , Solaris   = "solaris"
+          , Dragonfly = "bsd"
+          , Linux     = "linux"
+          , Darwin    = "macosx"
+          , Windows   = "mingw"
+          , Haiku     = "haiku"
+          , IOS       = "ios"
+          , AIX       = "aix"
+          , Hurd      = "hurd"
+          , Android   = "android"
+          , Redox     = "error: no port for Redox OS"
+          , NoOs      = "error: no port for no OS"
           }
           os
     in
@@ -1803,7 +1803,7 @@
 in
 
 let xineramaproto =
-  mkXProto "xineramaproto"
+  mkXProtoWithPatch "xineramaproto" (./patches/xineramaproto.patch as Text)
 in
 
 let xtrans =
@@ -1856,8 +1856,8 @@
   λ(v : List Natural) →
     mkXLib "libXScrnSaver" v ⫽
       { pkgDeps = [ prelude.unbounded "util-macros"
-                  , prelude.unbounded "libXext" -- >= 1.2
-                  , prelude.unbounded "scrnsaverproto" -- >= 1.2
+                    , prelude.unbounded "libXext" -- >= 1.2
+                    , prelude.unbounded "scrnsaverproto" -- >= 1.2
                   ]
       }
 in
@@ -3221,7 +3221,7 @@
 , mosh [1,3,2]
 , motif [2,3,8]
 , musl [1,1,20]
-, nano [3,2]
+, nano [4,2]
 , nasm [2,14]
 , ncurses [6,1]
 , nginx [1,15,7]
diff --git a/src/Package/C/Build.hs b/src/Package/C/Build.hs
--- a/src/Package/C/Build.hs
+++ b/src/Package/C/Build.hs
@@ -61,8 +61,8 @@
     putDiagnostic ("Copying file " ++ absSrc ++ " to " ++ absDest ++ "...")
     liftIO $ createDirectoryIfMissing True (takeDirectory absDest)
     liftIO $ copyFileWithMetadata absSrc absDest
-stepToProc dir' _ (Patch contents) = do
-    liftIO $ TIO.writeFile (dir' </> "step.patch") contents
+stepToProc dir' _ (Patch contents') = do
+    liftIO $ TIO.writeFile (dir' </> "step.patch") contents'
     waitProcess $ (proc "patch" ["-i", "step.patch"]) { cwd = Just dir' }
 
 processSteps :: (Traversable t)
diff --git a/src/Package/C/Error.hs b/src/Package/C/Error.hs
--- a/src/Package/C/Error.hs
+++ b/src/Package/C/Error.hs
@@ -20,6 +20,7 @@
                   | CorruptedDatabase
                   | UnfoundPackage -- TODO: this should take the package name as an argument
                   | ParseFailed String
+                  -- TODO: libarchive error
 
 instance Pretty PackageError where
     pretty (Unrecognized t)  = "Error: Unrecognized archive format when unpacking" <#> hang 2 (pretty t) <> hardline
diff --git a/src/Package/C/Triple/Parse.hs b/src/Package/C/Triple/Parse.hs
--- a/src/Package/C/Triple/Parse.hs
+++ b/src/Package/C/Triple/Parse.hs
@@ -43,6 +43,10 @@
     <|> (tryString "s390x" $> S390x)
     <|> (tryString "alpha" $> Alpha)
     <|> (tryString "m68k" $> M68k)
+    <|> (tryString "mipsisa32r6el" $> MipsIsa32r6El)
+    <|> (tryString "mipsisa32r6" $> MipsIsa32r6)
+    <|> (tryString "mipsisa64r6el" $> MipsIsa64r6El)
+    <|> (tryString "mipsisa64r6" $> MipsIsa64r6)
     <|> (tryString "mips64el" $> Mips64El)
     <|> (tryString "mips64" $> Mips64)
     <|> (tryString "mipsel" $> MipsEl)
diff --git a/src/Package/C/Triple/Type.hs b/src/Package/C/Triple/Type.hs
--- a/src/Package/C/Triple/Type.hs
+++ b/src/Package/C/Triple/Type.hs
@@ -61,28 +61,36 @@
           | SH4
           | HPPA
           | HPPA64
+          | MipsIsa32r6El
+          | MipsIsa32r6
+          | MipsIsa64r6El
+          | MipsIsa64r6
           deriving (Eq, Ord, Hashable, Binary, Generic, Inject)
 
 instance Pretty Arch where
-    pretty X64         = "x86_64"
-    pretty AArch       = "aarch64"
-    pretty Arm         = "arm"
-    pretty RISCV64     = "riscv64"
-    pretty PowerPC     = "powerpc"
-    pretty PowerPC64   = "powerpc64"
-    pretty PowerPC64le = "powerpc64le"
-    pretty Sparc64     = "sparc64"
-    pretty S390x       = "s390x"
-    pretty Alpha       = "alpha"
-    pretty M68k        = "m68k"
-    pretty Mips        = "mips"
-    pretty MipsEl      = "mipsel"
-    pretty Mips64      = "mips64"
-    pretty Mips64El    = "mips64el"
-    pretty X86         = "i686"
-    pretty SH4         = "sh4"
-    pretty HPPA        = "hppa"
-    pretty HPPA64      = "hppa64"
+    pretty X64           = "x86_64"
+    pretty AArch         = "aarch64"
+    pretty Arm           = "arm"
+    pretty RISCV64       = "riscv64"
+    pretty PowerPC       = "powerpc"
+    pretty PowerPC64     = "powerpc64"
+    pretty PowerPC64le   = "powerpc64le"
+    pretty Sparc64       = "sparc64"
+    pretty S390x         = "s390x"
+    pretty Alpha         = "alpha"
+    pretty M68k          = "m68k"
+    pretty Mips          = "mips"
+    pretty MipsEl        = "mipsel"
+    pretty Mips64        = "mips64"
+    pretty Mips64El      = "mips64el"
+    pretty X86           = "i686"
+    pretty SH4           = "sh4"
+    pretty HPPA          = "hppa"
+    pretty HPPA64        = "hppa64"
+    pretty MipsIsa32r6El = "mipsisa32r6el"
+    pretty MipsIsa32r6   = "mipsisa32r6"
+    pretty MipsIsa64r6El = "mipsisa64r6el"
+    pretty MipsIsa64r6   = "mipsisa64r6"
 
 data ABI = GNU
          | GNUabi64
diff --git a/test/Spec.hs b/test/Spec.hs
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -16,3 +16,4 @@
         parseHelper "mips64el-linux-gnuabi64" $ TargetTriple Mips64El Nothing Linux (Just GNUabi64)
         parseHelper "mips64-linux-gnu" $ TargetTriple Mips64 Nothing Linux (Just GNU)
         parseHelper "x86_64-unknown-redox" $ TargetTriple X64 (Just Unknown) Redox Nothing
+        parseHelper "mipsisa64r6el-linux-gnuabi64" $ TargetTriple MipsIsa64r6El Nothing Linux (Just GNUabi64)
