nixpkgs/pkgs/applications/graphics/imv/default.nix
Ricardo M. Correia 945c021476 imv: clarify license
licenses.gpl2 is deprecated, either gpl2Only or gpl2Plus should be
specified. However, imv is dual-licensed under the GPL and MIT licenses.

MIT is the one in the root LICENSE file, it's the one that Github shows
in  the main repo page and is also the more permissive one, therefore I
changed it to licenses.mit.
2021-06-14 00:32:05 +02:00

116 lines
2.6 KiB
Nix

{ stdenv
, lib
, fetchFromGitHub
, asciidoc
, cmocka
, docbook_xsl
, libxslt
, meson
, ninja
, pkg-config
, icu
, pango
, inih
, withWindowSystem ? "all"
, xorg
, libxkbcommon
, libGLU
, wayland
, withBackends ? [ "freeimage" "libtiff" "libjpeg" "libpng" "librsvg" "libnsgif" "libheif" ]
, freeimage
, libtiff
, libjpeg_turbo
, libpng
, librsvg
, netsurf
, libheif
}:
let
windowSystems = {
all = windowSystems.x11 ++ windowSystems.wayland;
x11 = [ libGLU xorg.libxcb xorg.libX11 ];
wayland = [ wayland ];
};
backends = {
inherit freeimage libtiff libpng librsvg libheif;
libjpeg = libjpeg_turbo;
inherit (netsurf) libnsgif;
};
backendFlags = builtins.map
(b: if builtins.elem b withBackends
then "-D${b}=enabled"
else "-D${b}=disabled")
(builtins.attrNames backends);
in
# check that given window system is valid
assert lib.assertOneOf "withWindowSystem" withWindowSystem
(builtins.attrNames windowSystems);
# check that every given backend is valid
assert builtins.all
(b: lib.assertOneOf "each backend" b (builtins.attrNames backends))
withBackends;
stdenv.mkDerivation rec {
pname = "imv";
version = "4.2.0";
src = fetchFromGitHub {
owner = "eXeC64";
repo = "imv";
rev = "v${version}";
sha256 = "07pcpppmfvvj0czfvp1cyq03ha0jdj4whl13lzvw37q3vpxs5qqh";
};
mesonFlags = [
"-Dwindows=${withWindowSystem}"
"-Dtest=enabled"
"-Dman=enabled"
] ++ backendFlags;
nativeBuildInputs = [
asciidoc
cmocka
docbook_xsl
libxslt
meson
ninja
pkg-config
];
buildInputs = [
icu
libxkbcommon
pango
inih
] ++ windowSystems."${withWindowSystem}"
++ builtins.map (b: backends."${b}") withBackends;
postInstall = ''
# fix the executable path and install the desktop item
substituteInPlace ../files/imv.desktop --replace "imv %F" "$out/bin/imv %F"
install -Dm644 ../files/imv.desktop $out/share/applications/
'';
postFixup = lib.optionalString (withWindowSystem == "all") ''
# The `bin/imv` script assumes imv-wayland or imv-x11 in PATH,
# so we have to fix those to the binaries we installed into the /nix/store
substituteInPlace "$out/bin/imv" \
--replace "imv-wayland" "$out/bin/imv-wayland" \
--replace "imv-x11" "$out/bin/imv-x11"
'';
doCheck = true;
meta = with lib; {
description = "A command line image viewer for tiling window managers";
homepage = "https://github.com/eXeC64/imv";
license = licenses.mit;
maintainers = with maintainers; [ rnhmjoj markus1189 ];
platforms = platforms.all;
};
}