about summary refs log tree commit diff
path: root/pkgs/tools/archivers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/archivers')
-rw-r--r--pkgs/tools/archivers/afio/default.nix1
-rw-r--r--pkgs/tools/archivers/arc_unpacker/default.nix1
-rw-r--r--pkgs/tools/archivers/cabextract/default.nix1
-rw-r--r--pkgs/tools/archivers/cpio/default.nix8
-rw-r--r--pkgs/tools/archivers/cromfs/default.nix2
-rw-r--r--pkgs/tools/archivers/ctrtool/default.nix1
-rw-r--r--pkgs/tools/archivers/dumpnar/default.nix3
-rw-r--r--pkgs/tools/archivers/fsarchiver/default.nix1
-rw-r--r--pkgs/tools/archivers/gbl/default.nix1
-rw-r--r--pkgs/tools/archivers/innoextract/default.nix1
-rw-r--r--pkgs/tools/archivers/lha/default.nix1
-rw-r--r--pkgs/tools/archivers/maxcso/default.nix1
-rw-r--r--pkgs/tools/archivers/ndstool/default.nix1
-rw-r--r--[-rwxr-xr-x]pkgs/tools/archivers/payload-dumper-go/default.nix0
-rw-r--r--pkgs/tools/archivers/payload_dumper/default.nix1
-rw-r--r--pkgs/tools/archivers/peazip/default.nix4
-rw-r--r--pkgs/tools/archivers/pxattr/default.nix1
-rw-r--r--pkgs/tools/archivers/quickbms/default.nix1
-rw-r--r--pkgs/tools/archivers/rar/default.nix35
-rwxr-xr-xpkgs/tools/archivers/rar/update.sh78
-rw-r--r--pkgs/tools/archivers/rpmextract/default.nix1
-rw-r--r--pkgs/tools/archivers/runzip/default.nix1
-rw-r--r--pkgs/tools/archivers/sharutils/default.nix3
-rw-r--r--pkgs/tools/archivers/tarlz/default.nix28
-rw-r--r--pkgs/tools/archivers/unar/default.nix14
-rw-r--r--pkgs/tools/archivers/undmg/default.nix1
-rw-r--r--pkgs/tools/archivers/unrar/default.nix1
-rw-r--r--pkgs/tools/archivers/unshield/default.nix1
-rw-r--r--pkgs/tools/archivers/unzip/default.nix2
-rw-r--r--pkgs/tools/archivers/unzoo/default.nix1
-rw-r--r--pkgs/tools/archivers/xarchive/default.nix1
-rw-r--r--pkgs/tools/archivers/xarchiver/default.nix5
-rw-r--r--pkgs/tools/archivers/zarchive/default.nix1
-rw-r--r--pkgs/tools/archivers/zpaq/default.nix3
34 files changed, 149 insertions, 57 deletions
diff --git a/pkgs/tools/archivers/afio/default.nix b/pkgs/tools/archivers/afio/default.nix
index 7ef374b5bfe66..d321bd44985d8 100644
--- a/pkgs/tools/archivers/afio/default.nix
+++ b/pkgs/tools/archivers/afio/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
      * a comprehensive discussion.
      */
     license = lib.licenses.free;
+    mainProgram = "afio";
   };
 }
diff --git a/pkgs/tools/archivers/arc_unpacker/default.nix b/pkgs/tools/archivers/arc_unpacker/default.nix
index ee40a7a5ab4ac..f293ae49626f9 100644
--- a/pkgs/tools/archivers/arc_unpacker/default.nix
+++ b/pkgs/tools/archivers/arc_unpacker/default.nix
@@ -85,5 +85,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ midchildan ];
     platforms = platforms.all;
+    mainProgram = "arc_unpacker";
   };
 }
diff --git a/pkgs/tools/archivers/cabextract/default.nix b/pkgs/tools/archivers/cabextract/default.nix
index 6268a7826e594..6860b52267717 100644
--- a/pkgs/tools/archivers/cabextract/default.nix
+++ b/pkgs/tools/archivers/cabextract/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     license = licenses.gpl3;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "cabextract";
   };
 }
