|
|
|
@ -1,12 +1,22 @@ |
|
|
|
|
{lib, stdenv, fetchFromGitHub, ocamlPackages, fontschumachermisc, xset, makeWrapper, ncurses, gnugrep, fetchpatch, copyDesktopItems, makeDesktopItem |
|
|
|
|
, enableX11 ? true}: |
|
|
|
|
|
|
|
|
|
let inherit (ocamlPackages) ocaml lablgtk; in |
|
|
|
|
|
|
|
|
|
stdenv.mkDerivation (rec { |
|
|
|
|
{ lib |
|
|
|
|
, stdenv |
|
|
|
|
, fetchFromGitHub |
|
|
|
|
, ocamlPackages |
|
|
|
|
, fontschumachermisc |
|
|
|
|
, xset |
|
|
|
|
, makeWrapper |
|
|
|
|
, ncurses |
|
|
|
|
, gnugrep |
|
|
|
|
, fetchpatch |
|
|
|
|
, copyDesktopItems |
|
|
|
|
, makeDesktopItem |
|
|
|
|
, enableX11 ? true |
|
|
|
|
}: |
|
|
|
|
|
|
|
|
|
stdenv.mkDerivation rec { |
|
|
|
|
pname = "unison"; |
|
|
|
|
version = "2.51.3"; |
|
|
|
|
|
|
|
|
|
src = fetchFromGitHub { |
|
|
|
|
owner = "bcpierce00"; |
|
|
|
|
repo = "unison"; |
|
|
|
@ -14,8 +24,9 @@ stdenv.mkDerivation (rec { |
|
|
|
|
sha256 = "sha256-42hmdMwOYSWGiDCmhuqtpCWtvtyD2l+kA/bhHD/Qh5Y="; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
nativeBuildInputs = [ makeWrapper ] ++ (lib.lists.optional enableX11 copyDesktopItems); |
|
|
|
|
buildInputs = [ ocaml ncurses ]; |
|
|
|
|
nativeBuildInputs = [ makeWrapper ] |
|
|
|
|
++ lib.optional enableX11 copyDesktopItems; |
|
|
|
|
buildInputs = [ ocamlPackages.ocaml ncurses ]; |
|
|
|
|
|
|
|
|
|
patches = [ |
|
|
|
|
# Patch to fix build with ocaml 4.12. Remove in 2.51.4 |
|
|
|
@ -27,20 +38,22 @@ stdenv.mkDerivation (rec { |
|
|
|
|
}) |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
preBuild = (lib.strings.optionalString enableX11 '' |
|
|
|
|
sed -i "s|\(OCAMLOPT=.*\)$|\1 -I $(echo "${lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)|" src/Makefile.OCaml |
|
|
|
|
'') + '' |
|
|
|
|
echo -e '\ninstall:\n\tcp $(FSMONITOR)$(EXEC_EXT) $(INSTALLDIR)' >> src/fsmonitor/linux/Makefile |
|
|
|
|
preBuild = lib.optionalString enableX11 '' |
|
|
|
|
sed -i "s|\(OCAMLOPT=.*\)$|\1 -I $(echo "${ocamlPackages.lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)|" src/Makefile.OCaml |
|
|
|
|
'' + '' |
|
|
|
|
echo -e '\ninstall:\n\tcp $(FSMONITOR)$(EXEC_EXT) $(INSTALLDIR)' >> src/fsmonitor/linux/Makefile |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
makeFlags = [ |
|
|
|
|
"INSTALLDIR=$(out)/bin/" |
|
|
|
|
"UISTYLE=${if enableX11 then "gtk2" else "text"}" |
|
|
|
|
] ++ lib.optional (!ocaml.nativeCompilers) "NATIVE=false"; |
|
|
|
|
] ++ lib.optional (!ocamlPackages.ocaml.nativeCompilers) "NATIVE=false"; |
|
|
|
|
|
|
|
|
|
preInstall = "mkdir -p $out/bin"; |
|
|
|
|
preInstall = '' |
|
|
|
|
mkdir -p $out/bin |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
postInstall = lib.strings.optionalString enableX11 '' |
|
|
|
|
postInstall = lib.optionalString enableX11 '' |
|
|
|
|
for i in $(cd $out/bin && ls); do |
|
|
|
|
wrapProgram $out/bin/$i \ |
|
|
|
|
--run "[ -n \"\$DISPLAY\" ] && (${xset}/bin/xset q | ${gnugrep}/bin/grep -q \"${fontschumachermisc}\" || ${xset}/bin/xset +fp \"${fontschumachermisc}/lib/X11/fonts/misc\")" |
|
|
|
@ -49,9 +62,9 @@ stdenv.mkDerivation (rec { |
|
|
|
|
install -D $src/icons/U.svg $out/share/icons/hicolor/scalable/apps/unison.svg |
|
|
|
|
''; |
|
|
|
|
|
|
|
|
|
dontStrip = !ocaml.nativeCompilers; |
|
|
|
|
dontStrip = !ocamlPackages.ocaml.nativeCompilers; |
|
|
|
|
|
|
|
|
|
desktopItems = lib.lists.optional enableX11 (makeDesktopItem { |
|
|
|
|
desktopItems = lib.optional enableX11 (makeDesktopItem { |
|
|
|
|
name = pname; |
|
|
|
|
desktopName = "Unison"; |
|
|
|
|
comment = "Bidirectional file synchronizer"; |
|
|
|
@ -59,19 +72,18 @@ stdenv.mkDerivation (rec { |
|
|
|
|
exec = "unison"; |
|
|
|
|
icon = "unison"; |
|
|
|
|
categories = "Utility;FileTools;GTK;"; |
|
|
|
|
extraDesktopEntries={ |
|
|
|
|
StartupWMClass="Unison"; |
|
|
|
|
StartupNotify="true"; |
|
|
|
|
X-MultipleArgs="false"; |
|
|
|
|
extraDesktopEntries = { |
|
|
|
|
StartupWMClass = "Unison"; |
|
|
|
|
StartupNotify = "true"; |
|
|
|
|
X-MultipleArgs = "false"; |
|
|
|
|
}; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
meta = { |
|
|
|
|
meta = with lib; { |
|
|
|
|
homepage = "https://www.cis.upenn.edu/~bcpierce/unison/"; |
|
|
|
|
description = "Bidirectional file synchronizer"; |
|
|
|
|
license = lib.licenses.gpl3Plus; |
|
|
|
|
maintainers = with lib.maintainers; [viric]; |
|
|
|
|
platforms = with lib.platforms; unix; |
|
|
|
|
license = licenses.gpl3Plus; |
|
|
|
|
maintainers = with maintainers; [ viric ]; |
|
|
|
|
platforms = platforms.unix; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|