7e8daca015
TODO: * debug why http://localhost:4000/graphiql/index.html doesn't load * adapt tests from swlkup * adapt flake from swlkup and test build pipeline
64 lines
2.0 KiB
Nix
64 lines
2.0 KiB
Nix
{ pkgs ? import <nixpkgs> {},
|
|
buildMavenRepositoryFromLockFile ? (import (fetchTarball "https://github.com/johannesloetzsch/mvn2nix/archive/master.tar.gz") {}).buildMavenRepositoryFromLockFile,
|
|
patchPublic ? null
|
|
}:
|
|
let
|
|
inherit (pkgs) lib stdenv jdk11_headless maven makeWrapper leiningen;
|
|
inherit (stdenv) mkDerivation;
|
|
|
|
mavenRepository = buildMavenRepositoryFromLockFile { file = ./deps/mvn2nix-lock.json; };
|
|
|
|
src = mkDerivation {
|
|
name = "beherbergung-backend-src";
|
|
src = lib.cleanSource ./..;
|
|
installPhase = ''
|
|
cp -r . $out
|
|
'';
|
|
};
|
|
|
|
version = "0.0.1";
|
|
pname = "beherbergung-backend";
|
|
name = "${pname}-${version}";
|
|
|
|
beherbergung-backend-jar = mkDerivation rec {
|
|
inherit src version pname name;
|
|
|
|
buildInputs = [ jdk11_headless maven leiningen ];
|
|
patchPhase = if isNull patchPublic
|
|
then ""
|
|
else "cp -r ${patchPublic}/* resources/public/";
|
|
buildPhase = ''
|
|
echo "Building with maven repository ${mavenRepository}"
|
|
export HOME=`pwd`
|
|
mkdir .lein
|
|
echo '{:user {:offline? true :local-repo "${mavenRepository}"}}' > ~/.lein/profiles.clj
|
|
lein uberjar
|
|
'';
|
|
|
|
doCheck = true;
|
|
checkPhase = ''
|
|
lein test
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir $out
|
|
cp target/${name}-standalone.jar $out/
|
|
'';
|
|
};
|
|
in
|
|
lib.mergeAttrs
|
|
(pkgs.writeScriptBin "${pname}" ''
|
|
#!${pkgs.runtimeShell}
|
|
|
|
${pkgs.which}/bin/which mail || export PATH=./backend/resources/mock:$PATH
|
|
|
|
## TODO: JAVA_TOOL_OPTIONS should be generated from jvm-opts in project.clj and also update beherbergung.service
|
|
export MALLOC_ARENA_MAX=2
|
|
export JAVA_TOOL_OPTIONS='-Dclojure.tools.logging.factory=clojure.tools.logging.impl/slf4j-factory -Dorg.slf4j.simpleLogger.defaultLogLevel=warn -Dlog4j2.formatMsgNoLookups=true'
|
|
${jdk11_headless}/bin/java -jar ${beherbergung-backend-jar}/${name}-standalone.jar $@ &
|
|
|
|
## We write a pid-file, so the integration test knows how to kill the server
|
|
echo $! > .pid
|
|
'')
|
|
{ inherit mavenRepository; jar = beherbergung-backend-jar; }
|