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.2.5.0
+version:            0.2.5.1
 license:            BSD3
 license-file:       LICENSE
 copyright:          Copyright: (c) 2018-2020 Vanessa McHale
@@ -97,7 +97,7 @@
         filemanip -any,
         network-uri -any,
         megaparsec -any,
-        libarchive >=2.2.1.0,
+        libarchive >=2.2.5.0,
         dir-traverse >=0.2.1.0,
         composition-prelude >=1.5.2.0,
         lzlib >=0.3.0.0,
diff --git a/dhall/cpkg-prelude.dhall b/dhall/cpkg-prelude.dhall
--- a/dhall/cpkg-prelude.dhall
+++ b/dhall/cpkg-prelude.dhall
@@ -17,8 +17,7 @@
 let not =
       https://raw.githubusercontent.com/dhall-lang/dhall-lang/9f259cd68870b912fbf2f2a08cd63dc3ccba9dc3/Prelude/Bool/not sha256:723df402df24377d8a853afed08d9d69a0a6d86e2e5b2bac8960b0d4756c7dc4
 
-let types =
-      ../dhall/cpkg-types.dhall sha256:caef717db41539eb7ded38d8cd676ba998bd387171ba3fd2db7fea9e8ee8f361
+let types = ../dhall/cpkg-types.dhall
 
 let showVersion = concatMapSep "." Natural Natural/show
 
@@ -170,19 +169,17 @@
 
 let call = types.Command.Call
 
-let symlinkBinary = λ(file : Text) → types.Command.SymlinkBinary { file = file }
+let symlinkBinary = λ(file : Text) → types.Command.SymlinkBinary { file }
 
 let symlinkManpage = types.Command.SymlinkManpage
 
 let symlink =
         λ(tgt : Text)
       → λ(lnk : Text)
-      → types.Command.Symlink { tgt = tgt, linkName = lnk }
+      → types.Command.Symlink { tgt, linkName = lnk }
 
 let copyFile =
-        λ(src : Text)
-      → λ(dest : Text)
-      → types.Command.CopyFile { src = src, dest = dest }
+      λ(src : Text) → λ(dest : Text) → types.Command.CopyFile { src, dest }
 
 let symlinkBinaries = map Text types.Command symlinkBinary
 
@@ -234,6 +231,7 @@
 let mkLDFlagsGeneral =
         λ(libDirs : List Text)
       → λ(linkLibs : List Text)
+      → λ(cfg : types.BuildVars)
       → let flag0 = concatMapSep " " Text (λ(dir : Text) → "-L${dir}") libDirs
 
         let flag1 = concatMapText Text (λ(dir : Text) → " -l${dir}") linkLibs
@@ -241,7 +239,9 @@
         let flag2 =
               concatMapText
                 Text
-                (λ(dir : Text) → " -Wl,-rpath-link,${dir}")
+                (   λ(dir : Text)
+                  → if isMac cfg.buildOS then "" else " -Wl,-rpath-link,${dir}"
+                )
                 libDirs
 
         in  { var = "LDFLAGS", value = flag0 ++ flag1 ++ flag2 }
@@ -382,13 +382,13 @@
         λ(linkLibs : List Text)
       → λ(cfg : types.BuildVars)
       →   defaultPath cfg
-        # [ mkLDFlagsGeneral cfg.linkDirs linkLibs
+        # [ mkLDFlagsGeneral cfg.linkDirs linkLibs cfg
           , mkCFlags cfg
           , mkPkgConfigVar (cfg.shareDirs # cfg.linkDirs)
           , libPath cfg
           , mkLDRunPath cfg.linkDirs
           , mkPerlLib
-              { libDirs = cfg.linkDirs, perlVersion = [ 5, 30, 1 ], cfg = cfg }
+              { libDirs = cfg.linkDirs, perlVersion = [ 5, 30, 1 ], cfg }
           ]
 
 let buildEnv =
@@ -396,9 +396,9 @@
       →   defaultPath cfg
         # [ mkPkgConfigVar (cfg.shareDirs # cfg.linkDirs)
           , mkPerlLib
-              { libDirs = cfg.linkDirs, perlVersion = [ 5, 30, 1 ], cfg = cfg }
+              { libDirs = cfg.linkDirs, perlVersion = [ 5, 30, 1 ], cfg }
           , mkLDPath cfg.linkDirs
-          , mkLDFlagsGeneral cfg.linkDirs ([] : List Text)
+          , mkLDFlagsGeneral cfg.linkDirs ([] : List Text) cfg
           ]
 
 let configSome =
