nix-community.nixvim/plugins/statuslines/lightline.nix

88 lines
2.5 KiB
Nix
Raw Normal View History

2020-12-30 01:05:51 +00:00
{ pkgs, config, lib, ... }:
with lib;
let
cfg = config.programs.nixvim.plugins.lightline;
helpers = import ../helpers.nix { inherit lib; };
2020-12-30 01:05:51 +00:00
in {
options = {
programs.nixvim.plugins.lightline = {
enable = mkEnableOption "Enable lightline";
colorscheme = mkOption {
type = with types; nullOr str;
2020-12-30 01:05:51 +00:00
default = config.programs.nixvim.colorscheme;
description = "The colorscheme to use for lightline. Defaults to .colorscheme.";
example = "gruvbox";
};
componentFunction = mkOption {
default = null;
type = with types; nullOr (attrsOf str);
description = ''
A list of function component definitions.
You should define the functions themselves in <para>extraConfig</para>
'';
example = ''
programs.nixvim.plugins.lightline = {
enable = true;
componentFunction = {
readonly = "LightlineReadonly";
};
extraConfig = '''
function! LightlineReadonly()
return &readonly && &filetype !=# 'help' ? 'RO' : '''
endfunction
''';
};
'';
};
component = mkOption {
default = null;
type = with types; nullOr (attrsOf str);
description = "Lightline component definitions. Uses 'statusline' syntax. Consult :h 'statusline' for a list of what's available.";
};
active = mkOption {
default = null;
type = types.nullOr (types.submodule {
options = let
listType = with types; nullOr (listOf (listOf str));
in {
left = mkOption {
type = listType;
description = "List of components that will show up on the left side of the bar";
default = null;
};
right = mkOption {
type = listType;
description = "List of components that will show up on the right side of the bar";
default = null;
};
};
});
};
modeMap = mkOption {
type = with types; nullOr (attrsOf str);
description = "Mode name mappings";
default = null;
};
2020-12-30 01:05:51 +00:00
};
};
config = let
2021-01-05 11:26:49 +00:00
configAttrs = {
inherit (cfg) colorscheme active component componentFunction modeMap;
};
in mkIf cfg.enable {
2020-12-30 01:05:51 +00:00
programs.nixvim = {
extraPlugins = [ pkgs.vimPlugins.lightline-vim ];
2021-01-05 11:26:49 +00:00
globals.lightline = configAttrs;
2020-12-30 01:05:51 +00:00
};
};
}