Skip to content

Commit

Permalink
installer support --nix parameter to be able running stack in nix-she…
Browse files Browse the repository at this point in the history
…ll (#285)

* installer support --nix parameter to be able running stack in nix-shell

* add to readme: Installing in Nix build environment
  • Loading branch information
p-alik authored and jship committed Feb 15, 2018
1 parent e71e0af commit 974e41f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
7 changes: 7 additions & 0 deletions README.md
Expand Up @@ -399,6 +399,13 @@ to install from your clone:
install.sh --repo CLONE-PATH
```

### Installing in Nix build environment

Use `--nix` parameter, in case you want to execute [stack installation in nix-shell](https://docs.haskellstack.org/en/stable/nix_integration/#use-stack-as-normal)
```sh
bash <(curl -sL https://git.io/haskell-vim-now) --nix
```

## Troubleshooting

See this [wiki](https://github.com/begriffs/haskell-vim-now/wiki/Installation-Troubleshooting)
Expand Down
19 changes: 16 additions & 3 deletions install.sh
Expand Up @@ -6,6 +6,7 @@ DEFAULT_BRANCH="master"
DEFAULT_GENERATE_HOOGLE_DB=true
DEFAULT_HVN_FULL_INSTALL=true
DEFAULT_DRY_RUN=false
DEFAULT_NIX=false

if which tput >/dev/null 2>&1; then
ncolors=$(tput colors)
Expand Down Expand Up @@ -111,6 +112,7 @@ do_setup() {
local FULL_INSTALL=$2
local GENERATE_HOOGLE_DB=$3
local DRY_RUN=$4
local NIX=$5
local setup_path=${HVN_DEST}/scripts/setup.sh
local setup_haskell_path=${HVN_DEST}/scripts/setup_haskell.hs

Expand All @@ -127,6 +129,7 @@ do_setup() {
then
local ARG_NO_HOOGLE_DB="--no-hoogle"
local ARG_NO_HELPER_BINS="--no-helper-bins"
local ARG_NIX=

if [ "$GENERATE_HOOGLE_DB" == true ]
then
Expand All @@ -149,7 +152,12 @@ do_setup() {
exit_err "Detected stack version \"${STACK_VER}\", however version 1.4.0 or later is required."
fi

stack $setup_haskell_path $ARG_NO_HOOGLE_DB $ARG_NO_HELPER_BINS ; RETCODE=$?
if [ "$NIX" == true ]
then
ARG_NIX="--nix"
fi

stack $ARG_NIX $setup_haskell_path $ARG_NO_HOOGLE_DB $ARG_NO_HELPER_BINS ; RETCODE=$?
[ ${RETCODE} -ne 0 ] && exit_err "setup_haskell.hs failed with error ${RETCODE}."
fi

Expand All @@ -162,11 +170,12 @@ main() {
local FULL_INSTALL=$3
local GENERATE_HOOGLE_DB=$4
local DRY_RUN=$5
local NIX=$6
local HVN_DEST="$(config_home)/haskell-vim-now"
local HVN_DEPENDENCIES_DEST="$(config_home)/haskell-vim-now"

install $REPO_PATH $REPO_BRANCH $HVN_DEST
do_setup $HVN_DEST $FULL_INSTALL $GENERATE_HOOGLE_DB $DRY_RUN
do_setup $HVN_DEST $FULL_INSTALL $GENERATE_HOOGLE_DB $DRY_RUN $NIX
}

function usage() {
Expand All @@ -181,6 +190,8 @@ function usage() {
echo " Disable Hoogle database generation. The default is $DEFAULT_GENERATE_HOOGLE_DB."
echo " --dry-run"
echo " Perform a dry run for the stack installs. Primarily intended for testing."
echo " --nix"
echo " Perform stack build in a nix-shell. For more information see https://docs.haskellstack.org/en/stable/nix_integration"
exit 1
}

Expand All @@ -190,6 +201,7 @@ HVN_BRANCH=${HVN_BRANCH:=$DEFAULT_BRANCH}
HVN_GENERATE_HOOGLE_DB=${HVN_GENERATE_HOOGLE_DB:=$DEFAULT_GENERATE_HOOGLE_DB}
HVN_FULL_INSTALL=${HVN_FULL_INSTALL:=$DEFAULT_HVN_FULL_INSTALL}
HVN_DRY_RUN=${HVN_DRY_RUN:=$DEFAULT_DRY_RUN}
HVN_NIX=${HVN_NIX:=$DEFAULT_NIX}

while test -n "$1"
do
Expand All @@ -199,9 +211,10 @@ do
--branch) shift; HVN_BRANCH=$1; shift; continue;;
--no-hoogle) shift; HVN_GENERATE_HOOGLE_DB=false; continue;;
--dry-run) shift; HVN_DRY_RUN=true; continue;;
--nix) shift; HVN_NIX=true; continue;;
*) usage;;
esac
done

test -n "$HVN_REPO" || usage
main $HVN_REPO $HVN_BRANCH $HVN_FULL_INSTALL $HVN_GENERATE_HOOGLE_DB $HVN_DRY_RUN
main $HVN_REPO $HVN_BRANCH $HVN_FULL_INSTALL $HVN_GENERATE_HOOGLE_DB $HVN_DRY_RUN $HVN_NIX

0 comments on commit 974e41f

Please sign in to comment.