@@ -429,7 +429,7 @@
 
         in  [ call
                 (   defaultCall
-                  ⫽ { program = program
+                  ⫽ { program
                     , arguments =
                         modifyProg
                           (   modifyArgs [ "--prefix=${cfg.installDir}" ]
@@ -471,7 +471,7 @@
 
 let configureMkExes =
         λ(bins : List Text)
-      → configureMkExesExtraFlags { bins = bins, extraFlags = [] : List Text }
+      → configureMkExesExtraFlags { bins, extraFlags = [] : List Text }
 
 let generalBuild =
         λ(cpus : types.BuildVars → Natural)
@@ -826,7 +826,7 @@
               , mkPy3Path cfg.linkDirs
               , libPath cfg
               , mkLDRunPath cfg.linkDirs
-              , mkLDFlags cfg.linkDirs
+              , mkLDFlags cfg.linkDirs cfg
               , mkCFlags cfg
               , mkLDPreload cfg.preloadLibs
               ]
@@ -878,7 +878,7 @@
                             , mkPy3Path cfg.linkDirs
                             , libPath cfg
                             , mkLDRunPath cfg.linkDirs
-                            , mkLDFlagsGeneral cfg.linkDirs linkLibs
+                            , mkLDFlagsGeneral cfg.linkDirs linkLibs cfg
                             , mkCFlags cfg
                             ]
                           # defaultPath cfg
@@ -901,7 +901,7 @@
                         , mkPy3Path cfg.linkDirs
                         , libPath cfg
                         , mkLDRunPath cfg.linkDirs
-                        , mkLDFlags cfg.linkDirs
+                        , mkLDFlags cfg.linkDirs cfg
                         , mkCFlags cfg
                         ]
                       # defaultPath cfg
@@ -1074,17 +1074,14 @@
       → λ(cfg : types.BuildVars)
       → Some
           (   defaultPath cfg
-            # [ mkLDFlags cfg.linkDirs
+            # [ mkLDFlags cfg.linkDirs cfg
               , mkCFlags cfg
               , mkPkgConfigVar cfg.linkDirs
               , libPath cfg
               , mkXdgDataDirs cfg.shareDirs
               , mkLDPreload cfg.preloadLibs
               , mkPerlLib
-                  { libDirs = cfg.linkDirs
-                  , perlVersion = [ 5, 30, 1 ]
-                  , cfg = cfg
-                  }
+                  { libDirs = cfg.linkDirs, perlVersion = [ 5, 30, 1 ], cfg }
               ]
           )
 
@@ -1228,123 +1225,123 @@
             )
         ]
 
