Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / by-name / ap / apostrophe / package.nix
blob2537f8cfed81849edd959481255ac5d12afd369d
2   lib,
3   fetchFromGitLab,
4   gtksourceview5,
5   libspelling,
6   fetchFromGitHub,
7   python3Packages,
8   meson,
9   ninja,
10   pkg-config,
11   wrapGAppsHook4,
12   desktop-file-utils,
13   gobject-introspection,
14   libadwaita,
15   webkitgtk_6_0,
16   texliveMedium,
17   shared-mime-info,
20 let
21   version = "3.1";
23   src = fetchFromGitLab {
24     owner = "World";
25     repo = "apostrophe";
26     domain = "gitlab.gnome.org";
27     rev = "v${version}";
28     sha256 = "sha256-rXaz0EtLuKOBJLF81K/4qoTZtG6B8Wn+KwSiqYvxAVc=";
29   };
31   # Patches are required by upstream. Without the patches
32   # typing `- aaa`, newline, `- bbb` the program crashes
33   gtksourceview5-patched = gtksourceview5.overrideAttrs (prev: {
34     patches = (prev.patches or [ ]) ++ [ "${src}/build-aux/flatpak/sourceview_text_commits.patch" ];
35   });
37   libspelling-patched =
38     (libspelling.override { gtksourceview5 = gtksourceview5-patched; }).overrideAttrs
39       (prev: {
40         patches = (prev.patches or [ ]) ++ [ "${src}/build-aux/flatpak/libspelling_text_commits.patch" ];
41       });
43   reveal-js = fetchFromGitHub {
44     owner = "hakimel";
45     repo = "reveal.js";
47     # keep in sync with upstream shipped version
48     # in build-aux/flatpak/org.gnome.gitlab.somas.Apostrophe.json
49     rev = "4.6.0";
50     hash = "sha256-a+J+GasFmRvu5cJ1GLXscoJ+owzFXsLhCbeDbYChkyQ=";
51   };
53 python3Packages.buildPythonApplication rec {
54   inherit version src;
55   pname = "apostrophe";
56   pyproject = false;
58   postPatch =
59     ''
60       substituteInPlace build-aux/meson_post_install.py \
61         --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
63       patchShebangs --build build-aux/meson_post_install.py
64     ''
65     # Should be done in postInstall, but meson checks this eagerly before build
66     + ''
67       install -d $out/share/apostrophe/libs
68       cp -r ${reveal-js} $out/share/apostrophe/libs/reveal.js
69     '';
71   nativeBuildInputs = [
72     meson
73     ninja
74     pkg-config
75     wrapGAppsHook4
76     desktop-file-utils
77     gobject-introspection
78   ];
80   buildInputs = [
81     libadwaita
82     gtksourceview5-patched
83     libspelling-patched
84     webkitgtk_6_0
85   ];
87   propagatedBuildInputs = with python3Packages; [
88     pygobject3
89     pypandoc
90     chardet
91   ];
93   dontWrapGApps = true;
95   preFixup = ''
96     makeWrapperArgs+=(
97       ''${gappsWrapperArgs[@]}
98       --prefix PATH : "${texliveMedium}/bin"
99       --prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
100     )
101   '';
103   passthru = {
104     inherit gtksourceview5-patched libspelling-patched reveal-js;
105   };
107   meta = {
108     homepage = "https://gitlab.gnome.org/World/apostrophe";
109     description = "Distraction free Markdown editor for GNU/Linux";
110     license = lib.licenses.gpl3Plus;
111     platforms = lib.platforms.linux;
112     maintainers = with lib.maintainers; [
113       sternenseemann
114       aleksana
115     ];
116     mainProgram = "apostrophe";
117   };