From 277ad983d4d9caf51679d3c1c615ecc7134539be Mon Sep 17 00:00:00 2001 From: William Carroll Date: Fri, 17 Apr 2020 15:08:38 +0100 Subject: [PATCH] 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) --- nixos/socrates/configuration.nix | 5 ++++ .../sandbox/chord-drill-sergeant/default.nix | 24 +++++++++++++++++++ .../sandbox/chord-drill-sergeant/src/Main.elm | 2 +- 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 website/sandbox/chord-drill-sergeant/default.nix diff --git a/nixos/socrates/configuration.nix b/nixos/socrates/configuration.nix index fb0964aae..8d3149df8 100644 --- a/nixos/socrates/configuration.nix +++ b/nixos/socrates/configuration.nix @@ -177,6 +177,11 @@ in { enableACME = true; root = briefcase.website.sandbox; }; + "learnpianochords.app" = { + addSSL = true; + enableACME = true; + root = briefcase.website.sandbox.chord-drill-sergeant; + }; }; }; diff --git a/website/sandbox/chord-drill-sergeant/default.nix b/website/sandbox/chord-drill-sergeant/default.nix new file mode 100644 index 000000000..7ea92c29f --- /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 + ''; +} diff --git a/website/sandbox/chord-drill-sergeant/src/Main.elm b/website/sandbox/chord-drill-sergeant/src/Main.elm index c4c7a3665..054d318a0 100644 --- a/website/sandbox/chord-drill-sergeant/src/Main.elm +++ b/website/sandbox/chord-drill-sergeant/src/Main.elm @@ -123,7 +123,7 @@ init = , whitelistedKeys = keys , selectedChord = Nothing , isPaused = True - , tempo = 30 + , tempo = 20 , firstNote = firstNote , lastNote = lastNote , view = Preferences