diff --git a/pkgs/tools/archivers/cpio/default.nix b/pkgs/tools/archivers/cpio/default.nix
index 0fe726f09977f..5b65a580fa673 100644
--- a/pkgs/tools/archivers/cpio/default.nix
+++ b/pkgs/tools/archivers/cpio/default.nix
@@ -1,6 +1,7 @@
 { lib
 , stdenv
 , fetchurl
+, autoreconfHook
 
 # for passthru.tests
 , git
@@ -11,13 +12,15 @@
 
 stdenv.mkDerivation rec {
   pname = "cpio";
-  version = "2.14";
+  version = "2.15";
 
   src = fetchurl {
     url = "mirror://gnu/cpio/cpio-${version}.tar.bz2";
-    sha256 = "/NwV1g9yZ6b8fvzWudt7bIlmxPL7u5ZMJNQTNv0/LBI=";
+    hash = "sha256-k3YQuXwymh7JJoVT+3gAN7z/8Nz/6XJevE/ZwaqQdds=";
   };
 
+  nativeBuildInputs = [ autoreconfHook ];
+
   separateDebugInfo = true;
 
   preConfigure = lib.optionalString stdenv.isCygwin ''
@@ -38,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.all;
     priority = 6; # resolves collision with gnutar's "libexec/rmt"
+    mainProgram = "cpio";
   };
 }
diff --git a/pkgs/tools/archivers/cromfs/default.nix b/pkgs/tools/archivers/cromfs/default.nix
index 899640d90c455..b775eb1561ef0 100644
--- a/pkgs/tools/archivers/cromfs/default.nix
+++ b/pkgs/tools/archivers/cromfs/default.nix
@@ -22,6 +22,8 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ fuse perl ];
 
+  makeFlags = [ "CXXFLAGS=-std=c++03" ];
+
   meta = with lib; {
     description = "FUSE Compressed ROM filesystem with lzma";
     homepage = "https://bisqwit.iki.fi/source/cromfs.html";
diff --git a/pkgs/tools/archivers/ctrtool/default.nix b/pkgs/tools/archivers/ctrtool/default.nix
index 2408f3cf6d6ac..74b95a116575e 100644
--- a/pkgs/tools/archivers/ctrtool/default.nix
+++ b/pkgs/tools/archivers/ctrtool/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
     description = "A tool to extract data from a 3ds rom";
     platforms = platforms.linux;
     maintainers = [ maintainers.marius851000 ];
+    mainProgram = "ctrtool";
   };
 
 }
diff --git a/pkgs/tools/archivers/dumpnar/default.nix b/pkgs/tools/archivers/dumpnar/default.nix
index e2285574a9a6f..77ce4649b3993 100644
--- a/pkgs/tools/archivers/dumpnar/default.nix
+++ b/pkgs/tools/archivers/dumpnar/default.nix
@@ -18,9 +18,10 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     homepage = "https://github.com/stephank/dumpnar";
-    description = "Minimal tool to produce a Nix NAR archive.";
+    description = "Minimal tool to produce a Nix NAR archive";
     license = licenses.lgpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.stephank ];
+    mainProgram = "dumpnar";
   };
 }
diff --git a/pkgs/tools/archivers/fsarchiver/default.nix b/pkgs/tools/archivers/fsarchiver/default.nix
index e9265108bb959..40a16f21ab599 100644
--- a/pkgs/tools/archivers/fsarchiver/default.nix
+++ b/pkgs/tools/archivers/fsarchiver/default.nix
@@ -40,5 +40,6 @@ in stdenv.mkDerivation {
     license = licenses.lgpl2;
     maintainers = with maintainers; [ ];
     platforms = platforms.linux;
+    mainProgram = "fsarchiver";
   };
 }
diff --git a/pkgs/tools/archivers/gbl/default.nix b/pkgs/tools/archivers/gbl/default.nix
index 90c66e8ac7c53..02dbfc683edb3 100644
--- a/pkgs/tools/archivers/gbl/default.nix
+++ b/pkgs/tools/archivers/gbl/default.nix
@@ -52,5 +52,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jonas-schievink/gbl";
     license = licenses.mit;
     maintainers = [ maintainers.raboof ];
+    mainProgram = "gbl";
   };
 }
