uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,50 @@
{ lib, stdenv, fetchurl, fetchpatch, bison, flex, autoconf, automake, openssl }:
stdenv.mkDerivation rec {
pname = "bip";
version = "0.8.9";
# fetch sources from debian, because the creator's website provides
# the files only via https but with an untrusted certificate.
src = fetchurl {
url = "mirror://debian/pool/main/b/bip/bip_${version}.orig.tar.gz";
sha256 = "0q942g9lyd8pjvqimv547n6vik5759r9npw3ws3bdj4ixxqhz59w";
};
nativeBuildInputs = [ autoconf automake ];
buildInputs = [ bison flex openssl ];
# includes an important security patch
patches = [
(fetchpatch {
url = "mirror://gentoo/../gentoo-portage/net-irc/bip/files/bip-freenode.patch";
sha256 = "05qy7a62p16f5knrsdv2lkhc07al18qq32ciq3k4r0lq1wbahj2y";
})
(fetchpatch {
url = "https://projects.duckcorp.org/projects/bip/repository/revisions/39414f8ff9df63c8bc2e4eee34f09f829a5bf8f5/diff/src/connection.c?format=diff";
sha256 = "1hvg58vci6invh0z19wf04jjvnm8w6f6v4c4nk1j5hc3ymxdp1rb";
})
(fetchpatch {
url = "https://projects.duckcorp.org/projects/bip/repository/bip/revisions/87192685f55856d2c28021963ab2c308e21faddc/diff?format=diff";
sha256 = "0rspzp7q1lq8v0cl0c35xxpgisfk264i648vslgsjax2s0g9svx0";
})
(fetchpatch {
url = "https://projects.duckcorp.org/projects/bip/repository/bip/revisions/814d54c676d5827f6ea37c1cd2d6e846d080c13c/diff?format=diff";
sha256 = "137l77kmm6p9p4c4kvw2zc4xkr10ayyc9z5rlpwn67574h47v55i";
})
(fetchpatch {
url = "https://projects.duckcorp.org/projects/bip/repository/bip/revisions/d2dcb0adb1aa8c2c4526aa6ad650483b0e02ab7d/diff?format=diff";
sha256 = "1pvywaljdkmy4870xs6gvsk4qwg69h47qr0yjywbcdsfycrgp8aq";
})
];
NIX_CFLAGS_COMPILE = "-Wno-error=unused-result -Wno-error=duplicate-decl-specifier";
meta = {
description = "An IRC proxy (bouncer)";
homepage = "http://bip.milkypond.org/";
license = lib.licenses.gpl2;
downloadPage = "https://projects.duckcorp.org/projects/bip/files";
platforms = lib.platforms.linux;
};
}

View file

@ -0,0 +1,35 @@
{ ctags, fetchurl, lib, libressl, ncurses, pkg-config, stdenv }:
stdenv.mkDerivation rec {
pname = "catgirl";
version = "2.1";
src = fetchurl {
url = "https://git.causal.agency/catgirl/snapshot/${pname}-${version}.tar.gz";
sha256 = "sha256-pov7gvYlvN97xbem4VKP41Wbze1B8NPJcvi36Ri87o4=";
};
# catgirl's configure script uses pkg-config --variable exec_prefix openssl
# to discover the install location of the openssl(1) utility. exec_prefix
# is the "out" output of libressl in our case (where the libraries are
# installed), so we need to fix this up.
postConfigure = ''
substituteInPlace config.mk --replace \
"$($PKG_CONFIG --variable exec_prefix openssl)" \
"${lib.getBin libressl}"
'';
nativeBuildInputs = [ ctags pkg-config ];
buildInputs = [ libressl ncurses ];
strictDeps = true;
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://git.causal.agency/catgirl/about/";
license = licenses.gpl3Plus;
description = "A TLS-only terminal IRC client";
platforms = platforms.unix;
maintainers = with maintainers; [ xfnw ];
};
}

View file

@ -0,0 +1,58 @@
{ fetchFromGitHub, libcommuni, qtbase, qmake, lib, stdenv, wrapQtAppsHook }:
stdenv.mkDerivation rec {
pname = "communi";
version = "3.5.0";
src = fetchFromGitHub {
owner = "communi";
repo = "communi-desktop";
rev = "v${version}";
sha256 = "sha256-Ua5uXs2mEDrljvtIcdn1Kb+l5NJtRpB0AAbBz+DU+YE=";
fetchSubmodules = true;
};
nativeBuildInputs = [ qmake ]
++ lib.optional stdenv.isDarwin wrapQtAppsHook;
buildInputs = [ libcommuni qtbase ];
dontWrapQtApps = true;
preConfigure = ''
export QMAKEFEATURES=${libcommuni}/features
'';
qmakeFlags = [
"COMMUNI_INSTALL_PREFIX=${placeholder "out"}"
"COMMUNI_INSTALL_PLUGINS=${placeholder "out"}/lib/communi/plugins"
"COMMUNI_INSTALL_ICONS=${placeholder "out"}/share/icons/hicolor"
"COMMUNI_INSTALL_DESKTOP=${placeholder "out"}/share/applications"
"COMMUNI_INSTALL_THEMES=${placeholder "out"}/share/communi/themes"
(if stdenv.isDarwin
then [ "COMMUNI_INSTALL_BINS=${placeholder "out"}/Applications" ]
else [ "COMMUNI_INSTALL_BINS=${placeholder "out"}/bin" ])
];
postInstall = if stdenv.isDarwin then ''
# Nix qmake does not add the bundle rpath by default.
install_name_tool \
-add_rpath @executable_path/../Frameworks \
$out/Applications/Communi.app/Contents/MacOS/Communi
'' else ''
substituteInPlace "$out/share/applications/communi.desktop" \
--replace "/usr/bin" "$out/bin"
'';
preFixup = ''
rm -rf lib
'';
meta = with lib; {
description = "A simple and elegant cross-platform IRC client";
homepage = "https://github.com/communi/communi-desktop";
license = licenses.bsd3;
maintainers = with maintainers; [ hrdinka ];
platforms = platforms.all;
};
}

View file

@ -0,0 +1,92 @@
{ lib, stdenv, fetchFromGitHub, perl, perlPackages, makeWrapper, shortenPerlShebang, openssl
, nixosTests
}:
with lib;
perlPackages.buildPerlPackage rec {
pname = "convos";
version = "6.42";
src = fetchFromGitHub {
owner = "convos-chat";
repo = pname;
rev = "v${version}";
sha256 = "sha256-W7ZVZUCNllpFIQpNz2m/8VFOXDZfuppB+g3qibY6wt8=";
};
nativeBuildInputs = [ makeWrapper ]
++ optional stdenv.isDarwin [ shortenPerlShebang ];
buildInputs = with perlPackages; [
CryptPassphrase CryptPassphraseArgon2 CryptPassphraseBcrypt
FileHomeDir FileReadBackwards HTTPAcceptLanguage
IOSocketSSL IRCUtils JSONValidator LinkEmbedder ModuleInstall
Mojolicious MojoliciousPluginOpenAPI MojoliciousPluginSyslog MojoliciousPluginWebpack
ParseIRC TextMarkdownHoedown TimePiece UnicodeUTF8
CpanelJSONXS EV
];
propagatedBuildInputs = [ openssl ];
checkInputs = with perlPackages; [ TestDeep ];
postPatch = ''
patchShebangs script/convos
'';
preCheck = ''
# Remove online test
#
rm t/web-pwa.t
# A test fails since gethostbyaddr(127.0.0.1) fails to resolve to localhost in
# the sandbox, we replace the this out from a substitution expression
#
substituteInPlace t/web-register-open-to-public.t \
--replace '!127.0.0.1!' '!localhost!'
# A webirc test fails to resolve "localhost" likely due to sandboxing, we
# remove this test.
#
rm t/irc-webirc.t
# A web-user test fails on Darwin, we remove it.
#
rm t/web-user.t
# Another web test fails, so we also remove this.
rm t/web-login.t
# Module::Install is a runtime dependency not covered by the tests, so we add
# a test for it.
#
echo "use Test::More tests => 1;require_ok('Module::Install')" \
> t/00_nixpkgs_module_install.t
'';
# Convos expects to find assets in both auto/share/dist/Convos, and $MOJO_HOME
# which is set to $out
#
postInstall = ''
AUTO_SHARE_PATH=$out/${perl.libPrefix}/auto/share/dist/Convos
mkdir -p $AUTO_SHARE_PATH
cp -vR public assets $AUTO_SHARE_PATH/
ln -s $AUTO_SHARE_PATH/public/asset $out/asset
cp -vR templates $out/templates
cp cpanfile $out/cpanfile
'' + optionalString stdenv.isDarwin ''
shortenPerlShebang $out/bin/convos
'' + ''
wrapProgram $out/bin/convos --set MOJO_HOME $out
'';
passthru.tests = nixosTests.convos;
meta = {
homepage = "https://convos.chat";
description = "Convos is the simplest way to use IRC in your browser";
license = lib.licenses.artistic2;
maintainers = with maintainers; [ sgo ];
};
}

