この記事は何?
WSL1 (Windows Subsystem for Linux) + VSCode + stack +Haskell IDE EngineでHaskellの開発をする際の環境構築の手順を書き残します。仮想環境でVSCodeを使うとかなり重いので、VSCodeの本体はWindows上で、HIEやstack などのHaskell環境はWSL上で動かすことを目指します。
ただの忘備録なので、WSLが何か、HIEとは何か等は説明しません。
手順
-
WindowsにVSCodeをインストール
-
コントロールパネルから「Windowsの機能の有効化または無効化」を表示し、「Windows Subsystem for Linux」のチェックボックスを「オン」にして再起動する
-
Microsoft StoreでUbuntu(WSL)を入れる
-
Ubuntuを起動し,初期設定をする
ユーザ名やパスワードを設定します -
以下をUbuntuで実行する (emacsはただの好み)
bashsudo apt update sudo apt upgrade sudo apt install -y emacs
-
Ubuntuにstackをインストールする
bashwget -qO- https://get.haskellstack.org/ | sh
-
Ubuntuの設定(~/.bashrc)ファイルに以下を追記
Usernameは適宜読み替えてください~/.bashrcexport PATH="/home/Username/.local/bin:$PATH"
-
stackの初期設定
emacs等で、Ubuntu側の ~/.stack/global-project/stack.yaml を以下のように編集します。resolverは適当なものをstackageから選んでください。ここでは、lts-12.26 (ghc-8.4.4)にします。~/.stack/global-project/stack.yamlpackages: [] resolver: lts-12.26
-
GHCのインストール
Ubuntuで以下を実行します。bashstack setup
-
Haskell IDE Engineのインストール
Ubuntuで以下を実行します。詳細はHIEのGitHubを参照してください。ビルドにはとても時間がかかります。
なお、HIEはビルドしたバージョンにしか対応しないので、他のバージョンのGHCを使った開発をしたい場合はその都度ビルドしなおす必要があるそうです。bashsudo apt install libicu-dev libtinfo-dev libgmp-dev git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules cd haskell-ide-engine stack ./install.hs hie-8.4.4 stack ./install.hs data
-
WindowsでVSCodeを起動し、日本語化のパッケージを入れる
「Japanese Language Pack for Visual Studio Code」です。 -
VSCodeとUbuntuを繋ぐパッケージ 「Remote - WSL」 をVScodeに入れる
-
VSCodeでF1キーを押し、「Remote-WSL: New Window」を実行する
新しいウインドウが立ち上がるので、前のwindowは消す。このウインドウはWSLと通信しているため、例えば「ファイル」を開くとUbuntu内のファイルを選択できるようになっている。 -
先ほどの新しいウインドウで、VSCodeに「Haskell Language Server」というパッケージを入れる
-
VSCodeのsettings.jsonに、以下を追記する
settings.json"languageServerHaskell.hieExecutablePath": "~/.local/bin/hie"
最後に
以上で設定は終わりです。
WindowsのVSCodeを通して、HIEの機能を使いながらWSL(Ubuntu)上でHaskellの開発ができるようになったと思います。仮想環境を使うよりもだいぶ軽くて快適な開発環境になります。
まもなくWSL2が出るらしいので、更に快適になりそうですね。
ウインドウを閉じるたびに13.の手順が必要なことに注意してください。