diff --git a/pkgs/tools/archivers/innoextract/default.nix b/pkgs/tools/archivers/innoextract/default.nix
index d2e1bebb36764..7c66dcb84d00d 100644
--- a/pkgs/tools/archivers/innoextract/default.nix
+++ b/pkgs/tools/archivers/innoextract/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.zlib;
     maintainers = with maintainers; [ abbradar ];
     platforms = platforms.linux;
+    mainProgram = "innoextract";
   };
 }
diff --git a/pkgs/tools/archivers/lha/default.nix b/pkgs/tools/archivers/lha/default.nix
index f6b5c2bd13505..b7d0ac9302903 100644
--- a/pkgs/tools/archivers/lha/default.nix
+++ b/pkgs/tools/archivers/lha/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation {
     # not a free software license (it has additional requirements on commercial
     # use).
     license = licenses.unfree;
+    mainProgram = "lha";
   };
 }
diff --git a/pkgs/tools/archivers/maxcso/default.nix b/pkgs/tools/archivers/maxcso/default.nix
index 1e7fe73728dee..e16d557965dd0 100644
--- a/pkgs/tools/archivers/maxcso/default.nix
+++ b/pkgs/tools/archivers/maxcso/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ david-sawatzke ];
     platforms = platforms.linux ++ platforms.darwin;
     license = licenses.isc;
+    mainProgram = "maxcso";
   };
 }
diff --git a/pkgs/tools/archivers/ndstool/default.nix b/pkgs/tools/archivers/ndstool/default.nix
index de7f02ce846a7..e612d83d066d1 100644
--- a/pkgs/tools/archivers/ndstool/default.nix
+++ b/pkgs/tools/archivers/ndstool/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "A tool to unpack and repack nds rom";
     maintainers = [ lib.maintainers.marius851000 ];
     license = lib.licenses.gpl3;
+    mainProgram = "ndstool";
   };
 }
diff --git a/pkgs/tools/archivers/payload-dumper-go/default.nix b/pkgs/tools/archivers/payload-dumper-go/default.nix
index bb1572e1ceb67..bb1572e1ceb67 100755..100644
--- a/pkgs/tools/archivers/payload-dumper-go/default.nix
+++ b/pkgs/tools/archivers/payload-dumper-go/default.nix
diff --git a/pkgs/tools/archivers/payload_dumper/default.nix b/pkgs/tools/archivers/payload_dumper/default.nix
index 138f62739f41d..ebb717a9e4ceb 100644
--- a/pkgs/tools/archivers/payload_dumper/default.nix
+++ b/pkgs/tools/archivers/payload_dumper/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation (finalAttrs: {
     description = "Android OTA payload dumper";
     license = licenses.gpl3;
     maintainers = with maintainers; [ DamienCassou ];
+    mainProgram = "payload_dumper";
   };
 })
diff --git a/pkgs/tools/archivers/peazip/default.nix b/pkgs/tools/archivers/peazip/default.nix
index b00f7b9d665c7..4070c58d46c2e 100644
--- a/pkgs/tools/archivers/peazip/default.nix
+++ b/pkgs/tools/archivers/peazip/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "peazip";
-  version = "9.4.0";
+  version = "9.6.0";
 
   src = fetchFromGitHub {
     owner = "peazip";
     repo = pname;
     rev = version;
-    hash = "sha256-to5VhuTomw33WRWrtSIMF/SD+KVXsUKmSrJ84BNatqw=";
+    hash = "sha256-75EkVRx6bX1ZZzeNSR7IvKNjTA5NvzFzUJdORiAVHBo=";
   };
   sourceRoot = "${src.name}/peazip-sources";
 
diff --git a/pkgs/tools/archivers/pxattr/default.nix b/pkgs/tools/archivers/pxattr/default.nix
index 57eb7e6f87a13..de4fc45b26118 100644
--- a/pkgs/tools/archivers/pxattr/default.nix
+++ b/pkgs/tools/archivers/pxattr/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     maintainers = [ lib.maintainers.vrthra ];
     license = [ lib.licenses.mit ];
     platforms = lib.platforms.unix;
+    mainProgram = "pxattr";
   };
 }
diff --git a/pkgs/tools/archivers/quickbms/default.nix b/pkgs/tools/archivers/quickbms/default.nix
index b8e1e9fc6f1c7..8915dda1e27e9 100644
--- a/pkgs/tools/archivers/quickbms/default.nix
+++ b/pkgs/tools/archivers/quickbms/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ];
     platforms = platforms.linux;
