From f124e3373b56297cb7f469d59f8ab3193a80990f Mon Sep 17 00:00:00 2001 From: stuebinm Date: Tue, 11 Oct 2022 11:46:38 +0200 Subject: new nix build things --- Readme.md | 7 +++-- config.toml | 16 +++++------ default.nix | 89 ++++++++++++++++++++++++++++++++++--------------------------- flake.lock | 27 +++++++++++++++++++ flake.nix | 12 +++++++++ 5 files changed, 98 insertions(+), 53 deletions(-) create mode 100644 flake.lock create mode 100644 flake.nix 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 {}, 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"; }; + }; + }; +} -- cgit v1.2.3