mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-11-14 04:55:57 +01:00
Compare commits
18 commits
18f759690b
...
6c0f1bb8fb
Author | SHA1 | Date | |
---|---|---|---|
|
6c0f1bb8fb | ||
9d0247c599 | |||
f0f2c08e9f | |||
cfbed8ceb1 | |||
1ce25d7ca3 | |||
eefc7a9d1d | |||
74c94b8a54 | |||
74df3a5f03 | |||
|
7224c1e6af | ||
|
f343ab8b3a | ||
|
208d1e6741 | ||
493854e44f | |||
|
cc0aba4e21 | ||
|
db810bbf9f | ||
1fd4a2a1b8 | |||
7cafa56cdb | |||
b5f38b8e5e | |||
355d4830e5 |
13 changed files with 339 additions and 200 deletions
|
@ -73,6 +73,7 @@ inputs: let
|
|||
go.enable = isMaximal;
|
||||
elixir.enable = isMaximal;
|
||||
zig.enable = isMaximal;
|
||||
ocaml.enable = isMaximal;
|
||||
python.enable = isMaximal;
|
||||
dart.enable = isMaximal;
|
||||
bash.enable = isMaximal;
|
||||
|
|
|
@ -35,3 +35,10 @@ Release notes for release 0.7
|
|||
to nixpkgs. A pull request is currently open.
|
||||
|
||||
- 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.
|
||||
|
|
118
flake.lock
118
flake.lock
|
@ -134,11 +134,11 @@
|
|||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1715087517,
|
||||
"narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=",
|
||||
"lastModified": 1715534503,
|
||||
"narHash": "sha256-5ZSVkFadZbFP1THataCaSf0JH2cAH3S29hU9rrxTEqk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b211b392b8486ee79df6cdfb1157ad2133427a29",
|
||||
"rev": "2057814051972fa1453ddfb0d98badbea9b83c06",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -387,11 +387,11 @@
|
|||
"plugin-cmp-treesitter": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1702163214,
|
||||
"narHash": "sha256-K7F9iqmB13ONenwsbaND8F4010MvHQXp7DxMFfcsZ4A=",
|
||||
"lastModified": 1715596479,
|
||||
"narHash": "sha256-8WAk9S+/7vSz7bVHdEzjbKUokU144fvnByIeJ1gAWhU=",
|
||||
"owner": "ray-x",
|
||||
"repo": "cmp-treesitter",
|
||||
"rev": "13e4ef8f4dd5639fca2eb9150e68f47639a9b37d",
|
||||
"rev": "958fcfa0d8ce46d215e19cc3992c542f576c4123",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -483,11 +483,11 @@
|
|||
"plugin-crates-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715069896,
|
||||
"narHash": "sha256-AhjnPo3SM7o7foj5ppv0CW+jfJe6ACerq4YFgJfY3/8=",
|
||||
"lastModified": 1715690194,
|
||||
"narHash": "sha256-R1y1OIep4tcFd4mhylZ/A2zdwOmEQtCzuVBOBYu0qUI=",
|
||||
"owner": "Saecki",
|
||||
"repo": "crates.nvim",
|
||||
"rev": "7d8541ec0e3b30ac2c43864d3ee13a632e1231ed",
|
||||
"rev": "d556c00d60c9421c913ee54ff690df2a34f6264e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -611,11 +611,11 @@
|
|||
"plugin-gesture-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715081943,
|
||||
"narHash": "sha256-h6alx5TjskXYQ3H9fFfC4QyxsGbpjQkoZFVvLi1sgFI=",
|
||||
"lastModified": 1715211052,
|
||||
"narHash": "sha256-vRXQBoKhmYid1M1d4OI/PolwQIwMn1x7EgxeW6Dzj0o=",
|
||||
"owner": "notomo",
|
||||
"repo": "gesture.nvim",
|
||||
"rev": "591b350bfc87932a748f4838ad724eea6fb073e0",
|
||||
"rev": "9b3d6361b37628f8869cd237416a1674103c0dc1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -723,11 +723,11 @@
|
|||
"plugin-image-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714464812,
|
||||
"narHash": "sha256-UfJzROXnjaiF+kIaBYAt5GSL107vT5NrpXj+Gh535Yk=",
|
||||
"lastModified": 1715712794,
|
||||
"narHash": "sha256-7mZ7a9fU/6RxnzUiYxgIsZA2wGXTalfR2cPBp6kLO3Q=",
|
||||
"owner": "3rd",
|
||||
"repo": "image.nvim",
|
||||
"rev": "604692f493519128c58893c28273d4247bc71a4d",
|
||||
"rev": "b979fa1194443c97dd8cb6053a4cec163c9048f5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -755,11 +755,11 @@
|
|||
"plugin-leap-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714857300,
|
||||
"narHash": "sha256-RodnRoiQTH/+XoPk30neLiYIptPJnCvL94keIQXjq2g=",
|
||||
"lastModified": 1715716911,
|
||||
"narHash": "sha256-vRL++RVDywO6nP5dHQiO1NSQ17SMmHm4AgjTQfv642o=",
|
||||
"owner": "ggandor",
|
||||
"repo": "leap.nvim",
|
||||
"rev": "f1f19fc268b406b00b50091f51f16d9634fbe449",
|
||||
"rev": "b1ecfb63c0b8babfd0dcd6b5ca6de37bbf3526cd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -787,11 +787,11 @@
|
|||
"plugin-lsp-signature": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1710647656,
|
||||
"narHash": "sha256-O7y7pcCvF0xUFamG+wMLe4mC6hUQ679rJV+ZUoWB0oY=",
|
||||
"lastModified": 1715342515,
|
||||
"narHash": "sha256-f4AuZnt2m2VA90baSbZt6+elzjXmJKPFTO28v8auoYc=",
|
||||
"owner": "ray-x",
|
||||
"repo": "lsp_signature.nvim",
|
||||
"rev": "c6aeb2f1d2538bbdfdaab1664d9d4c3c75aa9db8",
|
||||
"rev": "aed5d1162b0f07bb3af34bedcc5f70a2b6466ed8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -931,11 +931,11 @@
|
|||
"plugin-noice-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714737209,
|
||||
"narHash": "sha256-jR9tX6AhY+DXPqGXqGqCkG/sL9+mLxpwOqfwjHHN0Ac=",
|
||||
"lastModified": 1715763787,
|
||||
"narHash": "sha256-sn8CiNq9JJXIxB6EEX98XaHhwyBPP7X1zqYMHLgdqd0=",
|
||||
"owner": "folke",
|
||||
"repo": "noice.nvim",
|
||||
"rev": "f4decbc7a80229ccc9f86026b74bdcf0c39e38a7",
|
||||
"rev": "61947de3d5904375ea94e0c13db2537488ad9829",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1012,11 +1012,11 @@
|
|||
"plugin-nvim-cmp": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715160812,
|
||||
"narHash": "sha256-/zTOFwCSBETBgkILpP8h82ZjN7LiMV0Uk5d2TEnQVU4=",
|
||||
"lastModified": 1715507122,
|
||||
"narHash": "sha256-wyHbTXFqvt3kXo+EaHdrEggMDOnw4enAAf4pA9ZQm2g=",
|
||||
"owner": "hrsh7th",
|
||||
"repo": "nvim-cmp",
|
||||
"rev": "cd2cf0c124d3de577fb5449746568ee8e601afc8",
|
||||
"rev": "24122371810089d390847d8ba66325c1f1aa64c0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1076,11 +1076,11 @@
|
|||
"plugin-nvim-dap": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713432622,
|
||||
"narHash": "sha256-kEn2INrNMQSLHY3gpSVV+cTx9f1nFeUCM6by9WGn5Sg=",
|
||||
"lastModified": 1715700682,
|
||||
"narHash": "sha256-Gh1Vt8NLZ2MZUUB2EmTWYM0owUrpIpVyzxBgyBOwXWk=",
|
||||
"owner": "mfussenegger",
|
||||
"repo": "nvim-dap",
|
||||
"rev": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb",
|
||||
"rev": "559d0bbdbc4be4c7e774423061263771be1dbde8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1140,11 +1140,11 @@
|
|||
"plugin-nvim-lspconfig": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715152811,
|
||||
"narHash": "sha256-LMzLDbkKVmRRhwaUaroCRGUsKe/fwzgwV1gbvr/t6WQ=",
|
||||
"lastModified": 1715682701,
|
||||
"narHash": "sha256-kmo8UfTxarnxZLjL2qOeh4Jo/krxx3uqq073YnsFYxQ=",
|
||||
"owner": "neovim",
|
||||
"repo": "nvim-lspconfig",
|
||||
"rev": "a3d9395455f2b2e3b50a0b0f37b8b4c23683f44a",
|
||||
"rev": "a27179f56c6f98a4cdcc79ee2971b514815a4940",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1236,11 +1236,11 @@
|
|||
"plugin-nvim-session-manager": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714905094,
|
||||
"narHash": "sha256-VduhmnnRPIdi6GZ+TZUnZfpY4Lt8z5JBTKgl7oobtdY=",
|
||||
"lastModified": 1715419340,
|
||||
"narHash": "sha256-SrJJWC/newJRB879zMUbLzOJQ8qtcHfLF/7GLPFlSRQ=",
|
||||
"owner": "Shatur",
|
||||
"repo": "neovim-session-manager",
|
||||
"rev": "892c55f7256fe170301a1fdd21752982c75c3507",
|
||||
"rev": "a0b9d25154be573bc0f99877afb3f57cf881cce7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1268,11 +1268,11 @@
|
|||
"plugin-nvim-tree-lua": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714794673,
|
||||
"narHash": "sha256-rY4FbuqBM4zOUkaA3QBc+UrpfTha8uGtp+lIzrYK+cg=",
|
||||
"lastModified": 1715647490,
|
||||
"narHash": "sha256-YqHAEztx6gEEm0GoDXC5djnIP030oGGRcskp8LPqVoc=",
|
||||
"owner": "nvim-tree",
|
||||
"repo": "nvim-tree.lua",
|
||||
"rev": "64f61e4c913047a045ff90bd188dd3b54ee443cf",
|
||||
"rev": "2bc725a3ebc23f0172fb0ab4d1134b81bcc13812",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1284,11 +1284,11 @@
|
|||
"plugin-nvim-treesitter-context": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714689136,
|
||||
"narHash": "sha256-gHbLt0ApyPPQU8Q+lde0Zv8XBR6pESKzvIzIXHkd5eI=",
|
||||
"lastModified": 1715659155,
|
||||
"narHash": "sha256-EYAIm8qicpfvOzg5xPWRwuWMPcUa/hg+q3so+s9sw5g=",
|
||||
"owner": "nvim-treesitter",
|
||||
"repo": "nvim-treesitter-context",
|
||||
"rev": "2650e6431f7daba5d9c2c64134fa5eb2312eb3d7",
|
||||
"rev": "df58c81237ffe2b277e14a1692212162a34e2e2a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1316,11 +1316,11 @@
|
|||
"plugin-nvim-web-devicons": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715028064,
|
||||
"narHash": "sha256-DSUTxUFCesXuaJjrDNvurILUt1IrO5MI5ukbZ8D87zQ=",
|
||||
"lastModified": 1715644375,
|
||||
"narHash": "sha256-1trRSUVyWFl3K+7xHXQGNl/EwE0ggyigQpZ+kmRPsk8=",
|
||||
"owner": "nvim-tree",
|
||||
"repo": "nvim-web-devicons",
|
||||
"rev": "5b9067899ee6a2538891573500e8fd6ff008440f",
|
||||
"rev": "e37bb1feee9e7320c76050a55443fa843b4b6f83",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1348,11 +1348,11 @@
|
|||
"plugin-onedark": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1706527208,
|
||||
"narHash": "sha256-1+aO8vrUGEe/NIVI1C1xJyuQVPQZ1s510lopkEVP7No=",
|
||||
"lastModified": 1715454207,
|
||||
"narHash": "sha256-GERMsVNELbeRrKsiPeSKcwNI+bH4C79koTBRtRMGqvc=",
|
||||
"owner": "navarasu",
|
||||
"repo": "onedark.nvim",
|
||||
"rev": "1230aaf2a427b2c5b73aba6e4a9a5881d3e69429",
|
||||
"rev": "8e4b79b0e6495ddf29552178eceba1e147e6cecf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1364,11 +1364,11 @@
|
|||
"plugin-orgmode-nvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715114055,
|
||||
"narHash": "sha256-SmofuYt4fLhtl5qedYlmCRgOmZaw3nmlnMg0OMzyKnM=",
|
||||
"lastModified": 1715684611,
|
||||
"narHash": "sha256-T/vjpYbrq1LTNitnSGGmguVr5UV83AFhNGmeNS2H9J0=",
|
||||
"owner": "nvim-orgmode",
|
||||
"repo": "orgmode",
|
||||
"rev": "cda615fa7c8607bfb7aaf7d2c9424dd5969f2625",
|
||||
"rev": "8ec0bcc6f6476d246159f738081256c97a7a9b2c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1444,11 +1444,11 @@
|
|||
"plugin-rose-pine": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1713451685,
|
||||
"lastModified": 1715697761,
|
||||
"narHash": "sha256-AdPSz5+nCOnLWexBasHuxRxEKbL4WVg+uV78//W5nLs=",
|
||||
"owner": "rose-pine",
|
||||
"repo": "neovim",
|
||||
"rev": "17b466e79479758b332a3cac12544a3ad2be6241",
|
||||
"rev": "b6fe88c3282cf9f117a3e836d761c2d78d02f417",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1540,11 +1540,11 @@
|
|||
"plugin-telescope": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714700089,
|
||||
"narHash": "sha256-SoEetPE7f7Y0kUa4+7dH+EOs/0WBsMDxeOkbVNuoSjE=",
|
||||
"lastModified": 1715697240,
|
||||
"narHash": "sha256-lHMbJAQ0ja2UrUantxQOVWMG502oo6QDod7AmpCw1yE=",
|
||||
"owner": "nvim-telescope",
|
||||
"repo": "telescope.nvim",
|
||||
"rev": "fac83a556e7b710dc31433dec727361ca062dbe9",
|
||||
"rev": "6f6bb8065567b56c42e283b06e8a1c670c0092a1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -1636,11 +1636,11 @@
|
|||
"plugin-vim-fugitive": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1714601825,
|
||||
"narHash": "sha256-0ujueJ226zEmjkFwodSukO1Zu5gMvTmx/dCtT5VBhek=",
|
||||
"lastModified": 1715753556,
|
||||
"narHash": "sha256-icKBJ/1J15h4dNS7NMfjMM/kjMPy8YMiyTI2pGTwYJY=",
|
||||
"owner": "tpope",
|
||||
"repo": "vim-fugitive",
|
||||
"rev": "ce882460cf3db12e99f8bf579cbf99e331f6dd4f",
|
||||
"rev": "5b0347b5231a0f40abc311ccaf7bbf02d3ce3a5a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
nixosModules.neovim-flake has been deprecated.
|
||||
Please use the nixosModules.nvf instead
|
||||
''
|
||||
self.nixosModules.neovim-flake;
|
||||
self.nixosModules.nvf;
|
||||
|
||||
nvf = {
|
||||
imports = [(import ./flake/modules/nixos.nix self.packages inputs)];
|
||||
|
|
|
@ -25,7 +25,7 @@ inputs: {
|
|||
# check can be disabled while calling this file is called
|
||||
# to avoid checking in all modules
|
||||
nvimModules = import ./modules.nix {
|
||||
inherit check pkgs;
|
||||
inherit pkgs check;
|
||||
lib = extendedLib;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
check ? true,
|
||||
pkgs,
|
||||
lib,
|
||||
check ? true,
|
||||
}: let
|
||||
inherit (lib.modules) mkDefault;
|
||||
inherit (lib.lists) concatLists;
|
||||
|
|
|
@ -14,6 +14,7 @@ in {
|
|||
./markdown.nix
|
||||
./nim.nix
|
||||
./nix.nix
|
||||
./ocaml.nix
|
||||
./php.nix
|
||||
./python.nix
|
||||
./rust.nix
|
||||
|
|
105
modules/plugins/languages/ocaml.nix
Normal file
105
modules/plugins/languages/ocaml.nix
Normal file
|
@ -0,0 +1,105 @@
|
|||
{
|
||||
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];
|
||||
})
|
||||
]);
|
||||
}
|
|
@ -5,6 +5,7 @@
|
|||
}: let
|
||||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.attrsets) mapAttrs;
|
||||
inherit (lib.trivial) boolToString;
|
||||
inherit (lib.nvim.dag) entryAnywhere entryAfter entryBetween;
|
||||
|
||||
cfg = config.vim.lsp;
|
||||
|
@ -12,26 +13,36 @@ in {
|
|||
config = mkIf cfg.null-ls.enable (mkMerge [
|
||||
{
|
||||
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;
|
||||
startPlugins = ["none-ls"];
|
||||
|
||||
luaConfigRC.null_ls-setup = entryAnywhere ''
|
||||
local null_ls = require("null-ls")
|
||||
local null_helpers = require("null-ls.helpers")
|
||||
local null_methods = require("null-ls.methods")
|
||||
local ls_sources = {}
|
||||
'';
|
||||
luaConfigRC = {
|
||||
# early setup for null-ls
|
||||
null_ls-setup = entryAnywhere ''
|
||||
local null_ls = require("null-ls")
|
||||
local null_helpers = require("null-ls.helpers")
|
||||
local null_methods = require("null-ls.methods")
|
||||
local ls_sources = {}
|
||||
'';
|
||||
|
||||
luaConfigRC.null_ls = entryAfter ["null_ls-setup" "lsp-setup"] ''
|
||||
require('null-ls').setup({
|
||||
debug = false,
|
||||
diagnostics_format = "[#{m}] #{s} (#{c})",
|
||||
debounce = 250,
|
||||
default_timeout = 5000,
|
||||
sources = ls_sources,
|
||||
on_attach = default_on_attach
|
||||
})
|
||||
'';
|
||||
# null-ls setup
|
||||
null_ls = entryAfter ["null_ls-setup" "lsp-setup"] ''
|
||||
require('null-ls').setup({
|
||||
debug = ${boolToString cfg.null-ls.debug},
|
||||
diagnostics_format = "${cfg.null-ls.diagnostics_format}",
|
||||
debounce = ${toString cfg.null-ls.debounce},
|
||||
default_timeout = ${toString cfg.null-ls.default_timeout},
|
||||
sources = ls_sources,
|
||||
on_attach = default_on_attach
|
||||
})
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
{
|
||||
|
|
|
@ -1,10 +1,30 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib.options) mkEnableOption mkOption;
|
||||
inherit (lib.types) attrsOf str;
|
||||
inherit (lib.types) attrsOf str int;
|
||||
in {
|
||||
options.vim.lsp.null-ls = {
|
||||
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 {
|
||||
description = "null-ls sources";
|
||||
type = attrsOf str;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (builtins) map;
|
||||
inherit (lib.modules) mkIf mkMerge;
|
||||
inherit (lib.trivial) boolToString;
|
||||
inherit (lib.nvim.dag) entryAnywhere;
|
||||
|
@ -31,44 +32,46 @@ in {
|
|||
};
|
||||
})
|
||||
(mkIf cfg.enable {
|
||||
vim.startPlugins = [
|
||||
"lualine"
|
||||
];
|
||||
vim = {
|
||||
startPlugins = ["lualine"];
|
||||
|
||||
vim.luaConfigRC.lualine = entryAnywhere ''
|
||||
local lualine = require('lualine')
|
||||
lualine.setup ${toLuaObject cfg.setupOpts}
|
||||
'';
|
||||
luaConfigRC.lualine = entryAnywhere ''
|
||||
local lualine = require('lualine')
|
||||
lualine.setup ${toLuaObject cfg.setupOpts}
|
||||
'';
|
||||
|
||||
# this is for backwards-compatibility
|
||||
vim.statusline.lualine.setupOpts = {
|
||||
options = {
|
||||
icons_enabled = cfg.icons.enable;
|
||||
theme = cfg.theme;
|
||||
component_separators = [cfg.componentSeparator.left cfg.componentSeparator.right];
|
||||
section_separators = [cfg.sectionSeparator.left cfg.sectionSeparator.right];
|
||||
globalstatus = cfg.globalStatus;
|
||||
refresh = cfg.refresh;
|
||||
};
|
||||
# this is for backwards-compatibility
|
||||
statusline.lualine.setupOpts = {
|
||||
options = {
|
||||
icons_enabled = cfg.icons.enable;
|
||||
theme = cfg.theme;
|
||||
component_separators = [cfg.componentSeparator.left cfg.componentSeparator.right];
|
||||
section_separators = [cfg.sectionSeparator.left cfg.sectionSeparator.right];
|
||||
globalstatus = cfg.globalStatus;
|
||||
refresh = cfg.refresh;
|
||||
};
|
||||
|
||||
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);
|
||||
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 = [];
|
||||
};
|
||||
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 = [];
|
||||
};
|
||||
})
|
||||
];
|
||||
|
|
|
@ -10,19 +10,45 @@
|
|||
inherit (lib.nvim.types) mkPluginSetupOption;
|
||||
|
||||
supported_themes = import ./supported_themes.nix;
|
||||
colorPuccin =
|
||||
if config.vim.statusline.lualine.theme == "catppuccin"
|
||||
then "#181825"
|
||||
else "none";
|
||||
builtin_themes = [
|
||||
"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"
|
||||
];
|
||||
in {
|
||||
options.vim.statusline.lualine = {
|
||||
enable = mkEnableOption "lualine statusline plugin";
|
||||
setupOpts = mkPluginSetupOption "Lualine" {};
|
||||
|
||||
enable = mkEnableOption "lualine statusline plugin";
|
||||
|
||||
icons = {
|
||||
enable = mkEnableOption "icons for lualine" // {default = true;};
|
||||
};
|
||||
icons.enable = mkEnableOption "icons for lualine" // {default = true;};
|
||||
|
||||
refresh = {
|
||||
statusline = mkOption {
|
||||
|
@ -73,47 +99,15 @@ in {
|
|||
|
||||
theme = let
|
||||
themeSupported = elem config.vim.theme.name supported_themes;
|
||||
themesConcatted = builtin_themes ++ optional themeSupported config.vim.theme.name;
|
||||
in
|
||||
mkOption {
|
||||
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);
|
||||
type = enum themesConcatted;
|
||||
default = "auto";
|
||||
# TODO: xml generation error if the closing '' is on a new line.
|
||||
# issue: https://gitlab.com/rycee/nmd/-/issues/10
|
||||
defaultText = ''`config.vim.theme.name` if theme supports lualine else "auto"'';
|
||||
description = "Theme for lualine";
|
||||
};
|
||||
|
||||
sectionSeparator = {
|
||||
|
@ -171,15 +165,14 @@ in {
|
|||
"filetype",
|
||||
colored = true,
|
||||
icon_only = true,
|
||||
icon = { align = 'left' },
|
||||
color = {bg='${colorPuccin}', fg='lavender'},
|
||||
icon = { align = 'left' }
|
||||
}
|
||||
''
|
||||
''
|
||||
{
|
||||
"filename",
|
||||
color = {bg='${colorPuccin}'},
|
||||
symbols = {modified = '', readonly = ''},
|
||||
symbols = {modified = ' ', readonly = ' '},
|
||||
separator = {right = ''}
|
||||
}
|
||||
''
|
||||
];
|
||||
|
@ -200,13 +193,7 @@ in {
|
|||
removed = 'DiffDelete', -- Changes the diff's removed color you
|
||||
},
|
||||
symbols = {added = '+', modified = '~', removed = '-'}, -- Changes the diff symbols
|
||||
color = {
|
||||
bg='${colorPuccin}',
|
||||
fg='lavender'
|
||||
},
|
||||
separator = {
|
||||
right = ''
|
||||
},
|
||||
separator = {right = ''}
|
||||
}
|
||||
''
|
||||
];
|
||||
|
@ -251,18 +238,17 @@ in {
|
|||
return msg
|
||||
end,
|
||||
icon = ' ',
|
||||
color = {bg='${colorPuccin}', fg='lavender'},
|
||||
separator = {
|
||||
left = '',
|
||||
},
|
||||
separator = {left = ''},
|
||||
}
|
||||
''
|
||||
''
|
||||
{
|
||||
"diagnostics",
|
||||
sources = {'nvim_lsp', 'nvim_diagnostic', 'coc'},
|
||||
sources = {'nvim_lsp', 'nvim_diagnostic', 'nvim_diagnostic', 'vim_lsp', 'coc'},
|
||||
symbols = {error = ' ', warn = ' ', info = ' ', hint = ' '},
|
||||
color = {bg='${colorPuccin}', fg='lavender'},
|
||||
colored = true,
|
||||
update_in_insert = false,
|
||||
always_visible = false,
|
||||
diagnostics_color = {
|
||||
color_error = { fg = 'red' },
|
||||
color_warn = { fg = 'yellow' },
|
||||
|
@ -282,14 +268,14 @@ in {
|
|||
'searchcount',
|
||||
maxcount = 999,
|
||||
timeout = 120,
|
||||
color = {bg='${colorPuccin}', fg='lavender'}
|
||||
separator = {left = ''}
|
||||
}
|
||||
''
|
||||
''
|
||||
{
|
||||
"branch",
|
||||
icon = ' •',
|
||||
color = {bg='${colorPuccin}', fg='lavender'},
|
||||
separator = {left = ''}
|
||||
}
|
||||
''
|
||||
];
|
||||
|
@ -302,15 +288,11 @@ in {
|
|||
''
|
||||
{
|
||||
"progress",
|
||||
separator = {
|
||||
left = '',
|
||||
},
|
||||
separator = {left = ''}
|
||||
}
|
||||
''
|
||||
''
|
||||
{
|
||||
"location",
|
||||
}
|
||||
{"location"}
|
||||
''
|
||||
''
|
||||
{
|
||||
|
@ -320,38 +302,44 @@ in {
|
|||
unix = '', -- e712
|
||||
dos = '', -- e70f
|
||||
mac = '', -- e711
|
||||
},
|
||||
}
|
||||
}
|
||||
''
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
extraActiveSection = {
|
||||
a = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for activeSection.a";
|
||||
default = [];
|
||||
};
|
||||
|
||||
b = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for activeSection.b";
|
||||
default = [];
|
||||
};
|
||||
|
||||
c = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for activeSection.c";
|
||||
default = [];
|
||||
};
|
||||
|
||||
x = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for activeSection.x";
|
||||
default = [];
|
||||
};
|
||||
|
||||
y = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for activeSection.y";
|
||||
default = [];
|
||||
};
|
||||
|
||||
z = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for activeSection.z";
|
||||
|
@ -402,26 +390,31 @@ in {
|
|||
description = "Extra entries for inactiveSection.a";
|
||||
default = [];
|
||||
};
|
||||
|
||||
b = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for inactiveSection.b";
|
||||
default = [];
|
||||
};
|
||||
|
||||
c = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for inactiveSection.c";
|
||||
default = [];
|
||||
};
|
||||
|
||||
x = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for inactiveSection.x";
|
||||
default = [];
|
||||
};
|
||||
|
||||
y = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for inactiveSection.y";
|
||||
default = [];
|
||||
};
|
||||
|
||||
z = mkOption {
|
||||
type = listOf str;
|
||||
description = "Extra entries for inactiveSection.z";
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.options) mkOption mkEnableOption literalExpression;
|
||||
inherit (lib.options) mkOption mkEnableOption literalMD;
|
||||
inherit (lib.types) package bool str listOf attrsOf;
|
||||
inherit (lib.nvim.types) pluginsOpt extraPluginType;
|
||||
in {
|
||||
|
@ -38,7 +38,7 @@ in {
|
|||
|
||||
startPlugins = pluginsOpt {
|
||||
default = ["plenary-nvim"];
|
||||
example = literalExpression ''
|
||||
example = ''
|
||||
[pkgs.vimPlugins.telescope-nvim]
|
||||
'';
|
||||
|
||||
|
@ -54,7 +54,7 @@ in {
|
|||
|
||||
optPlugins = pluginsOpt {
|
||||
default = [];
|
||||
example = literalExpression ''
|
||||
example = ''
|
||||
[pkgs.vimPlugins.vim-ghost]
|
||||
'';
|
||||
description = ''
|
||||
|
@ -80,7 +80,8 @@ in {
|
|||
your custom plugins using nvf's modified DAG library.
|
||||
'';
|
||||
|
||||
example = literalExpression ''
|
||||
example = literalMD ''
|
||||
```nix
|
||||
with pkgs.vimPlugins; {
|
||||
aerial = {
|
||||
package = aerial-nvim;
|
||||
|
@ -93,13 +94,14 @@ in {
|
|||
after = ["aerial"]; # place harpoon configuration after aerial
|
||||
};
|
||||
}
|
||||
```
|
||||
'';
|
||||
};
|
||||
|
||||
extraPackages = mkOption {
|
||||
type = listOf package;
|
||||
default = [];
|
||||
example = literalExpression ''[pkgs.fzf pkgs.ripgrep]'';
|
||||
example = ''[pkgs.fzf pkgs.ripgrep]'';
|
||||
description = ''
|
||||
List of additional packages to make available to the Neovim
|
||||
wrapper.
|
||||
|
@ -107,7 +109,7 @@ in {
|
|||
};
|
||||
|
||||
# this defaults to `true` in the wrapper
|
||||
# and since we passs this value to the wrapper
|
||||
# and since we pass this value to the wrapper
|
||||
# with an inherit, it should be `true` here as well
|
||||
withRuby =
|
||||
mkEnableOption ''
|
||||
|
@ -118,29 +120,25 @@ in {
|
|||
};
|
||||
|
||||
withNodeJs = mkEnableOption ''
|
||||
NodeJs support in the Neovim wrapper.
|
||||
NodeJs support in the Neovim wrapper
|
||||
'';
|
||||
|
||||
luaPackages = mkOption {
|
||||
type = listOf str;
|
||||
default = [];
|
||||
example = literalExpression ''["magick" "serpent"]'';
|
||||
description = ''
|
||||
List of lua packages to install.
|
||||
'';
|
||||
example = ''["magick" "serpent"]'';
|
||||
description = "List of lua packages to install";
|
||||
};
|
||||
|
||||
withPython3 = mkEnableOption ''
|
||||
Python3 support in the Neovim wrapper.
|
||||
Python3 support in the Neovim wrapper
|
||||
'';
|
||||
|
||||
python3Packages = mkOption {
|
||||
type = listOf str;
|
||||
default = [];
|
||||
example = literalExpression ''["pynvim"]'';
|
||||
description = ''
|
||||
List of python packages to install.
|
||||
'';
|
||||
example = ''["pynvim"]'';
|
||||
description = "List of python packages to install";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue