dovecot_fts-xapian = pkgs.dovecot_fts_xapian;
duply = pkgs.duply;
fiche = pkgs.fiche;
+ galene = pkgs.galene;
influxdb2 = pkgs.influxdb2;
ldapvi = pkgs.ldapvi;
lego = pkgs.lego;
cryptpad = flake-utils.lib.mkApp { drv = packages.cryptpad; name = "cryptpad"; };
duply = flake-utils.lib.mkApp { drv = packages.duply; name = "duply"; };
fiche = flake-utils.lib.mkApp { drv = packages.fiche; name = "fiche"; };
+ galene = flake-utils.lib.mkApp { drv = packages.galene; name = "galene"; };
influxd = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influxd"; };
influx = flake-utils.lib.mkApp { drv = packages.influxdb2; name = "influx"; };
ldapvi = flake-utils.lib.mkApp { drv = packages.ldapvi; name = "ldapvi"; };
};
duply = final: prev: { duply = self.packages."${final.system}".duply; };
fiche = final: prev: { fiche = self.packages."${final.system}".fiche; };
+ galene = final: prev: { galene = self.packages."${final.system}".galene; };
influxdb2 = final: prev: { influxdb2 = self.packages."${final.system}".influxdb2; };
ldapvi = final: prev: { ldapvi = self.packages."${final.system}".ldapvi; };
lego = final: prev: { lego = self.packages."${final.system}".lego; };
// overlays.dovecot_fts-xapian final prev
// overlays.duply final prev
// overlays.fiche final prev
+ // overlays.galene final prev
// overlays.influxdb2 final prev
// overlays.ldapvi final prev
// overlays.lego final prev
);
nixosModules = {
+ galene = import (nixpkgs + "/nixos/modules/services/web-apps/galene.nix");
influxdb2 = import (nixpkgs + "/nixos/modules/services/databases/influxdb2.nix");
mpd = import (nixpkgs + "/nixos/modules/services/audio/mpd.nix");
zrepl = import (nixpkgs + "/nixos/modules/services/backup/zrepl.nix");
php-application = ./websites/php-application.nix;
zrepl = ./zrepl.nix;
websites = ./websites;
+
+ galene = (flakeCompat ../flakes/backports).nixosModules.galene;
} // (if builtins.pathExists ./private then import ./private else {})
toolsTool = ./websites/tools/tools;
mailTool = ./websites/tools/mail;
statsTool = ./websites/tools/stats;
+ visioTool = ./websites/tools/visio;
# Games
codenamesGame = ./websites/tools/games/codenames;
tools.tools.enable = true;
tools.email.enable = true;
tools.stats.enable = false;
+ tools.visio.enable = true;
games.codenames.enable = true;
games.terraforming-mars.enable = true;
--- /dev/null
+{ lib, pkgs, config, ... }:
+let
+ port = 18013;
+ turnPort = 18014;
+ cfg = config.myServices.websites.tools.visio;
+in {
+ options.myServices.websites.tools.visio = {
+ enable = lib.mkEnableOption "enable visio website";
+ };
+
+ config = lib.mkIf cfg.enable {
+ networking.firewall.allowedTCPPorts = [ turnPort ];
+ networking.firewall.allowedUDPPorts = [ turnPort ];
+ services.galene = {
+ enable = true;
+ httpPort = port;
+ insecure = true;
+ # hack to bypass module's limitations
+ dataDir = "/var/lib/galene/data -http localhost:${builtins.toString port} -turn :${builtins.toString turnPort}";
+ };
+ services.websites.env.tools.vhostConfs.visio = {
+ certName = "eldiron";
+ addToCerts = true;
+ hosts = ["visio.immae.eu" ];
+ root = null;
+ extraConfig = [
+ ''
+ ProxyPass /ws ws://localhost:${builtins.toString port}/ws
+ ProxyPassReverse /ws ws://localhost:${builtins.toString port}/ws
+
+ ProxyPass / http://localhost:${builtins.toString port}/
+ ProxyPassReverse / http://localhost:${builtins.toString port}/
+
+ ProxyPreserveHost On
+ ''
+ ];
+ };
+
+ };
+}
+