View file

@ -0,0 +1,41 @@
{ lib, stdenv, fetchurl, openssl, ncurses, libiconv, tcl, coreutils, fetchpatch }:
stdenv.mkDerivation rec {
pname = "epic5";
version = "2.0.1";
src = fetchurl {
url = "http://ftp.epicsol.org/pub/epic/EPIC5-PRODUCTION/${pname}-${version}.tar.xz";
sha256 = "1ap73d5f4vccxjaaq249zh981z85106vvqmxfm4plvy76b40y9jm";
};
# Darwin needs libiconv, tcl; while Linux build don't
buildInputs = [ openssl ncurses ]
++ lib.optionals stdenv.isDarwin [ libiconv tcl ];
patches = [
(fetchpatch {
url = "https://sources.debian.net/data/main/e/epic5/2.0.1-1/debian/patches/openssl-1.1.patch";
sha256 = "03bpsyv1sr5icajs2qkdvv8nnn6rz6yvvj7pgiq8gz9sbp6siyfv";
})
];
configureFlags = [ "--disable-debug" "--with-ipv6" ];
postConfigure = ''
substituteInPlace bsdinstall \
--replace /bin/cp ${coreutils}/bin/cp \
--replace /bin/rm ${coreutils}/bin/rm \
--replace /bin/chmod ${coreutils}/bin/chmod \
'';
meta = with lib; {
homepage = "http://epicsol.org";
description = "A IRC client that offers a great ircII interface";
license = licenses.bsd3;
maintainers = [];
};
}

View file

@ -0,0 +1,27 @@
{ fetchFromGitHub, lib, stdenv }:
stdenv.mkDerivation rec {
pname = "glowing-bear";
version = "0.9.0";
src = fetchFromGitHub {
rev = version;
owner = "glowing-bear";
repo = "glowing-bear";
sha256 = "0lf0j72m6rwlgqssdxf0m9si99lah08lww7q7i08p5i5lpv6zh2s";
};
installPhase = ''
mkdir $out
cp index.html serviceworker.js webapp.manifest.json $out
cp -R 3rdparty assets css directives js $out
'';
meta = with lib; {
description = "A web client for Weechat";
homepage = "https://github.com/glowing-bear/glowing-bear";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ delroth ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,55 @@
{ lib, stdenv, fetchFromGitHub, fetchpatch, pkg-config, gtk2, lua, perl, python3Packages
, pciutils, dbus-glib, libcanberra-gtk2, libproxy
, enchant2, libnotify, openssl, isocodes
, desktop-file-utils
, meson, ninja, makeWrapper
}:
stdenv.mkDerivation rec {
pname = "hexchat";
version = "2.16.1";
src = fetchFromGitHub {
owner = "hexchat";
repo = "hexchat";
rev = "v${version}";
sha256 = "sha256-2IUlNUTL3TOJnDNMds2EWwkfn5NUOQ1ids96Ddo196E=";
};
nativeBuildInputs = [ meson ninja pkg-config makeWrapper ];
buildInputs = [
gtk2 lua perl python3Packages.python python3Packages.cffi pciutils dbus-glib libcanberra-gtk2 libproxy
libnotify openssl desktop-file-utils
isocodes
];
#hexchat and hexchat-text loads enchant spell checking library at run time and so it needs to have route to the path
postPatch = ''
sed -i "s,libenchant-2.so.2,${enchant2}/lib/libenchant-2.so.2,g" src/fe-gtk/sexy-spell-entry.c
sed -i "/flag.startswith('-I')/i if flag.contains('no-such-path')\ncontinue\nendif" plugins/perl/meson.build
chmod +x meson_post_install.py
for f in meson_post_install.py \
plugins/perl/generate_header.py \
plugins/python/generate_plugin.py \
po/validate-textevent-translations \
src/common/make-te.py
do
patchShebangs $f
done
'';
mesonFlags = [ "-Dwith-lua=lua" "-Dtext-frontend=true" ];
postInstall = ''
wrapProgram $out/bin/hexchat --prefix PYTHONPATH : "$PYTHONPATH"
'';
meta = with lib; {
description = "A popular and easy to use graphical IRC (chat) client";
homepage = "https://hexchat.github.io/";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = with maintainers; [ romildo ];
};
}

View file

@ -0,0 +1,22 @@
{lib, stdenv, fetchurl}:
stdenv.mkDerivation rec {
pname = "ii";
version = "1.9";
src = fetchurl {
url = "https://dl.suckless.org/tools/${pname}-${version}.tar.gz";
sha256 = "sha256-hQyzI7WD0mG1G9qZk+5zMzQ1Ko5soeLwK1fBVL9WjBc=";
};
makeFlags = [ "CC:=$(CC)" ];
installFlags = [ "PREFIX=$(out)" ];
meta = {
homepage = "https://tools.suckless.org/ii/";
license = lib.licenses.mit;
description = "Irc it, simple FIFO based irc client";
platforms = lib.platforms.unix;
};
}

View file

@ -0,0 +1,38 @@
{ appimageTools, fetchurl, lib }:
let
pname = "irccloud";
version = "0.13.0";
name = "${pname}-${version}";
src = fetchurl {
url = "https://github.com/irccloud/irccloud-desktop/releases/download/v${version}/IRCCloud-${version}-linux-x86_64.AppImage";
sha256 = "0ff69m5jav2c90918avsr5wvik2gds3klij3dzhkb352fgrd1s0l";
};
appimageContents = appimageTools.extractType2 {
inherit name src;
};
in appimageTools.wrapType2 {
inherit name src;
extraPkgs = pkgs: with pkgs; [ at-spi2-core ];
extraInstallCommands = ''
mv $out/bin/${name} $out/bin/${pname}
install -m 444 -D ${appimageContents}/irccloud.desktop $out/share/applications/irccloud.desktop
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/irccloud.png \
$out/share/icons/hicolor/512x512/apps/irccloud.png
substituteInPlace $out/share/applications/irccloud.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
'';
meta = with lib; {
description = "A desktop client for IRCCloud";
homepage = "https://www.irccloud.com";
license = licenses.asl20;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ lightbulbjim ];
};
}

View file

@ -0,0 +1,28 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "ircdog";
version = "0.3.0";
src = fetchFromGitHub {
owner = "goshuirc";
repo = pname;
rev = "v${version}";
sha256 = "sha256-x3ihWLgVYu17vG1xQTgIr4TSkeZ467TZBV1fPTPnZgw=";
fetchSubmodules = true;
};
vendorSha256 = null;
meta = with lib; {
description = "ircdog is a simple wrapper over the raw IRC protocol that can respond to pings, and interprets formatting codes";
homepage = "https://github.com/ergochat/ircdog";
changelog = "https://github.com/ergochat/ircdog/releases/tag/v${version}";
license = licenses.isc;
maintainers = with maintainers; [ hexa ];
};
}