-in  { showVersion = showVersion
-    , makeGnuLibrary = makeGnuLibrary
-    , makeGnuExe = makeGnuExe
-    , defaultPackage = defaultPackage
-    , unbounded = unbounded
-    , lowerBound = lowerBound
-    , upperBound = upperBound
-    , makeExe = makeExe
-    , printArch = printArch
-    , printManufacturer = printManufacturer
-    , printOS = printOS
-    , printTargetTriple = printTargetTriple
-    , call = call
-    , mkExe = mkExe
-    , mkExes = mkExes
-    , createDir = createDir
-    , mkHost = mkHost
-    , defaultConfigure = defaultConfigure
-    , defaultBuild = defaultBuild
-    , defaultInstall = defaultInstall
-    , cmakeConfigure = cmakeConfigure
-    , cmakeConfigureGeneral = cmakeConfigureGeneral
-    , cmakeConfigureWithFlags = cmakeConfigureWithFlags
-    , cmakeBuild = cmakeBuild
-    , cmakeInstall = cmakeInstall
-    , cmakePackage = cmakePackage
-    , autogenConfigure = autogenConfigure
-    , defaultCall = defaultCall
-    , defaultEnv = defaultEnv
-    , maybeAppend = maybeAppend
-    , mkCFlags = mkCFlags
-    , mkLDFlags = mkLDFlags
-    , mkLDFlagsGeneral = mkLDFlagsGeneral
-    , mkLDPath = mkLDPath
-    , mkLDRunPath = mkLDRunPath
-    , mkStaPath = mkStaPath
-    , libPath = libPath
-    , mkPyPath = mkPyPath
-    , mkPy3Path = mkPy3Path
-    , mkIncludePath = mkIncludePath
-    , isUnix = isUnix
-    , defaultPath = defaultPath
-    , simplePackage = simplePackage
-    , symlinkBinary = symlinkBinary
-    , symlinkManpage = symlinkManpage
-    , symlink = symlink
-    , symlinkBinaries = symlinkBinaries
-    , symlinkManpages = symlinkManpages
-    , installWithBinaries = installWithBinaries
-    , installWithManpages = installWithManpages
-    , configureMkExes = configureMkExes
-    , generalConfigure = generalConfigure
-    , configureWithFlags = configureWithFlags
-    , configureMkExesExtraFlags = configureMkExesExtraFlags
-    , writeFile = writeFile
-    , cmakeInstallWithBinaries = cmakeInstallWithBinaries
-    , copyFile = copyFile
-    , mkPathVar = mkPathVar
-    , mkPkgConfigVar = mkPkgConfigVar
-    , fullVersion = fullVersion
-    , mesonConfigure = mesonConfigure
-    , mesonConfigureGeneral = mesonConfigureGeneral
-    , mesonEnv = mesonEnv
-    , mesonConfigureWithFlags = mesonConfigureWithFlags
-    , ninjaBuild = ninjaBuild
-    , ninjaInstall = ninjaInstall
-    , ninjaInstallWithPkgConfig = ninjaInstallWithPkgConfig
-    , ninjaPackage = ninjaPackage
-    , doNothing = doNothing
-    , perlConfigure = perlConfigure
-    , copyFiles = copyFiles
-    , mkPerlLib = mkPerlLib
-    , mesonMoves = mesonMoves
-    , python3Build = python3Build
-    , python3Install = python3Install
-    , python3Package = python3Package
-    , mkLDPreload = mkLDPreload
-    , configureLinkExtraLibs = configureLinkExtraLibs
-    , mkXdgDataDirs = mkXdgDataDirs
-    , buildWith = buildWith
-    , installWith = installWith
-    , mkCCVar = mkCCVar
-    , squishVersion = squishVersion
-    , osCfg = osCfg
-    , archCfg = archCfg
-    , mkCCArg = mkCCArg
-    , mkFRCArg = mkFRCArg
-    , mesonCfgFile = mesonCfgFile
-    , python2Package = python2Package
-    , configEnv = configEnv
-    , configSome = configSome
-    , preloadEnv = preloadEnv
-    , preloadCfg = preloadCfg
-    , printEnvVar = printEnvVar
-    , mkPyWrapper = mkPyWrapper
-    , mkPy3Wrapper = mkPy3Wrapper
-    , mkPy2Wrapper = mkPy2Wrapper
-    , installWithPyWrappers = installWithPyWrappers
-    , installWithPy3Wrappers = installWithPy3Wrappers
-    , cmakeConfigureNinja = cmakeConfigureNinja
-    , mkLDPathWrapper = mkLDPathWrapper
-    , mkLDPathWrappers = mkLDPathWrappers
-    , installWithWrappers = installWithWrappers
-    , cmakeEnv = cmakeEnv
-    , cmakeSome = cmakeSome
-    , underscoreVersion = underscoreVersion
-    , isX64 = isX64
-    , configWithEnv = configWithEnv
-    , buildEnv = buildEnv
-    , patch = patch
-    , mkAclocalPath = mkAclocalPath
-    , configureWithPatches = configureWithPatches
-    , configureWithPatch = configureWithPatch
-    , installPrefix = installPrefix
-    , unixPath = unixPath
-    , generalBuild = generalBuild
-    , defaultCpus = defaultCpus
-    , singleThreaded = singleThreaded
-    , libSuffix = libSuffix
+in  { showVersion
+    , makeGnuLibrary
+    , makeGnuExe
+    , defaultPackage
+    , unbounded
+    , lowerBound
+    , upperBound
+    , makeExe
+    , printArch
+    , printManufacturer
+    , printOS
+    , printTargetTriple
+    , call
+    , mkExe
+    , mkExes
+    , createDir
+    , mkHost
+    , defaultConfigure
+    , defaultBuild
+    , defaultInstall
+    , cmakeConfigure
+    , cmakeConfigureGeneral
+    , cmakeConfigureWithFlags
+    , cmakeBuild
+    , cmakeInstall
+    , cmakePackage
+    , autogenConfigure
+    , defaultCall
+    , defaultEnv
+    , maybeAppend
+    , mkCFlags
+    , mkLDFlags
+    , mkLDFlagsGeneral
+    , mkLDPath
+    , mkLDRunPath
+    , mkStaPath
+    , libPath
+    , mkPyPath
+    , mkPy3Path
+    , mkIncludePath
+    , isUnix
+    , defaultPath
+    , simplePackage
+    , symlinkBinary
+    , symlinkManpage
+    , symlink
+    , symlinkBinaries
+    , symlinkManpages
+    , installWithBinaries
+    , installWithManpages
+    , configureMkExes
+    , generalConfigure
+    , configureWithFlags
+    , configureMkExesExtraFlags
+    , writeFile
+    , cmakeInstallWithBinaries
+    , copyFile
+    , mkPathVar
+    , mkPkgConfigVar
+    , fullVersion
+    , mesonConfigure
+    , mesonConfigureGeneral
+    , mesonEnv
+    , mesonConfigureWithFlags
+    , ninjaBuild
+    , ninjaInstall
+    , ninjaInstallWithPkgConfig
+    , ninjaPackage
+    , doNothing
+    , perlConfigure
+    , copyFiles
+    , mkPerlLib
+    , mesonMoves
+    , python3Build
+    , python3Install
+    , python3Package
+    , mkLDPreload
+    , configureLinkExtraLibs
+    , mkXdgDataDirs
+    , buildWith
+    , installWith
+    , mkCCVar
+    , squishVersion
+    , osCfg
+    , archCfg
+    , mkCCArg
+    , mkFRCArg
+    , mesonCfgFile
+    , python2Package
+    , configEnv
+    , configSome
+    , preloadEnv
+    , preloadCfg
+    , printEnvVar
+    , mkPyWrapper
+    , mkPy3Wrapper
+    , mkPy2Wrapper
+    , installWithPyWrappers
+    , installWithPy3Wrappers
+    , cmakeConfigureNinja
+    , mkLDPathWrapper
+    , mkLDPathWrappers
+    , installWithWrappers
+    , cmakeEnv
+    , cmakeSome
+    , underscoreVersion
+    , isX64
+    , configWithEnv
+    , buildEnv
+    , patch
+    , mkAclocalPath
+    , configureWithPatches
+    , configureWithPatch
+    , installPrefix
+    , unixPath
+    , generalBuild
+    , defaultCpus
+    , singleThreaded
+    , libSuffix
     }
diff --git a/dhall/cpkg-types.dhall b/dhall/cpkg-types.dhall
--- a/dhall/cpkg-types.dhall
+++ b/dhall/cpkg-types.dhall
@@ -99,15 +99,15 @@
       | Patch : { patchContents : Text }
       >
 
-in  { OS = OS
-    , BuildVars = BuildVars
-    , VersionBound = VersionBound
-    , Dep = Dep
-    , Arch = Arch
-    , Manufacturer = Manufacturer
-    , ABI = ABI
-    , TargetTriple = TargetTriple
-    , Command = Command
-    , EnvVar = EnvVar
-    , Proc = Proc
+in  { OS
+    , BuildVars
+    , VersionBound
+    , Dep
+    , Arch
+    , Manufacturer
+    , ABI
+    , TargetTriple
+    , Command
+    , EnvVar
+    , Proc
     }
diff --git a/pkgs/pkg-set.dhall b/pkgs/pkg-set.dhall
--- a/pkgs/pkg-set.dhall
+++ b/pkgs/pkg-set.dhall
@@ -5,11 +5,9 @@
 let concat =
       https://raw.githubusercontent.com/dhall-lang/dhall-lang/dbcf50c27b1592a6acfd38cb3ba976e3a36b74fe/Prelude/Text/concat sha256:731265b0288e8a905ecff95c97333ee2db614c39d69f1514cb8eed9259745fc0
 
-let types =
-      ../dhall/cpkg-types.dhall sha256:caef717db41539eb7ded38d8cd676ba998bd387171ba3fd2db7fea9e8ee8f361
+let types = ../dhall/cpkg-types.dhall
 
-let prelude =
-      ../dhall/cpkg-prelude.dhall sha256:908d9f80be0c4bc294b5bb4ae3e3b9245659800c20ea3510518d1b1b649ffaaf
+let prelude = ../dhall/cpkg-prelude.dhall
 
 let gpgPackage =
         λ(x : { name : Text, version : List Natural })
@@ -29,9 +27,6 @@
             , prelude.lowerBound { name = "libassuan", lower = [ 2, 5, 0 ] }
             , prelude.lowerBound { name = "libksba", lower = [ 1, 3, 4 ] }
             ]
-          , configureCommand =
-              prelude.configureMkExes
-                [ "tests/inittests", "tests/runtest", "tests/pkits/inittests" ]
           , installCommand = prelude.installWithBinaries [ "bin/gpg" ]
           }
 
