{ config, pkgs, ... }:
{
  home-manager.users.me.home.file = {
    ".ghc/ghci.conf".text = ''
      :set editor vim
      :def hoogle \s -> return $ ":!${pkgs.haskellPackages.hoogle}/bin/hoogle search --color -l --count=15 \"" ++ s ++ "\""
      :def doc \s -> return $ ":!${pkgs.haskellPackages.hoogle}/bin/hoogle search --color -l --info \"" ++ s ++ "\""
      :def pl \x -> return $ ":!${pkgs.haskellPackages.pointfree}/bin/pointfree -v \"" ++ x ++ "\""
      :set prompt "\o033[1m%s\o033[1;34m λ\o033[0m "
      :set -Wall
    '';
      # :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
    ".stack/config.yaml".text = let user = config.niveum.user; in ''
      templates:
        params:
          author-name: ${user.name}
          author-email: ${user.email}
          copyright: 'Copyright: (c) 2019 ${user.name}'
          github-username: ${user.github}
    '';
  };

  services.hoogle = {
    enable = true;
    packages = import ./packages.nix;
    port = 8091;
  };

  environment.systemPackages = with pkgs; [
    cabal2nix
    stack2nix
    cabal-install
    hlint
    # haskellPackages.brittany
    (haskellPackages.ghcWithHoogle (import ./packages.nix))
  ] ++ map haskell.lib.justStaticExecutables [
    haskellPackages.ghcid
    haskellPackages.hakyll
    # haskellPackages.hfmt
    haskellPackages.hasktags
    haskellPackages.hindent
    haskellPackages.pointfree
    # haskellPackages.pointful
    haskellPackages.hpack
  ];
}