+    mainProgram = "quickbms";
   };
 }
diff --git a/pkgs/tools/archivers/rar/default.nix b/pkgs/tools/archivers/rar/default.nix
index a1c22835752b8..168316813f76e 100644
--- a/pkgs/tools/archivers/rar/default.nix
+++ b/pkgs/tools/archivers/rar/default.nix
@@ -1,39 +1,43 @@
-{ lib, stdenv, fetchurl, autoPatchelfHook, installShellFiles }:
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, installShellFiles
+}:
 
 let
-  version = "6.21";
+  version = "6.24";
   downloadVersion = lib.replaceStrings [ "." ] [ "" ] version;
-  # Use `nix store prefetch-file <url>` to generate the hashes for the other systems
-  # TODO: create update script
-  srcUrl = {
+  # Use `./update.sh` to generate the entries below
+  srcs = {
     i686-linux = {
       url = "https://www.rarlab.com/rar/rarlinux-x32-${downloadVersion}.tar.gz";
-      hash = "sha256-mDeRmLTjF0ZLv4JoLrgI8YBFFulBSKfOPb6hrxDZIkU=";
+      hash = "sha256-aacgJH0iJLRNEaZuVyzl/FxZgSnW3dIZFUfaqt0l88M=";
     };
     x86_64-linux = {
       url = "https://www.rarlab.com/rar/rarlinux-x64-${downloadVersion}.tar.gz";
-      hash = "sha256-3fr5aVkh/r6OfBEcZULJSZp5ydakJOLRPlgzMdlwGTM=";
+      hash = "sha256-iOIqjoQSXJR2N7vyjHRuM4oKYyedgPn51zc2A4ddses=";
     };
     aarch64-darwin = {
       url = "https://www.rarlab.com/rar/rarmacos-arm-${downloadVersion}.tar.gz";
-      hash = "sha256-OR9HBlRteTzuyQ06tyXTSrFTBHFwmZ41kUfvgflogT4=";
+      hash = "sha256-2r4zWDT7Xw/CNvA7oNEsGfrXJDzFa5gNthIB/5TYR5U=";
     };
     x86_64-darwin = {
       url = "https://www.rarlab.com/rar/rarmacos-x64-${downloadVersion}.tar.gz";
-      hash = "sha256-UN3gmEuIpCXwmw3/l+KdarAYLy1DxGoPAOB2bfJTGbw=";
+      hash = "sha256-4vENPNfMpQstsm9+8+glHPK9fAlDmnHWbCHW+HUwSX4=";
     };
-  }.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
+  };
   manSrc = fetchurl {
     url = "https://aur.archlinux.org/cgit/aur.git/plain/rar.1?h=rar&id=8e39a12e88d8a3b168c496c44c18d443c876dd10";
     name = "rar.1";
     hash = "sha256-93cSr9oAsi+xHUtMsUvICyHJe66vAImS2tLie7nt8Uw=";
   };
 in
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "rar";
   inherit version;
 
-  src = fetchurl srcUrl;
+  src = fetchurl (srcs.${stdenv.hostPlatform.system});
 
   dontBuild = true;
 
@@ -57,12 +61,15 @@ stdenv.mkDerivation rec {
     installManPage ${manSrc}
   '';
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     description = "Utility for RAR archives";
     homepage = "https://www.rarlab.com/";
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.unfree;
+    mainProgram = "rar";
     maintainers = with maintainers; [ thiagokokada ];
-    platforms = with platforms; linux ++ darwin;
+    platforms = lib.attrNames srcs;
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
   };
 }
