From: Ismaƫl Bouya Date: Sun, 10 Mar 2019 15:59:24 +0000 (+0100) Subject: Add bitlbee server X-Git-Tag: nur_publish~207 X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FConfig%2FNix.git;a=commitdiff_plain;h=31a38b9f53fdaf1bd1141bc6dbf777605dfed590 Add bitlbee server Fixes https://git.immae.eu/mantisbt/view.php?id=69 --- diff --git a/nixops/eldiron.nix b/nixops/eldiron.nix index 4726d08..5b70eb3 100644 --- a/nixops/eldiron.nix +++ b/nixops/eldiron.nix @@ -32,6 +32,7 @@ ./modules/ftp ./modules/pub ./modules/task + ./modules/irc ]; services.myGitolite.enable = true; services.myDatabases.enable = true; @@ -39,6 +40,7 @@ services.myWebsites.integration.enable = true; services.myWebsites.tools.enable = true; services.pure-ftpd.enable = true; + services.irc.enable = true; services.pub.enable = true; services.myTasks.enable = true; diff --git a/nixops/modules/irc/default.nix b/nixops/modules/irc/default.nix new file mode 100644 index 0000000..4cf27e5 --- /dev/null +++ b/nixops/modules/irc/default.nix @@ -0,0 +1,99 @@ +{ lib, pkgs, config, myconfig, mylibs, ... }: +let + bitlbee-mastodon = with pkgs; stdenv.mkDerivation rec { + name = "bitlbee-mastodon-${version}"; + version = "v1.4.2"; + + src = fetchFromGitHub { + rev = version; + owner = "kensanata"; + repo = "bitlbee-mastodon"; + sha256 = "04rakgr1pfsg1vhfwlfbggbzw249j7dmk88xrsnf3n84c5ccdyas"; + }; + + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ bitlbee glib ]; + + preConfigure = '' + export BITLBEE_PLUGINDIR=$out/lib/bitlbee + ./autogen.sh + ''; + + meta = { + description = "Bitlbee plugin for Mastodon"; + + homepage = https://github.com/kensanata/bitlbee-mastodon; + license = lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; + }; + bitlbee-discord = pkgs.bitlbee-discord.overrideAttrs(old: rec { + name = "bitlbee-discord-${version}"; + version = "0.4.2"; + + src = pkgs.fetchFromGitHub { + rev = version; + owner = "sm00th"; + repo = "bitlbee-discord"; + sha256 = "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f"; + }; + }); + bitlbee-facebook = pkgs.bitlbee-facebook.overrideAttrs(old: rec { + name = "bitlbee-facebook-${version}"; + version = "1.2.0"; + + src = pkgs.fetchFromGitHub { + rev = "v${version}"; + owner = "bitlbee"; + repo = "bitlbee-facebook"; + sha256 = "11068zhb1v55b1x0nhjc4f3p0glccxpcyk5c1630hfdzkj7vyqhn"; + }; + }); +in +{ + options = { + services.irc.enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Whether to enable irc stuff. + ''; + }; + }; + + config = lib.mkIf config.services.irc.enable { + security.acme.certs."irc" = config.services.myCertificates.certConfig // { + domain = "irc.immae.eu"; + postRun = '' + systemctl restart stunnel.service + ''; + }; + + networking.firewall.allowedTCPPorts = [ 6697 ]; + services.bitlbee = { + enable = true; + authMode = "Registered"; + libpurple_plugins = [ + pkgs.purple-hangouts + pkgs.purple-matrix + ]; + plugins = [ + bitlbee-mastodon + bitlbee-facebook + bitlbee-discord + pkgs.bitlbee-steam + ]; + }; + + services.stunnel = { + enable = true; + servers = { + bitlbee = { + accept = 6697; + connect = 6667; + cert = "/var/lib/acme/irc/full.pem"; + }; + }; + }; + }; +}