@@ -68,7 +63,6 @@
               "https://www.musl-libc.org/releases/musl-${prelude.showVersion
                                                            v}.tar.gz"
           , installCommand = prelude.installWithBinaries [ "bin/musl-gcc" ]
-          , configureCommand = prelude.configureMkExes [ "tools/install.sh" ]
           }
 
 let binutils =
@@ -77,7 +71,6 @@
         ⫽ { pkgUrl =
               "https://ftp.wayne.edu/gnu/binutils/binutils-${prelude.showVersion
                                                                v}.tar.xz"
-          , configureCommand = prelude.configureMkExes [ "mkinstalldirs" ]
           , installCommand =
               prelude.installWithBinaries
                 [ "bin/ar"
@@ -95,9 +88,7 @@
 let bison =
         λ(v : List Natural)
       →   prelude.makeGnuExe { name = "bison", version = v }
-        ⫽ { configureCommand =
-              prelude.configureMkExes [ "build-aux/move-if-change" ]
-          , buildCommand =
+        ⫽ { buildCommand =
                 λ(cfg : types.BuildVars)
               → prelude.generalBuild
                   prelude.singleThreaded
@@ -189,10 +180,7 @@
 let gawk =
         λ(v : List Natural)
       →   prelude.makeGnuExe { name = "gawk", version = v }
-        ⫽ { configureCommand =
-              prelude.configureMkExes
-                [ "install-sh", "extension/build-aux/install-sh" ]
-          , installCommand =
+        ⫽ { installCommand =
               prelude.installWithBinaries [ "bin/gawk", "bin/awk" ]
           }
 
@@ -221,7 +209,6 @@
         ⫽ { pkgUrl =
               "https://mirrors.edge.kernel.org/pub/software/scm/git/git-${prelude.showVersion
                                                                             v}.tar.xz"
-          , configureCommand = prelude.configureMkExes [ "check_bindir" ]
           , installCommand = prelude.installWithBinaries [ "bin/git" ]
           , pkgBuildDeps = [ prelude.unbounded "gettext" ]
           }
@@ -551,8 +538,6 @@
               →   prelude.installWithBinaries [ "bin/valgrind" ] cfg
                 # prelude.symlinkManpages
                     [ { file = "share/man/man1/pdfgrep.1", section = 1 } ]
-          , configureCommand =
-              prelude.configureMkExes [ "auxprogs/make_or_upd_vgversion_h" ]
           }
 
 let vim =
@@ -673,7 +658,6 @@
                                                      v}.tar.gz"
           , pkgDeps = [ prelude.unbounded "gnutls" ]
           , pkgBuildDeps = [ prelude.unbounded "perl" ]
-          , configureCommand = prelude.configureMkExes [ "doc/texi2pod.pl" ]
           , installCommand = prelude.installWithWrappers [ "wget" ]
           }
 
