toxic: 0.15.1 -> 0.16.0
[NixPkgs.git] / pkgs / by-name / lo / loupe / package.nix
blob2dca4a4638c4766f3e9d9f26cff4f90c637c555d
2   stdenv,
3   lib,
4   fetchurl,
5   cargo,
6   desktop-file-utils,
7   itstool,
8   meson,
9   ninja,
10   pkg-config,
11   jq,
12   moreutils,
13   rustc,
14   wrapGAppsHook4,
15   gtk4,
16   lcms2,
17   libadwaita,
18   libgweather,
19   libseccomp,
20   glycin-loaders,
21   gnome,
24 stdenv.mkDerivation (finalAttrs: {
25   pname = "loupe";
26   version = "47.2";
28   src = fetchurl {
29     url = "mirror://gnome/sources/loupe/${lib.versions.major finalAttrs.version}/loupe-${finalAttrs.version}.tar.xz";
30     hash = "sha256-bgRu/k965X7idI1S0dBzVsdEnSBKPTHQtCNnqAGXShU=";
31   };
33   patches = [
34     # Fix paths in glycin library
35     glycin-loaders.passthru.glycinPathsPatch
36   ];
38   nativeBuildInputs = [
39     cargo
40     desktop-file-utils
41     itstool
42     meson
43     ninja
44     pkg-config
45     jq
46     moreutils
47     rustc
48     wrapGAppsHook4
49   ];
51   buildInputs = [
52     gtk4
53     lcms2
54     libadwaita
55     libgweather
56     libseccomp
57   ];
59   postPatch = ''
60     # Replace hash of file we patch in vendored glycin.
61     jq \
62       --arg hash "$(sha256sum vendor/glycin/src/sandbox.rs | cut -d' ' -f 1)" \
63       '.files."src/sandbox.rs" = $hash' \
64       vendor/glycin/.cargo-checksum.json \
65       | sponge vendor/glycin/.cargo-checksum.json
66   '';
68   preFixup = ''
69     # Needed for the glycin crate to find loaders.
70     # https://gitlab.gnome.org/sophie-h/glycin/-/blob/0.1.beta.2/glycin/src/config.rs#L44
71     gappsWrapperArgs+=(
72       --prefix XDG_DATA_DIRS : "${glycin-loaders}/share"
73     )
74   '';
76   passthru.updateScript = gnome.updateScript {
77     packageName = "loupe";
78   };
80   meta = with lib; {
81     homepage = "https://gitlab.gnome.org/GNOME/loupe";
82     changelog = "https://gitlab.gnome.org/GNOME/loupe/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
83     description = "Simple image viewer application written with GTK4 and Rust";
84     license = licenses.gpl3Plus;
85     maintainers = with maintainers; [ jk ] ++ teams.gnome.members;
86     platforms = platforms.unix;
87     mainProgram = "loupe";
88   };