Compare commits

..

4 commits

13 changed files with 201 additions and 340 deletions

View file

@ -73,7 +73,6 @@ inputs: let
go.enable = isMaximal; go.enable = isMaximal;
elixir.enable = isMaximal; elixir.enable = isMaximal;
zig.enable = isMaximal; zig.enable = isMaximal;
ocaml.enable = isMaximal;
python.enable = isMaximal; python.enable = isMaximal;
dart.enable = isMaximal; dart.enable = isMaximal;
bash.enable = isMaximal; bash.enable = isMaximal;

View file

@ -35,10 +35,3 @@ Release notes for release 0.7
to nixpkgs. A pull request is currently open. to nixpkgs. A pull request is currently open.
- Remove vim-tidal and friends - Remove vim-tidal and friends
- Cleaned up Lualine module to reduce theme dependency on Catppuccin, and fixed
blending issues in component separators.
[jacekpoz](https://github.com/jacekpoz):
- Added [ocaml-lsp](https://github.com/ocaml/ocaml-lsp) support.

View file

@ -114,11 +114,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1715534503, "lastModified": 1715087517,
"narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=", "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2057814051972fa1453ddfb0d98badbea9b83c06", "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -367,11 +367,11 @@
"plugin-cmp-treesitter": { "plugin-cmp-treesitter": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715596479, "lastModified": 1702163214,
"narHash": "sha256-8WAk9S+/7vSz7bVHdEzjbKUokU144fvnByIeJ1gAWhU=", "narHash": "sha256-K7F9iqmB13ONenwsbaND8F4010MvHQXp7DxMFfcsZ4A=",
"owner": "ray-x", "owner": "ray-x",
"repo": "cmp-treesitter", "repo": "cmp-treesitter",
"rev": "958fcfa0d8ce46d215e19cc3992c542f576c4123", "rev": "13e4ef8f4dd5639fca2eb9150e68f47639a9b37d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -463,11 +463,11 @@
"plugin-crates-nvim": { "plugin-crates-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715690194, "lastModified": 1715069896,
"narHash": "sha256-R1y1OIep4tcFd4mhylZ/A2zdwOmEQtCzuVBOBYu0qUI=", "narHash": "sha256-AhjnPo3SM7o7foj5ppv0CW+jfJe6ACerq4YFgJfY3/8=",
"owner": "Saecki", "owner": "Saecki",
"repo": "crates.nvim", "repo": "crates.nvim",
"rev": "d556c00d60c9421c913ee54ff690df2a34f6264e", "rev": "7d8541ec0e3b30ac2c43864d3ee13a632e1231ed",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -591,11 +591,11 @@
"plugin-gesture-nvim": { "plugin-gesture-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715211052, "lastModified": 1715081943,
"narHash": "sha256-vRXQBoKhmYid1M1d4OI/PolwQIwMn1x7EgxeW6Dzj0o=", "narHash": "sha256-h6alx5TjskXYQ3H9fFfC4QyxsGbpjQkoZFVvLi1sgFI=",
"owner": "notomo", "owner": "notomo",
"repo": "gesture.nvim", "repo": "gesture.nvim",
"rev": "9b3d6361b37628f8869cd237416a1674103c0dc1", "rev": "591b350bfc87932a748f4838ad724eea6fb073e0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -703,11 +703,11 @@
"plugin-image-nvim": { "plugin-image-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715712794, "lastModified": 1714464812,
"narHash": "sha256-7mZ7a9fU/6RxnzUiYxgIsZA2wGXTalfR2cPBp6kLO3Q=", "narHash": "sha256-UfJzROXnjaiF+kIaBYAt5GSL107vT5NrpXj+Gh535Yk=",
"owner": "3rd", "owner": "3rd",
"repo": "image.nvim", "repo": "image.nvim",
"rev": "b979fa1194443c97dd8cb6053a4cec163c9048f5", "rev": "604692f493519128c58893c28273d4247bc71a4d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -735,11 +735,11 @@
"plugin-leap-nvim": { "plugin-leap-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715716911, "lastModified": 1714857300,
"narHash": "sha256-vRL++RVDywO6nP5dHQiO1NSQ17SMmHm4AgjTQfv642o=", "narHash": "sha256-RodnRoiQTH/+XoPk30neLiYIptPJnCvL94keIQXjq2g=",
"owner": "ggandor", "owner": "ggandor",
"repo": "leap.nvim", "repo": "leap.nvim",
"rev": "b1ecfb63c0b8babfd0dcd6b5ca6de37bbf3526cd", "rev": "f1f19fc268b406b00b50091f51f16d9634fbe449",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -767,11 +767,11 @@
"plugin-lsp-signature": { "plugin-lsp-signature": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715342515, "lastModified": 1710647656,
"narHash": "sha256-f4AuZnt2m2VA90baSbZt6+elzjXmJKPFTO28v8auoYc=", "narHash": "sha256-O7y7pcCvF0xUFamG+wMLe4mC6hUQ679rJV+ZUoWB0oY=",
"owner": "ray-x", "owner": "ray-x",
"repo": "lsp_signature.nvim", "repo": "lsp_signature.nvim",
"rev": "aed5d1162b0f07bb3af34bedcc5f70a2b6466ed8", "rev": "c6aeb2f1d2538bbdfdaab1664d9d4c3c75aa9db8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -927,11 +927,11 @@
"plugin-noice-nvim": { "plugin-noice-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715763787, "lastModified": 1714737209,
"narHash": "sha256-sn8CiNq9JJXIxB6EEX98XaHhwyBPP7X1zqYMHLgdqd0=", "narHash": "sha256-jR9tX6AhY+DXPqGXqGqCkG/sL9+mLxpwOqfwjHHN0Ac=",
"owner": "folke", "owner": "folke",
"repo": "noice.nvim", "repo": "noice.nvim",
"rev": "61947de3d5904375ea94e0c13db2537488ad9829", "rev": "f4decbc7a80229ccc9f86026b74bdcf0c39e38a7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1008,11 +1008,11 @@
"plugin-nvim-cmp": { "plugin-nvim-cmp": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715507122, "lastModified": 1715160812,
"narHash": "sha256-wyHbTXFqvt3kXo+EaHdrEggMDOnw4enAAf4pA9ZQm2g=", "narHash": "sha256-/zTOFwCSBETBgkILpP8h82ZjN7LiMV0Uk5d2TEnQVU4=",
"owner": "hrsh7th", "owner": "hrsh7th",
"repo": "nvim-cmp", "repo": "nvim-cmp",
"rev": "24122371810089d390847d8ba66325c1f1aa64c0", "rev": "cd2cf0c124d3de577fb5449746568ee8e601afc8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1072,11 +1072,11 @@
"plugin-nvim-dap": { "plugin-nvim-dap": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715700682, "lastModified": 1713432622,
"narHash": "sha256-Gh1Vt8NLZ2MZUUB2EmTWYM0owUrpIpVyzxBgyBOwXWk=", "narHash": "sha256-kEn2INrNMQSLHY3gpSVV+cTx9f1nFeUCM6by9WGn5Sg=",
"owner": "mfussenegger", "owner": "mfussenegger",
"repo": "nvim-dap", "repo": "nvim-dap",
"rev": "559d0bbdbc4be4c7e774423061263771be1dbde8", "rev": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1136,11 +1136,11 @@
"plugin-nvim-lspconfig": { "plugin-nvim-lspconfig": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715682701, "lastModified": 1715152811,
"narHash": "sha256-kmo8UfTxarnxZLjL2qOeh4Jo/krxx3uqq073YnsFYxQ=", "narHash": "sha256-LMzLDbkKVmRRhwaUaroCRGUsKe/fwzgwV1gbvr/t6WQ=",
"owner": "neovim", "owner": "neovim",
"repo": "nvim-lspconfig", "repo": "nvim-lspconfig",
"rev": "a27179f56c6f98a4cdcc79ee2971b514815a4940", "rev": "a3d9395455f2b2e3b50a0b0f37b8b4c23683f44a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1232,11 +1232,11 @@
"plugin-nvim-session-manager": { "plugin-nvim-session-manager": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715419340, "lastModified": 1714905094,
"narHash": "sha256-SrJJWC/newJRB879zMUbLzOJQ8qtcHfLF/7GLPFlSRQ=", "narHash": "sha256-VduhmnnRPIdi6GZ+TZUnZfpY4Lt8z5JBTKgl7oobtdY=",
"owner": "Shatur", "owner": "Shatur",
"repo": "neovim-session-manager", "repo": "neovim-session-manager",
"rev": "a0b9d25154be573bc0f99877afb3f57cf881cce7", "rev": "892c55f7256fe170301a1fdd21752982c75c3507",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1264,11 +1264,11 @@
"plugin-nvim-tree-lua": { "plugin-nvim-tree-lua": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715647490, "lastModified": 1714794673,
"narHash": "sha256-YqHAEztx6gEEm0GoDXC5djnIP030oGGRcskp8LPqVoc=", "narHash": "sha256-rY4FbuqBM4zOUkaA3QBc+UrpfTha8uGtp+lIzrYK+cg=",
"owner": "nvim-tree", "owner": "nvim-tree",
"repo": "nvim-tree.lua", "repo": "nvim-tree.lua",
"rev": "2bc725a3ebc23f0172fb0ab4d1134b81bcc13812", "rev": "64f61e4c913047a045ff90bd188dd3b54ee443cf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1280,11 +1280,11 @@
"plugin-nvim-treesitter-context": { "plugin-nvim-treesitter-context": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715659155, "lastModified": 1714689136,
"narHash": "sha256-EYAIm8qicpfvOzg5xPWRwuWMPcUa/hg+q3so+s9sw5g=", "narHash": "sha256-gHbLt0ApyPPQU8Q+lde0Zv8XBR6pESKzvIzIXHkd5eI=",
"owner": "nvim-treesitter", "owner": "nvim-treesitter",
"repo": "nvim-treesitter-context", "repo": "nvim-treesitter-context",
"rev": "df58c81237ffe2b277e14a1692212162a34e2e2a", "rev": "2650e6431f7daba5d9c2c64134fa5eb2312eb3d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1312,11 +1312,11 @@
"plugin-nvim-web-devicons": { "plugin-nvim-web-devicons": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715644375, "lastModified": 1715028064,
"narHash": "sha256-1trRSUVyWFl3K+7xHXQGNl/EwE0ggyigQpZ+kmRPsk8=", "narHash": "sha256-DSUTxUFCesXuaJjrDNvurILUt1IrO5MI5ukbZ8D87zQ=",
"owner": "nvim-tree", "owner": "nvim-tree",
"repo": "nvim-web-devicons", "repo": "nvim-web-devicons",
"rev": "e37bb1feee9e7320c76050a55443fa843b4b6f83", "rev": "5b9067899ee6a2538891573500e8fd6ff008440f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1344,11 +1344,11 @@
"plugin-onedark": { "plugin-onedark": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715454207, "lastModified": 1706527208,
"narHash": "sha256-GERMsVNELbeRrKsiPeSKcwNI+bH4C79koTBRtRMGqvc=", "narHash": "sha256-1+aO8vrUGEe/NIVI1C1xJyuQVPQZ1s510lopkEVP7No=",
"owner": "navarasu", "owner": "navarasu",
"repo": "onedark.nvim", "repo": "onedark.nvim",
"rev": "8e4b79b0e6495ddf29552178eceba1e147e6cecf", "rev": "1230aaf2a427b2c5b73aba6e4a9a5881d3e69429",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1360,11 +1360,11 @@
"plugin-orgmode-nvim": { "plugin-orgmode-nvim": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715684611, "lastModified": 1715114055,
"narHash": "sha256-T/vjpYbrq1LTNitnSGGmguVr5UV83AFhNGmeNS2H9J0=", "narHash": "sha256-SmofuYt4fLhtl5qedYlmCRgOmZaw3nmlnMg0OMzyKnM=",
"owner": "nvim-orgmode", "owner": "nvim-orgmode",
"repo": "orgmode", "repo": "orgmode",
"rev": "8ec0bcc6f6476d246159f738081256c97a7a9b2c", "rev": "cda615fa7c8607bfb7aaf7d2c9424dd5969f2625",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1440,11 +1440,11 @@
"plugin-rose-pine": { "plugin-rose-pine": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715697761, "lastModified": 1713451685,
"narHash": "sha256-AdPSz5+nCOnLWexBasHuxRxEKbL4WVg+uV78//W5nLs=", "narHash": "sha256-AdPSz5+nCOnLWexBasHuxRxEKbL4WVg+uV78//W5nLs=",
"owner": "rose-pine", "owner": "rose-pine",
"repo": "neovim", "repo": "neovim",
"rev": "b6fe88c3282cf9f117a3e836d761c2d78d02f417", "rev": "17b466e79479758b332a3cac12544a3ad2be6241",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1536,11 +1536,11 @@
"plugin-telescope": { "plugin-telescope": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715697240, "lastModified": 1714700089,
"narHash": "sha256-lHMbJAQ0ja2UrUantxQOVWMG502oo6QDod7AmpCw1yE=", "narHash": "sha256-SoEetPE7f7Y0kUa4+7dH+EOs/0WBsMDxeOkbVNuoSjE=",
"owner": "nvim-telescope", "owner": "nvim-telescope",
"repo": "telescope.nvim", "repo": "telescope.nvim",
"rev": "6f6bb8065567b56c42e283b06e8a1c670c0092a1", "rev": "fac83a556e7b710dc31433dec727361ca062dbe9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -1632,11 +1632,11 @@
"plugin-vim-fugitive": { "plugin-vim-fugitive": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1715753556, "lastModified": 1714601825,
"narHash": "sha256-icKBJ/1J15h4dNS7NMfjMM/kjMPy8YMiyTI2pGTwYJY=", "narHash": "sha256-0ujueJ226zEmjkFwodSukO1Zu5gMvTmx/dCtT5VBhek=",
"owner": "tpope", "owner": "tpope",
"repo": "vim-fugitive", "repo": "vim-fugitive",
"rev": "5b0347b5231a0f40abc311ccaf7bbf02d3ce3a5a", "rev": "ce882460cf3db12e99f8bf579cbf99e331f6dd4f",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -47,7 +47,7 @@
nixosModules.neovim-flake has been deprecated. nixosModules.neovim-flake has been deprecated.
Please use the nixosModules.nvf instead Please use the nixosModules.nvf instead
'' ''
self.nixosModules.nvf; self.nixosModules.neovim-flake;
nvf = { nvf = {
imports = [(import ./flake/modules/nixos.nix self.packages inputs)]; imports = [(import ./flake/modules/nixos.nix self.packages inputs)];

View file

@ -25,7 +25,7 @@ inputs: {
# check can be disabled while calling this file is called # check can be disabled while calling this file is called
# to avoid checking in all modules # to avoid checking in all modules
nvimModules = import ./modules.nix { nvimModules = import ./modules.nix {
inherit pkgs check; inherit check pkgs;
lib = extendedLib; lib = extendedLib;
}; };

View file

@ -1,7 +1,7 @@
{ {
check ? true,
pkgs, pkgs,
lib, lib,
check ? true,
}: let }: let
inherit (lib.modules) mkDefault; inherit (lib.modules) mkDefault;
inherit (lib.lists) concatLists; inherit (lib.lists) concatLists;

View file

@ -14,7 +14,6 @@ in {
./markdown.nix ./markdown.nix
./nim.nix ./nim.nix
./nix.nix ./nix.nix
./ocaml.nix
./php.nix ./php.nix
./python.nix ./python.nix
./rust.nix ./rust.nix

View file

@ -1,105 +0,0 @@
{
config,
pkgs,
lib,
...
}: let
inherit (builtins) attrNames;
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.meta) getExe;
inherit (lib.lists) isList;
inherit (lib.types) either enum listOf package str;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.nvim.lua) expToLua;
cfg = config.vim.languages.ocaml;
defaultServer = "ocaml-lsp";
servers = {
ocaml-lsp = {
package = pkgs.ocamlPackages.ocaml-lsp;
lspConfig = ''
lspconfig.ocamllsp.setup {
capabilities = capabilities,
on_attach = default_on_attach,
cmd = ${
if isList cfg.lsp.package
then expToLua cfg.lsp.package
else ''{"${getExe cfg.lsp.package}"}''
};
}
'';
};
};
defaultFormat = "ocamlformat";
formats = {
ocamlformat = {
package = pkgs.ocamlPackages.ocamlformat;
nullConfig = ''
table.insert(
ls_sources,
null_ls.builtins.formatting.ocamlformat.with({
command = "${cfg.format.package}/bin/ocamlformat",
})
)
'';
};
};
in {
options.vim.languages.ocaml = {
enable = mkEnableOption "OCaml language support";
treesitter = {
enable = mkEnableOption "OCaml treesitter" // {default = config.vim.languages.enableTreesitter;};
package = mkGrammarOption pkgs "ocaml";
};
lsp = {
enable = mkEnableOption "OCaml LSP support (ocaml-lsp)" // {default = config.vim.languages.enableLSP;};
server = mkOption {
description = "OCaml LSP server to user";
type = enum (attrNames servers);
default = defaultServer;
};
package = mkOption {
description = "OCaml language server package, or the command to run as a list of strings";
type = either package (listOf str);
default = servers.${cfg.lsp.server}.package;
};
};
format = {
enable = mkEnableOption "OCaml formatting support (ocamlformat)" // {default = config.vim.languages.enableFormat;};
type = mkOption {
description = "OCaml formatter to use";
type = enum (attrNames formats);
default = defaultFormat;
};
package = mkOption {
description = "OCaml formatter package";
type = package;
default = formats.${cfg.format.type}.package;
};
};
};
config = mkIf cfg.enable (mkMerge [
(mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true;
vim.lsp.lspconfig.sources.ocaml-lsp = servers.${cfg.lsp.server}.lspConfig;
})
(mkIf cfg.treesitter.enable {
vim.treesitter.enable = true;
vim.treesitter.grammars = [cfg.treesitter.package];
})
(mkIf cfg.format.enable {
vim.lsp.null-ls.enable = true;
vim.lsp.null-ls.sources.ocamlformat = formats.${cfg.format.type}.nullConfig;
vim.extraPackages = [formats.${cfg.format.type}.package];
})
]);
}

View file

@ -5,7 +5,6 @@
}: let }: let
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.attrsets) mapAttrs; inherit (lib.attrsets) mapAttrs;
inherit (lib.trivial) boolToString;
inherit (lib.nvim.dag) entryAnywhere entryAfter entryBetween; inherit (lib.nvim.dag) entryAnywhere entryAfter entryBetween;
cfg = config.vim.lsp; cfg = config.vim.lsp;
@ -13,36 +12,26 @@ in {
config = mkIf cfg.null-ls.enable (mkMerge [ config = mkIf cfg.null-ls.enable (mkMerge [
{ {
vim = { vim = {
startPlugins = [
"none-ls"
"plenary-nvim"
];
# null-ls implies LSP already being set up
# since it will hook into LSPs to receive information
lsp.enable = true; lsp.enable = true;
startPlugins = ["none-ls"];
luaConfigRC = { luaConfigRC.null_ls-setup = entryAnywhere ''
# early setup for null-ls local null_ls = require("null-ls")
null_ls-setup = entryAnywhere '' local null_helpers = require("null-ls.helpers")
local null_ls = require("null-ls") local null_methods = require("null-ls.methods")
local null_helpers = require("null-ls.helpers") local ls_sources = {}
local null_methods = require("null-ls.methods") '';
local ls_sources = {}
'';
# null-ls setup luaConfigRC.null_ls = entryAfter ["null_ls-setup" "lsp-setup"] ''
null_ls = entryAfter ["null_ls-setup" "lsp-setup"] '' require('null-ls').setup({
require('null-ls').setup({ debug = false,
debug = ${boolToString cfg.null-ls.debug}, diagnostics_format = "[#{m}] #{s} (#{c})",
diagnostics_format = "${cfg.null-ls.diagnostics_format}", debounce = 250,
debounce = ${toString cfg.null-ls.debounce}, default_timeout = 5000,
default_timeout = ${toString cfg.null-ls.default_timeout}, sources = ls_sources,
sources = ls_sources, on_attach = default_on_attach
on_attach = default_on_attach })
}) '';
'';
};
}; };
} }
{ {

View file

@ -1,30 +1,10 @@
{lib, ...}: let {lib, ...}: let
inherit (lib.options) mkEnableOption mkOption; inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) attrsOf str int; inherit (lib.types) attrsOf str;
in { in {
options.vim.lsp.null-ls = { options.vim.lsp.null-ls = {
enable = mkEnableOption "null-ls, also enabled automatically"; enable = mkEnableOption "null-ls, also enabled automatically";
debug = mkEnableOption "debugging information for `null-ls";
diagnostics_format = mkOption {
type = str;
default = "[#{m}] #{s} (#{c})";
description = "Diagnostic output format for null-ls";
};
debounce = mkOption {
type = int;
default = 250;
description = "Default debounce";
};
default_timeout = mkOption {
type = int;
default = 5000;
description = "Default timeout value, in miliseconds";
};
sources = mkOption { sources = mkOption {
description = "null-ls sources"; description = "null-ls sources";
type = attrsOf str; type = attrsOf str;

View file

@ -3,7 +3,6 @@
lib, lib,
... ...
}: let }: let
inherit (builtins) map;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.trivial) boolToString; inherit (lib.trivial) boolToString;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
@ -32,46 +31,44 @@ in {
}; };
}) })
(mkIf cfg.enable { (mkIf cfg.enable {
vim = { vim.startPlugins = [
startPlugins = ["lualine"]; "lualine"
];
luaConfigRC.lualine = entryAnywhere '' vim.luaConfigRC.lualine = entryAnywhere ''
local lualine = require('lualine') local lualine = require('lualine')
lualine.setup ${toLuaObject cfg.setupOpts} lualine.setup ${toLuaObject cfg.setupOpts}
''; '';
# this is for backwards-compatibility # this is for backwards-compatibility
statusline.lualine.setupOpts = { vim.statusline.lualine.setupOpts = {
options = { options = {
icons_enabled = cfg.icons.enable; icons_enabled = cfg.icons.enable;
theme = cfg.theme; theme = cfg.theme;
component_separators = [cfg.componentSeparator.left cfg.componentSeparator.right]; component_separators = [cfg.componentSeparator.left cfg.componentSeparator.right];
section_separators = [cfg.sectionSeparator.left cfg.sectionSeparator.right]; section_separators = [cfg.sectionSeparator.left cfg.sectionSeparator.right];
globalstatus = cfg.globalStatus; globalstatus = cfg.globalStatus;
refresh = cfg.refresh; refresh = cfg.refresh;
};
sections = {
lualine_a = map mkLuaInline (cfg.activeSection.a ++ cfg.extraActiveSection.a);
lualine_b = map mkLuaInline (cfg.activeSection.b ++ cfg.extraActiveSection.b);
lualine_c = map mkLuaInline (cfg.activeSection.c ++ cfg.extraActiveSection.c);
lualine_x = map mkLuaInline (cfg.activeSection.x ++ cfg.extraActiveSection.x);
lualine_y = map mkLuaInline (cfg.activeSection.y ++ cfg.extraActiveSection.y);
lualine_z = map mkLuaInline (cfg.activeSection.z ++ cfg.extraActiveSection.z);
};
inactive_sections = {
lualine_a = map mkLuaInline (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a);
lualine_b = map mkLuaInline (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b);
lualine_c = map mkLuaInline (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c);
lualine_x = map mkLuaInline (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x);
lualine_y = map mkLuaInline (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y);
lualine_z = map mkLuaInline (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z);
};
# probably don't need this?
tabline = [];
}; };
sections = {
lualine_a = builtins.map mkLuaInline (cfg.activeSection.a ++ cfg.extraActiveSection.a);
lualine_b = builtins.map mkLuaInline (cfg.activeSection.b ++ cfg.extraActiveSection.b);
lualine_c = builtins.map mkLuaInline (cfg.activeSection.c ++ cfg.extraActiveSection.c);
lualine_x = builtins.map mkLuaInline (cfg.activeSection.x ++ cfg.extraActiveSection.x);
lualine_y = builtins.map mkLuaInline (cfg.activeSection.y ++ cfg.extraActiveSection.y);
lualine_z = builtins.map mkLuaInline (cfg.activeSection.z ++ cfg.extraActiveSection.z);
};
inactive_sections = {
lualine_a = builtins.map mkLuaInline (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a);
lualine_b = builtins.map mkLuaInline (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b);
lualine_c = builtins.map mkLuaInline (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c);
lualine_x = builtins.map mkLuaInline (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x);
lualine_y = builtins.map mkLuaInline (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y);
lualine_z = builtins.map mkLuaInline (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z);
};
# probably don't need this?
tabline = [];
}; };
}) })
]; ];

View file

@ -10,45 +10,19 @@
inherit (lib.nvim.types) mkPluginSetupOption; inherit (lib.nvim.types) mkPluginSetupOption;
supported_themes = import ./supported_themes.nix; supported_themes = import ./supported_themes.nix;
builtin_themes = [ colorPuccin =
"auto" if config.vim.statusline.lualine.theme == "catppuccin"
"16color" then "#181825"
"gruvbox" else "none";
"ayu_dark"
"ayu_light"
"ayu_mirage"
"codedark"
"dracula"
"everforest"
"gruvbox"
"gruvbox_light"
"gruvbox_material"
"horizon"
"iceberg_dark"
"iceberg_light"
"jellybeans"
"material"
"modus_vivendi"
"molokai"
"nightfly"
"nord"
"oceanicnext"
"onelight"
"palenight"
"papercolor_dark"
"papercolor_light"
"powerline"
"seoul256"
"solarized_dark"
"tomorrow"
"wombat"
];
in { in {
options.vim.statusline.lualine = { options.vim.statusline.lualine = {
enable = mkEnableOption "lualine statusline plugin";
setupOpts = mkPluginSetupOption "Lualine" {}; setupOpts = mkPluginSetupOption "Lualine" {};
icons.enable = mkEnableOption "icons for lualine" // {default = true;}; enable = mkEnableOption "lualine statusline plugin";
icons = {
enable = mkEnableOption "icons for lualine" // {default = true;};
};
refresh = { refresh = {
statusline = mkOption { statusline = mkOption {
@ -99,15 +73,47 @@ in {
theme = let theme = let
themeSupported = elem config.vim.theme.name supported_themes; themeSupported = elem config.vim.theme.name supported_themes;
themesConcatted = builtin_themes ++ optional themeSupported config.vim.theme.name;
in in
mkOption { mkOption {
type = enum themesConcatted; description = "Theme for lualine";
type = enum ([
"auto"
"16color"
"gruvbox"
"ayu_dark"
"ayu_light"
"ayu_mirage"
"codedark"
"dracula"
"everforest"
"gruvbox"
"gruvbox_light"
"gruvbox_material"
"horizon"
"iceberg_dark"
"iceberg_light"
"jellybeans"
"material"
"modus_vivendi"
"molokai"
"nightfly"
"nord"
"oceanicnext"
"onelight"
"palenight"
"papercolor_dark"
"papercolor_light"
"powerline"
"seoul256"
"solarized_dark"
"tomorrow"
"wombat"
]
++ optional themeSupported config.vim.theme.name);
default = "auto"; default = "auto";
# TODO: xml generation error if the closing '' is on a new line. # TODO: xml generation error if the closing '' is on a new line.
# issue: https://gitlab.com/rycee/nmd/-/issues/10 # issue: https://gitlab.com/rycee/nmd/-/issues/10
defaultText = ''`config.vim.theme.name` if theme supports lualine else "auto"''; defaultText = ''`config.vim.theme.name` if theme supports lualine else "auto"'';
description = "Theme for lualine";
}; };
sectionSeparator = { sectionSeparator = {
@ -165,14 +171,15 @@ in {
"filetype", "filetype",
colored = true, colored = true,
icon_only = true, icon_only = true,
icon = { align = 'left' } icon = { align = 'left' },
color = {bg='${colorPuccin}', fg='lavender'},
} }
'' ''
'' ''
{ {
"filename", "filename",
symbols = {modified = ' ', readonly = ' '}, color = {bg='${colorPuccin}'},
separator = {right = ''} symbols = {modified = '', readonly = ''},
} }
'' ''
]; ];
@ -193,7 +200,13 @@ in {
removed = 'DiffDelete', -- Changes the diff's removed color you removed = 'DiffDelete', -- Changes the diff's removed color you
}, },
symbols = {added = '+', modified = '~', removed = '-'}, -- Changes the diff symbols symbols = {added = '+', modified = '~', removed = '-'}, -- Changes the diff symbols
separator = {right = ''} color = {
bg='${colorPuccin}',
fg='lavender'
},
separator = {
right = ''
},
} }
'' ''
]; ];
@ -238,17 +251,18 @@ in {
return msg return msg
end, end,
icon = ' ', icon = ' ',
separator = {left = ''}, color = {bg='${colorPuccin}', fg='lavender'},
separator = {
left = '',
},
} }
'' ''
'' ''
{ {
"diagnostics", "diagnostics",
sources = {'nvim_lsp', 'nvim_diagnostic', 'nvim_diagnostic', 'vim_lsp', 'coc'}, sources = {'nvim_lsp', 'nvim_diagnostic', 'coc'},
symbols = {error = '󰅙 ', warn = ' ', info = ' ', hint = '󰌵 '}, symbols = {error = '󰅙 ', warn = ' ', info = ' ', hint = '󰌵 '},
colored = true, color = {bg='${colorPuccin}', fg='lavender'},
update_in_insert = false,
always_visible = false,
diagnostics_color = { diagnostics_color = {
color_error = { fg = 'red' }, color_error = { fg = 'red' },
color_warn = { fg = 'yellow' }, color_warn = { fg = 'yellow' },
@ -268,14 +282,14 @@ in {
'searchcount', 'searchcount',
maxcount = 999, maxcount = 999,
timeout = 120, timeout = 120,
separator = {left = ''} color = {bg='${colorPuccin}', fg='lavender'}
} }
'' ''
'' ''
{ {
"branch", "branch",
icon = ' ', icon = ' ',
separator = {left = ''} color = {bg='${colorPuccin}', fg='lavender'},
} }
'' ''
]; ];
@ -288,11 +302,15 @@ in {
'' ''
{ {
"progress", "progress",
separator = {left = ''} separator = {
left = '',
},
} }
'' ''
'' ''
{"location"} {
"location",
}
'' ''
'' ''
{ {
@ -302,44 +320,38 @@ in {
unix = '', -- e712 unix = '', -- e712
dos = '', -- e70f dos = '', -- e70f
mac = '', -- e711 mac = '', -- e711
} },
} }
'' ''
]; ];
}; };
}; };
extraActiveSection = { extraActiveSection = {
a = mkOption { a = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for activeSection.a"; description = "Extra entries for activeSection.a";
default = []; default = [];
}; };
b = mkOption { b = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for activeSection.b"; description = "Extra entries for activeSection.b";
default = []; default = [];
}; };
c = mkOption { c = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for activeSection.c"; description = "Extra entries for activeSection.c";
default = []; default = [];
}; };
x = mkOption { x = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for activeSection.x"; description = "Extra entries for activeSection.x";
default = []; default = [];
}; };
y = mkOption { y = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for activeSection.y"; description = "Extra entries for activeSection.y";
default = []; default = [];
}; };
z = mkOption { z = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for activeSection.z"; description = "Extra entries for activeSection.z";
@ -390,31 +402,26 @@ in {
description = "Extra entries for inactiveSection.a"; description = "Extra entries for inactiveSection.a";
default = []; default = [];
}; };
b = mkOption { b = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for inactiveSection.b"; description = "Extra entries for inactiveSection.b";
default = []; default = [];
}; };
c = mkOption { c = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for inactiveSection.c"; description = "Extra entries for inactiveSection.c";
default = []; default = [];
}; };
x = mkOption { x = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for inactiveSection.x"; description = "Extra entries for inactiveSection.x";
default = []; default = [];
}; };
y = mkOption { y = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for inactiveSection.y"; description = "Extra entries for inactiveSection.y";
default = []; default = [];
}; };
z = mkOption { z = mkOption {
type = listOf str; type = listOf str;
description = "Extra entries for inactiveSection.z"; description = "Extra entries for inactiveSection.z";

View file

@ -3,7 +3,7 @@
lib, lib,
... ...
}: let }: let
inherit (lib.options) mkOption mkEnableOption literalMD; inherit (lib.options) mkOption mkEnableOption literalExpression;
inherit (lib.types) package bool str listOf attrsOf; inherit (lib.types) package bool str listOf attrsOf;
inherit (lib.nvim.types) pluginsOpt extraPluginType; inherit (lib.nvim.types) pluginsOpt extraPluginType;
in { in {
@ -38,7 +38,7 @@ in {
startPlugins = pluginsOpt { startPlugins = pluginsOpt {
default = ["plenary-nvim"]; default = ["plenary-nvim"];
example = '' example = literalExpression ''
[pkgs.vimPlugins.telescope-nvim] [pkgs.vimPlugins.telescope-nvim]
''; '';
@ -54,7 +54,7 @@ in {
optPlugins = pluginsOpt { optPlugins = pluginsOpt {
default = []; default = [];
example = '' example = literalExpression ''
[pkgs.vimPlugins.vim-ghost] [pkgs.vimPlugins.vim-ghost]
''; '';
description = '' description = ''
@ -80,8 +80,7 @@ in {
your custom plugins using nvf's modified DAG library. your custom plugins using nvf's modified DAG library.
''; '';
example = literalMD '' example = literalExpression ''
```nix
with pkgs.vimPlugins; { with pkgs.vimPlugins; {
aerial = { aerial = {
package = aerial-nvim; package = aerial-nvim;
@ -94,14 +93,13 @@ in {
after = ["aerial"]; # place harpoon configuration after aerial after = ["aerial"]; # place harpoon configuration after aerial
}; };
} }
```
''; '';
}; };
extraPackages = mkOption { extraPackages = mkOption {
type = listOf package; type = listOf package;
default = []; default = [];
example = ''[pkgs.fzf pkgs.ripgrep]''; example = literalExpression ''[pkgs.fzf pkgs.ripgrep]'';
description = '' description = ''
List of additional packages to make available to the Neovim List of additional packages to make available to the Neovim
wrapper. wrapper.
@ -109,7 +107,7 @@ in {
}; };
# this defaults to `true` in the wrapper # this defaults to `true` in the wrapper
# and since we pass this value to the wrapper # and since we passs this value to the wrapper
# with an inherit, it should be `true` here as well # with an inherit, it should be `true` here as well
withRuby = withRuby =
mkEnableOption '' mkEnableOption ''
@ -120,25 +118,29 @@ in {
}; };
withNodeJs = mkEnableOption '' withNodeJs = mkEnableOption ''
NodeJs support in the Neovim wrapper NodeJs support in the Neovim wrapper.
''; '';
luaPackages = mkOption { luaPackages = mkOption {
type = listOf str; type = listOf str;
default = []; default = [];
example = ''["magick" "serpent"]''; example = literalExpression ''["magick" "serpent"]'';
description = "List of lua packages to install"; description = ''
List of lua packages to install.
'';
}; };
withPython3 = mkEnableOption '' withPython3 = mkEnableOption ''
Python3 support in the Neovim wrapper Python3 support in the Neovim wrapper.
''; '';
python3Packages = mkOption { python3Packages = mkOption {
type = listOf str; type = listOf str;
default = []; default = [];
example = ''["pynvim"]''; example = literalExpression ''["pynvim"]'';
description = "List of python packages to install"; description = ''
List of python packages to install.
'';
}; };
}; };
} }