]> git.immae.eu Git - perso/Immae/Config/Nix.git/blob - nixops/modules/irc/default.nix
4cf27e57acdeb3507a0f81f02795e283a2d2b934
[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 networking.firewall.allowedTCPPorts = [ 6697 ];
73 services.bitlbee = {
74 enable = true;
75 authMode = "Registered";
76 libpurple_plugins = [
77 pkgs.purple-hangouts
78 pkgs.purple-matrix
79 ];
80 plugins = [
81 bitlbee-mastodon
82 bitlbee-facebook
83 bitlbee-discord
84 pkgs.bitlbee-steam
85 ];
86 };
87
88 services.stunnel = {
89 enable = true;
90 servers = {
91 bitlbee = {
92 accept = 6697;
93 connect = 6667;
94 cert = "/var/lib/acme/irc/full.pem";
95 };
96 };
97 };
98 };
99 }