haskell-wasm-repl/shell.nix

42 lines
1.4 KiB
Nix

{ system ? builtins.currentSystem }:
let
pkgs = import ./nix/nixpkgs.nix { inherit system; };
myHaskellPackages = pkgs.haskellPackages.extend
(final: prev: { haskell-wasm-repl = import ./. { inherit system; }; });
scripts = [
(pkgs.writeShellScriptBin "clean" "cabal clean")
(pkgs.writeShellScriptBin "compile"
''cabal build -j -O2 --ghc-options="-j" "$@"'')
(pkgs.writeShellScriptBin "run"
''cabal run -j -O2 --ghc-options="-j" "$@"'')
(pkgs.writeShellScriptBin "create-static-env-gcroot" ''
nix-store --realise --add-root .gcroots/static-env `nix-instantiate static-env.nix 2> /dev/null`
'')
(pkgs.writeShellScriptBin "build" "nom-build")
(pkgs.writeShellScriptBin "build-static" ''
set -xeuo pipefail;
nom-build --arg static true
create-static-env-gcroot
'')
(pkgs.writeShellScriptBin "build-docker" ''
set -xeuo pipefail;
nom-build docker.nix
create-static-env-gcroot
'')
(pkgs.writeShellScriptBin "build-wasm" ''
set -xeuo pipefail;
nom-build wasm.nix
cp -f result/bin/out.wasm web/
create-static-env-gcroot
'')
(pkgs.writeShellScriptBin "serve" ''
${pkgs.python3}/bin/python server.py
'')
];
in myHaskellPackages.shellFor {
name = "haskell-shell";
packages = p: [ p.haskell-wasm-repl ];
nativeBuildInputs = with pkgs;
[ cabal-install niv nix-output-monitor ] ++ scripts;
}