From 39d084e493c80952d59cbcc92ea67f344e543298 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Sat, 18 Apr 2020 00:10:39 +0100 Subject: [PATCH] Use elm2nix to (attempt to) deploy learnpianochords.app After a few failed attempts at deploying my Elm application on NixOS, I'm trying elm2nix, which some NixOS and Elm users created to attempt to solve some of the issues that I ran into earlier today. Elm tries to write to $HOME, which NixOS doesn't like. I typically prefer to avoid things like cabal2nix, elm2nix, node2nix because I don't like the workflow that they suggest, but I'm so eager to deploy this application, that I'm trying it. --- .../sandbox/chord-drill-sergeant/default.nix | 70 +++++++++++++----- .../sandbox/chord-drill-sergeant/elm-srcs.nix | 67 +++++++++++++++++ .../sandbox/chord-drill-sergeant/index.html | 2 +- .../sandbox/chord-drill-sergeant/registry.dat | Bin 0 -> 93710 bytes 4 files changed, 121 insertions(+), 18 deletions(-) create mode 100644 website/sandbox/chord-drill-sergeant/elm-srcs.nix create mode 100644 website/sandbox/chord-drill-sergeant/registry.dat diff --git a/website/sandbox/chord-drill-sergeant/default.nix b/website/sandbox/chord-drill-sergeant/default.nix index 7ea92c29f..98f548e35 100644 --- a/website/sandbox/chord-drill-sergeant/default.nix +++ b/website/sandbox/chord-drill-sergeant/default.nix @@ -1,24 +1,60 @@ -{ pkgs, ... }: +{ pkgs ? , ... }: -pkgs.stdenv.mkDerivation { +with pkgs; + +let + mkDerivation = + { srcs ? ./elm-srcs.nix + , src + , name + , srcdir ? "./src" + , targets ? [] + , registryDat ? ./registry.dat + , outputJavaScript ? false + }: + stdenv.mkDerivation { + inherit name src; + + buildInputs = [ elmPackages.elm ] + ++ lib.optional outputJavaScript nodePackages_10_x.uglify-js; + + buildPhase = pkgs.elmPackages.fetchElmDeps { + elmPackages = import srcs; + elmVersion = "0.19.1"; + inherit registryDat; + }; + + installPhase = let + elmfile = module: "${srcdir}/${builtins.replaceStrings ["."] ["/"] module}.elm"; + extension = if outputJavaScript then "js" else "html"; + in '' + mkdir -p $out/share/doc + ${lib.concatStrings (map (module: '' + echo "compiling ${elmfile module}" + elm make ${elmfile module} --output $out/${module}.${extension} --docs $out/share/doc/${module}.json + ${lib.optionalString outputJavaScript '' + echo "minifying ${elmfile module}" + uglifyjs $out/${module}.${extension} --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters,keep_fargs=false,unsafe_comps,unsafe' \ + | uglifyjs --mangle --output=$out/${module}.min.${extension} + ''} + '') targets)} + ''; + }; + mainDotElm = mkDerivation { + name = "elm-app-0.1.0"; + srcs = ./elm-srcs.nix; + src = ./.; + targets = ["Main"]; + srcdir = "./src"; + outputJavaScript = true; + }; +in stdenv.mkDerivation { name = "learn-piano-chords"; + buildInputs = []; 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 + cp index.html output.css ${mainDotElm}/Main.min.js $out ''; + dontInstall = true; } diff --git a/website/sandbox/chord-drill-sergeant/elm-srcs.nix b/website/sandbox/chord-drill-sergeant/elm-srcs.nix new file mode 100644 index 000000000..2823b430f --- /dev/null +++ b/website/sandbox/chord-drill-sergeant/elm-srcs.nix @@ -0,0 +1,67 @@ +{ + + "elm-community/maybe-extra" = { + sha256 = "0qslmgswa625d218djd3p62pnqcrz38f5p558mbjl6kc1ss0kzv3"; + version = "5.2.0"; + }; + + "elm/html" = { + sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k"; + version = "1.0.0"; + }; + + "elm-community/random-extra" = { + sha256 = "1dg2nz77w2cvp16xazbdsxkkw0xc9ycqpkd032faqdyky6gmz9g6"; + version = "3.1.0"; + }; + + "elm/svg" = { + sha256 = "1cwcj73p61q45wqwgqvrvz3aypjyy3fw732xyxdyj6s256hwkn0k"; + version = "1.0.1"; + }; + + "elm/browser" = { + sha256 = "0nagb9ajacxbbg985r4k9h0jadqpp0gp84nm94kcgbr5sf8i9x13"; + version = "1.0.2"; + }; + + "elm/core" = { + sha256 = "19w0iisdd66ywjayyga4kv2p1v9rxzqjaxhckp8ni6n8i0fb2dvf"; + version = "1.0.5"; + }; + + "elm-community/list-extra" = { + sha256 = "1ayv3148drynqnxdfwpjxal8vwzgsjqanjg7yxp6lhdcbkxgd3vd"; + version = "8.2.3"; + }; + + "elm/random" = { + sha256 = "138n2455wdjwa657w6sjq18wx2r0k60ibpc4frhbqr50sncxrfdl"; + version = "1.0.0"; + }; + + "elm/time" = { + sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1"; + version = "1.0.0"; + }; + + "elm/json" = { + sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh"; + version = "1.1.3"; + }; + + "owanturist/elm-union-find" = { + sha256 = "13gm7msnp0gr1lqia5m7m4lhy3m6kvjg37d304whb3psn88wqhj5"; + version = "1.0.0"; + }; + + "elm/url" = { + sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4"; + version = "1.0.0"; + }; + + "elm/virtual-dom" = { + sha256 = "0q1v5gi4g336bzz1lgwpn5b1639lrn63d8y6k6pimcyismp2i1yg"; + version = "1.0.2"; + }; +} diff --git a/website/sandbox/chord-drill-sergeant/index.html b/website/sandbox/chord-drill-sergeant/index.html index d2218ea19..861ed1479 100644 --- a/website/sandbox/chord-drill-sergeant/index.html +++ b/website/sandbox/chord-drill-sergeant/index.html @@ -4,7 +4,7 @@ Chord Drill Sergeant - +
diff --git a/website/sandbox/chord-drill-sergeant/registry.dat b/website/sandbox/chord-drill-sergeant/registry.dat new file mode 100644 index 0000000000000000000000000000000000000000..a73307ccda04ffb45502d7763d957fd88a989749 GIT binary patch literal 93710 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