104 lines
2.3 KiB
Nix
104 lines
2.3 KiB
Nix
{ lib
|
|
, gcc12Stdenv
|
|
, fetchFromGitHub
|
|
, fetchpatch
|
|
, pkg-config
|
|
, curl
|
|
, glib
|
|
, gtk3
|
|
, libssh2
|
|
, openssl
|
|
, wxGTK32
|
|
}:
|
|
|
|
gcc12Stdenv.mkDerivation rec {
|
|
pname = "freefilesync";
|
|
version = "11.25";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "hkneptune";
|
|
repo = "FreeFileSync";
|
|
rev = "v${version}";
|
|
sha256 = "sha256-JV9qwBiF9kl+wc9+7lUufQVu6uiMQ6vojntxduNJ8MI=";
|
|
};
|
|
|
|
# Patches from ROSA Linux
|
|
patches = [
|
|
# Disable loading of the missing Animal.dat
|
|
(fetchpatch {
|
|
url = "https://abf.io/import/freefilesync/raw/rosa2021.1-11.25-1/ffs_devuan.patch";
|
|
sha256 = "sha256-o8T/tBinlhM1I82yXxm0ogZcZf+uri95vTJrca5mcqs=";
|
|
excludes = [ "FreeFileSync/Source/ffs_paths.cpp" ];
|
|
postFetch = ''
|
|
substituteInPlace $out --replace " for Rosa" ""
|
|
'';
|
|
})
|
|
# Fix build with GTK 3
|
|
(fetchpatch {
|
|
url = "https://abf.io/import/freefilesync/raw/rosa2021.1-11.25-1/ffs_devuan_gtk3.patch";
|
|
sha256 = "sha256-NXt/+BRTcMk8bnjR9Hipv1NzV9YqRJqy0e3RMInoWsA=";
|
|
postFetch = ''
|
|
substituteInPlace $out --replace "-isystem/usr/include/gtk-3.0" ""
|
|
'';
|
|
})
|
|
];
|
|
|
|
postPatch = ''
|
|
substituteInPlace FreeFileSync/Source/ui/version_check.cpp \
|
|
--replace "openBrowserForDownload();" "openBrowserForDownload(parent);"
|
|
'';
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
];
|
|
|
|
buildInputs = [
|
|
curl
|
|
glib
|
|
gtk3
|
|
libssh2
|
|
openssl
|
|
wxGTK32
|
|
];
|
|
|
|
NIX_CFLAGS_COMPILE = [
|
|
# Undef g_object_ref on GLib 2.56+
|
|
"-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_54"
|
|
"-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_54"
|
|
# Define libssh2 constants
|
|
"-DMAX_SFTP_READ_SIZE=30000"
|
|
"-DMAX_SFTP_OUTGOING_SIZE=30000"
|
|
];
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
chmod +w FreeFileSync/Build
|
|
cd FreeFileSync/Source
|
|
make -j$NIX_BUILD_CORES
|
|
cd RealTimeSync
|
|
make -j$NIX_BUILD_CORES
|
|
cd ../../..
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out
|
|
cp -R FreeFileSync/Build/* $out
|
|
mv $out/{Bin,bin}
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Open Source File Synchronization & Backup Software";
|
|
homepage = "https://freefilesync.org";
|
|
license = [ licenses.gpl3Only licenses.openssl licenses.curl licenses.libssh2 ];
|
|
maintainers = with maintainers; [ wegank ];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|