diff --git a/pkgs/tools/archivers/rar/update.sh b/pkgs/tools/archivers/rar/update.sh
new file mode 100755
index 0000000000000..f81562727f29d
--- /dev/null
+++ b/pkgs/tools/archivers/rar/update.sh
@@ -0,0 +1,78 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl gawk gnused pup jq
+
+set -euo pipefail
+
+DIRNAME=$(dirname "$0")
+readonly DIRNAME
+readonly NIXPKGS_ROOT="../../../.."
+readonly NIX_FLAGS=(--extra-experimental-features 'nix-command flakes')
+
+# awk is used for parsing the RARLAB website to get the newest version
+readonly AWK_FIELD_SEPARATOR='[-.]'
+# shellcheck disable=SC2016
+readonly AWK_COMMAND='
+# We will get the following output from pup:
+# /rar/rarlinux-x64-700b3.tar.gz
+# /rar/rarmacos-x64-700b3.tar.gz
+# /rar/rarlinux-x64-624.tar.gz
+# /rar/rarbsd-x64-624.tar.gz
+# /rar/rarmacos-x64-624.tar.gz
+
+# Ignore anything that is flagged as beta (e.g.: `/rar/rarlinux-x64-700b3.tar.gz`)
+!/[0-9]+b[0-9]*.tar.gz$/ {
+    # /rar/rarlinux-x64-624.tar.gz -> 624
+    val = $3
+    # Only get the value if it is bigger than the current one
+    if (val > max) max = val
+}
+END {
+    # 624 -> 6.24
+    printf "%.2f\n", max/100
+}
+'
+
+updateHash() {
+    local -r version="${1//./}"
+    local -r arch="$2"
+    local -r os="$3"
+    local -r nix_arch="$4"
+
+    url="https://www.rarlab.com/rar/rar$os-$arch-$version.tar.gz"
+    hash=$(nix store prefetch-file --json "$url" | jq -r .hash)
+    currentHash=$(cd "$DIRNAME" && nix "${NIX_FLAGS[@]}" eval --raw "$NIXPKGS_ROOT#legacyPackages.$nix_arch.rar.src.outputHash")
+
+    sed -i "s|$currentHash|$hash|g" "$DIRNAME/default.nix"
+}
+
+updateVersion() {
+    local -r version="$1"
+    sed -i "s|version = \"[0-9.]*\";|version = \"$version\";|g" "$DIRNAME/default.nix"
+}
+
+latestVersion="${1:-}"
+if [[ -z "$latestVersion" ]]; then
+    latestVersion=$(
+        curl --silent --location --fail https://www.rarlab.com/download.htm | \
+            pup 'a[href*=".tar.gz"] attr{href}' | \
+            awk -F"$AWK_FIELD_SEPARATOR" "$AWK_COMMAND"
+    )
+fi
+readonly latestVersion
+echo "Latest version: $latestVersion"
+
+currentVersion=$(cd "$DIRNAME" && nix "${NIX_FLAGS[@]}" eval --raw "$NIXPKGS_ROOT#legacyPackages.x86_64-linux.rar.version")
+readonly currentVersion
+echo "Current version: $currentVersion"
+
+if [[ "$currentVersion" == "$latestVersion" ]]; then
+    echo "rar is up-to-date"
+    exit 0
+fi
+
+updateHash "$latestVersion" x32 linux i686-linux
+updateHash "$latestVersion" x64 linux x86_64-linux
+updateHash "$latestVersion" arm macos aarch64-darwin
+updateHash "$latestVersion" x64 macos x86_64-darwin
+
+updateVersion "$latestVersion"
diff --git a/pkgs/tools/archivers/rpmextract/default.nix b/pkgs/tools/archivers/rpmextract/default.nix
index db768a5d14a22..ed81a23ba7e5b 100644
--- a/pkgs/tools/archivers/rpmextract/default.nix
+++ b/pkgs/tools/archivers/rpmextract/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation {
     platforms = platforms.all;
     license = licenses.gpl2;
     maintainers = with maintainers; [ abbradar ];
+    mainProgram = "rpmextract";
   };
 }
diff --git a/pkgs/tools/archivers/runzip/default.nix b/pkgs/tools/archivers/runzip/default.nix
index fddf90a5d23c5..02b6bd45d8e1d 100644
--- a/pkgs/tools/archivers/runzip/default.nix
+++ b/pkgs/tools/archivers/runzip/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd2;
     maintainers = [ lib.maintainers.raskin ];
     platforms = lib.platforms.unix;
+    mainProgram = "runzip";
   };
 }
