diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index e37fd816..876f1ab2 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -220,6 +220,7 @@ To migrate to `nixfmt`, simply change `vim.languages.nix.format.type` to [ts-error-translator.nvim]: https://github.com/dmmulroy/ts-error-translator.nvim [credo]: https://github.com/rrrene/credo +[tiny-devicons-auto-colors]: https://github.com/rachartier/tiny-devicons-auto-colors.nvim - Add `deno fmt` as the default Markdown formatter. This will be enabled automatically if you have autoformatting enabled, but can be disabled manually @@ -288,6 +289,9 @@ To migrate to `nixfmt`, simply change `vim.languages.nix.format.type` to - Add combined nvf configuration (`config.vim`) into the final package's passthru as `passthru.neovimConfiguration` for easier debugging. +- Add support for [tiny-devicons-auto-colors] under + `vim.visuals.tiny-devicons-auto-colors` + [ppenguin](https://github.com/ppenguin): - Telescope: diff --git a/flake.lock b/flake.lock index fef34036..36d59db4 100644 --- a/flake.lock +++ b/flake.lock @@ -1790,6 +1790,22 @@ "type": "github" } }, + "plugin-tiny-devicons-auto-colors": { + "flake": false, + "locked": { + "lastModified": 1724403745, + "narHash": "sha256-Ndkbvxn/x7+fxEYD7JIygqUiItuhoY+4+DaL/pJGKdc=", + "owner": "rachartier", + "repo": "tiny-devicons-auto-colors.nvim", + "rev": "a39fa4c92268832f6034306793b8acbfec2a7549", + "type": "github" + }, + "original": { + "owner": "rachartier", + "repo": "tiny-devicons-auto-colors.nvim", + "type": "github" + } + }, "plugin-todo-comments": { "flake": false, "locked": { @@ -2112,6 +2128,7 @@ "plugin-sqls-nvim": "plugin-sqls-nvim", "plugin-tabular": "plugin-tabular", "plugin-telescope": "plugin-telescope", + "plugin-tiny-devicons-auto-colors": "plugin-tiny-devicons-auto-colors", "plugin-todo-comments": "plugin-todo-comments", "plugin-toggleterm-nvim": "plugin-toggleterm-nvim", "plugin-tokyonight": "plugin-tokyonight", diff --git a/flake.nix b/flake.nix index 144e136c..875fa432 100644 --- a/flake.nix +++ b/flake.nix @@ -468,6 +468,11 @@ flake = false; }; + plugin-tiny-devicons-auto-colors = { + url = "github:rachartier/tiny-devicons-auto-colors.nvim"; + flake = false; + }; + plugin-gitsigns-nvim = { url = "github:lewis6991/gitsigns.nvim"; flake = false; diff --git a/modules/default.nix b/modules/default.nix index ee7febd4..a2f8730d 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -128,9 +128,10 @@ in { # will return the configuration in full. passthru.neovimConfig = vimOptions; - meta = { - description = "Wrapped version of Neovim with additional helper scripts"; - mainProgram = "nvim"; - }; + meta = + neovim-wrapped.meta + // { + description = "Wrapped Neovim package with helper scripts to print the config (path)"; + }; }; } diff --git a/modules/plugins/languages/zig.nix b/modules/plugins/languages/zig.nix index b0217b9f..7ae8a5c2 100644 --- a/modules/plugins/languages/zig.nix +++ b/modules/plugins/languages/zig.nix @@ -4,13 +4,33 @@ lib, ... }: let + inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; - inherit (lib.types) either listOf package str; + inherit (lib.types) either listOf package str enum; inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.types) mkGrammarOption; + defaultServer = "zls"; + servers = { + zls = { + package = pkgs.zls; + internalFormatter = true; + lspConfig = '' + lspconfig.zls.setup { + capabilities = capabilities, + on_attach = default_on_attach, + cmd = ${ + if isList cfg.lsp.package + then expToLua cfg.lsp.package + else "{'${cfg.lsp.package}/bin/zls'}" + } + } + ''; + }; + }; + cfg = config.vim.languages.zig; in { options.vim.languages.zig = { @@ -22,20 +42,19 @@ in { }; lsp = { - enable = mkEnableOption "Zig LSP support (zls)" // {default = config.vim.languages.enableLSP;}; + enable = mkEnableOption "Zig LSP support" // {default = config.vim.languages.enableLSP;}; + + server = mkOption { + type = enum (attrNames servers); + default = defaultServer; + description = "Zig LSP server to use"; + }; package = mkOption { description = "ZLS package, or the command to run as a list of strings"; - example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]''; type = either package (listOf str); default = pkgs.zls; }; - - zigPackage = mkOption { - description = "Zig package used by ZLS"; - type = package; - default = pkgs.zig; - }; }; }; config = mkIf cfg.enable (mkMerge [ @@ -46,23 +65,7 @@ in { (mkIf cfg.lsp.enable { vim.lsp.lspconfig.enable = true; - vim.lsp.lspconfig.sources.zig-lsp = '' - lspconfig.zls.setup { - capabilities = capabilities, - on_attach=default_on_attach, - cmd = ${ - if isList cfg.lsp.package - then expToLua cfg.lsp.package - else ''{"${cfg.lsp.package}/bin/zls"}'' - }, - settings = { - ["zls"] = { - zig_exe_path = "${cfg.lsp.zigPackage}/bin/zig", - zig_lib_path = "${cfg.lsp.zigPackage}/lib/zig", - } - } - } - ''; + vim.lsp.lspconfig.sources.zig-lsp = servers.${cfg.lsp.server}.lspConfig; }) ]); } diff --git a/modules/plugins/visuals/default.nix b/modules/plugins/visuals/default.nix index ed408b61..0843654e 100644 --- a/modules/plugins/visuals/default.nix +++ b/modules/plugins/visuals/default.nix @@ -15,5 +15,6 @@ in { ./nvim-cursorline ./nvim-scrollbar ./nvim-web-devicons + ./tiny-devicons-auto-colors ]; } diff --git a/modules/plugins/visuals/tiny-devicons-auto-colors/config.nix b/modules/plugins/visuals/tiny-devicons-auto-colors/config.nix new file mode 100644 index 00000000..a7fd3752 --- /dev/null +++ b/modules/plugins/visuals/tiny-devicons-auto-colors/config.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAnywhere; + + cfg = config.vim.visuals.tiny-devicons-auto-colors; +in { + config = mkIf cfg.enable { + vim = { + startPlugins = ["tiny-devicons-auto-colors" "nvim-web-devicons"]; + + pluginRC.tiny-devicons-auto-colors = entryAnywhere '' + require("tiny-devicons-auto-colors").setup(${toLuaObject cfg.setupOpts}) + ''; + }; + }; +} diff --git a/modules/plugins/visuals/tiny-devicons-auto-colors/default.nix b/modules/plugins/visuals/tiny-devicons-auto-colors/default.nix new file mode 100644 index 00000000..0fe05101 --- /dev/null +++ b/modules/plugins/visuals/tiny-devicons-auto-colors/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./tiny-devicons-auto-colors.nix + ]; +} diff --git a/modules/plugins/visuals/tiny-devicons-auto-colors/tiny-devicons-auto-colors.nix b/modules/plugins/visuals/tiny-devicons-auto-colors/tiny-devicons-auto-colors.nix new file mode 100644 index 00000000..6b565e0a --- /dev/null +++ b/modules/plugins/visuals/tiny-devicons-auto-colors/tiny-devicons-auto-colors.nix @@ -0,0 +1,41 @@ +{lib, ...}: let + inherit (lib.options) mkOption mkEnableOption; + inherit (lib.types) int float; + inherit (lib.generators) mkLuaInline; + inherit (lib.nvim.types) mkPluginSetupOption luaInline; +in { + options.vim.visuals.tiny-devicons-auto-colors = { + enable = mkEnableOption "alternative nvim-web-devicons icon colors [tiny-devicons-auto-colors]"; + + setupOpts = mkPluginSetupOption "tiny-devicons-auto-colors" { + factors = { + lightness = mkOption { + type = float; + default = 1.76; + description = "Lightness factor of icons"; + }; + + chroma = mkOption { + type = int; + default = 1; + description = "Chroma factor of icons"; + }; + + hue = mkOption { + type = float; + default = 1.25; + description = "Hue factor of icons"; + }; + + cache = { + enabled = mkEnableOption "caching of icon colors. This will greatly improve performance" // {default = true;}; + path = mkOption { + type = luaInline; + default = mkLuaInline "vim.fn.stdpath(\"cache\") .. \"/tiny-devicons-auto-colors-cache.json\""; + description = "Path to the cache file"; + }; + }; + }; + }; + }; +}