diff options
Diffstat (limited to 'pkgs/by-name/ap/apostrophe/package.nix')
-rw-r--r-- | pkgs/by-name/ap/apostrophe/package.nix | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/pkgs/by-name/ap/apostrophe/package.nix b/pkgs/by-name/ap/apostrophe/package.nix new file mode 100644 index 0000000000000..503e4ff2f1946 --- /dev/null +++ b/pkgs/by-name/ap/apostrophe/package.nix @@ -0,0 +1,118 @@ +{ + lib, + fetchFromGitLab, + gtksourceview5, + libspelling, + fetchFromGitHub, + python3Packages, + meson, + ninja, + pkg-config, + wrapGAppsHook4, + desktop-file-utils, + gobject-introspection, + libadwaita, + webkitgtk_6_0, + texliveMedium, + shared-mime-info, +}: + +let + version = "3.0"; + + src = fetchFromGitLab { + owner = "World"; + repo = "apostrophe"; + domain = "gitlab.gnome.org"; + rev = "v${version}"; + sha256 = "sha256-wKxRCU00nSk7F8IZNWoLRtGs3m6ol3UBnArtppUOz/g="; + }; + + # Patches are required by upstream. Without the patches + # typing `- aaa`, newline, `- bbb` the program crashes + gtksourceview5-patched = gtksourceview5.overrideAttrs (prev: { + patches = (prev.patches or [ ]) ++ [ "${src}/build-aux/flatpak/sourceview_text_commits.patch" ]; + }); + + libspelling-patched = + (libspelling.override { gtksourceview5 = gtksourceview5-patched; }).overrideAttrs + (prev: { + patches = (prev.patches or [ ]) ++ [ "${src}/build-aux/flatpak/libspelling_text_commits.patch" ]; + }); + + reveal-js = fetchFromGitHub { + owner = "hakimel"; + repo = "reveal.js"; + + # keep in sync with upstream shipped version + # in build-aux/flatpak/org.gnome.gitlab.somas.Apostrophe.json + rev = "4.6.0"; + hash = "sha256-a+J+GasFmRvu5cJ1GLXscoJ+owzFXsLhCbeDbYChkyQ="; + }; +in +python3Packages.buildPythonApplication rec { + inherit version src; + pname = "apostrophe"; + pyproject = false; + + postPatch = + '' + substituteInPlace build-aux/meson_post_install.py \ + --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache' + + patchShebangs --build build-aux/meson_post_install.py + '' + # Should be done in postInstall, but meson checks this eagerly before build + + '' + install -d $out/share/apostrophe/libs + cp -r ${reveal-js} $out/share/apostrophe/libs/reveal.js + ''; + + nativeBuildInputs = [ + meson + ninja + pkg-config + wrapGAppsHook4 + desktop-file-utils + gobject-introspection + ]; + + buildInputs = [ + libadwaita + gtksourceview5-patched + libspelling-patched + webkitgtk_6_0 + ]; + + propagatedBuildInputs = with python3Packages; [ + pygobject3 + pypandoc + chardet + ]; + + dontWrapGApps = true; + + preFixup = '' + makeWrapperArgs+=( + ''${gappsWrapperArgs[@]} + --prefix PATH : "${texliveMedium}/bin" + --prefix XDG_DATA_DIRS : "${shared-mime-info}/share" + ) + ''; + + passthru = { + inherit gtksourceview5-patched libspelling-patched reveal-js; + }; + + meta = { + homepage = "https://gitlab.gnome.org/World/apostrophe"; + description = "A distraction free Markdown editor for GNU/Linux"; + license = lib.licenses.gpl3Plus; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ + sternenseemann + aleksana + ]; + mainProgram = "apostrophe"; + }; +} |