diff --git a/pkgs/tools/archivers/sharutils/default.nix b/pkgs/tools/archivers/sharutils/default.nix
index c504ed8f16e1f..5c84e596531c3 100644
--- a/pkgs/tools/archivers/sharutils/default.nix
+++ b/pkgs/tools/archivers/sharutils/default.nix
@@ -58,6 +58,9 @@ stdenv.mkDerivation rec {
       substituteInPlace intl/Makefile.in --replace "AR = ar" ""
     '';
 
+  # Workaround to fix the static build on macOS.
+  env.NIX_CFLAGS_COMPILE = "-Wno-implicit-function-declaration";
+
   doCheck = true;
 
   meta = with lib; {
diff --git a/pkgs/tools/archivers/tarlz/default.nix b/pkgs/tools/archivers/tarlz/default.nix
deleted file mode 100644
index 7f41a05a9a889..0000000000000
--- a/pkgs/tools/archivers/tarlz/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ lib, stdenv, fetchurl, lzip, lzlib, texinfo }:
-
-stdenv.mkDerivation rec {
-  pname = "tarlz";
-  version = "0.22";
-  outputs = [ "out" "man" "info" ];
-
-  nativeBuildInputs = [ lzip texinfo ];
-  buildInputs = [ lzlib ];
-
-  src = fetchurl {
-    url = "mirror://savannah/lzip/${pname}/${pname}-${version}.tar.lz";
-    sha256 = "sha256-/M9yJvoktV0ybKsT926jSb7ERsWo33GkbTQwmaBQkdw=";
-  };
-
-  enableParallelBuilding = true;
-  makeFlags = [ "CXX:=$(CXX)" ];
-  doCheck = !stdenv.isDarwin;
-
-  meta = with lib; {
-    homepage = "https://www.nongnu.org/lzip/${pname}.html";
-    description =
-      "Massively parallel combined implementation of the tar archiver and the lzip compressor";
-    license = licenses.gpl2Plus;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ ehmry ];
-  };
-}
diff --git a/pkgs/tools/archivers/unar/default.nix b/pkgs/tools/archivers/unar/default.nix
index ee1693ee18e25..4b2c66c0fc406 100644
--- a/pkgs/tools/archivers/unar/default.nix
+++ b/pkgs/tools/archivers/unar/default.nix
@@ -50,15 +50,17 @@ stdenv.mkDerivation rec {
     lib.optionals stdenv.isLinux [ gnustep.make ] ++
     lib.optionals stdenv.isDarwin [ xcbuildHook ];
 
+  # Work around https://github.com/NixOS/nixpkgs/issues/166205.
+  # xcbuild links with clang instead of clang++.
+  env = lib.optionalAttrs stdenv.isDarwin {
+    LD_FLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
+  };
+
   xcbuildFlags = lib.optionals stdenv.isDarwin [
     "-target unar"
     "-target lsar"
     "-configuration Release"
-    "MACOSX_DEPLOYMENT_TARGET=10.12"
-    # Fix "ld: file not found: /nix/store/*-clang-7.1.0/lib/arc/libarclite_macosx." error
-    # Disabling ARC may leak memory, however since this program is generally not used for
-    # long periods of time, it shouldn't be an issue
-    "CLANG_LINK_OBJC_RUNTIME=NO"
+    "MACOSX_DEPLOYMENT_TARGET=${stdenv.hostPlatform.darwinMinVersion}"
   ];
 
   makefile = lib.optionalString (!stdenv.isDarwin) "Makefile.linux";
@@ -92,7 +94,7 @@ stdenv.mkDerivation rec {
       ADF, DMS, LZX, PowerPacker, LBR, Squeeze, Crunch, and other old formats.
     '';
     license = licenses.lgpl21Plus;
-    maintainers = with maintainers; [ peterhoeg thiagokokada ];
+    maintainers = with maintainers; [ peterhoeg ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/archivers/undmg/default.nix b/pkgs/tools/archivers/undmg/default.nix
index 0bbf725d191b4..9fe61d5944165 100644
--- a/pkgs/tools/archivers/undmg/default.nix
+++ b/pkgs/tools/archivers/undmg/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.all;
     maintainers = with maintainers; [ matthewbauer lnl7 ];
+    mainProgram = "undmg";
   };
 }
diff --git a/pkgs/tools/archivers/unrar/default.nix b/pkgs/tools/archivers/unrar/default.nix
index ef458089e31a2..9350a6fd1eed9 100644
--- a/pkgs/tools/archivers/unrar/default.nix
+++ b/pkgs/tools/archivers/unrar/default.nix
@@ -54,6 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
     description = "Utility for RAR archives";
     homepage = "https://www.rarlab.com/";
     license = licenses.unfreeRedistributable;
+    mainProgram = "unrar";
     maintainers = with maintainers; [ ehmry wegank ];
     platforms = platforms.all;
   };
