{
  lib,
  config,
  pkgs,
  ...
}:

with lib;
let
  cfg = config.modules.haskell;
in
{
  options.modules.haskell = {
    enable = mkEnableOption "haskell";
  };

  config = mkIf cfg.enable {
    # Development packages
    home.packages = with pkgs; [
      haskell.compiler.ghc948
      (haskell-language-server.override { supportedGhcVersions = [ "948" ]; })
    ];

    # VSCode configuration
    programs.vscode = {
      extensions = with pkgs.vscode-extensions; [
        haskell.haskell
        justusadam.language-haskell
      ];

      userSettings = {
        "[haskell]" = { };
        # "haskell.formattingProvider" = "fourmolu";
      };
    };

    # Neovim configuration
    programs.nixvim = { };
  };
}