View file

@ -0,0 +1,40 @@
{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, pkg-config, ncurses, glib, openssl, perl, libintl, libgcrypt, libotr, git }:
stdenv.mkDerivation rec {
pname = "irssi";
version = "1.2.3";
src = fetchFromGitHub {
"owner" = "irssi";
"repo" = "irssi";
"rev" = "91dc3e4dfa1a9558c5a7fe0ea982cb9df0e2de65";
"sha256" = "efnE4vuDd7TnOBxMPduiV0/nez1jVhTjbJ0vzN4ZMcg=";
"leaveDotGit" = true;
};
nativeBuildInputs = [ pkg-config autoconf automake libtool git ];
buildInputs = [ ncurses glib openssl perl libintl libgcrypt libotr ];
enableParallelBuilding = true;
preConfigure = ''
NOCONFIGURE=1 ./autogen.sh
'';
configureFlags = [
"--with-proxy"
"--with-bot"
"--with-perl=yes"
"--with-otr=yes"
"--enable-true-color"
];
meta = {
homepage = "https://irssi.org";
description = "A terminal based IRC client";
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ lovek323 ];
license = lib.licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,34 @@
{ lib, stdenv, fetchFromGitHub, irssi, gmp, automake, autoconf, libtool, openssl, glib, pkg-config }:
stdenv.mkDerivation rec {
pname = "fish-irssi";
version = "unstable-2013-04-13";
src = fetchFromGitHub {
owner = "falsovsky";
repo = "FiSH-irssi";
rev = "e98156bebd8c150bf100b3a0356e7103bb5c20e6";
sha256 = "0mqq7q3rnkzx4j352g1l8sv3g687d76ikjl9c7g6xw96y91kqvdp";
};
preConfigure = ''
cp -a "${irssi.src}" "./${irssi.name}"
configureFlags="$configureFlags --with-irssi-source=`pwd`/${irssi.name}"
./regen.sh
'';
installPhase = ''
mkdir -p $out/lib/irssi/modules
cp src/.libs/libfish.so $out/lib/irssi/modules
'';
nativeBuildInputs = [ pkg-config autoconf automake ];
buildInputs = [ gmp libtool openssl glib ];
meta = {
homepage = "https://github.com/falsovsky/FiSH-irssi";
license = lib.licenses.unfree; # I can't find any mention of license
maintainers = with lib.maintainers; [viric];
};
}

View file

@ -0,0 +1,44 @@
{ lib
, stdenv
, fetchFromGitHub
}:
stdenv.mkDerivation rec {
pname = "kirc";
version = "0.3.1";
src = fetchFromGitHub {
owner = "mcpcpc";
repo = pname;
rev = version;
hash = "sha256-bLBrkbW/Iv1v9z5NOiMAA/dH5/9FlqusRV5rSqjdlPw=";
};
dontConfigure = true;
installFlags = [ "PREFIX=$(out)" ];
meta = with lib; {
homepage = "http://kirc.io/";
description = "Tiny IRC client written in C99";
longDescription = ''
kirc is a tiny open-source Internet Relay Chat (IRC) client designed with
usability and cross-platform compatibility in mind.
It features:
- No dependencies other than a C99 compiler.
- Simple Authentication and Security Layer (SASL) procotol support.
- Client-to-client (CTCP) protocol support.
- Transport Layer Security (TLS) protocol support (via external
utilities).
- Simple chat history logging.
- Asynchronous message handling.
- Multi-channel joining at server connection.
- Full support for all RFC 2812 commands.
- Easy customized color scheme definition.
'';
license = licenses.mit;
maintainers = with maintainers; [ AndersonTorres ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,77 @@
{ mkDerivation
, lib
, fetchurl
, fetchpatch
, extra-cmake-modules
, kdoctools
, kbookmarks
, karchive
, kconfig
, kconfigwidgets
, kcoreaddons
, kcrash
, kdbusaddons
, kemoticons
, kglobalaccel
, ki18n
, kiconthemes
, kidletime
, kitemviews
, knotifications
, knotifyconfig
, kwindowsystem
, kio
, kparts
, kwallet
, solid
, sonnet
, phonon
}:
mkDerivation rec {
pname = "konversation";
version = "1.7.7";
src = fetchurl {
url = "mirror://kde/stable/${pname}/${version}/src/${pname}-${version}.tar.xz";
sha256 = "R+wWHBOFmBqLmdKMQZ6Iskgj3AG2j7FiOJSBiXTCGKc=";
};
buildInputs = [
kbookmarks
karchive
kconfig
kconfigwidgets
kcoreaddons
kcrash
kdbusaddons
kdoctools
kemoticons
kglobalaccel
ki18n
kiconthemes
kidletime
kitemviews
knotifications
knotifyconfig
kwindowsystem
kio
kparts
kwallet
solid
sonnet
phonon
];
nativeBuildInputs = [
extra-cmake-modules
kdoctools
];
meta = {
description = "Integrated IRC client for KDE";
license = with lib.licenses; [ gpl2 ];
maintainers = with lib.maintainers; [ fridh ];
homepage = "https://konversation.kde.org";
};
}

View file

@ -0,0 +1,32 @@
{ lib, mkDerivation, fetchFromGitHub
, qtbase, qtmultimedia, qtsvg, qtx11extras
, pkg-config, cmake, gettext
}:
mkDerivation rec {
pname = "kvirc";
version = "5.0.0";
src = fetchFromGitHub {
owner = "kvirc";
repo = "KVIrc";
rev = version;
sha256 = "1dq7v6djw0gz56rvghs4r5gfhzx4sfg60rnv6b9zprw0vlvcxbn4";
};
buildInputs = [
qtbase qtmultimedia qtsvg qtx11extras
];
nativeBuildInputs = [
pkg-config cmake gettext
];
meta = with lib; {
description = "Advanced IRC Client";
homepage = "http://www.kvirc.net/";
license = licenses.gpl2;
maintainers = [ maintainers.suhr ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,93 @@
{ monolithic ? true # build monolithic Quassel
, enableDaemon ? false # build Quassel daemon
, client ? false # build Quassel client
, tag ? "-kf5" # tag added to the package name
, static ? false # link statically
, lib, stdenv, fetchFromGitHub, cmake, makeWrapper, dconf
, mkDerivation, qtbase, boost, zlib, qtscript
, phonon, libdbusmenu, qca-qt5
, withKDE ? true # enable KDE integration
, extra-cmake-modules
, kconfigwidgets
, kcoreaddons
, knotifications
, knotifyconfig
, ktextwidgets
, kwidgetsaddons
, kxmlgui
}:
let
buildClient = monolithic || client;
buildCore = monolithic || enableDaemon;
in
assert monolithic -> !client && !enableDaemon;
assert client || enableDaemon -> !monolithic;
assert !buildClient -> !withKDE; # KDE is used by the client only
let
edf = flag: feature: [("-D" + feature + (if flag then "=ON" else "=OFF"))];
in (if !buildClient then stdenv.mkDerivation else mkDerivation) rec {
pname = "quassel${tag}";
version = "0.14.0";
src = fetchFromGitHub {
owner = "quassel";
repo = "quassel";
rev = version;
sha256 = "sha256-eulhNcyCmy9ryietOhT2yVJeJH+MMZRbTUo2XuTy9qU=";
};
# Prevent ``undefined reference to `qt_version_tag''' in SSL check
NIX_CFLAGS_COMPILE = "-DQT_NO_VERSION_TAGGING=1";
nativeBuildInputs = [ cmake makeWrapper ];
buildInputs = [ qtbase boost zlib ]
++ lib.optionals buildCore [qtscript qca-qt5 ]
++ lib.optionals buildClient [libdbusmenu phonon]
++ lib.optionals (buildClient && withKDE) [
extra-cmake-modules kconfigwidgets kcoreaddons
knotifications knotifyconfig ktextwidgets kwidgetsaddons
kxmlgui
];
cmakeFlags = [
"-DEMBED_DATA=OFF"
"-DUSE_QT5=ON"
]
++ edf static "STATIC"
++ edf monolithic "WANT_MONO"
++ edf enableDaemon "WANT_CORE"
++ edf client "WANT_QTCLIENT"
++ edf withKDE "WITH_KDE";
dontWrapQtApps = true;
postFixup =
lib.optionalString enableDaemon ''
wrapProgram "$out/bin/quasselcore" --suffix PATH : "${qtbase.bin}/bin"
'' +
lib.optionalString buildClient ''
wrapQtApp "$out/bin/quassel${lib.optionalString client "client"}" \
--prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules"
'';
meta = with lib; {
homepage = "https://quassel-irc.org/";
description = "Qt/KDE distributed IRC client suppporting a remote daemon";
longDescription = ''
Quassel IRC is a cross-platform, distributed IRC client,
meaning that one (or multiple) client(s) can attach to
and detach from a central core -- much like the popular
combination of screen and a text-based IRC client such
as WeeChat, but graphical (based on Qt4/KDE4 or Qt5/KF5).
'';
license = licenses.gpl3;
maintainers = with maintainers; [ ttuegel ];
inherit (qtbase.meta) platforms;
};
}

View file

@ -0,0 +1,37 @@
{ lib, buildGoModule, fetchFromSourcehut, installShellFiles, scdoc }:
buildGoModule rec {
pname = "senpai";
version = "unstable-2022-05-10";
src = fetchFromSourcehut {
owner = "~taiite";
repo = "senpai";
rev = "7a9fe74fdfb3f334b97434df0aa74b2b32e3582e";
sha256 = "sha256-uagdJG+YVryzsaZfkg5W2F8mQSc1bpflL77tqMHp1Ck=";
};
vendorSha256 = "sha256-hgojB1D0/SZWLEzJ48EBoT/InYYmqD/1qoTknfk/aTo=";
subPackages = [
"cmd/senpai"
];
nativeBuildInputs = [
scdoc
installShellFiles
];
postInstall = ''
scdoc < doc/senpai.1.scd > doc/senpai.1
scdoc < doc/senpai.5.scd > doc/senpai.5
installManPage doc/senpai.*
'';
meta = with lib; {
description = "Your everyday IRC student";
homepage = "https://ellidri.org/senpai";
license = licenses.isc;
maintainers = with maintainers; [ malvo ];
};
}

View file

@ -0,0 +1,22 @@
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
pname = "sic";
version = "1.2";
src = fetchurl {
url = "https://dl.suckless.org/tools/sic-${version}.tar.gz";
sha256 = "ac07f905995e13ba2c43912d7a035fbbe78a628d7ba1c256f4ca1372fb565185";
};
makeFlags = [ "CC:=$(CC)" ];
installFlags = [ "PREFIX=$(out)" ];
meta = {
description = "Simple IRC client";
homepage = "https://tools.suckless.org/sic/";
license = lib.licenses.mit;
platforms = lib.platforms.unix;
};
}

View file

@ -0,0 +1,60 @@
{ lib
, stdenv
, fetchFromGitHub
, pkg-config
, gtk3
, libconfig
, libsoup
, libsecret
, openssl
, gettext
, glib
, glib-networking
, appstream-glib
, dbus-glib
, python3Packages
, meson
, ninja
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "srain";
version = "1.4.0";
src = fetchFromGitHub {
owner = "SrainApp";
repo = "srain";
rev = version;
sha256 = "sha256-oeC0zyDyh0lW1IMIJ9bjqryqz3Km4JJzRUxkO6LadoQ=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
appstream-glib
wrapGAppsHook
python3Packages.sphinx
];
buildInputs = [
gtk3
glib
glib-networking
dbus-glib
libconfig
libsoup
libsecret
openssl
];
meta = with lib; {
description = "Modern IRC client written in GTK";
homepage = "https://srain.im";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ rewine ];
};
}

View file

@ -0,0 +1,40 @@
{ stdenv
, lib
, rustPlatform
, fetchFromGitHub
, pkg-config
, Foundation
, dbusSupport ? stdenv.isLinux, dbus
# rustls will be used for TLS if useOpenSSL=false
, useOpenSSL ? stdenv.isLinux, openssl
, notificationSupport ? stdenv.isLinux
}:
rustPlatform.buildRustPackage rec {
pname = "tiny";
version = "0.10.0";
src = fetchFromGitHub {
owner = "osa1";
repo = pname;
rev = "v${version}";
sha256 = "177d1x4z0mh0p7c5ldq70cn1j3pac50d8cil2ni50hl49c3x6yy1";
};
cargoSha256 = "05q3f1wp48mwkz8n0102rwb6jzrgpx3dlbxzf3zcw8r1mblgzim1";
nativeBuildInputs = lib.optional stdenv.isLinux pkg-config;
buildInputs = lib.optionals dbusSupport [ dbus ]
++ lib.optionals useOpenSSL [ openssl ]
++ lib.optional stdenv.isDarwin Foundation;
buildFeatures = lib.optional notificationSupport "desktop-notifications";
meta = with lib; {
description = "A console IRC client";
homepage = "https://github.com/osa1/tiny";
changelog = "https://github.com/osa1/tiny/raw/v${version}/CHANGELOG.md";
license = licenses.mit;
maintainers = with maintainers; [ Br1ght0ne vyp ];
};
}

View file

@ -0,0 +1,91 @@
{ stdenv, fetchurl, lib
, ncurses, openssl, aspell, gnutls, gettext
, zlib, curl, pkg-config, libgcrypt
, cmake, makeWrapper, libobjc, libresolv, libiconv
, asciidoctor # manpages
, guileSupport ? true, guile
, luaSupport ? true, lua5
, perlSupport ? true, perl
, pythonSupport ? true, python3Packages
, rubySupport ? true, ruby
, tclSupport ? true, tcl
, extraBuildInputs ? []
, fetchpatch
}:
let
inherit (python3Packages) python;
plugins = [
{ name = "perl"; enabled = perlSupport; cmakeFlag = "ENABLE_PERL"; buildInputs = [ perl ]; }
{ name = "tcl"; enabled = tclSupport; cmakeFlag = "ENABLE_TCL"; buildInputs = [ tcl ]; }
{ name = "ruby"; enabled = rubySupport; cmakeFlag = "ENABLE_RUBY"; buildInputs = [ ruby ]; }
{ name = "guile"; enabled = guileSupport; cmakeFlag = "ENABLE_GUILE"; buildInputs = [ guile ]; }
{ name = "lua"; enabled = luaSupport; cmakeFlag = "ENABLE_LUA"; buildInputs = [ lua5 ]; }
{ name = "python"; enabled = pythonSupport; cmakeFlag = "ENABLE_PYTHON3"; buildInputs = [ python ]; }
];
enabledPlugins = builtins.filter (p: p.enabled) plugins;
in
assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
stdenv.mkDerivation rec {
version = "3.5";
pname = "weechat";
hardeningEnable = [ "pie" ];
src = fetchurl {
url = "https://weechat.org/files/src/weechat-${version}.tar.bz2";
sha256 = "sha256-8ZSa2dQPTiChGW00T5OASHmd0C2PatUtTu9Gr4CF4Oc=";
};
outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;
cmakeFlags = with lib; [
"-DENABLE_MAN=ON"
"-DENABLE_DOC=OFF" # TODO: Documentation fails to build, was deactivated to push through security update
"-DENABLE_JAVASCRIPT=OFF" # Requires v8 <= 3.24.3, https://github.com/weechat/weechat/issues/360
"-DENABLE_PHP=OFF"
]
++ optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib"]
++ map (p: "-D${p.cmakeFlag}=" + (if p.enabled then "ON" else "OFF")) plugins
;
nativeBuildInputs = [ cmake pkg-config makeWrapper asciidoctor ];
buildInputs = with lib; [
ncurses openssl aspell gnutls gettext zlib curl
libgcrypt ]
++ optionals stdenv.isDarwin [ libobjc libresolv ]
++ concatMap (p: p.buildInputs) enabledPlugins
++ extraBuildInputs;
NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}"
# Fix '_res_9_init: undefined symbol' error
+ (lib.optionalString stdenv.isDarwin "-DBIND_8_COMPAT=1 -lresolv");
postInstall = with lib; ''
for p in ${concatMapStringsSep " " (p: p.name) enabledPlugins}; do
from=$out/lib/weechat/plugins/$p.so
to=''${!p}/lib/weechat/plugins/$p.so
mkdir -p $(dirname $to)
mv $from $to
done
'';
doInstallCheck = true;
installCheckPhase = ''
$out/bin/weechat --version
'';
meta = {
homepage = "http://www.weechat.org/";
description = "A fast, light and extensible chat client";
longDescription = ''
You can find more documentation as to how to customize this package
(eg. adding python modules for scripts that would require them, etc.)
on https://nixos.org/nixpkgs/manual/#sec-weechat .
'';
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ lovek323 lheckemann ];
platforms = lib.platforms.unix;
};
}

View file

@ -0,0 +1,26 @@
{ lib, stdenv, fetchurl, weechat }:
stdenv.mkDerivation {
pname = "buffer_autoset";
version = "1.2";
src = fetchurl {
url = "https://raw.githubusercontent.com/weechat/scripts/2b308b44df39ba6563d02b2bcd40c384ec2777dc/python/buffer_autoset.py";
sha256 = "0csl3sfpijdbq1j6wabx347lvn91a24a2jfx5b5pspfxz7gixli1";
};
dontUnpack = true;
passthru.scripts = [ "buffer_autoset.py" ];
installPhase = ''
install -D $src $out/share/buffer_autoset.py
'';
meta = with lib; {
inherit (weechat.meta) platforms;
description = "buffer_autoset.py is a weechat script which auto-set buffer properties when a buffer is opened.";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ govanify ];
};
}

View file

@ -0,0 +1,29 @@
{ stdenv, lib, fetchurl, weechat }:
stdenv.mkDerivation {
pname = "weechat-colorize_nicks";
version = "27";
src = fetchurl {
url = "https://github.com/weechat/scripts/raw/bc8a9051800779a036ba11689a277cd5f03657b2/python/colorize_nicks.py";
sha256 = "0hiay88vvy171jiq6ahflm0ipb7sslfxwhmmm8psv6qk19rv2sxs";
};
dontUnpack = true;
installPhase = ''
mkdir -p $out/share
cp $src $out/share/colorize_nicks.py
'';
passthru = {
scripts = [ "colorize_nicks.py" ];
};
meta = with lib; {
inherit (weechat.meta) platforms;
description = "Use the weechat nick colors in the chat area";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ qyliss ];
};
}

View file

@ -0,0 +1,35 @@
{ callPackage, luaPackages, perlPackages, python3Packages }:
{
colorize_nicks = callPackage ./colorize_nicks { };
edit = callPackage ./edit { };
multiline = callPackage ./multiline {
inherit (perlPackages) PodParser;
};
url_hint = callPackage ./url_hint { };
weechat-matrix-bridge = callPackage ./weechat-matrix-bridge {
inherit (luaPackages) cjson luaffi;
};
weechat-matrix = python3Packages.callPackage ./weechat-matrix { };
weechat-notify-send = python3Packages.callPackage ./weechat-notify-send { };
wee-slack = callPackage ./wee-slack { };
weechat-autosort = callPackage ./weechat-autosort { };
weechat-otr = callPackage ./weechat-otr { };
weechat-go = callPackage ./weechat-go { };
buffer_autoset = callPackage ./buffer_autoset { };
highmon = callPackage ./highmon { };
zncplayback = callPackage ./zncplayback { };
}

View file

@ -0,0 +1,30 @@
{ lib, stdenv, fetchFromGitHub, weechat }:
stdenv.mkDerivation rec {
pname = "edit-weechat";
version = "1.0.2";
src = fetchFromGitHub {
owner = "keith";
repo = "edit-weechat";
rev = version;
sha256 = "1s42r0l0xkhlp6rbc23cm4vlda91il6cg53w33hqfhd2wz91s66w";
};
dontBuild = true;
passthru.scripts = [ "edit.py" ];
installPhase = ''
runHook preInstall
install -D edit.py $out/share/edit.py
runHook postInstall
'';
meta = with lib; {
inherit (weechat.meta) platforms;
description = "This simple weechat plugin allows you to compose messages in your $EDITOR.";
license = licenses.mit;
maintainers = with maintainers; [ eraserhd ];
};
}

View file

@ -0,0 +1,31 @@
{ lib, stdenv, fetchurl, weechat }:
stdenv.mkDerivation {
pname = "highmon";
version = "2.7";
src = fetchurl {
url = "https://raw.githubusercontent.com/KenjiE20/highmon/182e67d070c75efc81999e68c2ac7fdfe44d2872/highmon.pl";
sha256 = "1vvgzscb12l3cp2nq954fx6j3awvpjsb0nqylal51ps9cq9a3wir";
};
dontUnpack = true;
passthru.scripts = [ "highmon.pl" ];
installPhase = ''
runHook preInstall
install -D $src $out/share/highmon.pl
runHook postInstall
'';
meta = with lib; {
inherit (weechat.meta) platforms;
homepage = "https://github.com/KenjiE20/highmon/";
description = "highmon.pl is a weechat script that adds 'Highlight Monitor'.";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ govanify ];
};
}

