    '(haskell-process-auto-import-loaded-modules t)
    '(haskell-process-log t)
    '(haskell-process-suggest-remove-import-lines t)
-   '(haskell-process-type 'stack-ghci)
+   '(haskell-process-type 'cabal-repl)
    )
+
+  (evil-leader/set-key-for-mode 'haskell-mode
+    "." 'haskell-mode-jump-to-def-or-tag
+    "=" 'hindent-reformat-buffer
+    "m<" 'ghc-make-indent-shallower
+    "m>"  'ghc-make-indent-deeper
+    "mn" 'ghc-goto-next-hole
+    "mp" 'ghc-goto-prev-hole
+    "p" 'intero-repl-load
+    "rc" 'ghc-kill-process
+    "rr" 'intero-repl-load
+    "t" 'intero-type-at
+    "k" 'hoogle
+    "K" 'haskell-hoogle-lookup-from-local
+    )
 
   (add-hook 'haskell-mode-hook
             '(lambda ()
-               (subword-mode)
+               (evil-define-key 'normal 'haskell-mode-map
+                 (kbd "e") 'subword-forward
+                 (kbd "E") 'forward-symbol
+                 (kbd "w") 'subword-backward
+                 (kbd "W") 'backward-symbol
+                 )
+               (if (fboundp 'electric-indent-local-mode)
+                   (electric-indent-mode -1))
                (haskell-auto-insert-module-template)
-               (ghc-init)
                ))
-  (add-hook 'haskell-error-mode-hook '(lambda () (help-mode)))
-  )
+
+  (add-hook 'haskell-cabal-mode-hook '(lambda () (require 'haskell-mode)))
+
+  ;; align rules for Haskell
+  (with-eval-after-load 'align
+    (add-to-list 'align-rules-list
+                 '(haskell-types
+                   (regexp . "\\(\\s-+\\)\\(::\\|∷\\)\\s-+")
+                   (modes . '(haskell-mode literate-haskell-mode))))
+    (add-to-list 'align-rules-list
+                 '(haskell-assignment
+                   (regexp . "\\(\\s-+\\)=\\s-+")
+                   (modes . '(haskell-mode literate-haskell-mode))))
+    (add-to-list 'align-rules-list
+                 '(haskell-arrows
+                   (regexp . "\\(\\s-+\\)\\(->\\|→\\)\\s-+")
+                   (modes . '(haskell-mode literate-haskell-mode))))
+    (add-to-list 'align-rules-list
+                 '(haskell-left-arrows
+                   (regexp . "\\(\\s-+\\)\\(<-\\|←\\)\\s-+")
+                   (modes . '(haskell-mode literate-haskell-mode)))))
+
+  (add-hook 'haskell-error-mode-hook '(lambda () (help-mode))))
 
 (provide 'init-haskell)
 ;;; init-haskell.el ends here

(require 'company)
(use-package haskell-mode
  :ensure t
  :config
  (use-package company-ghc
    :ensure t
    :defer t
    :config
    (add-to-list 'company-backends 'company-ghc))

  (use-package shm
    :ensure t


  (use-package hindent
    :ensure t
    :defer t
    :init
    (add-hook 'haskell-mode-hook 'hindent-mode)
    :config
    (setq hindent-style "johan-tibell")
    )

  (defun run-haskell ()
    (interactive)
