{ esbuild, elmPackages, haskellPackages, stdenv, ... }: let ghcExeOptions = "-Wall -Wcompact -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-export-lists -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N"; ghcPackages = p: [ p.aeson p.blaze-html p.blaze-markup p.directory p.elm-street p.http-types p.scotty p.text p.wai-extra p.warp ]; elmConfig = elmPackages.fetchElmDeps { elmPackages = import ./frontend/elm-srcs.nix; elmVersion = "0.19.1"; registryDat = ./frontend/registry.dat; }; in stdenv.mkDerivation { pname = "elmskell"; version = "0.1.0"; src = ./src; nativeBuildInputs = [ esbuild (haskellPackages.ghcWithPackages ghcPackages) elmPackages.elm ]; buildInputs = [ ]; configurePhase = '' ${elmConfig} ''; buildPhase = '' ghc -v ${ghcExeOptions} ./Main.hs -o ./main elm make ./Main.elm --optimize --output=tmp.js esbuild ./tmp.js --minify --target=es5 --outfile=main.js ''; installPhase = '' mkdir -p $out/bin mkdir -p $out/src cp ./main $out/bin/elmskell cp ./main.js $out/src/main.js cp ./init.js $out/src/init.js ''; }