diff options
Diffstat (limited to 'pkgs/applications/misc/rtfm/default.nix')
-rw-r--r-- | pkgs/applications/misc/rtfm/default.nix | 91 |
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 ]; + }; +} |