biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / misc / rtfm / default.nix
blob256ed98f9a8cd8be8c304d7b42eecb4893fbbbf6
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , crystal
5 , wrapGAppsHook4
6 , gobject-introspection
7 , desktopToDarwinBundle
8 , webkitgtk_6_0
9 , sqlite
10 , libadwaita
11 , gtk4
12 , pango
13 , substituteAll
15 let
16   gtk4' = gtk4.override { x11Support = true; };
17   pango' = pango.override { withIntrospection = true; };
19 crystal.buildCrystalPackage rec {
20   pname = "rtfm";
21   version = "0.4.1";
23   src = fetchFromGitHub {
24     owner = "hugopl";
25     repo = "rtfm";
26     rev = "v${version}";
27     name = "rtfm";
28     hash = "sha256-cloaGlHjtwrjuPGzAG55B58w307R+TO+MixAWTw2ags=";
29   };
31   patches = [
32     # 1) fixed gi-crystal binding generator command
33     # 2) fixed docset generator command
34     # 3) added commands to build gschemas and update icon-cache
35     (substituteAll {
36       src = ./make.patch;
37       inherit crystal;
38     })
39     # added chmod +w for copied docs to prevent error:
40     # `Error opening file with mode 'wb': '.../style.css': Permission denied`
41     ./enable-write-permissions.patch
42   ];
44   postPatch = ''
45     substituteInPlace src/doc2dash/create_gtk_docset.cr \
46       --replace-fail 'basedir = Path.new("/usr/share/doc")' 'basedir = Path.new(ARGV[0]? || "gtk-docs")'
47   '';
49   shardsFile = ./shards.nix;
50   copyShardDeps = true;
52   nativeBuildInputs = [
53     wrapGAppsHook4
54     gobject-introspection
55   ] ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ];
57   buildInputs = [
58     webkitgtk_6_0
59     sqlite
60     libadwaita
61     gtk4'
62     pango'
63   ];
65   buildTargets = [ "configure" "rtfm" "docsets" ];
67   preBuild = ''
68     mkdir gtk-doc/
70     for file in "${gtk4'.devdoc}"/share/doc/*; do
71       ln -s "$file" "gtk-doc/$(basename "$file")"
72     done
74     for file in "${pango'.devdoc}"/share/doc/*; do
75       ln -s "$file" "gtk-doc/$(basename "$file")"
76     done
78     for file in "${libadwaita.devdoc}"/share/doc/*; do
79       ln -s "$file" "gtk-doc/$(basename "$file")"
80     done
81   '';
83   meta = with lib; {
84     description = "Dash/docset reader with built in documentation for Crystal and GTK APIs";
85     homepage = "https://github.com/hugopl/rtfm/";
86     license = licenses.mit;
87     mainProgram = "rtfm";
88     maintainers = with maintainers; [ sund3RRR ];
89   };