@@ -1042,7 +1026,7 @@
                 λ(cfg : types.BuildVars)
               → let cc = prelude.mkCCArg cfg
 
-                let ldflags = (prelude.mkLDFlags cfg.linkDirs).value
+                let ldflags = (prelude.mkLDFlags cfg.linkDirs cfg).value
 
                 let cflags = (prelude.mkCFlags cfg).value
 
@@ -1175,8 +1159,6 @@
         in    prelude.simplePackage x
             ⫽ { pkgUrl =
                   "https://download.savannah.gnu.org/releases/freetype/freetype-${versionString}.tar.gz"
-              , configureCommand =
-                  prelude.configureMkExes [ "builds/unix/configure" ]
               , pkgSubdir = "freetype-${versionString}"
               , pkgBuildDeps = [ prelude.unbounded "sed" ]
               , installCommand =
@@ -1256,7 +1238,7 @@
             →   prelude.defaultPath cfg
               # [ { var = "LDFLAGS"
                   , value =
-                          (prelude.mkLDFlags cfg.linkDirs).value
+                          (prelude.mkLDFlags cfg.linkDirs cfg).value
                       ++  " -lpcre -lfribidi"
                   }
                 , prelude.mkCFlags cfg
@@ -1312,7 +1294,7 @@
 let mkXProto =
         λ(name : Text)
       → λ(v : List Natural)
-      →   prelude.simplePackage { name = name, version = v }
+      →   prelude.simplePackage { name, version = v }
         ⫽ { pkgUrl =
               "https://www.x.org/releases/individual/proto/${name}-${prelude.showVersion
                                                                        v}.tar.bz2"
@@ -1473,7 +1455,7 @@
                                   # [ prelude.mkPerlLib
                                         { libDirs = cfg.linkDirs
                                         , perlVersion = [ 5, 30, 1 ]
-                                        , cfg = cfg
+                                        , cfg
                                         }
                                     ]
                                 )
@@ -1507,7 +1489,7 @@
                             , prelude.mkPy3Path cfg.linkDirs
                             , prelude.libPath cfg
                             , prelude.mkLDRunPath cfg.linkDirs
-                            , prelude.mkLDFlags cfg.linkDirs
+                            , prelude.mkLDFlags cfg.linkDirs cfg
                             , prelude.mkCFlags cfg
                             ]
                           , arguments = [ "install" ]
