diff options
author | Vincent Ambo <tazjin@google.com> | 2019-09-02T01·14+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2019-09-02T01·14+0100 |
commit | 4411eea11f799e01d2343ed017e360faf3daef3a (patch) | |
tree | 16592d5348670619e61bf6f3c15d6366a46e2697 /services/gemma/default.nix | |
parent | b43e5529f770818710fffd2458e320f49272d26f (diff) |
fix(gemma): Fix build process in Nix r/70
Diffstat (limited to 'services/gemma/default.nix')
-rw-r--r-- | services/gemma/default.nix | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/services/gemma/default.nix b/services/gemma/default.nix index 537875b62534..c4ed62dbdea0 100644 --- a/services/gemma/default.nix +++ b/services/gemma/default.nix @@ -1,38 +1,45 @@ -{ stdenv, sbcl, lispPackages, elmPackages, pkgconfig }: +{ stdenv, sbcl, lispPackages, elmPackages, makeWrapper, openssl }: -stdenv.mkDerivation rec { +let frontend = stdenv.mkDerivation { + name = "gemma-frontend"; + src = ./frontend; + buildInputs = [ elmPackages.elm ]; + + phases = [ "unpackPhase" "buildPhase" ]; + buildPhase = '' + mkdir .home && export HOME="$PWD/.home" + mkdir -p $out + ls -lh + elm-make --yes Main.elm --output $out/index.html + ''; +}; +in stdenv.mkDerivation rec { name = "gemma"; src = ./.; - buildInputs = with lispPackages; [ + nativeBuildInputs = with lispPackages; [ sbcl - quicklisp hunchentoot cl-json + cffi + cl-prevalence local-time - elmPackages.elm - pkgconfig + makeWrapper ]; - # The build phase has three distinct things it needs to do: - # - # 1. "Compile" the Elm source into something useful to browsers. - # - # 2. Configure the Lisp part of the application to serve the compiled Elm - # - # 3. Build (and don't strip!) an executable out of the Lisp backend. buildPhase = '' mkdir -p $out/share/gemma $out/bin - mkdir .home && export HOME="$PWD/.home" - # Build Elm - cd frontend - elm-make --yes Main.elm --output $out/share/gemma/index.html - - # Build Lisp + # Build Lisp using the Nix-provided wrapper which sets the load + # paths correctly. cd $src - quicklisp init - env GEMMA_BIN_TARGET=$out/bin/gemma sbcl --load build.lisp + env GEMMA_BIN_TARGET=$out/bin/gemma common-lisp.sh --load build.lisp + + # Wrap gemma to find OpenSSL at runtime: + wrapProgram $out/bin/gemma --prefix LD_LIBRARY_PATH : "${openssl.out}/lib" + + # and finally copy the frontend to the appropriate spot + cp ${frontend}/index.html $out/share/gemma/index.html ''; installPhase = "true"; @@ -44,9 +51,5 @@ stdenv.mkDerivation rec { description = "Tool for tracking recurring tasks"; homepage = "https://github.com/tazjin/gemma"; license = licenses.gpl3; - - # For the time being, Gemma can not be built because the Lisp build process - # broke in some way I haven't had time to debug. - broken = true; }; } |