librepcb: 1.1.0 -> 1.2.0
[NixPkgs.git] / pkgs / by-name / pa / papers / package.nix
blob2ea94a1c342824b718b83de2779cafe1d885fc66
1 { lib
2 , stdenv
3 , fetchFromGitLab
4 , meson
5 , ninja
6 , pkg-config
7 , appstream
8 , desktop-file-utils
9 , gtk4
10 , glib
11 , pango
12 , gdk-pixbuf
13 , shared-mime-info
14 , itstool
15 , poppler
16 , nautilus
17 , darwin
18 , djvulibre
19 , libspectre
20 , libarchive
21 , libsecret
22 , wrapGAppsHook4
23 , librsvg
24 , gobject-introspection
25 , yelp-tools
26 , gsettings-desktop-schemas
27 , dbus
28 , gi-docgen
29 , libgxps
30 , withLibsecret ? true
31 , supportNautilus ? (!stdenv.hostPlatform.isDarwin)
32 , libadwaita
33 , exempi
34 , cargo
35 , rustPlatform
38 stdenv.mkDerivation (finalAttrs: {
39   pname = "papers";
40   version = "46.2";
42   outputs = [ "out" "dev" "devdoc" ];
44   src = fetchFromGitLab {
45     domain = "gitlab.gnome.org";
46     owner = "GNOME/Incubator";
47     repo = "papers";
48     rev = finalAttrs.version;
49     hash = "sha256-T67d7xHK23CvmT8omEqNZrV5KloK4QXU973dtP9lTDE=";
50   };
52   cargoRoot = "shell-rs";
54   cargoDeps = rustPlatform.importCargoLock {
55     lockFile = ./Cargo.lock;
57     outputHashes = {
58       "cairo-rs-0.20.0" = "sha256-us8Q1cqHbs0wSfMcRgZx7wTqSagYkLv/aNI8Fle2nNk=";
59       "gdk4-0.9.0" = "sha256-a+fkiCilKbq7sBHZ9Uvq9a/qqbsVomxG6K07B5f4eYM=";
60       "libadwaita-0.7.0" = "sha256-gfkaj/BIqvWj1UNVAGNNXww4aoJPlqvBwIRGmDiv48E=";
61     };
62   };
64   nativeBuildInputs = [
65     appstream
66     desktop-file-utils
67     gobject-introspection
68     gi-docgen
69     itstool
70     meson
71     ninja
72     pkg-config
73     wrapGAppsHook4
74     yelp-tools
75     cargo
76     rustPlatform.cargoSetupHook
77   ];
79   buildInputs = [
80     dbus # only needed to find the service directory
81     djvulibre
82     exempi
83     gdk-pixbuf
84     glib
85     gtk4
86     gsettings-desktop-schemas
87     libadwaita
88     libarchive
89     libgxps
90     librsvg
91     libspectre
92     pango
93     poppler
94   ] ++ lib.optionals withLibsecret [
95     libsecret
96   ] ++ lib.optionals supportNautilus [
97     nautilus
98   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
99     darwin.apple_sdk.frameworks.Foundation
100   ];
102   mesonFlags = [
103     "-Dps=enabled"
104   ] ++ lib.optionals (!withLibsecret) [
105     "-Dkeyring=disabled"
106   ] ++ lib.optionals (!supportNautilus) [
107     "-Dnautilus=false"
108   ];
110   env.NIX_CFLAGS_COMPILE = lib.optionalString (
111     stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.version "16"
112   ) "-Wno-error=incompatible-function-pointer-types";
114   postInstall = ''
115     substituteInPlace $out/share/thumbnailers/papers.thumbnailer \
116       --replace-fail '=papers-thumbnailer' "=$out/bin/papers-thumbnailer"
117   '';
119   preFixup = ''
120     gappsWrapperArgs+=(
121       --prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
122       # Required to open multiple files.
123       # https://gitlab.gnome.org/GNOME/Incubator/papers/-/issues/176
124       --prefix PATH : "$out/bin"
125     )
126   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
127     install_name_tool -add_rpath "$out/lib" "$out/bin/papers"
128   '';
130   postFixup = ''
131     # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
132     moveToOutput "share/doc" "$devdoc"
133   '';
135   meta = with lib; {
136     homepage = "https://wiki.gnome.org/Apps/papers";
137     changelog = "https://gitlab.gnome.org/GNOME/Incubator/papers/-/blob/${finalAttrs.version}/NEWS?ref_type=tags";
138     description = "GNOME's document viewer";
140     longDescription = ''
141       papers is a document viewer for multiple document formats.  It
142       currently supports PDF, PostScript, DjVu, and TIFF (not DVI anymore).
143       The goal of papers is to replace the evince document viewer that exist
144       on the GNOME Desktop with a more modern interface.
145     '';
147     license = licenses.gpl2Plus;
148     platforms = platforms.unix;
149     mainProgram = "papers";
150     maintainers = teams.gnome.members;
151   };