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