1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 fetchpatch,
6 isPy3k,
7 flask,
8 pygments,
9 dulwich,
10 httpauth,
11 humanize,
12 pytest,
13 requests,
14 python-ctags3,
15 mock,
16}:
17
18buildPythonPackage rec {
19 pname = "klaus";
20 version = "3.0.1";
21 format = "setuptools";
22
23 src = fetchFromGitHub {
24 owner = "jonashaag";
25 repo = "klaus";
26 rev = version;
27 hash = "sha256-GflSDhBmMsQ34o3ApraEJ6GmlXXP2kK6WW3lsfr6b7g=";
28 };
29
30 prePatch = ''
31 substituteInPlace runtests.sh \
32 --replace "mkdir -p \$builddir" "mkdir -p \$builddir && pwd"
33 '';
34
35 # TODO: remove in next version
36 patches = [
37 (fetchpatch {
38 name = "distutils.patch";
39 url = "https://github.com/jonashaag/klaus/commit/d50d2aab97fd86c11f3b5a4c1ecbcf1e085f395f.patch";
40 hash = "sha256-gJ/ksm96VRNgqIBp+PX/ljzdfQJYbwTBmZaF2Ctu7Fc=";
41 })
42 ];
43
44 propagatedBuildInputs = [
45 flask
46 pygments
47 dulwich
48 httpauth
49 humanize
50 ];
51
52 nativeCheckInputs = [
53 pytest
54 requests
55 python-ctags3
56 ]
57 ++ lib.optional (!isPy3k) mock;
58
59 checkPhase = ''
60 ./runtests.sh
61 '';
62
63 # Needs to set up some git repos
64 doCheck = false;
65
66 meta = with lib; {
67 description = "First Git web viewer that Just Works";
68 mainProgram = "klaus";
69 homepage = "https://github.com/jonashaag/klaus";
70 license = licenses.isc;
71 maintainers = with maintainers; [ pSub ];
72 };
73}