@@ -1728,7 +1710,7 @@
                             (   [ prelude.mkPkgConfigVar cfg.linkDirs
                                 , { var = "LDFLAGS"
                                   , value =
-                                      (prelude.mkLDFlags cfg.linkDirs).value
+                                      (prelude.mkLDFlags cfg.linkDirs cfg).value
                                   }
                                 , prelude.mkPy3Path cfg.linkDirs
                                 , prelude.libPath cfg
@@ -2107,7 +2089,7 @@
 let mkXLib =
         λ(name : Text)
       → λ(v : List Natural)
-      →   prelude.simplePackage { name = name, version = v }
+      →   prelude.simplePackage { name, version = v }
         ⫽ { pkgUrl =
               "https://www.x.org/releases/individual/lib/${name}-${prelude.showVersion
                                                                      v}.tar.bz2"
@@ -2129,7 +2111,7 @@
 let mkXUtil =
         λ(name : Text)
       → λ(v : List Natural)
-      →   prelude.simplePackage { name = name, version = v }
+      →   prelude.simplePackage { name, version = v }
         ⫽ { pkgUrl =
               "https://www.x.org/releases/individual/util/${name}-${prelude.showVersion
                                                                       v}.tar.bz2"
@@ -2336,7 +2318,7 @@
                             ]
                       , environment = Some
                           (   prelude.defaultPath cfg
-                            # [ prelude.mkLDFlags cfg.linkDirs
+                            # [ prelude.mkLDFlags cfg.linkDirs cfg
                               , prelude.mkCFlags cfg
                               , prelude.mkPkgConfigVar cfg.linkDirs
                               ]
@@ -2375,7 +2357,7 @@
                             ]
                       , environment = Some
                           (   prelude.defaultPath cfg
-                            # [ prelude.mkLDFlags cfg.linkDirs
+                            # [ prelude.mkLDFlags cfg.linkDirs cfg
                               , prelude.mkCFlags cfg
                               , prelude.mkPkgConfigVar cfg.linkDirs
                               , prelude.libPath cfg
@@ -2417,8 +2399,7 @@
 
         let fullVersion = versionString ++ "." ++ Natural/show x.patch
 
-        in    prelude.ninjaPackage
-                { name = name, version = prelude.fullVersion x }
+        in    prelude.ninjaPackage { name, version = prelude.fullVersion x }
             ⫽ { pkgUrl =
                   "http://ftp.gnome.org/pub/gnome/sources/${name}/${versionString}/${name}-${fullVersion}.tar.xz"
               }
@@ -2503,8 +2484,7 @@
 
         let fullVersion = versionString ++ "." ++ Natural/show x.patch
 
-        in    prelude.simplePackage
-                { name = name, version = prelude.fullVersion x }
+        in    prelude.simplePackage { name, version = prelude.fullVersion x }
             ⫽ { pkgUrl =
                   "http://ftp.gnome.org/pub/gnome/sources/${name}/${versionString}/${name}-${fullVersion}.tar.xz"
               }
@@ -2561,7 +2541,6 @@
       →   prelude.simplePackage { name = "graphviz", version = v }
         ⫽ { pkgUrl =
               "https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/graphviz.tar.gz"
-          , configureCommand = prelude.configureMkExes [ "iffe" ]
           , pkgDeps = [ prelude.unbounded "perl" ]
           , installCommand = prelude.installWithBinaries [ "bin/dot" ]
           }
@@ -2583,8 +2562,6 @@
         ⫽ { pkgUrl =
               "https://downloads.sourceforge.net/swig/swig-${prelude.showVersion
                                                                v}.tar.gz"
-          , configureCommand =
-              prelude.configureMkExes [ "Tools/config/install-sh" ]
           , installCommand = prelude.installWithBinaries [ "bin/swig" ]
           }
 
@@ -2830,8 +2807,7 @@
 
         let fullVersion = versionString ++ "." ++ Natural/show x.patch
 
-        in    prelude.simplePackage
-                { name = name, version = prelude.fullVersion x }
+        in    prelude.simplePackage { name, version = prelude.fullVersion x }
             ⫽ { pkgUrl =
                   "https://download.gimp.org/pub/${name}/${versionString}/${name}-${fullVersion}.tar.bz2"
               }
@@ -3020,6 +2996,7 @@
                                         ).value} -DPACKAGE=\\\"feh\\\" -DPREFIX=\\\"${cfg.installDir}\\\" -DVERSION=\\\"${prelude.showVersion
                                                                                                                             v}\\\" ${( prelude.mkLDFlags
                                                                                                                                          cfg.linkDirs
+                                                                                                                                         cfg
                                                                                                                                      ).value}"
                             , "feh"
                             ]
@@ -3090,15 +3067,6 @@
         in    prelude.simplePackage { name = "jemalloc", version = v }
             ⫽ { pkgUrl =
                   "https://github.com/jemalloc/jemalloc/releases/download/${versionString}/jemalloc-${versionString}.tar.bz2"
-              , configureCommand =
-                  prelude.configureMkExes
-                    [ "include/jemalloc/internal/private_symbols.sh"
-                    , "include/jemalloc/internal/public_namespace.sh"
-                    , "include/jemalloc/internal/public_unnamespace.sh"
-                    , "include/jemalloc/jemalloc_rename.sh"
-                    , "include/jemalloc/jemalloc_mangle.sh"
-                    , "include/jemalloc/jemalloc.sh"
-                    ]
               }
 
 let gperftools =
@@ -3234,7 +3202,6 @@
             , prelude.unbounded "gettext"
             , prelude.unbounded "python2"
             ]
-          , configureCommand = prelude.configureMkExes [ "py-compile" ]
           }
 
 let itstool =
@@ -3433,8 +3400,6 @@
         in    prelude.simplePackage { name = "libpsl", version = v }
             ⫽ { pkgUrl =
                   "https://github.com/rockdaboot/libpsl/releases/download/libpsl-${versionString}/libpsl-${versionString}.tar.gz"
-              , configureCommand =
-                  prelude.configureMkExes [ "src/psl-make-dafsa" ]
               }
 
 let krb5 =
@@ -3445,9 +3410,6 @@
             ⫽ { pkgUrl =
                   "https://kerberos.org/dist/krb5/${versionString}/krb5-${versionString}.tar.gz"
               , pkgSubdir = "krb5-${versionString}/src"
-              , configureCommand =
-                  prelude.configureMkExes
-                    [ "config/move-if-changed", "config/mkinstalldirs" ]
               , pkgBuildDeps = [ prelude.unbounded "bison" ]
               }
 
