Help us understand the problem. What is going on with this article?

Haskell(stack)のEmacs環境 on NixOS

More than 1 year has passed since last update.

Haskell 環境

Emacsでhaskell-modeを準備する際にinteroが非常に便利だったのだけど
NixOSでは躓くこともしばしばあったためメモ

  • NixOS
    • Stack (--nix)
      • hlint
      • ghc-mod
      • hoogle
    • Emacs
      • intero

Stack (--nix)

nixpkgsでインストールする

$ nix-env -i stack

stackのsetupを行う

$ stack --nix setup

interoやその他のツール(ghc-mod,hlint,hoogle)で
依存してるライブラリを ~/.stack/config.yaml に追記する
(NixOSでない場合はそれっぽいパッケージを各自インストール)


....

nix:
  enable: true
  packages:
    - gcc      #
    - ncurses  # interoで必要
    - libcxx   #
    - icu      #
    - zlib     # hoogleで必要

stackから使うツールをインストールする

$ stack --nix install hlint ghc-mod hoogle

Emacs

Intero for Emacs の通り intero をインストール
個人的に package.el をそのまま使っているためインストール後 init.el

(require 'haskell-mode)
(require 'intero)
(add-hook 'haskell-mode-hook 'intero-mode)

実行

stackで適当なプロジェクトを作成する

$ stack --nix new myhs

emacsで myhs/src/Lib.hs を開くと intero のビルドが自動的に走り 環境構築終了

Key Function Description
C-c C-c intero-repl-eval-region 範囲選択している箇所の実行
C-c C-e intero-expand-splice-at-point
C-c TAB intero-info 定義情報を別バッファに表示
C-c C-l intero-repl-load REPLに編集中の.hsファイルを読み込む
C-c C-r intero-apply-suggestions import等で不足しているものがあったりする場合読み込んでくれる
C-c C-t intero-type-at 関数や変数の型をminiバッファに表示
C-c C-z intero-repl REPLのバッファに移動する
M-. intero-goto-definition 定義箇所にジャンプする
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away