1{ lib, stdenv, autoreconfHook, buildEnv, fetchFromGitHub, perl, perlPackages, makeWrapper, gnupg, openssl }:
2
3stdenv.mkDerivation rec {
4 pname = "rt";
5 version = "5.0.3";
6
7 src = fetchFromGitHub {
8 repo = pname;
9 rev = "${pname}-${version}";
10 owner = "bestpractical";
11 hash = "sha256-ZitlueLEbV3mGJg0aDrLa5IReJiOVaEf+JicbA9zUS4=";
12 };
13
14 patches = [
15 ./dont-check-users_groups.patch # needed for "make testdeps" to work in the build
16 ./override-generated.patch
17 ];
18
19 nativeBuildInputs = [
20 autoreconfHook
21 makeWrapper
22 ];
23
24 buildInputs = [
25 perl
26 (buildEnv {
27 name = "rt-perl-deps";
28 paths = with perlPackages; (requiredPerlModules [
29 ApacheSession
30 BusinessHours
31 CGIEmulatePSGI
32 CGIPSGI
33 CSSMinifierXS
34 CSSSquish
35 ConvertColor
36 CryptEksblowfish
37 CryptSSLeay
38 CryptX509
39 DBDPg
40 DBIxSearchBuilder
41 DataGUID
42 DataICal
43 DataPage
44 DataPagePageset
45 DateExtract
46 DateManip
47 DateTimeFormatNatural
48 DevelGlobalDestruction
49 EmailAddress
50 EmailAddressList
51 EncodeDetect
52 EncodeHanExtra
53 FCGI
54 FCGIProcManager
55 FileShareDir
56 FileWhich
57 GD
58 GDGraph
59 GnuPGInterface
60 GraphViz
61 HTMLFormatExternal
62 HTMLFormatTextWithLinks
63 HTMLFormatTextWithLinksAndTables
64 HTMLGumbo
65 HTMLMason
66 HTMLMasonPSGIHandler
67 HTMLQuoted
68 HTMLRewriteAttributes
69 HTMLScrubber
70 IPCRun
71 IPCRun3
72 JSON
73 JavaScriptMinifierXS
74 LWP
75 LWPProtocolHttps
76 LocaleMaketextFuzzy
77 LocaleMaketextLexicon
78 LogDispatch
79 MIMETools
80 MIMETypes
81 MailTools
82 ModulePath
83 ModuleRefresh
84 ModuleVersionsReport
85 Moose
86 MooseXNonMoose
87 MooseXRoleParameterized
88 MozillaCA
89 NetCIDR
90 NetIP
91 ParallelForkManager
92 PathDispatcher
93 PerlIOeol
94 Plack
95 PodParser
96 RegexpCommon
97 RegexpCommonnetCIDR
98 RegexpIPv6
99 RoleBasic
100 ScopeUpper
101 Starlet
102 Starman
103 StringShellQuote
104 SymbolGlobalName
105 TermReadKey
106 TextPasswordPronounceable
107 TextQuoted
108 TextTemplate
109 TextWikiFormat
110 TextWordDiff
111 TextWrapper
112 TimeParseDate
113 TreeSimple
114 UNIVERSALrequire
115 WebMachine
116 XMLRSS
117 perlldap
118 ]);
119 })
120 ];
121
122 preAutoreconf = ''
123 echo rt-${version} > .tag
124 '';
125 preConfigure = ''
126 configureFlags="$configureFlags --with-web-user=$UID"
127 configureFlags="$configureFlags --with-web-group=$(id -g)"
128 configureFlags="$configureFlags --with-rt-group=$(id -g)"
129 configureFlags="$configureFlags --with-bin-owner=$UID"
130 configureFlags="$configureFlags --with-libs-owner=$UID"
131 configureFlags="$configureFlags --with-libs-group=$(id -g)"
132 '';
133 configureFlags = [
134 "--enable-graphviz"
135 "--enable-gd"
136 "--enable-gpg"
137 "--enable-smime"
138 "--with-db-type=Pg"
139 ];
140
141 buildPhase = ''
142 make testdeps
143 '';
144
145 postFixup = ''
146 for i in $(find $out/bin -type f); do
147 wrapProgram $i --prefix PERL5LIB ':' $PERL5LIB \
148 --prefix PATH ":" "${lib.makeBinPath [ openssl gnupg ]}"
149 done
150
151 rm -r $out/var
152 mkdir -p $out/var/data
153 ln -s /var/log/rt $out/var/log
154 ln -s /run/rt/mason_data $out/var/mason_data
155 ln -s /var/lib/rt/shredder $out/var/data/RT-Shredder
156 ln -s /var/lib/rt/smime $out/var/data/smime
157 ln -s /var/lib/rt/gpg $out/var/data/gpg
158 '';
159
160 meta = {
161 platforms = lib.platforms.unix;
162 };
163}