diff --git a/plugins/default.nix b/plugins/default.nix index f3a7d682..63b4776e 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -20,6 +20,7 @@ ./utils/endwise.nix ./utils/telescope.nix ./utils/nvim-autopairs.nix + ./utils/barbar.nix ./languages/treesitter.nix ./languages/nix.nix diff --git a/plugins/utils/barbar.nix b/plugins/utils/barbar.nix new file mode 100644 index 00000000..27a346bf --- /dev/null +++ b/plugins/utils/barbar.nix @@ -0,0 +1,58 @@ +{ lib, pkgs, config, ... }: +with lib; +let + cfg = config.programs.nixvim.plugins.barbar; +in +{ + options.programs.nixvim.plugins.barbar = { + enable = mkEnableOption "Enable barbar.nvim"; + + animations = mkOption { + type = types.nullOr types.bool; + default = null; + description = "Enable animations"; + }; + + autoHide = mkOption { + type = types.nullOr types.bool; + default = null; + description = "Auto-hide the tab bar when there is only one buffer"; + }; + + closeable = mkOption { + type = types.nullOr types.bool; + default = null; + description = "Enable the close button"; + }; + + icons = mkOption { + type = with types; nullOr (oneOf [bool (enum ["numbers both"])]); + default = null; + description = "Enable/disable icons"; + }; + + iconCustomColors = mkOption { + type = with types; nullOr (oneOf [bool str]); + default = null; + description = "Sets the icon highlight group"; + }; + + # Keybinds concept: + # keys = { + # previousBuffer = mkBindDef "normal" "Previous buffer" { action = ":BufferPrevious"; silent = true; } ""; + # nextBuffer = mkBindDef "normal" "Next buffer" { action = ":BufferNext"; silent = true; } ""; + # movePrevious = mkBindDef "normal" "Re-order to previous" { action = ":BufferMovePrevious"; silent = true; } ""; + # moveNext = mkBindDef "normal" "Re-order to next" { action = ":BufferMoveNext"; silent = true; } ">"; + + # # TODO all the other ones..... + # }; + }; + + config.programs.nixvim = mkIf cfg.enable { + extraPlugins = with pkgs.vimPlugins; [ + barbar-nvim nvim-web-devicons + ]; + + # maps = genMaps cfg.keys; + }; +}