View file

@ -0,0 +1,40 @@
{ stdenv, lib, fetchurl, substituteAll, PodParser }:
stdenv.mkDerivation {
pname = "multiline";
version = "0.6.3";
src = fetchurl {
url = "https://raw.githubusercontent.com/weechat/scripts/945315bed4bc2beaf1e47f9b946ffe8f638f77fe/perl/multiline.pl";
sha256 = "1smialb21ny7brhij4sbw46xvsmrdv6ig2da0ip63ga2afngwsy4";
};
dontUnpack = true;
prePatch = ''
cp $src multiline.pl
'';
patches = [
# The script requires a special Perl environment.
(substituteAll {
src = ./libpath.patch;
env = PodParser;
})
];
passthru.scripts = [ "multiline.pl" ];
installPhase = ''
runHook preInstall
install -D multiline.pl $out/share/multiline.pl
runHook postInstall
'';
meta = with lib; {
description = "Multi-line edit box";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ oxzi ];
};
}

View file

@ -0,0 +1,9 @@
diff --git a/multiline.pl b/multiline.pl
index 54474d4..42fbef8 100644
--- a/multiline.pl
+++ b/multiline.pl
@@ -1,3 +1,4 @@
+use lib '@env@/lib/perl5/site_perl';
use strict; use warnings;
$INC{'Encode/ConfigLocal.pm'}=1;
require Encode;

