summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Readme.md7
-rw-r--r--config.toml16
-rw-r--r--default.nix89
-rw-r--r--flake.lock27
-rw-r--r--flake.nix12
5 files changed, 98 insertions, 53 deletions
diff --git a/Readme.md b/Readme.md
index 138c2f3..e7295c5 100644
--- a/Readme.md
+++ b/Readme.md
@@ -13,11 +13,10 @@ special inter-assembly `world://` links).
`walint-mapserver` is a minimal implementation of a server that periodically
fetches, lints, and adjusts maps from a set of git repositories, writing them
to a path that can then be served by a webserver. It can be used as a (very
-simple) replacement for rc3's hub and mapservice at smaller events.
+simple) replacement for rc3's hub and mapservice at smaller events — to get
+started, manually list all map repositories in `config.toml`, then visit
+`localhost:8080/admin/overview`.
-`cwality-maps` is a small server for type-safe map templating, to be used if
-maps need to be generated on-the-fly — for example, to provide custom intermediate
-maps displaying CWs before another map can be reached.
## Installing
diff --git a/config.toml b/config.toml
index 2e1c224..a399acb 100644
--- a/config.toml
+++ b/config.toml
@@ -17,9 +17,9 @@ token = "hello, world!"
slug = "divoc"
# baseurl of maps as seen by the frontend
-url = "https://world.di.c3voc.de/maps/"
+url = "https://example.org/maps/"
# webdir into which maps should be written
-webdir = "/tmp/var/www/divoc"
+webdir = "/tmp/var/www/example"
webdir_human = "/tmp/var/www-human/divoc"
@@ -28,20 +28,18 @@ webdir_human = "/tmp/var/www-human/divoc"
generation = 1
backlink_prefix = "world://lobby#start_"
-contact_mail = "world@muc.hacc.space"
-howto_link = "https://di.c3voc.de/howto:world"
+contact_mail = "world@example.org"
+howto_link = "https://example.org"
# linter's config for this org
lintconfig = "./config.json"
# map's entrypoint (only maps reachable from here are included)
entrypoint = "main.json"
-[[org.repo]] # I hate TOML
-url = "https://gitlab.infra4future.de/hacc/events/hacc-map"
-ref = "master"
-name = "hacc"
-
[[org.repo]]
url = "https://github.com/namiko/assembly_2021"
ref = "master"
name = "haecksen"
+
+
+# add more repos here …
diff --git a/default.nix b/default.nix
index cceeb50..566e710 100644
--- a/default.nix
+++ b/default.nix
@@ -1,44 +1,53 @@
+{ nixpkgs ? import <nixpkgs> {}, compiler ? "default", doBenchmark ? false }:
+
let
- sources = import ./nix/sources.nix {};
- haskellNix = import sources.haskellNix {};
- # Import nixpkgs and pass the haskell.nix provided nixpkgsArgs
- pkgs = import
- # use haskell.nix's nixpkgs, which may (?) have more substitutes available
- haskellNix.sources.nixpkgs-unstable
- # args for nixpkgs; includes the haskell.nix overlay
- (haskellNix.nixpkgsArgs // {
- system = "x86_64-linux";
- });
+ inherit (nixpkgs) pkgs;
+
+ f = { mkDerivation, aeson, aeson-pretty, async, base, base-compat
+ , base64-bytestring, bytestring, containers, cryptohash-sha1
+ , deepseq, directory, dotgen, either, extra, filepath, fmt
+ , getopt-generics, hpack, http-client, http-types, lib, lucid
+ , microlens-platform, monad-logger, network-uri, process
+ , regex-tdfa, servant, servant-client, servant-lucid
+ , servant-server, servant-websockets, stm, template-haskell, text
+ , text-metrics, time, tomland, transformers, universum, uri-encode
+ , uuid, vector, wai, wai-extra, warp, websockets
+ }:
+ mkDerivation {
+ pname = "walint";
+ version = "0.1";
+ src = ./.;
+ isLibrary = true;
+ isExecutable = true;
+ libraryHaskellDepends = [
+ aeson base bytestring containers deepseq dotgen either extra
+ filepath getopt-generics network-uri regex-tdfa text text-metrics
+ transformers universum uri-encode vector
+ ];
+ libraryToolDepends = [ hpack ];
+ executableHaskellDepends = [
+ aeson aeson-pretty async base base-compat base64-bytestring
+ bytestring containers cryptohash-sha1 directory extra filepath fmt
+ getopt-generics http-client http-types lucid microlens-platform
+ monad-logger process servant servant-client servant-lucid
+ servant-server servant-websockets stm template-haskell text time
+ tomland universum uuid wai wai-extra warp websockets
+ ];
+ doHaddock = false;
+ prePatch = "hpack";
+ homepage = "https://stuebinm.eu/git/walint";
+ 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;
+
+ drv = variant (haskellPackages.callPackage f {});
- drvs = pkgs.haskell-nix.project {
- # 'cleanGit' cleans a source directory based on the files known by git
- src = pkgs.haskell-nix.haskellLib.cleanGit {
- src = ./.;
- name = "walint";
- };
- modules = [{
- packages.walint.components.exes = {
- # don't include gcc or ghc in the dependency closure …
- walint-server.dontStrip = false;
- walint.dontStrip = false;
- };
- }];
- stack-sha256 = "0bp3dwj2kl6n0swz5yf9kjy5ahp6i5qrnb39hkrsqgf0682i9nk1";
- };
in
-{
- walint = drvs.walint.components.exes.walint;
- walint-server = pkgs.stdenvNoCC.mkDerivation {
- name = "walint-server-with-assets";
- src = drvs.walint.components.exes.walint-mapserver;
- phases = [ "buildPhase" ];
- buildPhase = ''
- mkdir -p $out
- cp -r $src/* $out
- cp -r ${pkgs.copyPathToStore ./static} $out/static
- cp ${pkgs.copyPathToStore ./config.json} $out/config.json
- cp ${pkgs.copyPathToStore ./config.toml} $out/config.toml
- '';
- };
-}
+ drv
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..59b96a7
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,27 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1665466769,
+ "narHash": "sha256-L+qcHpb4Ac3PipMXJY/Ktbu1+KXy23WCZ8pXWmsf7zY=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "0b20bf89e0035b6d62ad58f9db8fdbc99c2b01e8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "release-22.05",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..fc2f168
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,12 @@
+{
+ description = "walint: workadventure map linting";
+
+ inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-22.05";
+
+ outputs = { self, nixpkgs }:
+ {
+ defaultPackage.x86_64-linux = import ./default.nix {
+ nixpkgs = import nixpkgs { system = "x86_64-linux"; };
+ };
+ };
+}