1
0
mirror of https://github.com/nix-community/home-manager synced 2024-07-06 21:33:28 +02:00
home-manager/modules/programs/vscode/haskell.nix
Emily 3228f92b90 treewide: manually convert some docs to Markdown
These files all have options that trip up the `nix-doc-munge`
conversion tool for one reason or another (syntax that clashes with
Markdown, options that were already using Markdown syntax despite not
being marked that way, output that differs slightly after conversion,
syntax too elaborate to convert with some cheap regular expressions,
...). Translate them manually and do a little copyediting to options
in the vicinity while we're at it.
2023-07-17 16:49:35 +01:00

66 lines
1.7 KiB
Nix

{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.programs.vscode.haskell;
defaultHieNixExe = hie-nix.hies + "/bin/hie-wrapper";
defaultHieNixExeText =
literalExpression ''"''${pkgs.hie-nix.hies}/bin/hie-wrapper"'';
hie-nix = pkgs.hie-nix or (abort ''
vscode.haskell: pkgs.hie-nix missing. Please add an overlay such as:
${exampleOverlay}
'');
exampleOverlay = ''
nixpkgs.overlays = [
(self: super: { hie-nix = import ~/src/hie-nix {}; })
]
'';
in {
options.programs.vscode.haskell = {
enable = mkEnableOption "Haskell integration for Visual Studio Code";
hie.enable = mkOption {
type = types.bool;
default = true;
description = "Whether to enable Haskell IDE engine integration.";
};
hie.executablePath = mkOption {
type = types.path;
default = defaultHieNixExe;
defaultText = defaultHieNixExeText;
description = lib.mdDoc ''
The path to the Haskell IDE Engine executable.
Because hie-nix is not packaged in Nixpkgs, you need to add it as an
overlay or set this option. Example overlay configuration:
```nix
${exampleOverlay}
```
'';
example = literalExpression ''
(import ~/src/haskell-ide-engine {}).hies + "/bin/hie-wrapper";
'';
};
};
config = mkIf cfg.enable {
programs.vscode.userSettings = mkIf cfg.hie.enable {
"languageServerHaskell.enableHIE" = true;
"languageServerHaskell.hieExecutablePath" = cfg.hie.executablePath;
};
programs.vscode.extensions =
[ pkgs.vscode-extensions.justusadam.language-haskell ]
++ lib.optional cfg.hie.enable
pkgs.vscode-extensions.alanz.vscode-hie-server;
};
}