View file

@ -0,0 +1,28 @@
{ lib, stdenv, fetchurl, weechat }:
stdenv.mkDerivation {
pname = "url_hint";
version = "0.8";
src = fetchurl {
url = "https://raw.githubusercontent.com/weechat/scripts/10671d785ea3f9619d0afd0d7a1158bfa4ee3938/python/url_hint.py";
sha256 = "0aw59kq74yqh0qbdkldfl6l83d0bz833232xr2w4741szck43kss";
};
dontUnpack = true;
passthru.scripts = [ "url_hint.py" ];
installPhase = ''
runHook preInstall
install -D $src $out/share/url_hint.py
runHook postInstall
'';
meta = with lib; {
inherit (weechat.meta) platforms;
description = "url_hint.py is a URL opening script.";
license = licenses.mit;
maintainers = with maintainers; [ eraserhd ];
};
}

View file

@ -0,0 +1,48 @@
{ lib, stdenv, substituteAll, buildEnv, fetchFromGitHub, python3Packages }:
stdenv.mkDerivation rec {
pname = "wee-slack";
version = "2.8.0";
src = fetchFromGitHub {
repo = "wee-slack";
owner = "wee-slack";
rev = "v${version}";
sha256 = "0xfklr0gsc9jgxfyrrb2j756lclz9g8imcb0pk0xgyj8mhsw23zk";
};
patches = [
(substituteAll {
src = ./libpath.patch;
env = "${buildEnv {
name = "wee-slack-env";
paths = with python3Packages; [
websocket-client
six
];
}}/${python3Packages.python.sitePackages}";
})
./load_weemoji_path.patch
];
postPatch = ''
substituteInPlace wee_slack.py --subst-var out
'';
passthru.scripts = [ "wee_slack.py" ];
installPhase = ''
mkdir -p $out/share
cp wee_slack.py $out/share/wee_slack.py
install -D -m 0444 weemoji.json $out/share/wee-slack/weemoji.json
'';
meta = with lib; {
homepage = "https://github.com/wee-slack/wee-slack";
license = licenses.mit;
maintainers = with maintainers; [ willibutz ];
description = ''
A WeeChat plugin for Slack.com. Synchronizes read markers, provides typing notification, search, etc..
'';
};
}

