72 lines
1.9 KiB
Nix
72 lines
1.9 KiB
Nix
{ stdenv, fetchurl, tcl, tk, tcllib, tcltls, tclgpg
|
|
, bwidget, makeWrapper, x11
|
|
, withSitePlugins ? true
|
|
, theme ? null
|
|
}:
|
|
|
|
with stdenv.lib;
|
|
|
|
let
|
|
version = "1.1";
|
|
|
|
main = {
|
|
name = "tkabber";
|
|
sha256 = "1ip0mi2icqkjxiam4qj1qcynnz9ck1ggzcbcqyjj132hakd855a2";
|
|
};
|
|
|
|
plugins = {
|
|
name = "tkabber-plugins";
|
|
sha256 = "1dr12rh4vs1w1bga45k4ijgxs39801c1k4z3b892pn1dwv84il5y";
|
|
};
|
|
|
|
tclLibraries = [ bwidget tcllib tcltls tclgpg ];
|
|
|
|
getTclLibPath = p: "${p}/lib/${p.libPrefix}";
|
|
|
|
tclLibPaths = stdenv.lib.concatStringsSep " "
|
|
(map getTclLibPath tclLibraries);
|
|
|
|
mkTkabber = attrs: stdenv.mkDerivation (rec {
|
|
name = "${attrs.name}-${version}";
|
|
|
|
src = fetchurl {
|
|
url = "http://files.jabber.ru/tkabber/${name}.tar.xz";
|
|
inherit (attrs) sha256;
|
|
};
|
|
|
|
prePatch = ''
|
|
sed -e "s@/usr/local@$out@" -i Makefile
|
|
'';
|
|
} // removeAttrs attrs [ "name" "sha256" ]);
|
|
|
|
in mkTkabber (main // {
|
|
postPatch = ''
|
|
substituteInPlace login.tcl --replace \
|
|
"custom::defvar loginconf(sslcacertstore) \"\"" \
|
|
"custom::defvar loginconf(sslcacertstore) \$env(OPENSSL_X509_CERT_FILE)"
|
|
'' + optionalString (theme != null) ''
|
|
themePath="$out/share/doc/tkabber/examples/xrdb/${theme}.xrdb"
|
|
sed -i '/^if.*load_default_xrdb/,/^}$/ {
|
|
s@option readfile \(\[fullpath [^]]*\]\)@option readfile "'"$themePath"'"@
|
|
}' tkabber.tcl
|
|
'';
|
|
|
|
postInstall = ''
|
|
for prog in $out/bin/*; do
|
|
wrapProgram "$prog" \
|
|
--prefix PATH : "${tk}/bin" \
|
|
--set TCLLIBPATH '"${tclLibPaths}"' \
|
|
${optionalString withSitePlugins ''
|
|
--set TKABBER_SITE_PLUGINS '${mkTkabber plugins}/share/tkabber-plugins'
|
|
''}
|
|
done
|
|
'';
|
|
|
|
buildInputs = [ tcl tk x11 makeWrapper ] ++ tclLibraries;
|
|
|
|
meta = {
|
|
homepage = "http://tkabber.jabber.ru/";
|
|
description = "A GUI XMPP (Jabber) client written in Tcl/Tk";
|
|
license = stdenv.lib.licenses.gpl2;
|
|
};
|
|
})
|