@@ -3459,8 +3421,6 @@
             [ prelude.lowerBound { name = "glib", lower = [ 2, 40, 0 ] }
             , prelude.lowerBound { name = "graphviz", lower = [ 2, 15 ] }
             ]
-          , configureCommand =
-              prelude.configureMkExes [ "build-aux/git-version-gen" ]
           }
 
 let htop =
@@ -3472,8 +3432,6 @@
                   "https://hisham.hm/htop/releases/${versionString}/htop-${versionString}.tar.gz"
               , pkgDeps = [ prelude.unbounded "ncurses" ]
               , pkgBuildDeps = [ prelude.unbounded "python3" ]
-              , configureCommand =
-                  prelude.configureMkExes [ "scripts/MakeHeader.py" ]
               , installCommand = prelude.installWithBinaries [ "bin/htop" ]
               }
 
@@ -3507,7 +3465,6 @@
         ⫽ { pkgUrl =
               "http://prdownloads.sourceforge.net/ctags/ctags-${prelude.showVersion
                                                                   v}.tar.gz"
-          , configureCommand = prelude.configureMkExes [ "mkinstalldirs" ]
           , installCommand = prelude.installWithBinaries [ "bin/ctags" ]
           }
 
@@ -3517,7 +3474,6 @@
         ⫽ { pkgUrl =
               "http://download.savannah.gnu.org/releases/tinycc/tcc-${prelude.showVersion
                                                                         v}.tar.bz2"
-          , configureCommand = prelude.configureMkExes [ "texi2pod.pl" ]
           , pkgBuildDeps =
             [ prelude.unbounded "perl", prelude.unbounded "texinfo" ]
           , installCommand = prelude.installWithBinaries [ "bin/tcc" ]
@@ -4295,7 +4251,9 @@
                                 , arguments =
                                   [ "CFLAGS=${( prelude.mkCFlags cfg
                                               ).value} -I${buildDir}/src/CBOOT/ccomp/runtime -I${buildDir}/src/CBOOT"
-                                  , "LDFLAGS='${( prelude.mkLDFlags cfg.linkDirs
+                                  , "LDFLAGS='${( prelude.mkLDFlags
+                                                    cfg.linkDirs
+                                                    cfg
                                                 ).value}'"
                                   ]
                                 , environment = Some (prelude.buildEnv cfg)
@@ -4327,8 +4285,6 @@
       →   prelude.simplePackage { name = "libav", version = v }
         ⫽ { pkgUrl =
               "https://libav.org/releases/libav-${prelude.showVersion v}.tar.xz"
-          , configureCommand =
-              prelude.configureMkExes [ "version.sh", "doc/texi2pod.pl" ]
           , pkgBuildDeps =
             [ prelude.unbounded "nasm", prelude.unbounded "perl" ]
           , installCommand =
@@ -4742,12 +4698,42 @@
                     ]
           }
 
