jql: 8.0.0 -> 8.0.2 (#362884)
[NixPkgs.git] / pkgs / applications / editors / code-browser / default.nix
blob093b5fe3309e481dd435c4819eab00f712eab215
2   lib,
3   stdenv,
4   fetchurl,
5   copper,
6   python3,
7   pkg-config,
8   withQt ? false,
9   qtbase ? null,
10   wrapQtAppsHook ? null,
11   withGtk2 ? false,
12   gtk2,
13   withGtk3 ? false,
14   gtk3,
15   mkDerivation ? stdenv.mkDerivation,
17 let
18   onlyOneEnabled = xs: 1 == builtins.length (builtins.filter lib.id xs);
20 assert onlyOneEnabled [
21   withQt
22   withGtk2
23   withGtk3
25 mkDerivation rec {
26   pname = "code-browser";
27   version = "8.0";
28   src = fetchurl {
29     url = "https://tibleiz.net/download/code-browser-${version}-src.tar.gz";
30     sha256 = "sha256-beCp4lx4MI1+hVgWp2h3piE/zu51zfwQdB5g7ImgmwY=";
31   };
32   postPatch =
33     ''
34       substituteInPlace Makefile --replace "LFLAGS=-no-pie" "LFLAGS=-no-pie -L."
35       patchShebangs .
36     ''
37     + lib.optionalString withQt ''
38       substituteInPlace libs/copper-ui/Makefile --replace "moc -o" "${qtbase.dev}/bin/moc -o"
39       substituteInPlace libs/copper-ui/Makefile --replace "all: qt gtk gtk2" "all: qt"
40     ''
41     + lib.optionalString withGtk2 ''
42       substituteInPlace libs/copper-ui/Makefile --replace "all: qt gtk gtk2" "all: gtk2"
43     ''
44     + lib.optionalString withGtk3 ''
45       substituteInPlace libs/copper-ui/Makefile --replace "all: qt gtk gtk2" "all: gtk"
46     '';
47   nativeBuildInputs =
48     [
49       copper
50       python3
51       pkg-config
52     ]
53     ++ lib.optionals withGtk2 [ gtk2 ]
54     ++ lib.optionals withGtk3 [ gtk3 ]
55     ++ lib.optionals withQt [
56       qtbase
57       wrapQtAppsHook
58     ];
59   buildInputs =
60     lib.optionals withQt [ qtbase ]
61     ++ lib.optionals withGtk2 [ gtk2 ]
62     ++ lib.optionals withGtk3 [ gtk3 ];
63   makeFlags =
64     [
65       "prefix=$(out)"
66       "COPPER=${copper}/bin/copper-elf64"
67       "with-local-libs"
68     ]
69     ++ lib.optionals withQt [
70       "QINC=${qtbase.dev}/include"
71       "UI=qt"
72     ]
73     ++ lib.optionals withGtk2 [ "UI=gtk2" ]
74     ++ lib.optionals withGtk3 [ "UI=gtk" ];
76   meta = with lib; {
77     description = "Folding text editor, designed to hierarchically structure any kind of text file and especially source code";
78     homepage = "https://tibleiz.net/code-browser/";
79     license = licenses.gpl2;
80     platforms = platforms.x86_64;
81   };