lass: add bitlbee-steam support
This commit is contained in:
parent
5113b24959
commit
c9ecb53841
153
lass/3modules/bitlbee.nix
Normal file
153
lass/3modules/bitlbee.nix
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
inherit (lib)
|
||||||
|
mkIf
|
||||||
|
mkOption
|
||||||
|
types
|
||||||
|
singleton
|
||||||
|
;
|
||||||
|
|
||||||
|
authModeCheck = v:
|
||||||
|
v == "Open" ||
|
||||||
|
v == "Closed" ||
|
||||||
|
v == "Registered"
|
||||||
|
;
|
||||||
|
|
||||||
|
bitlbeeConfig = pkgs.writeText "bitlbee.conf" ''
|
||||||
|
[settings]
|
||||||
|
RunMode = Daemon
|
||||||
|
User = bitlbee
|
||||||
|
ConfigDir = ${cfg.configDir}
|
||||||
|
DaemonInterface = ${cfg.interface}
|
||||||
|
DaemonPort = ${toString cfg.portNumber}
|
||||||
|
AuthMode = ${cfg.authMode}
|
||||||
|
${lib.optionalString (cfg.hostName != "") "HostName = ${cfg.hostName}"}
|
||||||
|
${lib.optionalString (cfg.protocols != "") "Protocols = ${cfg.protocols}"}
|
||||||
|
${cfg.extraSettings}
|
||||||
|
|
||||||
|
[defaults]
|
||||||
|
${cfg.extraDefaults}
|
||||||
|
'';
|
||||||
|
|
||||||
|
cfg = config.lass.bitlbee;
|
||||||
|
|
||||||
|
out = {
|
||||||
|
options.lass.bitlbee = api;
|
||||||
|
config = mkIf cfg.enable imp;
|
||||||
|
};
|
||||||
|
|
||||||
|
api = {
|
||||||
|
enable = mkOption {
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to run the BitlBee IRC to other chat network gateway.
|
||||||
|
Running it allows you to access the MSN, Jabber, Yahoo! and ICQ chat
|
||||||
|
networks via an IRC client.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
interface = mkOption {
|
||||||
|
default = "127.0.0.1";
|
||||||
|
description = ''
|
||||||
|
The interface the BitlBee deamon will be listening to. If `127.0.0.1',
|
||||||
|
only clients on the local host can connect to it; if `0.0.0.0', clients
|
||||||
|
can access it from any network interface.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
portNumber = mkOption {
|
||||||
|
default = 6667;
|
||||||
|
description = ''
|
||||||
|
Number of the port BitlBee will be listening to.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
authMode = mkOption {
|
||||||
|
default = "Open";
|
||||||
|
type = types.addCheck types.str authModeCheck;
|
||||||
|
description = ''
|
||||||
|
The following authentication modes are available:
|
||||||
|
Open -- Accept connections from anyone, use NickServ for user authentication.
|
||||||
|
Closed -- Require authorization (using the PASS command during login) before allowing the user to connect at all.
|
||||||
|
Registered -- Only allow registered users to use this server; this disables the register- and the account command until the user identifies himself.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
hostName = mkOption {
|
||||||
|
default = "";
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
Normally, BitlBee gets a hostname using getsockname(). If you have a nicer
|
||||||
|
alias for your BitlBee daemon, you can set it here and BitlBee will identify
|
||||||
|
itself with that name instead.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
configDir = mkOption {
|
||||||
|
default = "/var/lib/bitlbee";
|
||||||
|
type = types.path;
|
||||||
|
description = ''
|
||||||
|
Specify an alternative directory to store all the per-user configuration
|
||||||
|
files.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
protocols = mkOption {
|
||||||
|
default = "";
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
This option allows to remove the support of protocol, even if compiled
|
||||||
|
in. If nothing is given, there are no restrictions.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraSettings = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Will be inserted in the Settings section of the config file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraDefaults = mkOption {
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Will be inserted in the Default section of the config file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
bitlbeePkg = mkOption {
|
||||||
|
default = pkgs.bitlbee;
|
||||||
|
description = ''
|
||||||
|
the bitlbee pkg to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imp = {
|
||||||
|
users.extraUsers = singleton {
|
||||||
|
name = "bitlbee";
|
||||||
|
uid = config.ids.uids.bitlbee;
|
||||||
|
description = "BitlBee user";
|
||||||
|
home = "/var/lib/bitlbee";
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users.extraGroups = singleton {
|
||||||
|
name = "bitlbee";
|
||||||
|
gid = config.ids.gids.bitlbee;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.bitlbee = {
|
||||||
|
description = "BitlBee IRC to other chat networks gateway";
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig.User = "bitlbee";
|
||||||
|
serviceConfig.ExecStart = "${cfg.bitlbeePkg}/sbin/bitlbee -F -n -c ${bitlbeeConfig}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
out
|
20
lass/5pkgs/bitlbee-dev.nix
Normal file
20
lass/5pkgs/bitlbee-dev.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{ fetchurl, stdenv, gnutls, glib, pkgconfig, check, libotr, python }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "bitlbee-3.4.1";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "mirror://bitlbee/src/${name}.tar.gz";
|
||||||
|
sha256 = "1qf0ypa9ba5jvsnpg9slmaran16hcc5fnfzbb1sdch1hjhchn2jh";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ gnutls glib pkgconfig libotr python ];
|
||||||
|
|
||||||
|
buildPhase = "";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
make install-dev
|
||||||
|
'';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
31
lass/5pkgs/bitlbee-steam.nix
Normal file
31
lass/5pkgs/bitlbee-steam.nix
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{ stdenv, fetchgit, autoconf, automake, bitlbee-dev, glib, libgcrypt, libtool, pkgconfig }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "bitlbee-steam-1.3.1";
|
||||||
|
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://github.com/jgeboski/bitlbee-steam";
|
||||||
|
rev = "439d777c7e8d06712ffc15c3e51d61799f4c0d0c";
|
||||||
|
sha256 = "493924da1083a3b23073c595a9e1989a7ae09a196524ad66ca99c4d8ccc20d2a";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
autoconf
|
||||||
|
automake
|
||||||
|
bitlbee-dev
|
||||||
|
glib
|
||||||
|
libgcrypt
|
||||||
|
libtool
|
||||||
|
pkgconfig
|
||||||
|
];
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
./autogen.sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp steam/.libs/steam.la $out/
|
||||||
|
cp steam/.libs/steam.so $out/
|
||||||
|
'';
|
||||||
|
}
|
71
lass/5pkgs/bitlbee.nix
Normal file
71
lass/5pkgs/bitlbee.nix
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
{ fetchurl, stdenv, gnutls, glib, pkgconfig, check, libotr, python
|
||||||
|
, bitlbee-facebook ? null
|
||||||
|
, bitlbee-steam ? null
|
||||||
|
}:
|
||||||
|
|
||||||
|
with stdenv.lib;
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "bitlbee-3.4.1";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "mirror://bitlbee/src/${name}.tar.gz";
|
||||||
|
sha256 = "1qf0ypa9ba5jvsnpg9slmaran16hcc5fnfzbb1sdch1hjhchn2jh";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
buildInputs = [ gnutls glib pkgconfig libotr python ]
|
||||||
|
++ optional doCheck check;
|
||||||
|
|
||||||
|
configureFlags = [
|
||||||
|
"--gcov=1"
|
||||||
|
"--otr=1"
|
||||||
|
"--ssl=gnutls"
|
||||||
|
];
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
${if (bitlbee-steam != null) then
|
||||||
|
''
|
||||||
|
mkdir -p $out/lib/bitlbee/
|
||||||
|
find ${bitlbee-steam}
|
||||||
|
cp ${bitlbee-steam}/* $out/lib/bitlbee/
|
||||||
|
''
|
||||||
|
else
|
||||||
|
""
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
#${concatMapStringsSep "\n" ([] ++
|
||||||
|
# (if (bitlbee-facebook != null) then
|
||||||
|
# "cp ${bitlbee-faceook}/* $out/"
|
||||||
|
# else
|
||||||
|
# ""
|
||||||
|
# ) ++
|
||||||
|
# (if (bitlbee-steam != null) then
|
||||||
|
# "cp ${bitlbee-steam}/* $out/"
|
||||||
|
# else
|
||||||
|
# ""
|
||||||
|
# )
|
||||||
|
#)}
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "IRC instant messaging gateway";
|
||||||
|
|
||||||
|
longDescription = ''
|
||||||
|
BitlBee brings IM (instant messaging) to IRC clients. It's a
|
||||||
|
great solution for people who have an IRC client running all the
|
||||||
|
time and don't want to run an additional MSN/AIM/whatever
|
||||||
|
client.
|
||||||
|
|
||||||
|
BitlBee currently supports the following IM networks/protocols:
|
||||||
|
XMPP/Jabber (including Google Talk), MSN Messenger, Yahoo!
|
||||||
|
Messenger, AIM and ICQ.
|
||||||
|
'';
|
||||||
|
|
||||||
|
homepage = http://www.bitlbee.org/;
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
|
||||||
|
maintainers = with maintainers; [ wkennington pSub ];
|
||||||
|
platforms = platforms.gnu; # arbitrary choice
|
||||||
|
};
|
||||||
|
}
|
13
lass/5pkgs/default.nix
Normal file
13
lass/5pkgs/default.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (pkgs) callPackage;
|
||||||
|
kpkgs = import ../../krebs/5pkgs { inherit pkgs; };
|
||||||
|
in
|
||||||
|
|
||||||
|
kpkgs //
|
||||||
|
rec {
|
||||||
|
bitlbee-dev = callPackage ./bitlbee-dev.nix {};
|
||||||
|
bitlbee-steam = callPackage ./bitlbee-steam.nix { inherit bitlbee-dev; };
|
||||||
|
bitlbee = callPackage ./bitlbee.nix { inherit bitlbee-steam; };
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user