]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - nixops/modules/irc/default.nix
Expand 24 chars limitation of bitlbee
[perso/Immae/Config/Nix.git] / nixops / modules / irc / default.nix
1 { lib, pkgs, config, myconfig, mylibs, ... }:
2 let
3 bitlbee-mastodon = with pkgs; stdenv.mkDerivation rec {
4 name = "bitlbee-mastodon-${version}";
5 version = "v1.4.2";
6
7 src = fetchFromGitHub {
8 rev = version;
9 owner = "kensanata";
10 repo = "bitlbee-mastodon";
11 sha256 = "04rakgr1pfsg1vhfwlfbggbzw249j7dmk88xrsnf3n84c5ccdyas";
12 };
13
14 nativeBuildInputs = [ autoreconfHook pkgconfig ];
15 buildInputs = [ bitlbee glib ];
16
17 preConfigure = ''
18 export BITLBEE_PLUGINDIR=$out/lib/bitlbee
19 ./autogen.sh
20 '';
21
22 meta = {
23 description = "Bitlbee plugin for Mastodon";
24
25 homepage = https://github.com/kensanata/bitlbee-mastodon;
26 license = lib.licenses.gpl2Plus;
27 platforms = stdenv.lib.platforms.linux;
28 };
29 };
30 bitlbee-discord = pkgs.bitlbee-discord.overrideAttrs(old: rec {
31 name = "bitlbee-discord-${version}";
32 version = "0.4.2";
33
34 src = pkgs.fetchFromGitHub {
35 rev = version;
36 owner = "sm00th";
37 repo = "bitlbee-discord";
38 sha256 = "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f";
39 };
40 });
41 bitlbee-facebook = pkgs.bitlbee-facebook.overrideAttrs(old: rec {
42 name = "bitlbee-facebook-${version}";
43 version = "1.2.0";
44
45 src = pkgs.fetchFromGitHub {
46 rev = "v${version}";
47 owner = "bitlbee";
48 repo = "bitlbee-facebook";
49 sha256 = "11068zhb1v55b1x0nhjc4f3p0glccxpcyk5c1630hfdzkj7vyqhn";
50 };
51 });
52 in
53 {
54 options = {
55 services.irc.enable = lib.mkOption {
56 type = lib.types.bool;
57 default = false;
58 description = ''
59 Whether to enable irc stuff.
60 '';
61 };
62 };
63
64 config = lib.mkIf config.services.irc.enable {
65 security.acme.certs."irc" = config.services.myCertificates.certConfig // {
66 domain = "irc.immae.eu";
67 postRun = ''
68 systemctl restart stunnel.service
69 '';
70 };
71
72 nixpkgs.config.packageOverrides = oldpkgs: rec {
73 bitlbee = oldpkgs.bitlbee.overrideAttrs(old: {
74 patches = (old.patches or []) ++ [ ./bitlbee_long_nicks.patch ];
75 });
76 };
77
78 networking.firewall.allowedTCPPorts = [ 6697 ];
79 services.bitlbee = {
80 enable = true;
81 authMode = "Registered";
82 libpurple_plugins = [
83 pkgs.purple-hangouts
84 pkgs.purple-matrix
85 ];
86 plugins = [
87 bitlbee-mastodon
88 bitlbee-facebook
89 bitlbee-discord
90 pkgs.bitlbee-steam
91 ];
92 };
93
94 services.stunnel = {
95 enable = true;
96 servers = {
97 bitlbee = {
98 accept = 6697;
99 connect = 6667;
100 cert = "/var/lib/acme/irc/full.pem";
101 };
102 };
103 };
104 };
105 }