diff options
Diffstat (limited to 'hosts/chaski/services')
-rw-r--r-- | hosts/chaski/services/VaaS/.gitignore | 1 | ||||
-rw-r--r-- | hosts/chaski/services/VaaS/CHANGELOG.md | 5 | ||||
-rw-r--r-- | hosts/chaski/services/VaaS/app/Main.hs | 58 | ||||
-rw-r--r-- | hosts/chaski/services/VaaS/default.nix | 30 | ||||
-rw-r--r-- | hosts/chaski/services/VaaS/haskell.cabal | 35 | ||||
-rw-r--r-- | hosts/chaski/services/VaaS/index.html | 46 | ||||
-rw-r--r-- | hosts/chaski/services/exneuland.nix | 58 | ||||
-rw-r--r-- | hosts/chaski/services/geolocation.nix | 6 | ||||
-rw-r--r-- | hosts/chaski/services/gtfs.nix | 38 | ||||
-rw-r--r-- | hosts/chaski/services/jitsi.nix | 59 | ||||
-rw-r--r-- | hosts/chaski/services/uplcg.nix | 23 | ||||
-rw-r--r-- | hosts/chaski/services/woitb.nix | 32 | ||||
-rw-r--r-- | hosts/chaski/services/woitb/index.html | 124 | ||||
-rw-r--r-- | hosts/chaski/services/woitb/info.html | 180 | ||||
-rw-r--r-- | hosts/chaski/services/workadventure.nix | 93 |
15 files changed, 0 insertions, 788 deletions
diff --git a/hosts/chaski/services/VaaS/.gitignore b/hosts/chaski/services/VaaS/.gitignore deleted file mode 100644 index b5e3679..0000000 --- a/hosts/chaski/services/VaaS/.gitignore +++ /dev/null @@ -1 +0,0 @@ -dist-newstyle/* diff --git a/hosts/chaski/services/VaaS/CHANGELOG.md b/hosts/chaski/services/VaaS/CHANGELOG.md deleted file mode 100644 index 500a0d0..0000000 --- a/hosts/chaski/services/VaaS/CHANGELOG.md +++ /dev/null @@ -1,5 +0,0 @@ -# Revision history for haskell - -## 0.1.0.0 -- YYYY-mm-dd - -* First version. Released on an unsuspecting world. diff --git a/hosts/chaski/services/VaaS/app/Main.hs b/hosts/chaski/services/VaaS/app/Main.hs deleted file mode 100644 index b5697d7..0000000 --- a/hosts/chaski/services/VaaS/app/Main.hs +++ /dev/null @@ -1,58 +0,0 @@ -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} - -module Main where - -import Control.Exception (try) -import Control.Exception.Base (handle) -import qualified Data.ByteString as BS -import Data.ByteString.Base32 -import qualified Data.ByteString.Char8 as C8 -import qualified Data.ByteString.Lazy as LB -import Data.Maybe (mapMaybe) -import Network.HTTP.Client (httpLbs, newManager, parseRequest, - responseBody) -import Network.HTTP.Client.TLS -import Network.HTTP.Types -import Network.Wai -import Network.Wai.Handler.Warp (run) -import qualified System.Environment as SE -import System.Process - -simpleResponse = responseLBS status200 [("Content-Type", "text/plain")] - -simpleError = responseLBS status400 [("Content-Type", "text/plain")] - -serveFile filename = do - content <- LB.readFile filename - pure $ responseLBS status200 [("Content-Type", "text/html")] content - -app :: FilePath -> FilePath -> Application -app validator index req respond = - case requestMethod req of - "GET" -> case pathInfo req of - [] -> serveFile index >>= respond - ["validate"] -> do - let gtfsuri = head $ mapMaybe (\case { ("gtfs",a) -> Just a; _ -> Nothing }) $ queryString req - putStrLn $ "uri is " <> show gtfsuri - case gtfsuri of - Just uri -> do - man <- newManager tlsManagerSettings - request <- parseRequest $ C8.unpack uri - gtfs <- httpLbs request man - let filename = "/tmp/" <> C8.unpack (encodeBase32' uri) <> ".zip" - LB.writeFile filename (responseBody gtfs) - readProcessWithExitCode "python" [validator,"-n", filename, "--output", "/tmp/gtfs-validated.html"] "" - - serveFile "/tmp/gtfs-validated.html" >>= respond - - Nothing -> respond $ simpleError "missing gtfs parameter" - _ -> respond $ simpleError "unknown path" - _ -> respond $ simpleError "invalid reqeust method" - -main :: IO () -main = do - args <- SE.getArgs - let validator = head args - putStrLn "http://localhost:7000/" - run 7000 $ app validator (args!!1) diff --git a/hosts/chaski/services/VaaS/default.nix b/hosts/chaski/services/VaaS/default.nix deleted file mode 100644 index 427270c..0000000 --- a/hosts/chaski/services/VaaS/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ pkgs, compiler ? "default", doBenchmark ? false }: - -let - - inherit pkgs; - - f = { mkDerivation, base, base32, bytestring, http-client - , http-client-tls, http-types, lib, process, wai, warp - }: - mkDerivation { - pname = "VaaS"; - version = "0.1.0.0"; - src = ./.; - isLibrary = false; - isExecutable = true; - executableHaskellDepends = [ - base base32 bytestring http-client http-client-tls http-types - process wai warp - ]; - license = "unknown"; - hydraPlatforms = lib.platforms.none; - }; - - haskellPackages = if compiler == "default" - then pkgs.haskellPackages - else pkgs.haskell.packages.${compiler}; - - variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id; -in - variant (haskellPackages.callPackage f {}) diff --git a/hosts/chaski/services/VaaS/haskell.cabal b/hosts/chaski/services/VaaS/haskell.cabal deleted file mode 100644 index 262b65f..0000000 --- a/hosts/chaski/services/VaaS/haskell.cabal +++ /dev/null @@ -1,35 +0,0 @@ -cabal-version: 2.4 -name: VaaS -version: 0.1.0.0 - --- A short (one-line) description of the package. --- synopsis: - --- A longer description of the package. --- description: - --- A URL where users can report bugs. --- bug-reports: - --- The license under which the package is released. --- license: -author: stuebinm -maintainer: stuebinm@disroot.org - --- A copyright notice. --- copyright: --- category: -extra-source-files: CHANGELOG.md - -executable VaaS - main-is: Main.hs - - -- Modules included in this executable, other than Main. - -- other-modules: - - -- LANGUAGE extensions used by modules in this package. - -- other-extensions: - build-depends: base ^>=4.14.1.0, wai, warp, http-types, bytestring, process, - http-client, http-client-tls, base32 - hs-source-dirs: app - default-language: Haskell2010 diff --git a/hosts/chaski/services/VaaS/index.html b/hosts/chaski/services/VaaS/index.html deleted file mode 100644 index a7f59e0..0000000 --- a/hosts/chaski/services/VaaS/index.html +++ /dev/null @@ -1,46 +0,0 @@ -<!doctype html> -<html class="no-js" lang=""> - <head> - <meta charset="utf-8"> - <meta http-equiv="x-ua-compatible" content="ie=edge"> - <title>GTFS Validator</title> - <meta name="description" content=""> - <meta name="viewport" content="width=device-width, initial-scale=1"> - - <link rel="apple-touch-icon" href="/apple-touch-icon.png"> - <!-- Place favicon.ico in the root directory --> - - </head> - <body> - <!--[if lt IE 8]> - <p class="browserupgrade"> - You are using an <strong>outdated</strong> browser. Please - <a href="http://browsehappy.com/">upgrade your browser</a> to improve - your experience. - </p> - <![endif]--> - - <h1>GTFS Validator</h1> - <p> - This runs the validator contained in the - <a href="https://github.com/google/transitfeed">transitfeed - git repository - </a>. - </p> - - <p>Paste the url to your GTFS zip below</p> - - <input id="url"> - <button id="submit">Validate</button> - - <script> - let submit = document.getElementById("submit"); - let url = document.getElementById("url"); - - submit.onclick = () => { - window.location = - "/validate?gtfs=" + url.value - } - </script> - </body> -</html> diff --git a/hosts/chaski/services/exneuland.nix b/hosts/chaski/services/exneuland.nix deleted file mode 100644 index 3ec3451..0000000 --- a/hosts/chaski/services/exneuland.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - workadventure-nix = builtins.fetchGit { - url = "https://stuebinm.eu/git/workadventure-nix"; - ref = "master"; - }; - wapkgs = import "${workadventure-nix.outPath}/wapkgs.nix" { - inherit pkgs; - lib = pkgs.lib; - }; - frontdrv = wapkgs.workadventure-tcm.front.override { - environment = { - PUSHER_URL = "https://exneuland.stuebinm.eu/pusher"; - START_ROOM_URL = "/_/global/world.di.c3voc.de/maps/main.json"; - }; - }; - exneuland = import ../../../pkgs/exneuland.nix; -in -{ - services.nginx = { - enable = true; - recommendedProxySettings = false; - virtualHosts."exneuland.stuebinm.eu" = { - root = "${frontdrv}/dist"; - locations."/_/".tryFiles = "/index.html =404"; - - locations."/pusher" = { - proxyPass = "http://localhost:4000"; - proxyWebsockets = true; - extraConfig = '' - add_header Access-Control-Allow-Origin https://exneuland.stuebinm.eu; - proxy_pass_request_headers on; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header X-Forwarded-Host $http_host; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $http_connection; - ''; - }; - - enableACME = true; - forceSSL = true; - }; - }; - - systemd.services.exneuland = { - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - description = "exneuland backend for workadventure"; - serviceConfig = { - ExecStart = "${exneuland}/bin/exneuland start"; - Restart = "always"; - }; - }; -} diff --git a/hosts/chaski/services/geolocation.nix b/hosts/chaski/services/geolocation.nix deleted file mode 100644 index 4b095bd..0000000 --- a/hosts/chaski/services/geolocation.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - services.nginx.virtualHosts."ilztal.live".locations."/geolocation".root = - ../../../assets/ilztal.live; -} diff --git a/hosts/chaski/services/gtfs.nix b/hosts/chaski/services/gtfs.nix deleted file mode 100644 index 61837a1..0000000 --- a/hosts/chaski/services/gtfs.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - vaas = import ./VaaS/default.nix {inherit pkgs; }; - - transitfeed = pkgs.fetchFromGitHub { - owner = "google"; - repo = "transitfeed"; - rev = "d727e97cb66ac2ca2d699a382ea1d449ee26c2a1"; - sha256 = "0kmcmdja6h7gzvi40c9qfzxh6qwv5184g2rgpqx5rhj4ql9ini3h"; - }; - - index = pkgs.copyPathToStore ./VaaS/index.html; -in -{ - systemd.services.vaas = { - enable = true; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - description = "GTFS feed validator as a service"; - path = [ pkgs.python2 pkgs.python2Packages.pytz pkgs.python2Packages.enum34 ]; - serviceConfig = { - ExecStart = "${vaas}/bin/VaaS ${transitfeed}/feedvalidator.py ${index}"; - Restart = "always"; - PrivateTmp = "true"; - PrivateDevices = "true"; - ProtectSystem = "strict"; - ReadWritePaths = [ "/tmp" ]; - }; - - }; - - services.nginx.virtualHosts."gtfs.stuebinm.eu" = { - enableACME = true; - forceSSL = true; - locations."/".proxyPass = "http://localhost:7000"; - }; -} diff --git a/hosts/chaski/services/jitsi.nix b/hosts/chaski/services/jitsi.nix deleted file mode 100644 index d6f398b..0000000 --- a/hosts/chaski/services/jitsi.nix +++ /dev/null @@ -1,59 +0,0 @@ -{config, pkgs, ...}: - -with pkgs.luaPackages; -with pkgs; -let extraLua = import ../../../../playground/jitsi/test.nix; -in - -{ - services.jitsi-meet = { - enable = true; - hostName = "jitsi.stuebinm.eu"; - config = { - enableWelcomePage = true; - prejoinPageEnabled = true; - }; - interfaceConfig = { - SHOW_JITSI_WATERMARK = false; - SHOW_WATERMARK_FOR_GUESTS = false; - }; - }; - services.jitsi-videobridge.openFirewall = true; - - services.nginx.virtualHosts."api.jitsi.stuebinm.eu" = { - locations."/room-size" = { - proxyPass = pkgs.lib.mkForce - "http://jitsi.stuebinm.eu:5280/room-size?$args&domain=jitsi.stuebinm.eu"; - - extraConfig = '' - add_header Access-Control-Allow-Origin *; - ''; - }; - locations."/room-list" = { - proxyPass = "http://jitsi.stuebinm.eu:5280/room-list?domain=jitsi.stuebinm.eu"; - extraConfig = '' - add_header Access-Control-Allow-Origin *; - ''; - }; - locations."/dashboard/".root = - pkgs.copyPathToStore ../../../../playground/jitsi/html; - - enableACME = true; - forceSSL = true; - }; - - services.nginx.recommendedProxySettings = false; - - services.prosody = { - #extraModules = [ "muc_size2" ]; - extraModules = [ "jitsi_bundled" ]; - extraPluginPaths = [ - (pkgs.copyPathToStore ../../../../playground/jitsi/plugins) - ]; - package = pkgs.prosody.override { - withExtraLibs = with extraLua; [ basexx luajwtjitsi net-url ]; - }; - }; - - -} diff --git a/hosts/chaski/services/uplcg.nix b/hosts/chaski/services/uplcg.nix deleted file mode 100644 index 5605046..0000000 --- a/hosts/chaski/services/uplcg.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, lib, pkgs, inputs, ... }: - -{ - imports = [ - "${inputs.uplcg.outPath}/module.nix" - ]; - - services.uplcg = { - enable = true; - port = 9080; - domain = "0.0.0.0"; - }; - - services.nginx.enable = true; - services.nginx.virtualHosts."cards.stuebinm.eu" = { - locations."/" = { - proxyPass = "http://localhost:9080"; - proxyWebsockets = true; - }; - enableACME = true; - forceSSL = true; - }; -} diff --git a/hosts/chaski/services/woitb.nix b/hosts/chaski/services/woitb.nix deleted file mode 100644 index 0c50617..0000000 --- a/hosts/chaski/services/woitb.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ config, lib, pkgs, inputs, ... }: - -let - #sources = ../../nix/sources.nix; - sources = /home/stuebinm/Dokumente/utils/playground/ilztal/server; -in -{ - # systemd.services.woitb = { - # enable = true; - # description = "wo ist die ilztalbahn?"; - # wantedBy = [ "multi-user.target" ]; - # serviceConfig.type = "simple"; - # script = "${import sources}/bin/woitb"; - # }; - - services.nginx.enable = true; - services.nginx.virtualHosts."ilztal.live" = { - enableACME = true; - forceSSL = true; - locations."/".root = pkgs.copyPathToStore ./woitb; - - # locations."/upnext".proxyPass = "http://localhost:8000"; - # locations."/geoloc".proxyPass = "http://localhost:8000"; - }; - - services.nginx.virtualHosts."track.ilztal.live" = { - enableACME = true; - forceSSL = true; - locations."/".root = inputs.tracktrain; - }; - -} diff --git a/hosts/chaski/services/woitb/index.html b/hosts/chaski/services/woitb/index.html deleted file mode 100644 index 8d08826..0000000 --- a/hosts/chaski/services/woitb/index.html +++ /dev/null @@ -1,124 +0,0 @@ -<!DOCTYPE html> -<html lang="de"><head> -<meta http-equiv="content-type" content="text/html; charset=UTF-8"> - <meta charset="utf-8"> - <meta http-equiv="x-ua-compatible" content="ie=edge"> - <title>Wo ist die Ilztalbahn?</title> - <meta name="description" content=""> - <meta name="viewport" content="width=device-width, initial-scale=1"> - - <link rel="apple-touch-icon" href="https://ilztal.live/apple-touch-icon.png"> - <!-- Place favicon.ico in the root directory --> - <style> - - body { - background-color: olivedrab; - color: white; - font-family: "Sans Serif"; - max-width: 60em; - margin-left: auto; - margin-right: auto; - margin-top: 4em; - } - - body > p, #sonst p { - text-align: center; - margin-bottom: 4rem; - } - - section > p { - text-align: center; - } - - a { - text-decoration: none; - } - - h1, h2, h3 { - font-weight: lighter - } - - h1 { - font-size: 40pt; - text-align: center; - } - - @media only screen and (max-width: 1000px) { - h1 { - font-size: 30pt; - } - body { - margin: 1em; - } - } - - h2 { - font-size: 23pt; - } - - tr { - background-color: white; - color: black; - } - - td { - margin-left: 0; - padding: 0.5em; - } - - #wo { - color: black; - background-color: white; - padding: 1em; - max-width: 40em; - margin: auto; - font-weight: bold; - } - - #wo div h2 { - margin-left: 2rem; - } - - #wo div p { - margin-left: 3rem; - } - - #fahrplan { - margin: auto; - max-width: 40em; - } - - #fahrplan table tr td:last-child { - min-width: 70%; - } - - #fahrplan table { - width: 100%; - } - - </style> - </head> - <body> - <!--[if lt IE 8]> - <p class="browserupgrade"> - You are using an <strong>outdated</strong> browser. Please - <a href="http://browsehappy.com/">upgrade your browser</a> to improve - your experience. - </p> - <![endif]--> - - <h1>Wo ist die <a href="https://ilztalbahn.eu/">Ilztalbahn</a> gerade?</h1> - - <p>(es gibt eh nur eine)</p> - - <div id="root"><main id=""><h2 id="">Gerade nicht unterwegs</h2><div id="wo"><h2 id="">Nächste Fahrt 2022</h2><p id="">Fahrplan ist noch nicht bekannt.</p></div></main></div> - - <section> - <p>Andere Abfahrten ab Passau <a href="https://marudor.de/NPA">via marudor.de</a> | <a href="https://iris.noncd.db.de/wbt/js/index.html?bhf=NPA&Zeilen=20">via Iris der DB</a></p> - - <p style="margin-top:3em">(Diese Seite also known as "oh, die Ilztalbahn <a href="https://ilztalbahn.eu/wp-content/uploads/2020/07/gtfs.zip">hat ja Open Data</a> 😍" – <a href="https://ilztal.live/info.html">Weitere Infos</a>)</p> - </section> - - - -</body></html> diff --git a/hosts/chaski/services/woitb/info.html b/hosts/chaski/services/woitb/info.html deleted file mode 100644 index e68d728..0000000 --- a/hosts/chaski/services/woitb/info.html +++ /dev/null @@ -1,180 +0,0 @@ -<!doctype html> -<html lang="de"> - <head> - <meta charset="utf-8"> - <meta http-equiv="x-ua-compatible" content="ie=edge"> - <title>Wo ist die Ilztalbahn?</title> - <meta name="description" content=""> - <meta name="viewport" content="width=device-width, initial-scale=1"> - - <link rel="apple-touch-icon" href="/apple-touch-icon.png"> - <!-- Place favicon.ico in the root directory --> - <style> - - body { - background-color: olivedrab; - color: white; - font-family: "Sans Serif"; - max-width: 60em; - margin-left: auto; - margin-right: auto; - margin-top: 4em; - } - - body > p, #sonst p { - text-align: center; - margin-bottom: 4rem; - } - - section > p { - text-align: center; - } - - a { - text-decoration: none; - } - - h1, h2, h3 { - font-weight: lighter - } - - h1 { - font-size: 40pt; - text-align: center; - } - - @media only screen and (max-width: 1000px) { - h1 { - font-size: 30pt; - } - body { - margin: 1em; - } - } - - h2 { - font-size: 23pt; - } - - tr { - background-color: white; - color: black; - } - - td { - margin-left: 0; - padding: 0.5em; - } - - #wo { - color: black; - background-color: white; - padding: 1em; - max-width: 40em; - margin: auto; - font-weight: bold; - } - - #wo div h2 { - margin-left: 2rem; - } - - #wo div p { - margin-left: 3rem; - } - - #fahrplan { - margin: auto; - max-width: 40em; - } - - #fahrplan table tr td:last-child { - min-width: 70%; - } - - #fahrplan table { - width: 100%; - } - - </style> - </head> - <body> - <!--[if lt IE 8]> - <p class="browserupgrade"> - You are using an <strong>outdated</strong> browser. Please - <a href="http://browsehappy.com/">upgrade your browser</a> to improve - your experience. - </p> - <![endif]--> - - <h1><a href="index.html">Wo ist die Ilztalbahn</a> – Über</h1> - - <main> - <h2>Was ist das hier?</h2> - <p> - Diese Webseite zeigt den Fahrplan der <a href="https://ilztalbahn.eu">Ilztalbahn</a> an, - und macht sonst nicht viel. Bitte beachtet, dass diese Seite nicht von der Ilztalbahn GmbH, - dem Förderverein o.ä. betrieben wird, sondern nur ein privates Projekt einer einzelnen Person - ohne jede Verfügbarkeitsgarantie ist. - </p> - - <h2>Wie funktioniert das?</h2> - <p> - Die Ilztalbahn bietet ihren Fahrplan im offenen Standard <a href="https://gtfs.org/">GTFS</a> - an. Weil GTFS an einigen Stellen ein manchmal schwer zu benutzender Standard ist (und nicht - jeder Besuch dieser Webseite einen Aufruf des GTFS der Ilztalbahn triggern muss), hängt noch - ein kleiner Server dazwischen der die relevanten Teile in JSON übersetzt. - </p> - <p> - Der Fahrplan ist jeweils für einen ganzen Sommer gültig, und wird auch währenddessen - (soweit ich sehen kann) nicht verändert oder aktualisiert — es gibt also keinerlei Garantie, - dass die Daten hier korrekt sind! - </p> - - <h2>Gibt es das auch als App?</h2> - <p> - Aktuell nicht. Wenn ihr die Webseite im Browser offen lasst, sollte sie sich aber auch offline - noch automatisch aktualisieren. - </p> - - <h2>Werden Verspätungen/etc. angezeigt?</h2> - <p> - Leider nein. Es gibt für einige Fahrten der Ilztalbahn zwar Echtzeitdaten von der DB, diese - sind aber nicht im Datensatz der Ilztalbahn enthalten. Vielleicht kommen die hier noch - irgendwann mit rein, solange könnt ihr sie (falls es sie gibt) bei - <a href="https://marudor.de/Passau%20Hbf">marudor.de</a> anschauen. - </p> - - <h2>Gibts hier Quellcode zu?</h2> - <p> - Ja klar, hier: <a href="https://stuebinm.eu/git/woitb">git-Repository</a> - </p> - - <h2>Datenschutz?</h2> - <p> - Diese Seite läuft aktuell auf einer kleinen vps bei <a href="https://hetzner.de">Hetzner</a>, - geloggt werden aktuell nur Zugriffe, aber keine IP-Adressen. - </p> - - <h2>Wer macht das hier?</h2> - <p> - Auch nur so ein Mensch im Internet. Falls ihr wollt könnt ihr - <a href="https://pleroma.stuebinm.eu/stuebinm">auf meinem Pleroma</a> vorbeischauen. - </p> - - <h2>Ich hab ne Idee für ein Feature!</h2> - <p> - Schreibt mich über Pleroma an, vielleicht habe ich Zeit und Lust es einzubauen. - </p> - - <h2>Ich hab ein Feature dazuimplementiert!</h2> - <p> - Cool! Schick mir gerne nen Patch! (Mail ist im Repository) - </p> - </main> - <section> - <p style="margin-top:3em;">(Diese Seite also known as "oh, die Ilztalbahn <a href="https://ilztalbahn.eu/wp-content/uploads/2020/07/gtfs.zip">hat ja Open Data</a> 😍" – <a href="info.html">Weitere Infos</a>)</p> - </section> - - </body> -</html> diff --git a/hosts/chaski/services/workadventure.nix b/hosts/chaski/services/workadventure.nix deleted file mode 100644 index c2b704f..0000000 --- a/hosts/chaski/services/workadventure.nix +++ /dev/null @@ -1,93 +0,0 @@ -{pkgs, lib, config, ...}: - -let - sources = import ../../../nix/sources.nix {}; - # why the double outPath? Dunno, just niv things … - workadventure-nix = sources.workadventure.outPath.outPath; - packageset = ( - import "${workadventure-nix}/wapkgs.nix" { - inherit pkgs lib; - } - ).workadventure-xce; -in -{ - # not the most intuitive of container names, but "workadventure" is too long - containers.wa-space = { - - # we'll need the outer config to get the turn secret inside the container, - # and I'm feeling haskelly so config' it is! - config = let config' = config; in {config, pkgs, ...}: { - imports = [ workadventure-nix ]; - networking.firewall.allowedTCPPorts = [ 80 ]; - - services.workadventure."space.stuebinm.eu" = { - inherit packageset; - - nginx = { - default = true; - domain = "space.stuebinm.eu"; - maps.serve = true; - maps.path = "/workadventuremaps/"; - }; - - frontend.startRoomUrl = "/_/global/space.stuebinm.eu/maps/Floor0/floor0.json"; - - commonConfig = { - webrtc.stun.url = "stun:space.stuebinm.eu:3478"; - webrtc.turn = { - url = "turn:95.217.159.23"; - user = "turn"; - password = config'.services.coturn.static-auth-secret; - }; - jitsi.url = "meet.ffmuc.net"; - }; - }; - }; - - privateNetwork = true; - hostAddress6 = "fd00::42:14"; - localAddress6 = "fd00::42:16"; - - autoStart = true; - - }; - - services.coturn = { - enable = true; - realm = "turn.hacc.space"; - # this is a static "secret" that is also compiled into workadventure, - # so it seems ok to put it into the nix store - static-auth-secret = "1c496cea367f9608c77a754c1ef78079a512e013"; - use-auth-secret = true; - no-cli = true; - no-tcp-relay = true; - - cert = config.security.acme.certs."space.stuebinm.eu".directory + "full.pem"; - pkey = config.security.acme.certs."space.stuebinm.eu".directory + "key.pem"; - }; - - - services.nginx = { - virtualHosts."space.stuebinm.eu" = { - forceSSL = true; - enableACME = true; - locations."/" = { - proxyPass = "http://[${config.containers.wa-space.localAddress6}]"; - proxyWebsockets = true; - }; - }; - }; - - - networking.firewall = with config.services.coturn; - let - ports = [ listening-port tls-listening-port ]; - in { - allowedTCPPorts = [ 80 ] ++ ports; - allowedUDPPorts = ports; - allowedUDPPortRanges = [ - { from = min-port; to = max-port; } - ]; - }; - -} |