View file

@ -0,0 +1,13 @@
diff --git a/wee_slack.py b/wee_slack.py
index e4716b4..f673b7c 100644
--- a/wee_slack.py
+++ b/wee_slack.py
@@ -31,6 +31,8 @@ import string
# See https://github.com/numpy/numpy/issues/11925
sys.modules["numpy"] = None
+sys.path.append('@env@')
+
from websocket import ( # noqa: E402
ABNF,
create_connection,

View file

@ -0,0 +1,25 @@
diff --git a/wee_slack.py b/wee_slack.py
index e4716b4..ffd122d 100644
--- a/wee_slack.py
+++ b/wee_slack.py
@@ -6092,19 +6092,7 @@ def create_slack_debug_buffer():
def load_emoji():
try:
- weechat_dir = w.info_get("weechat_data_dir", "") or w.info_get(
- "weechat_dir", ""
- )
- weechat_sharedir = w.info_get("weechat_sharedir", "")
- local_weemoji, global_weemoji = (
- "{}/weemoji.json".format(path) for path in (weechat_dir, weechat_sharedir)
- )
- path = (
- global_weemoji
- if os.path.exists(global_weemoji) and not os.path.exists(local_weemoji)
- else local_weemoji
- )
- with open(path, "r") as ef:
+ with open("@out@/share/wee-slack/weemoji.json", "r") as ef:
emojis = json.loads(ef.read())
if "emoji" in emojis:
print_error(

View file

@ -0,0 +1,25 @@
{ lib, stdenv, fetchFromGitHub }:
stdenv.mkDerivation rec {
pname = "weechat-autosort";
version = "3.8";
src = fetchFromGitHub {
owner = "de-vri-es";
repo = pname;
rev = version;
sha256 = "0a2gc8nhklvlivradhqy2pkymsqyy01pvzrmwg60cln8snmcqpd5";
};
passthru.scripts = [ "autosort.py" ];
installPhase = ''
install -D autosort.py $out/share/autosort.py
'';
meta = with lib; {
description = "Autosort is a weechat script to automatically or manually keep your buffers sorted";
homepage = "https://github.com/de-vri-es/weechat-autosort";
license = licenses.gpl3;
maintainers = with maintainers; [ emily ];
};
}

View file

@ -0,0 +1,26 @@
{ lib, stdenv, fetchurl, weechat }:
stdenv.mkDerivation {
pname = "weechat-go";
version = "2.7";
src = fetchurl {
url = "https://github.com/weechat/scripts/raw/414cff3ee605ba204b607742430a21443c035b08/python/go.py";
sha256 = "0bnbfpj1qg4yzwbikh1aw5ajc8l44lkb0y0m6mz8grpf5bxk5cwm";
};
dontUnpack = true;
passthru.scripts = [ "go.py" ];
installPhase = ''
install -D $src $out/share/go.py
'';
meta = with lib; {
inherit (weechat.meta) platforms;
description = "go.py is a weechat script to quickly jump to different buffers";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ govanify ];
};
}

View file

@ -0,0 +1,51 @@
{ lib, stdenv, curl, fetchFromGitHub, cjson, olm, luaffi }:
stdenv.mkDerivation {
pname = "weechat-matrix-bridge";
version = "unstable-2018-11-19";
src = fetchFromGitHub {
owner = "torhve";
repo = "weechat-matrix-protocol-script";
rev = "8d32e90d864a8f3f09ecc2857cd5dd6e39a8c3f7";
sha256 = "0qqd6qmkrdc0r3rnl53c3yp93fbcz7d3mdw3vq5gmdqxyym4s9lj";
};
patches = [
./library-path.patch
];
buildInputs = [ curl cjson olm luaffi ];
postPatch = ''
substituteInPlace matrix.lua \
--replace "/usr/bin/curl" "${curl}/bin/curl" \
--replace "__NIX_LIB_PATH__" "$out/lib/?.so" \
--replace "__NIX_OLM_PATH__" "$out/share/?.lua"
substituteInPlace olm.lua \
--replace "__NIX_LIB_PATH__" "$out/lib/?.so"
'';
passthru.scripts = [ "matrix.lua" ];
installPhase = ''
mkdir -p $out/{share,lib}
cp {matrix.lua,olm.lua} $out/share
cp ${cjson}/lib/lua/${cjson.lua.luaversion}/cjson.so $out/lib/cjson.so
cp ${olm}/lib/libolm.so $out/lib/libolm.so
cp ${luaffi}/lib/lua/${luaffi.lua.luaversion}/ffi.so $out/lib/ffi.so
'';
meta = with lib; {
description = "A WeeChat script in Lua that implements the matrix.org chat protocol";
homepage = "https://github.com/torhve/weechat-matrix-protocol-script";
maintainers = with maintainers; [ ];
license = licenses.mit; # see https://github.com/torhve/weechat-matrix-protocol-script/blob/0052e7275ae149dc5241226391c9b1889ecc3c6b/matrix.lua#L53
platforms = platforms.unix;
# As of 2019-06-30, all of the dependencies are available on macOS but the
# package itself does not build.
broken = stdenv.isDarwin;
};
}

View file

@ -0,0 +1,28 @@
diff --git a/matrix.lua b/matrix.lua
index b79f500..32b37a2 100644
--- a/matrix.lua
+++ b/matrix.lua
@@ -43,6 +43,9 @@ This script maps this as follows:
]]
+package.cpath = package.cpath .. ";__NIX_LIB_PATH__"
+package.path = package.path .. ";__NIX_OLM_PATH__"
+
local json = require 'cjson' -- apt-get install lua-cjson
local olmstatus, olm = pcall(require, 'olm') -- LuaJIT olm FFI binding ln -s ~/olm/olm.lua /usr/local/share/lua/5.1
local w = weechat
diff --git a/olm.lua b/olm.lua
index 114649c..4828371 100644
--- a/olm.lua
+++ b/olm.lua
@@ -17,6 +17,9 @@
* limitations under the License.
*/
--]]
+
+package.cpath = package.cpath .. ";__NIX_LIB_PATH__"
+
local ffi = require'ffi'
ffi.cdef[[

View file

@ -0,0 +1,86 @@
{ buildPythonPackage
, lib
, python
, fetchFromGitHub
, pyopenssl
, webcolors
, future
, atomicwrites
, attrs
, Logbook
, pygments
, matrix-nio
, aiohttp
, requests
}:
let
scriptPython = python.withPackages (ps: with ps; [
aiohttp
requests
python-magic
]);
version = "0.3.0";
in buildPythonPackage {
pname = "weechat-matrix";
inherit version;
src = fetchFromGitHub {
owner = "poljar";
repo = "weechat-matrix";
rev = version;
hash = "sha256-o4kgneszVLENG167nWnk2FxM+PsMzi+PSyMUMIktZcc=";
};
propagatedBuildInputs = [
pyopenssl
webcolors
future
atomicwrites
attrs
Logbook
pygments
matrix-nio
aiohttp
requests
];
passthru.scripts = [ "matrix.py" ];
dontBuild = true;
doCheck = false;
installPhase = ''
mkdir -p $out/share $out/bin
cp main.py $out/share/matrix.py
cp contrib/matrix_upload.py $out/bin/matrix_upload
cp contrib/matrix_decrypt.py $out/bin/matrix_decrypt
cp contrib/matrix_sso_helper.py $out/bin/matrix_sso_helper
substituteInPlace $out/bin/matrix_upload \
--replace '/usr/bin/env -S python3' '${scriptPython}/bin/python'
substituteInPlace $out/bin/matrix_sso_helper \
--replace '/usr/bin/env -S python3' '${scriptPython}/bin/python'
substituteInPlace $out/bin/matrix_decrypt \
--replace '/usr/bin/env python3' '${scriptPython}/bin/python'
mkdir -p $out/${python.sitePackages}
cp -r matrix $out/${python.sitePackages}/matrix
'';
dontPatchShebangs = true;
postFixup = ''
addToSearchPath program_PYTHONPATH $out/${python.sitePackages}
patchPythonScript $out/share/matrix.py
substituteInPlace $out/${python.sitePackages}/matrix/server.py --replace \"matrix_sso_helper\" \"$out/bin/matrix_sso_helper\"
'';
meta = with lib; {
description = "A Python plugin for Weechat that lets Weechat communicate over the Matrix protocol";
homepage = "https://github.com/poljar/weechat-matrix";
license = licenses.isc;
platforms = platforms.unix;
maintainers = with maintainers; [ tilpner emily ];
};
}

View file

@ -0,0 +1,31 @@
{ lib, stdenv, fetchFromGitHub, libnotify }:
stdenv.mkDerivation rec {
pname = "weechat-notify-send";
version = "0.9";
src = fetchFromGitHub {
owner = "s3rvac";
repo = pname;
rev = "v${version}";
sha256 = "1693b7axm9ls5p7hm6kq6avddsisi491khr5irvswr5lpizvys6a";
};
passthru.scripts = [ "notify_send.py" ];
dontBuild = true;
doCheck = false;
installPhase = ''
install -D notify_send.py $out/share/notify_send.py
substituteInPlace $out/share/notify_send.py \
--replace "'notify-send'" "'${libnotify}/bin/notify-send'"
'';
meta = with lib; {
description = "A WeeChat script that sends highlight and message notifications through notify-send";
homepage = "https://github.com/s3rvac/weechat-notify-send";
license = licenses.mit;
maintainers = with maintainers; [ tobim ];
};
}

View file

@ -0,0 +1,77 @@
{ lib, stdenv, substituteAll, buildEnv, fetchgit, fetchFromGitHub, python3Packages, gmp }:
let
# pure-python-otr (potr) requires an older version of pycrypto, which is
# not compatible with pycryptodome. Therefore, the latest patched version
# of pycrypto will be fetched from the Debian project.
# https://security-tracker.debian.org/tracker/source-package/python-crypto
pycrypto = python3Packages.buildPythonPackage rec {
pname = "pycrypto";
version = "2.6.1-13.1";
src = fetchgit {
url = "https://salsa.debian.org/sramacher/python-crypto.git";
rev = "debian/${version}";
sha256 = "1mahqmlgilgk0rn5hfkhza7kscfm7agdakkb6rqnif9g0qp3s52f";
};
postPatch = ''
for p in debian/patches/*.patch; do
patch -p1 < "$p"
done
'';
buildInputs = [ gmp ];
# Tests are relying on old Python 2 modules.
doCheck = false;
preConfigure = ''
sed -i 's,/usr/include,/no-such-dir,' configure
sed -i "s!,'/usr/include/'!!" setup.py
'';
};
potr = python3Packages.potr.overridePythonAttrs (oldAttrs: {
propagatedBuildInputs = [ pycrypto ];
});
in stdenv.mkDerivation rec {
pname = "weechat-otr";
version = "1.9.2";
src = fetchFromGitHub {
repo = pname;
owner = "mmb";
rev = "v${version}";
sha256 = "1lngv98y6883vk8z2628cl4d5y8jxy39w8245gjdvshl8g18k5s2";
};
patches = [
(substituteAll {
src = ./libpath.patch;
env = "${buildEnv {
name = "weechat-otr-env";
paths = [ potr pycrypto ];
}}/${python3Packages.python.sitePackages}";
})
];
passthru.scripts = [ "weechat_otr.py" ];
installPhase = ''
mkdir -p $out/share
cp weechat_otr.py $out/share/weechat_otr.py
'';
meta = with lib; {
homepage = "https://github.com/mmb/weechat-otr";
license = licenses.gpl3;
maintainers = with maintainers; [ oxzi ];
description = "WeeChat script for Off-the-Record messaging";
knownVulnerabilities = [
"There is no upstream release since 2018-03."
"Utilizes deprecated and vulnerable pycrypto library with Debian patches from 2020-04."
];
};
}

View file

@ -0,0 +1,13 @@
diff --git a/weechat_otr.py b/weechat_otr.py
index 0ccfb35..c42bebf 100644
--- a/weechat_otr.py
+++ b/weechat_otr.py
@@ -41,6 +41,8 @@ import shlex
import shutil
import sys
+sys.path.append('@env@')
+
import potr
import weechat

View file

@ -0,0 +1,28 @@
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation {
pname = "weechat-zncplayback";
version = "0.2.1";
src = fetchurl {
url = "https://github.com/weechat/scripts/raw/bcc9643136addd2cd68ac957dd64e336e4f88aa1/python/zncplayback.py";
sha256 = "1k32p6naxg40g664ip48zvm61xza7l9az3v3rawmjw97i0mwz7y3";
};
dontUnpack = true;
installPhase = ''
mkdir -p $out/share
cp $src $out/share/zncplayback.py
'';
passthru = {
scripts = [ "zncplayback.py" ];
};
meta = with lib; {
description = "Add support for the ZNC Playback module";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ qyliss ];
};
}

View file

@ -0,0 +1,91 @@
{ lib, runCommand, writeScriptBin, buildEnv
, python3Packages, perlPackages, runtimeShell
}:
weechat:
let
wrapper = {
installManPages ? true
, configure ? { availablePlugins, ... }: { plugins = builtins.attrValues availablePlugins; }
}:
let
perlInterpreter = perlPackages.perl;
availablePlugins = let
simplePlugin = name: {pluginFile = "${weechat.${name}}/lib/weechat/plugins/${name}.so";};
in rec {
python = (simplePlugin "python") // {
extraEnv = ''
export PATH="${python3Packages.python}/bin:$PATH"
'';
withPackages = pkgsFun: (python // {
extraEnv = ''
export PYTHONHOME="${python3Packages.python.withPackages pkgsFun}"
'';
});
};
perl = (simplePlugin "perl") // {
extraEnv = ''
export PATH="${perlInterpreter}/bin:$PATH"
'';
withPackages = pkgsFun: (perl // {
extraEnv = ''
${perl.extraEnv}
export PERL5LIB=${perlPackages.makeFullPerlPath (pkgsFun perlPackages)}
'';
});
};
tcl = simplePlugin "tcl";
ruby = simplePlugin "ruby";
guile = simplePlugin "guile";
lua = simplePlugin "lua";
};
config = configure { inherit availablePlugins; };
plugins = config.plugins or (builtins.attrValues availablePlugins);
pluginsDir = runCommand "weechat-plugins" {} ''
mkdir -p $out/plugins
for plugin in ${lib.concatMapStringsSep " " (p: p.pluginFile) plugins} ; do
ln -s $plugin $out/plugins
done
'';
init = let
init = builtins.replaceStrings [ "\n" ] [ ";" ] (config.init or "");
mkScript = drv: lib.forEach drv.scripts (script: "/script load ${drv}/share/${script}");
scripts = builtins.concatStringsSep ";" (lib.foldl (scripts: drv: scripts ++ mkScript drv)
[ ] (config.scripts or []));
in "${scripts};${init}";
mkWeechat = bin: (writeScriptBin bin ''
#!${runtimeShell}
export WEECHAT_EXTRA_LIBDIR=${pluginsDir}
${lib.concatMapStringsSep "\n" (p: lib.optionalString (p ? extraEnv) p.extraEnv) plugins}
exec ${weechat}/bin/${bin} "$@" --run-command ${lib.escapeShellArg init}
'') // {
inherit (weechat) name man;
unwrapped = weechat;
outputs = [ "out" "man" ];
};
in buildEnv {
name = "weechat-bin-env-${weechat.version}";
extraOutputsToInstall = lib.optionals installManPages [ "man" ];
paths = [
(mkWeechat "weechat")
(mkWeechat "weechat-headless")
(runCommand "weechat-out-except-bin" { } ''
mkdir $out
ln -sf ${weechat}/include $out/include
ln -sf ${weechat}/lib $out/lib
ln -sf ${weechat}/share $out/share
'')
];
meta = builtins.removeAttrs weechat.meta [ "outputsToInstall" ];
};
in lib.makeOverridable wrapper

View file

@ -0,0 +1,58 @@
--- a/configure
+++ b/configure
@@ -6143,53 +6143,8 @@ rm -f confcache
#AC_CHECK_HEADERS(openssl/ssl.h openssl/crypto.h)
#AC_CHECK_HEADERS(zlib.h)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for path to OpenSSL" >&5
-$as_echo_n "checking for path to OpenSSL... " >&6; }
-
-
-# Check whether --with-openssl was given.
-if test "${with_openssl+set}" = set; then :
- withval=$with_openssl; with_openssl_path=$withval
-else
- with_openssl_path=auto
-fi
-
-
-
-cf_openssl_basedir=""
-if test "$with_openssl_path" != "auto"; then
- cf_openssl_basedir="`echo ${with_openssl_path} | sed 's/\/$//'`"
-else
- for dirs in /usr/local/ssl /usr/pkg /usr/local /usr/local/openssl; do
- if test -f "${dirs}/include/openssl/opensslv.h" && test -f "${dirs}/lib/libssl.so"; then
- cf_openssl_basedir="${dirs}"
- break
- fi
- done
- unset dirs
-fi
-if test ! -z "$cf_openssl_basedir"; then
- if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" && test -f "${cf_openssl_basedir}/lib/libssl.so"; then
- SSL_INCLUDES="-I${cf_openssl_basedir}/include"
- SSL_LIBS="-L${cf_openssl_basedir}/lib"
- else
- cf_openssl_basedir=""
- fi
-else
- if test -f "/usr/include/openssl/opensslv.h" ; then
- cf_openssl_basedir="/usr"
- fi
-fi
-
-if test ! -z "$cf_openssl_basedir"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cf_openssl_basedir" >&5
-$as_echo "$cf_openssl_basedir" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
- as_fn_error 1 "OpenSSL is required." "$LINENO" 5
-fi
-unset cf_openssl_basedir
+SSL_INCLUDES="-I@openssl.dev@/include"
+SSL_LIBS="-L@openssl-lib@/lib"
save_CXX="$CXX"
CXX="$CXX $SSL_INCLUDES"

View file

@ -0,0 +1,46 @@
{ lib, stdenv, fetchurl, openssl }:
stdenv.mkDerivation rec {
pname = "wraith";
version = "1.4.10";
src = fetchurl {
url = "mirror://sourceforge/wraithbotpack/wraith-v${version}.tar.gz";
sha256 = "1h8159g6wh1hi69cnhqkgwwwa95fa6z1zrzjl219mynbf6vjjzkw";
};
hardeningDisable = [ "format" ];
buildInputs = [ openssl ];
patches = [ ./configure.patch ./dlopen.patch ];
postPatch = ''
substituteInPlace configure --subst-var-by openssl.dev ${openssl.dev} \
--subst-var-by openssl-lib ${lib.getLib openssl}
substituteInPlace src/libssl.cc --subst-var-by openssl ${lib.getLib openssl}
substituteInPlace src/libcrypto.cc --subst-var-by openssl ${lib.getLib openssl}
'';
installPhase = ''
mkdir -p $out/bin
cp -a wraith $out/bin/wraith
ln -s wraith $out/bin/hub
'';
meta = with lib; {
broken = (stdenv.isLinux && stdenv.isAarch64);
description = "An IRC channel management bot written purely in C/C++";
longDescription = ''
Wraith is an IRC channel management bot written purely in C/C++. It has
been in development since late 2003. It is based on Eggdrop 1.6.12 but has
since evolved into something much different at its core. TCL and loadable
modules are currently not supported.
Maintainer's Notes:
Copy the binary out of the store before running it with the -C option to
configure it. See https://github.com/wraith/wraith/wiki/GettingStarted .
The binary will not run when moved onto non-NixOS systems; use patchelf
to fix its runtime dependenices.
'';
homepage = "https://wraith.botpack.net/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ elitak ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,48 @@
diff --git a/src/libcrypto.cc b/src/libcrypto.cc
index 5139f66..517103f 100644
--- a/src/libcrypto.cc
+++ b/src/libcrypto.cc
@@ -100,17 +100,9 @@ int load_libcrypto() {
}
sdprintf("Loading libcrypto");
+ dlerror(); // Clear Errors
+ libcrypto_handle = dlopen("@openssl@/lib/libcrypto.so", RTLD_LAZY|RTLD_GLOBAL);
- bd::Array<bd::String> libs_list(bd::String("libcrypto.so." SHLIB_VERSION_NUMBER " libcrypto.so libcrypto.so.1.1 libcrypto.so.1.0.0 libcrypto.so.0.9.8 libcrypto.so.10 libcrypto.so.9 libcrypto.so.8 libcrypto.so.7 libcrypto.so.6").split(' '));
-
- for (size_t i = 0; i < libs_list.length(); ++i) {
- dlerror(); // Clear Errors
- libcrypto_handle = dlopen(bd::String(libs_list[i]).c_str(), RTLD_LAZY|RTLD_GLOBAL);
- if (libcrypto_handle) {
- sdprintf("Found libcrypto: %s", bd::String(libs_list[i]).c_str());
- break;
- }
- }
if (!libcrypto_handle) {
fprintf(stderr, STR("Unable to find libcrypto\n"));
return(1);
diff --git a/src/libssl.cc b/src/libssl.cc
index 6010abc..86e29fc 100644
--- a/src/libssl.cc
+++ b/src/libssl.cc
@@ -78,17 +78,9 @@ int load_libssl() {
}
sdprintf("Loading libssl");
+ dlerror(); // Clear Errors
+ libssl_handle = dlopen("@openssl@/lib/libssl.so", RTLD_LAZY);
- bd::Array<bd::String> libs_list(bd::String("libssl.so." SHLIB_VERSION_NUMBER " libssl.so libssl.so.1.1 libssl.so.1.0.0 libssl.so.0.9.8 libssl.so.10 libssl.so.9 libssl.so.8 libssl.so.7 libssl.so.6").split(' '));
-
- for (size_t i = 0; i < libs_list.length(); ++i) {
- dlerror(); // Clear Errors
- libssl_handle = dlopen(bd::String(libs_list[i]).c_str(), RTLD_LAZY);
- if (libssl_handle) {
- sdprintf("Found libssl: %s", bd::String(libs_list[i]).c_str());
- break;
- }
- }
if (!libssl_handle) {
fprintf(stderr, STR("Unable to find libssl\n"));
return(1);