about summary refs log tree commit diff
path: root/pkgs/applications/misc/rtfm/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/misc/rtfm/default.nix')
-rw-r--r--pkgs/applications/misc/rtfm/default.nix91
1 files changed, 91 insertions, 0 deletions
diff --git a/pkgs/applications/misc/rtfm/default.nix b/pkgs/applications/misc/rtfm/default.nix
new file mode 100644
index 0000000000000..99f9a465e13de
--- /dev/null
+++ b/pkgs/applications/misc/rtfm/default.nix
@@ -0,0 +1,91 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, crystal
+, wrapGAppsHook4
+, gobject-introspection
+, desktopToDarwinBundle
+, webkitgtk_6_0
+, sqlite
+, gi-crystal
+, libadwaita
+, gtk4
+, pango
+}:
+let
+  gtk4' = gtk4.override { x11Support = true; };
+  pango' = pango.override { withIntrospection = true; };
+in
+crystal.buildCrystalPackage rec {
+  pname = "rtfm";
+  version = "0.2.2";
+
+  src = fetchFromGitHub {
+    owner = "hugopl";
+    repo = "rtfm";
+    rev = "v${version}";
+    name = "rtfm";
+    hash = "sha256-SmQq3hG94oV346dHtqTHC0xE4cWB3rspD3XXu+mSI8Q=";
+  };
+
+  patches = [
+    # 1) fixed gi-crystal binding generator command
+    # 2) removed `-v` arg to `cp` command to prevent build failure due to stdout buffer overflow
+    # 3) added commands to build gschemas and update icon-cache
+    ./patches/make.patch
+
+    # fixed docset path and gi libs directory names
+    ./patches/friendly-docs-path.patch
+
+    # added chmod +w for copied docs to prevent error:
+    # `Error opening file with mode 'wb': '.../style.css': Permission denied`
+    ./patches/enable-write-permissions.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace "crystal run src/create_crystal_docset.cr" "crystal src/create_crystal_docset.cr ${crystal}/share/doc/crystal/api/" \
+      --replace "crystal run src/create_gtk_docset.cr" "crystal src/create_gtk_docset.cr gtk-doc/"
+  '';
+
+  shardsFile = ./shards.nix;
+
+  nativeBuildInputs = [
+    wrapGAppsHook4
+    gobject-introspection
+    gi-crystal
+    ] ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ];
+
+  buildInputs = [
+    webkitgtk_6_0
+    sqlite
+    libadwaita
+    gtk4'
+    pango'
+  ];
+
+  buildTargets = [ "configure" "rtfm" "docsets" ];
+
+  preBuild = ''
+    mkdir gtk-doc/
+
+    for file in "${gtk4'.devdoc}"/share/doc/*; do
+      ln -s "$file" "gtk-doc/$(basename "$file")"
+    done
+
+    for file in "${pango'.devdoc}"/share/doc/*; do
+      ln -s "$file" "gtk-doc/$(basename "$file")"
+    done
+
+    for file in "${libadwaita.devdoc}"/share/doc/*; do
+      ln -s "$file" "gtk-doc/$(basename "$file")"
+    done
+  '';
+
+  meta = with lib; {
+    description = "Dash/docset reader with built in documentation for Crystal and GTK APIs";
+    homepage = "https://github.com/hugopl/rtfm/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ sund3RRR ];
+  };
+}