about summary refs log tree commit diff
path: root/website/sandbox/chord-drill-sergeant/default.nix
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-04-17T14·08+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-04-17T14·08+0100
commit277ad983d4d9caf51679d3c1c615ecc7134539be (patch)
treee90dd4771dff6555bc3c0c5326ac939f5fed79e1 /website/sandbox/chord-drill-sergeant/default.nix
parentbdb16c11bac3c1de7aa0b03a49da75d2bdc2d569 (diff)
Nixify build for Chord Drill Sergeant
Thankfully @tazjin builds Gemma (an Elm project) with Nix, so I could reference
Gemma's default.nix to help me with mine. Elm problematically attempts to
HTTP-fetch a list of packages to verify my project's dependencies. Because Nix
builds derivations in a sandbox without network access, I need to use some
escape hatches (i.e. NIX_REDIRECTS, LD_PRELOAD,
SYSTEM_CERTIFICATE_PATH). Welp... it's packaged now...

I'm also pointing learnpianochords.app to this project's index.html. It will be
live soon! :)

TODO(wpcarro): Rename "Chord Drill Sergeant" -> "Learn Piano Chords" (KISS)
Diffstat (limited to 'website/sandbox/chord-drill-sergeant/default.nix')
-rw-r--r--website/sandbox/chord-drill-sergeant/default.nix24
1 files changed, 24 insertions, 0 deletions
diff --git a/website/sandbox/chord-drill-sergeant/default.nix b/website/sandbox/chord-drill-sergeant/default.nix
new file mode 100644
index 000000000000..7ea92c29f5c1
--- /dev/null
+++ b/website/sandbox/chord-drill-sergeant/default.nix
@@ -0,0 +1,24 @@
+{ pkgs, ... }:
+
+pkgs.stdenv.mkDerivation {
+  name = "learn-piano-chords";
+  src = ./.;
+  buildInputs = with pkgs; [
+    elmPackages.elm
+    nodejs
+  ];
+  outputHashMode = "recursive";
+  outputHashAlgo = "sha256";
+  outputHash = "0diya7q8ird56jsbf2p49fyvldsay6m9z251zr2rq1i4qs7idy0j";
+  phases = [ "unpackPhase" "buildPhase" ];
+  buildPhase = ''
+    export NIX_REDIRECTS=/etc/protocols=${pkgs.iana-etc}/etc/protocols
+    export LD_PRELOAD=${pkgs.libredirect}/lib/libredirect.so
+    export SYSTEM_CERTIFICATE_PATH=${pkgs.cacert}/etc/ssl/certs
+
+    mkdir -p $out
+    cp index.html $out
+    elm make src/Main.elm --optimize --output=$out/elm.js
+    npx tailwindcss build index.css -o $out/output.css
+  '';
+}