1{ lib, stdenvNoCC, fetchFromGitHub, jshon, electron_10 2, runtimeShell, hyper-haskell-server, extra-packages ? [] }: 3 4let 5 binPath = lib.makeBinPath ([ hyper-haskell-server ] ++ extra-packages); 6 electron = electron_10; 7in stdenvNoCC.mkDerivation rec { 8 pname = "hyper-haskell"; 9 version = "0.2.3.0"; 10 11 src = fetchFromGitHub { 12 owner = "HeinrichApfelmus"; 13 repo = "hyper-haskell"; 14 rev = "v${version}"; 15 sha256 = "1nmkry4wh6a2dy98fcs81mq2p7zhxp1k0f4m3szr6fm3j1zwrd43"; 16 }; 17 18 propagatedBuildInputs = extra-packages; 19 20 dontBuild = true; 21 22 installPhase = '' 23 mkdir -p $out/bin $out/share/hyper-haskell/worksheets $out/share/applications $out/share/icons/hicolor/scalable/apps $out/share/mime/packages 24 25 # Electron app 26 cp -R app $out 27 28 # Desktop Launcher 29 cp resources/hyper-haskell.desktop $out/share/applications/hyper-haskell.desktop 30 cp resources/icons/icon.svg $out/share/icons/hicolor/scalable/apps/hyper-haskell.svg 31 cp resources/shared-mime-info.xml $out/share/mime/packages/hyper-haskell.xml 32 33 # install example worksheets with backend set to nix 34 for worksheet in "worksheets/"*.hhs; do 35 ${jshon}/bin/jshon -e settings -s nix -i packageTool -p < $worksheet > $out/share/hyper-haskell/worksheets/`basename $worksheet` 36 done 37 38 # install electron wrapper script 39 cat > $out/bin/hyper-haskell <<EOF 40 #!${runtimeShell} 41 export PATH="${binPath}:\$PATH" 42 exec ${electron}/bin/electron $out/app "\$@" 43 EOF 44 chmod 755 $out/bin/hyper-haskell 45 ''; 46 47 meta = with lib; { 48 description = "The strongly hyped graphical interpreter for the Haskell programming language"; 49 homepage = "https://github.com/HeinrichApfelmus/hyper-haskell"; 50 license = licenses.bsd3; 51 maintainers = [ maintainers.rvl ]; 52 }; 53}