1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.programs.vim;
10in
11{
12 options.programs.vim = {
13 enable = lib.mkEnableOption "Vi IMproved, an advanced text editor";
14
15 defaultEditor = lib.mkEnableOption "vim as the default editor";
16
17 package = lib.mkPackageOption pkgs "vim" { example = [ "vim-full" ]; };
18 };
19
20 config = lib.mkIf (cfg.enable || cfg.defaultEditor) {
21 assertions = [
22 {
23 assertion = cfg.defaultEditor -> cfg.enable;
24 message = "{option}`programs.vim.defaultEditor` requires {option}`programs.vim.enable` to be set to true.";
25 }
26 ];
27 environment = {
28 systemPackages = [ cfg.package ];
29 variables.EDITOR = lib.mkIf cfg.defaultEditor (lib.mkOverride 900 "vim");
30 pathsToLink = [ "/share/vim-plugins" ];
31 };
32 };
33}