about summary refs log tree commit diff
path: root/pkgs/by-name/un
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2024-02-29 20:17:44 +0100
committerWeijia Wang <9713184+wegank@users.noreply.github.com>2024-03-08 09:38:52 +0100
commitb72ee72a80dd4c7e93b508ab64daf9de4ab8cbb0 (patch)
tree5f08ab33210e2583dbfa7c7fb1221f48bdf2adb0 /pkgs/by-name/un
parent77885faa6ffe88bd97a0597797881c383034492a (diff)
unrar: move to pkgs/by-name
Diffstat (limited to 'pkgs/by-name/un')
-rw-r--r--pkgs/by-name/un/unrar/package.nix61
-rw-r--r--pkgs/by-name/un/unrar/setup-hook.sh5
2 files changed, 66 insertions, 0 deletions
diff --git a/pkgs/by-name/un/unrar/package.nix b/pkgs/by-name/un/unrar/package.nix
new file mode 100644
index 0000000000000..8b4f46088b2d5
--- /dev/null
+++ b/pkgs/by-name/un/unrar/package.nix
@@ -0,0 +1,61 @@
+{ lib
+, stdenv
+, fetchzip
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "unrar";
+  version = "6.2.12";
+
+  src = fetchzip {
+    url = "https://www.rarlab.com/rar/unrarsrc-${finalAttrs.version}.tar.gz";
+    stripRoot = false;
+    hash = "sha256-VAL3o9JGmkAcEssa/P/SL9nyxnigb7dX9YZBHrG9f0A=";
+  };
+
+  sourceRoot = finalAttrs.src.name;
+
+  postPatch = ''
+    substituteInPlace unrar/makefile \
+      --replace "CXX=" "#CXX=" \
+      --replace "STRIP=" "#STRIP=" \
+      --replace "AR=" "#AR="
+  '';
+
+  outputs = [ "out" "dev" ];
+
+  # `make {unrar,lib}` call `make clean` implicitly
+  # separate build into different dirs to avoid deleting them
+  buildPhase = ''
+    runHook preBuild
+
+    cp -a unrar libunrar
+    make -C libunrar lib
+    make -C unrar -j1
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 unrar/unrar -t $out/bin/
+    install -Dm644 unrar/{acknow.txt,license.txt} -t $out/share/doc/unrar/
+
+    install -Dm755 libunrar/libunrar.so -t $out/lib/
+    install -Dm644 libunrar/dll.hpp -t $dev/include/unrar/
+
+    runHook postInstall
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with lib; {
+    description = "Utility for RAR archives";
+    homepage = "https://www.rarlab.com/";
+    license = licenses.unfreeRedistributable;
+    mainProgram = "unrar";
+    maintainers = with maintainers; [ wegank ];
+    platforms = platforms.all;
+  };
+})
diff --git a/pkgs/by-name/un/unrar/setup-hook.sh b/pkgs/by-name/un/unrar/setup-hook.sh
new file mode 100644
index 0000000000000..41d6a5cd217bc
--- /dev/null
+++ b/pkgs/by-name/un/unrar/setup-hook.sh
@@ -0,0 +1,5 @@
+unpackCmdHooks+=(_tryUnrar)
+_tryUnrar() {
+    if ! [[ "$curSrc" =~ \.rar$ ]]; then return 1; fi
+    unrar x "$curSrc" >/dev/null
+}