Files
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

105 lines
2.6 KiB
Nix

{
lib,
stdenv,
fetchurl,
makeDesktopItem,
openjdk21,
gtk3,
glib,
adwaita-icon-theme,
wrapGAppsHook3,
libXtst,
which,
}:
let
jre = openjdk21;
in
stdenv.mkDerivation (finalAttrs: {
pname = "smartsynchronize";
version = "4.6.3";
src = fetchurl {
url = "https://www.syntevo.com/downloads/smartsynchronize/smartsynchronize-linux-${
builtins.replaceStrings [ "." ] [ "_" ] finalAttrs.version
}.tar.gz";
hash = "sha256-F+Yrr029nPnnCvFEhIxgeXloyt2JRKSw8uOmVySWKzo=";
};
nativeBuildInputs = [ wrapGAppsHook3 ];
buildInputs = [
jre
adwaita-icon-theme
gtk3
];
preFixup = ''
gappsWrapperArgs+=( \
--prefix PATH : ${
lib.makeBinPath [
jre
which
]
} \
--prefix LD_LIBRARY_PATH : ${
lib.makeLibraryPath [
gtk3
glib
libXtst
]
} \
--prefix JAVA_HOME : ${jre} \
)
'';
installPhase = ''
runHook preInstall
mkdir -pv $out/{bin,share/applications,share/icons/hicolor/scalable/apps/}
cp -av ./lib $out/
cp -av bin/smartsynchronize.sh $out/bin/smartsynchronize
cp -av $desktopItem/share/applications/* $out/share/applications/
for icon_size in 32 48 64 128 256; do
path=$icon_size'x'$icon_size
icon=bin/smartsynchronize-$icon_size.png
mkdir -p $out/share/icons/hicolor/$path/apps
cp $icon $out/share/icons/hicolor/$path/apps/smartsynchronize.png
done
cp -av bin/smartsynchronize.svg $out/share/icons/hicolor/scalable/apps/
runHook postInstall
'';
desktopItem = makeDesktopItem {
name = "smartsynchronize";
exec = "smartsynchronize";
comment = finalAttrs.meta.description;
icon = "smartsynchronize";
desktopName = "SmartSynchronize";
categories = [ "Development" ];
startupNotify = true;
startupWMClass = "smartsynchronize";
keywords = [
"compare"
"file manager"
];
};
meta = {
description = "File Manager, File/Directory Compare";
longDescription = ''
SmartSynchronize is a dual-pane, keyboard-centric, multi-platform file manager.
It also is known for its file compare, directory compare and file merge.
SmartSynchronize is free to use for active Open Source developers and users from academic institutions.
'';
homepage = "https://www.syntevo.com/smartsynchronize/";
changelog = "https://www.syntevo.com/smartsynchronize/changelog-${lib.versions.majorMinor finalAttrs.version}.txt";
license = lib.licenses.unfree;
mainProgram = "smartsynchronize";
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ tmssngr ];
};
})