Files
nixpkgs/pkgs/by-name/pe/peazip/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

142 lines
4.4 KiB
Nix

{
stdenv,
lib,
fetchFromGitHub,
qt6Packages,
fpc,
lazarus,
xorg,
runCommand,
_7zz,
brotli,
upx,
zpaq,
zstd,
writableTmpDirAsHomeHook,
}:
let
# peazip looks for the "7z", not "7zz"
_7z = runCommand "7z" { } ''
mkdir -p $out/bin
ln -s ${_7zz}/bin/7zz $out/bin/7z
'';
in
stdenv.mkDerivation (finalAttrs: {
pname = "peazip";
version = "10.6.1";
src = fetchFromGitHub {
owner = "peazip";
repo = "peazip";
rev = finalAttrs.version;
hash = "sha256-y+q4S3XHkN2dvHMaRxPQwK9l9LaA5rGvrzzZ+x76qUQ=";
};
sourceRoot = "${finalAttrs.src.name}/peazip-sources";
postPatch = ''
# set it to use compression programs from $PATH
substituteInPlace dev/peach.pas --replace-fail " HSYSBIN = 0;" " HSYSBIN = 2;"
'';
nativeBuildInputs = [
qt6Packages.wrapQtAppsHook
lazarus
fpc
# lazarus tries to create files in $HOME/.lazarus
writableTmpDirAsHomeHook
];
buildInputs = [
xorg.libX11
]
++ (with qt6Packages; [
qtbase
libqtpas
]);
env.NIX_LDFLAGS = "--as-needed -rpath ${lib.makeLibraryPath finalAttrs.buildInputs}";
buildPhase = ''
pushd dev
lazbuild --lazarusdir=${lazarus}/share/lazarus --add-package metadarkstyle/metadarkstyle.lpk
lazbuild --lazarusdir=${lazarus}/share/lazarus --widgetset=qt6 --build-all project_pea.lpi
lazbuild --lazarusdir=${lazarus}/share/lazarus --widgetset=qt6 --build-all project_peach.lpi
popd
'';
installPhase = ''
runHook preInstall
install -D dev/{pea,peazip} -t $out/lib/peazip
mkdir -p $out/bin
makeWrapper $out/lib/peazip/peazip $out/bin/peazip \
--prefix PATH : ${
lib.makeBinPath [
_7z
brotli
upx
zpaq
zstd
]
} \
''${qtWrapperArgs[@]} # putting this here as to not have double wrapping
makeWrapper $out/lib/peazip/pea $out/bin/pea \
''${qtWrapperArgs[@]} # putting this here as to not have double wrapping
mkdir -p $out/share/peazip $out/lib/peazip/res
ln -s $out/share/peazip $out/lib/peazip/res/share
cp -r res/share/{icons,lang,themes,presets} $out/share/peazip/
# Install desktop entries
# We don't copy res/share/batch/freedesktop_integration/additional-desktop-files/*.desktop because they are just duplicates of res/share/batch/freedesktop_integration/*.desktop
install -D res/share/batch/freedesktop_integration/*.desktop -t $out/share/applications
install -D res/share/batch/freedesktop_integration/KDE-servicemenus/KDE6-dolphin/*.desktop -t $out/share/kio/servicemenus
install -D res/share/batch/freedesktop_integration/KDE-servicemenus/KDE5-dolphin/*.desktop -t $out/share/kservices5/ServiceMenus
install -D res/share/batch/freedesktop_integration/KDE-servicemenus/KDE4-dolphin/*.desktop -t $out/share/kde4/services/ServiceMenus
install -D res/share/batch/freedesktop_integration/KDE-servicemenus/KDE3-konqueror/*.desktop -t $out/share/apps/konqueror/servicemenus
# Install desktop entries's icons
for size in {48,256}; do
mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
mkdir $out/share/icons/hicolor/"$size"x"$size"/mimetypes
mkdir $out/share/icons/hicolor/"$size"x"$size"/actions
done
pushd res/share/batch/freedesktop_integration
cp peazip.png $out/share/icons/hicolor/256x256/apps/
pushd additional-desktop-files
cp peazip_{7z,cd,zip}.png $out/share/icons/hicolor/256x256/mimetypes/
cp peazip_{add,extract,convert}.png $out/share/icons/hicolor/256x256/actions/
popd
pushd alternative-icons/48px
# for some reason the maintainer only made 48px version of *some* icons
cp peazip.png $out/share/icons/hicolor/48x48/apps/
cp peazip_{add,extract}.png $out/share/icons/hicolor/48x48/actions/
popd
popd
runHook postInstall
'';
dontWrapQtApps = true;
meta = {
description = "File and archive manager";
longDescription = ''
Free Zip / Unzip software and Rar file extractor. File and archive manager.
Features volume spanning, compression, authenticated encryption.
Supports 7Z, 7-Zip sfx, ACE, ARJ, Brotli, BZ2, CAB, CHM, CPIO, DEB, GZ, ISO, JAR, LHA/LZH, NSIS, OOo, PEA, RAR, RPM, split, TAR, Z, ZIP, ZIPX, Zstandard.
'';
license = lib.licenses.gpl3Only;
homepage = "https://peazip.github.io";
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ annaaurora ];
mainProgram = "peazip";
};
})