+let busybox =
+        λ(v : List Natural)
+      →   prelude.simplePackage { name = "busybox", version = v }
+        ⫽ { pkgUrl =
+              "https://www.busybox.net/downloads/busybox-${prelude.showVersion
+                                                             v}.tar.bz2"
+          , configureCommand =
+                λ(cfg : types.BuildVars)
+              → [ prelude.call
+                    (   prelude.defaultCall
+                      ⫽ { program = "make"
+                        , arguments = [ "defconfig" ]
+                        , environment = Some (prelude.buildEnv cfg)
+                        }
+                    )
+                ]
+          , installCommand =
+                λ(cfg : types.BuildVars)
+              → [ prelude.call
+                    (   prelude.defaultCall
+                      ⫽ { program = "make"
+                        , arguments =
+                          [ "CONFIG_PREFIX=${cfg.installDir}", "install" ]
+                        , environment = Some (prelude.buildEnv cfg)
+                        }
+                    )
+                , prelude.symlinkBinary "bin/busybox"
+                ]
+          }
+
 in  [ alsa-lib [ 1, 1, 9 ]
     , apr [ 1, 7, 0 ]
     , apr-util [ 1, 6, 1 ]
     , at-spi-atk { version = [ 2, 33 ], patch = 2 }
     , at-spi-core { version = [ 2, 33 ], patch = 2 }
-    , atk { version = [ 2, 33 ], patch = 3 }
+    , atk { version = [ 2, 36 ], patch = 0 }
     , ats [ 0, 4, 0 ]
     , autoconf [ 2, 69 ]
     , automake [ 1, 16, 2 ]
@@ -4757,6 +4743,7 @@
     , binutils [ 2, 33, 1 ]
     , bison [ 3, 5 ]
     , blas [ 3, 8, 0 ]
+    , busybox [ 1, 31, 1 ]
     , bzip2 [ 1, 0, 8 ]
     , cairo [ 1, 16, 0 ]
     , chickenScheme [ 5, 0, 0 ]
@@ -4874,7 +4861,7 @@
     , libpsl [ 0, 21, 0 ]
     , libpthread-stubs [ 0, 4 ]
     , libraw [ 0, 19, 2 ]
-    , librsvg { version = [ 2, 45 ], patch = 8 }
+    , librsvg { version = [ 2, 48 ], patch = 2 }
     , libsamplerate [ 0, 1, 9 ]
     , libsass [ 3, 6, 2 ]
     , libselinux [ 3, 0 ]
@@ -4982,7 +4969,7 @@
     , readline [ 8, 0 ]
     , recordproto [ 1, 14, 2 ]
     , renderproto [ 0, 11, 1 ]
-    , ruby { version = [ 2, 7 ], patch = 0 }
+    , ruby { version = [ 2, 7 ], patch = 1 }
     , rustc [ 1, 42, 0 ]
     , scour [ 0, 37 ]
     , scrnsaverproto [ 1, 2, 2 ]
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
@@ -27,6 +27,16 @@
 envVarSplit :: EnvVar -> (String, String)
 envVarSplit (EnvVar ev x) = (ev, x)
 
+replaceSymlink :: FilePath -> FilePath -> IO ()
+replaceSymlink actual link = do
+    bf <- doesFileExist link
+    if bf
+        then removeFile link
+        else do
+            bd <- doesDirectoryExist link
+            when bd $ removeDirectoryLink link
+    createFileLink actual link
+
 stepToProc :: FilePath -- ^ Package build directory
            -> FilePath -- ^ Package install directory
            -> Command
@@ -46,18 +56,18 @@
     binDir <- (</> "bin") <$> globalPkgDir
     let actualBin = p </> file'
     liftIO $ createDirectoryIfMissing True binDir
-    liftIO $ createFileLink actualBin (binDir </> takeFileName file')
+    liftIO $ replaceSymlink actualBin (binDir </> takeFileName file')
 stepToProc _ p (SymlinkManpage file' sec) = do
     manDir <- (</> ("share" </> "man" </> "man" ++ show sec)) <$> globalPkgDir
     let actualMan = p </> file'
     liftIO $ createDirectoryIfMissing True manDir
-    liftIO $ createFileLink actualMan (manDir </> takeFileName file')
+    liftIO $ replaceSymlink actualMan (manDir </> takeFileName file')
 stepToProc _ p (Symlink tgt' lnk) = do
     let linkAbs = p </> lnk
     putDiagnostic ("Creating directory" ++ takeDirectory linkAbs ++ "...")
     liftIO $ createDirectoryIfMissing True (takeDirectory linkAbs)
     -- TODO: diagnostics for symlinks
-    liftIO $ createFileLink (p </> tgt') linkAbs
+    liftIO $ replaceSymlink (p </> tgt') linkAbs
 stepToProc dir' _ (Write out fp) = do
     let fpAbs = dir' </> fp
     putDiagnostic ("Writing\n" ++ T.unpack out ++ "\n in file" ++ fpAbs)
diff --git a/src/Package/C/PackageSet.hs b/src/Package/C/PackageSet.hs
--- a/src/Package/C/PackageSet.hs
+++ b/src/Package/C/PackageSet.hs
@@ -24,11 +24,11 @@
 import           Package.C.Type.Tree
 
 defaultPackageSetHash :: T.Text
-defaultPackageSetHash = "sha256:b529988940e56cc3e91641c57588b336b107f7cf84a0086abfb272edadc7bb38"
+defaultPackageSetHash = "sha256:59490322eb6249d94698473eb9be6e29dce0519f058914e2cb42b30e030596d9"
 
 defaultPackageSetDhall :: Maybe String -> IO PackageSetDhall
 defaultPackageSetDhall (Just pkSet) = input auto (T.pack pkSet)
-defaultPackageSetDhall Nothing      = input auto ("https://raw.githubusercontent.com/vmchale/cpkg/39a0e2428482dc9c934760d49f1aa3df8563a717/pkgs/pkg-set.dhall " <> defaultPackageSetHash)
+defaultPackageSetDhall Nothing      = input auto ("https://raw.githubusercontent.com/vmchale/cpkg/e90b4b5350f8a7b82ae871d074526c15fd47f6db/pkgs/pkg-set.dhall " <> defaultPackageSetHash)
 
 
 displayPackageSet :: Maybe String -> IO ()
diff --git a/src/Package/C/Unpack.hs b/src/Package/C/Unpack.hs
--- a/src/Package/C/Unpack.hs
+++ b/src/Package/C/Unpack.hs
@@ -35,7 +35,7 @@
 
 archiveResponse :: TarCompress -> FilePath -> BSL.ByteString -> IO ()
 archiveResponse compressScheme dirName =
-    fmap (either throw id) . Archive.runArchiveM . Archive.unpackToDirLazy dirName . getCompressor compressScheme
+    Archive.throwArchiveM . Archive.unpackToDirLazy dirName . getCompressor compressScheme
 
 zipResponse :: FilePath -> BSL.ByteString -> IO ()
 zipResponse dirName response = withCurrentDirectory dirName $ do
