]> git.immae.eu Git - perso/Immae/Config/Nix.git/commitdiff
Add visio website
authorIsmaël Bouya <ismael.bouya@normalesup.org>
Wed, 29 Sep 2021 22:25:04 +0000 (00:25 +0200)
committerIsmaël Bouya <ismael.bouya@normalesup.org>
Sun, 9 Apr 2023 15:14:22 +0000 (17:14 +0200)
flakes/backports/flake.nix
modules/default.nix
modules/private/default.nix
modules/private/websites/default.nix
modules/private/websites/tools/visio/default.nix [new file with mode: 0644]

index 8be885f5cd51259559e946639610f4b17a1130f6..bd31ed54d2a3ca3065aad545b175367260085ee1 100644 (file)
@@ -16,6 +16,7 @@
         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;
@@ -40,6 +41,7 @@
         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"; };
@@ -77,6 +79,7 @@
       };
       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");
index 2f06eb138d147146d78857efd4c100dc49a99181..4516c8458099b67187531b77d76b3cff76bf70aa 100644 (file)
@@ -26,4 +26,6 @@ in
   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 {})
index b68bd6b1a3c94a48f68b749e458d9aedea8351e1..51e0cdf6b990301c700f0f70783fa2975db04232 100644 (file)
@@ -113,6 +113,7 @@ set = {
   toolsTool = ./websites/tools/tools;
   mailTool = ./websites/tools/mail;
   statsTool = ./websites/tools/stats;
+  visioTool = ./websites/tools/visio;
 
   # Games
   codenamesGame = ./websites/tools/games/codenames;
index 34e4bf2fb599e6ee4aaa7f6296a97e98744b4289..701ad1df7a2f7dcfca6283ad6f5f72c6d88df58b 100644 (file)
@@ -327,6 +327,7 @@ in
       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;
diff --git a/modules/private/websites/tools/visio/default.nix b/modules/private/websites/tools/visio/default.nix
new file mode 100644 (file)
index 0000000..e7ebe9b
--- /dev/null
@@ -0,0 +1,41 @@
+{ 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
+        ''
+      ];
+    };
+
+  };
+}
+