{ nixpkgs ? import {} }: let pname = "hack"; version = "2"; buildInputs = with pkgs; [ hsEnv ]; extraCmds = with pkgs; '' export MANPATH=$(ls -d $(echo "$PATH" | tr : \\n | sed -n 's:\(^/nix/store/[^/]\+\).*:\1/share/man:p') 2>/dev/null | tr \\n :) $(grep export ${hsEnv.outPath}/bin/ghc) ${mkExports staticPkgs} ''; hsEnv = hsPkgs.ghcWithPackages (self: with self; [ cabal-install data-default lens mtl zippers #threadscope ] ); hsPkgs = pkgs.haskellngPackages; pkgs = nixpkgs // staticPkgs; staticPkgs = with nixpkgs; { }; #{{{ mkExports : set -> string # Create shell script that exports a set's attributes. mkExports = set: with builtins; with pkgs.lib.strings; let # XXX attribute names are not escaped, they have to be sane # XXX the value should not contain mkExport = k: "export ${k}=${escapeSh (getAttr k set)}"; escapeSh = stringAsChars (c: "\\${c}"); in concatStringsSep "\n" (map mkExport (attrNames set)); #}}} in pkgs.myEnvFun { name = "${pname}-${version}"; inherit buildInputs extraCmds; } # vim: set fdm=marker :