diff options
author | Vincent Ambo <tazjin@google.com> | 2019-07-02T11·48+0100 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2019-07-02T11·48+0100 |
commit | a131b3051428d3abe220d172f93d09880b96222f (patch) | |
tree | 2ba11e900c675d3d2ad39e713554b3a6e2f10d1d /infra/nixos/pkgs | |
parent | 1109e449efbc9a0dab8c4e88e07337a318e21f09 (diff) |
refactor(infra): Move infrastructure into monorepo structure
Diffstat (limited to 'infra/nixos/pkgs')
-rw-r--r-- | infra/nixos/pkgs/gemma.nix | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/infra/nixos/pkgs/gemma.nix b/infra/nixos/pkgs/gemma.nix new file mode 100644 index 000000000000..4e96734794ff --- /dev/null +++ b/infra/nixos/pkgs/gemma.nix @@ -0,0 +1,54 @@ +{ pkgs ? import <nixpkgs> {} }: + +with pkgs; stdenv.mkDerivation rec { + name = "gemma"; + + src = fetchFromGitHub { + owner = "tazjin"; + repo = "gemma"; + rev = "61be253d6baa99f0a2208425b8a03b444bb1b184"; + sha256 = "0vbmz2aphcida728rc0z3k7gychs4w1778vsjbrs0ljk9qgbmyr5"; + }; + + buildInputs = with lispPackages; [ + sbcl + quicklisp + hunchentoot + cl-json + local-time + elmPackages.elm + pkgconfig + ]; + + # 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 + cd $src + quicklisp init + env GEMMA_BIN_TARGET=$out/bin/gemma sbcl --load build.lisp + ''; + + installPhase = "true"; + + # Stripping an SBCL executable removes the application, which is unfortunate. + dontStrip = true; + + meta = with stdenv.lib; { + description = "Tool for tracking recurring tasks"; + homepage = "https://github.com/tazjin/gemma"; + license = licenses.gpl3; + }; +} |