diff --git a/pkgs/tools/archivers/unshield/default.nix b/pkgs/tools/archivers/unshield/default.nix
index b3d023df59b78..50d93fea99ff2 100644
--- a/pkgs/tools/archivers/unshield/default.nix
+++ b/pkgs/tools/archivers/unshield/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/twogood/unshield";
     license = licenses.mit;
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "unshield";
   };
 }
diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix
index ab37ef98c0bde..9860817cf3e15 100644
--- a/pkgs/tools/archivers/unzip/default.nix
+++ b/pkgs/tools/archivers/unzip/default.nix
@@ -100,7 +100,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://www.info-zip.org";
     description = "An extraction utility for archives compressed in .zip format";
-    license = lib.licenses.free; # http://www.info-zip.org/license.html
+    license = lib.licenses.info-zip;
     platforms = lib.platforms.all;
     mainProgram = "unzip";
   };
diff --git a/pkgs/tools/archivers/unzoo/default.nix b/pkgs/tools/archivers/unzoo/default.nix
index c8fd4364ea33f..b02d010ac0c9a 100644
--- a/pkgs/tools/archivers/unzoo/default.nix
+++ b/pkgs/tools/archivers/unzoo/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.all;
+    mainProgram = "unzoo";
   };
 }
diff --git a/pkgs/tools/archivers/xarchive/default.nix b/pkgs/tools/archivers/xarchive/default.nix
index d28e9f31b1ab7..d26fdabc1d5d6 100644
--- a/pkgs/tools/archivers/xarchive/default.nix
+++ b/pkgs/tools/archivers/xarchive/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     maintainers = [ lib.maintainers.domenkozar ];
     license = lib.licenses.gpl2;
     platforms = lib.platforms.all;
+    mainProgram = "xarchive";
   };
 }
diff --git a/pkgs/tools/archivers/xarchiver/default.nix b/pkgs/tools/archivers/xarchiver/default.nix
index 84052c475e92f..9c0f4685fa0f0 100644
--- a/pkgs/tools/archivers/xarchiver/default.nix
+++ b/pkgs/tools/archivers/xarchiver/default.nix
@@ -2,14 +2,14 @@
   coreutils, zip, unzip, p7zip, unar, gnutar, bzip2, gzip, lhasa, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
-  version = "0.5.4.21";
+  version = "0.5.4.22";
   pname = "xarchiver";
 
   src = fetchFromGitHub {
     owner = "ib";
     repo = "xarchiver";
     rev = version;
-    sha256 = "sha256-pYrF9fyEbay+iboL9EuoTETTI3RTcgv3yeVtAWvAe1Q=";
+    sha256 = "sha256-wB1l1OcLK9rh6cpcDprXZBXLXRSwBFV9aueBI57kjJI=";
   };
 
   nativeBuildInputs = [ intltool pkg-config makeWrapper wrapGAppsHook ];
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = [ lib.maintainers.domenkozar ];
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.all;
+    mainProgram = "xarchiver";
   };
 }
diff --git a/pkgs/tools/archivers/zarchive/default.nix b/pkgs/tools/archivers/zarchive/default.nix
index 442257779c89f..3ef68ae8b71eb 100644
--- a/pkgs/tools/archivers/zarchive/default.nix
+++ b/pkgs/tools/archivers/zarchive/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Exzap/ZArchive";
     license = licenses.mit0;
     maintainers = with maintainers; [ zhaofengli ];
+    mainProgram = "zarchive";
   };
 }
diff --git a/pkgs/tools/archivers/zpaq/default.nix b/pkgs/tools/archivers/zpaq/default.nix
index 6d0f00f514903..6a03b825e902d 100644
--- a/pkgs/tools/archivers/zpaq/default.nix
+++ b/pkgs/tools/archivers/zpaq/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
     homepage = "http://mattmahoney.net/dc/zpaq.html";
     license = licenses.gpl3Plus ;
     maintainers = with maintainers; [ raskin ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
+    mainProgram = "zpaq";
   };
 }