about summary refs log tree commit diff
path: root/pkgs/by-name/ap/apostrophe/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ap/apostrophe/package.nix')
-rw-r--r--pkgs/by-name/ap/apostrophe/package.nix118
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";
+  };
+}