mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-15 14:26:33 +01:00
e47a32e1f5
Adds runtime dependencies needed for zooming into various archive formats, as per the documentation: https://eaglemode.sourceforge.net/SystemRequirements.html Additionally, users can now override extraRuntimeDeps to add additional things that should be available to Eagle Mode at runtime. It supports some exotic things we don't want to always drag in.
149 lines
3.1 KiB
Nix
149 lines
3.1 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchurl,
|
|
perl,
|
|
libX11,
|
|
libXinerama,
|
|
libjpeg,
|
|
libpng,
|
|
libtiff,
|
|
libwebp,
|
|
pkg-config,
|
|
librsvg,
|
|
glib,
|
|
gtk2,
|
|
libXext,
|
|
libXxf86vm,
|
|
poppler,
|
|
vlc,
|
|
ghostscript,
|
|
makeWrapper,
|
|
tzdata,
|
|
makeDesktopItem,
|
|
copyDesktopItems,
|
|
directoryListingUpdater,
|
|
htmldoc,
|
|
binutils,
|
|
gzip,
|
|
p7zip,
|
|
xz,
|
|
zip,
|
|
extraRuntimeDeps ? [ ],
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "eaglemode";
|
|
version = "0.96.2";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://sourceforge/eaglemode/${pname}-${version}.tar.bz2";
|
|
hash = "sha256:1al5n2mcjp0hmsvi4hsdmzd7i0id5i3255xplk0il1nmzydh312a";
|
|
};
|
|
|
|
# Fixes "Error: No time zones found." on the clock
|
|
postPatch = ''
|
|
substituteInPlace src/emClock/emTimeZonesModel.cpp --replace "/usr/share/zoneinfo" "${tzdata}/share/zoneinfo"
|
|
'';
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
makeWrapper
|
|
copyDesktopItems
|
|
];
|
|
buildInputs = [
|
|
perl
|
|
libX11
|
|
libXinerama
|
|
libjpeg
|
|
libpng
|
|
libtiff
|
|
libwebp
|
|
librsvg
|
|
glib
|
|
gtk2
|
|
libXxf86vm
|
|
libXext
|
|
poppler
|
|
vlc
|
|
ghostscript
|
|
];
|
|
|
|
# The program tries to dlopen Xxf86vm, Xext and Xinerama, so we use the
|
|
# trick on NIX_LDFLAGS and dontPatchELF to make it find them.
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
export NIX_LDFLAGS="$NIX_LDFLAGS -lXxf86vm -lXext -lXinerama"
|
|
perl make.pl build
|
|
runHook postBuild
|
|
'';
|
|
|
|
dontPatchELF = true;
|
|
# eaglemode expects doc to be in the root directory
|
|
forceShare = [
|
|
"man"
|
|
"info"
|
|
];
|
|
|
|
installPhase =
|
|
let
|
|
runtimeDeps = lib.makeBinPath (
|
|
[
|
|
ghostscript # renders the manual
|
|
htmldoc # renders HTML files in file browser
|
|
perl # various display scripts use Perl
|
|
|
|
# archive formats in the file browser:
|
|
binutils
|
|
gzip
|
|
p7zip
|
|
xz
|
|
zip
|
|
]
|
|
++ extraRuntimeDeps
|
|
);
|
|
in
|
|
''
|
|
runHook preInstall
|
|
perl make.pl install dir=$out
|
|
wrapProgram $out/bin/eaglemode --set EM_DIR "$out" --prefix LD_LIBRARY_PATH : "$out/lib" --prefix PATH : "${runtimeDeps}"
|
|
for i in 32 48 96; do
|
|
mkdir -p $out/share/icons/hicolor/''${i}x''${i}/apps
|
|
ln -s $out/res/icons/${pname}$i.png $out/share/icons/hicolor/''${i}x''${i}/apps/${pname}.png
|
|
done
|
|
runHook postInstall
|
|
'';
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = pname;
|
|
exec = pname;
|
|
icon = pname;
|
|
desktopName = "Eagle Mode";
|
|
genericName = meta.description;
|
|
categories = [
|
|
"Game"
|
|
"Graphics"
|
|
"System"
|
|
"Utility"
|
|
];
|
|
})
|
|
];
|
|
|
|
passthru.updateScript = directoryListingUpdater {
|
|
url = "https://eaglemode.sourceforge.net/download.html";
|
|
extraRegex = "(?!.*(x86_64|setup64|livecd)).*";
|
|
};
|
|
|
|
meta = with lib; {
|
|
homepage = "https://eaglemode.sourceforge.net";
|
|
description = "Zoomable User Interface";
|
|
changelog = "https://eaglemode.sourceforge.net/ChangeLog.html";
|
|
license = licenses.gpl3;
|
|
maintainers = with maintainers; [
|
|
chuangzhu
|
|
ehmry
|
|
];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|