aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/nv/nvim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/by-name/nv/nvim/autocmds/default.nix9
-rw-r--r--modules/by-name/nv/nvim/clipboard/default.nix9
-rw-r--r--modules/by-name/nv/nvim/mappings/default.nix50
-rw-r--r--modules/by-name/nv/nvim/module.nix54
-rw-r--r--modules/by-name/nv/nvim/options/default.nix10
-rw-r--r--modules/by-name/nv/nvim/performance/default.nix24
-rw-r--r--modules/by-name/nv/nvim/plgs/colorscheme/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/colorscheme/lua/mk_todos_readable.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/colorscheme/lua/nightfox.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/comment-nvim/default.nix10
-rw-r--r--modules/by-name/nv/nvim/plgs/debugprint/default.nix73
-rw-r--r--modules/by-name/nv/nvim/plgs/debugprint/lua/debugprint.lua3
-rw-r--r--modules/by-name/nv/nvim/plgs/default.nix33
-rw-r--r--modules/by-name/nv/nvim/plgs/femaco/default.nix22
-rw-r--r--modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua23
-rw-r--r--modules/by-name/nv/nvim/plgs/flatten-nvim/default.nix24
-rw-r--r--modules/by-name/nv/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua104
-rw-r--r--modules/by-name/nv/nvim/plgs/goto-preview/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/goto-preview/lua/goto-preview.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/harpoon/default.nix125
-rw-r--r--modules/by-name/nv/nvim/plgs/leap/default.nix65
-rw-r--r--modules/by-name/nv/nvim/plgs/lf-nvim/default.nix96
-rw-r--r--modules/by-name/nv/nvim/plgs/lf-nvim/lua/lf-nvim.lua43
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp-progress-nvim/default.nix53
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua146
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/keymaps/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/default.nix13
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/bashls.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/ccls.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/ltex.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/lua-ls.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/nil-ls.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/openscad.nix34
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/pylyzer.nix19
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/quick-lint-js.nix17
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/ruff-lsp.nix11
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/rust-analyzer.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/texlab.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/lsp/servers/servers/zls.nix30
-rw-r--r--modules/by-name/nv/nvim/plgs/lspkind/default.nix11
-rw-r--r--modules/by-name/nv/nvim/plgs/ltex_extra/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/ltex_extra/lua/ltex_extra.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/lualine/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/default.nix86
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/lua/luasnip.lua7
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/all.lua211
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/html/html.lua102
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua28
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/greek.lua37
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/snippets/all.lua322
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua41
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/greek.lua49
-rw-r--r--modules/by-name/nv/nvim/plgs/neorg/default.nix19
-rw-r--r--modules/by-name/nv/nvim/plgs/neorg/key_mappings.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/nvim-cmp/default.nix128
-rw-r--r--modules/by-name/nv/nvim/plgs/nvim-lint/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/nvim-lint/lua/nvim-lint.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/raw_plugins/default.nix17
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/defaults/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/tex.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/frecency/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/fzy-native/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua10
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/extensions/symbols/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/telescope/keymaps/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/todo-comments/default.nix9
-rw-r--r--modules/by-name/nv/nvim/plgs/treesitter/default.nix65
-rw-r--r--modules/by-name/nv/nvim/plgs/vim-tex/default.nix12
-rw-r--r--modules/by-name/nv/nvim/plgs/which-key/default.nix9
74 files changed, 1317 insertions, 1223 deletions
diff --git a/modules/by-name/nv/nvim/autocmds/default.nix b/modules/by-name/nv/nvim/autocmds/default.nix
index 54fd6831..706f1bbd 100644
--- a/modules/by-name/nv/nvim/autocmds/default.nix
+++ b/modules/by-name/nv/nvim/autocmds/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/clipboard/default.nix b/modules/by-name/nv/nvim/clipboard/default.nix
index 4cc3bd8a..f6348e44 100644
--- a/modules/by-name/nv/nvim/clipboard/default.nix
+++ b/modules/by-name/nv/nvim/clipboard/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/mappings/default.nix b/modules/by-name/nv/nvim/mappings/default.nix
index 4b6344c2..683b0465 100644
--- a/modules/by-name/nv/nvim/mappings/default.nix
+++ b/modules/by-name/nv/nvim/mappings/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -18,34 +27,6 @@ in {
action = "<cmd>noh<CR><Esc>";
options.desc = "Disable the search highlighting and send Escape";
}
- {
- key = "hh";
- mode = ["i"];
- action.__raw = ''
- function()
- local cmp = require('cmp');
- local luasnip = require('luasnip');
-
- if cmp.visible() then
- cmp.select_next_item()
- elseif luasnip.expand_or_locally_jumpable() then
- luasnip.expand_or_jump()
- end
- end
- '';
- options.desc = "completion trigger/ forward in completen menu";
- }
- {
- key = "uu";
- mode = ["i"];
- action.__raw = ''
- function()
- local cmp = require('cmp');
- cmp.confirm()
- end
- '';
- options.desc = "confirm the selected item";
- }
{
key = "<C-Tab>";
@@ -208,12 +189,13 @@ in {
action = "\"_dP";
options.desc = "keep the cut thing in the base register";
}
- {
- mode = ["n"];
- key = "<leader>c";
- action = "\"_c";
- options.desc = "change without saving to register";
- }
+ # Overlaps with the femaco mapping (`<Space>cc`).
+ # {
+ # mode = ["n"];
+ # key = "<leader>c";
+ # action = "\"_c";
+ # options.desc = "change without saving to register";
+ # }
{
mode = ["n"];
diff --git a/modules/by-name/nv/nvim/module.nix b/modules/by-name/nv/nvim/module.nix
index 0eb416f6..860610bd 100644
--- a/modules/by-name/nv/nvim/module.nix
+++ b/modules/by-name/nv/nvim/module.nix
@@ -1,18 +1,37 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
lib,
config,
+ modules,
+ libraries,
...
}: let
cfg = config.soispha.programs.nvim;
+
+ plgs = builtins.attrValues (libraries.extra.mkByName {
+ useShards = false;
+ baseDirectory = ./plgs;
+ fileName = "default.nix";
+ });
in {
- imports = [
- ./autocmds
- ./clipboard
- ./mappings
- ./options
- ./plgs
- ];
+ imports =
+ [
+ ./autocmds
+ ./clipboard
+ ./mappings
+ ./options
+ ./performance
+ ]
+ ++ plgs;
options.soispha.programs.nvim = {
enable = lib.mkEnableOption "custom nvim config";
@@ -23,12 +42,21 @@ in {
};
config = lib.mkIf cfg.enable {
+ soispha.services.unison.pathsToSync = [
+ "~/.local/state/nvim"
+ ];
+
home-manager.users.soispha = {
+ imports = [
+ modules.nixvim.homeModules.nixvim
+ ];
+
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
CODEEDITOR = "nvim";
};
+
programs.nixvim = {
enable = true;
@@ -49,21 +77,21 @@ in {
---------------------------------------------------------------------------
'';
- extraPackages = with pkgs; [
+ extraPackages = [
/*
These are mostly linters and formatters used for different file types.
Including them here is fine, as they are not necessarily-sync able to different people.
*/
# nix
- alejandra
- statix
+ pkgs.alejandra
+ pkgs.statix
# yaml
- yamllint
+ pkgs.yamllint
# shell
- shellcheck
- shfmt
+ pkgs.shellcheck
+ pkgs.shfmt
];
};
};
diff --git a/modules/by-name/nv/nvim/options/default.nix b/modules/by-name/nv/nvim/options/default.nix
index be475b13..301f0ac0 100644
--- a/modules/by-name/nv/nvim/options/default.nix
+++ b/modules/by-name/nv/nvim/options/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -23,7 +32,6 @@ in {
confirm = true; # confirm to save changes before closing modified buffer
colorcolumn = "+1"; # show a +1 before the 'textwidth'
- completeopt = ["menuone" "noselect"]; # have a better completion experience
# https://www.compart.com/en/unicode/U+XXXX (unicode character code)
fillchars = {
diff --git a/modules/by-name/nv/nvim/performance/default.nix b/modules/by-name/nv/nvim/performance/default.nix
new file mode 100644
index 00000000..a392a672
--- /dev/null
+++ b/modules/by-name/nv/nvim/performance/default.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.soispha.programs.nvim;
+in {
+ home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+ performance = {
+ combinePlugins = {
+ enable = true;
+ };
+
+ byteCompileLua = {
+ enable = true;
+ configs = true;
+ initLua = true;
+ luaLib = true;
+ nvimRuntime = true;
+ plugins = true;
+ };
+ };
+ };
+}
diff --git a/modules/by-name/nv/nvim/plgs/colorscheme/default.nix b/modules/by-name/nv/nvim/plgs/colorscheme/default.nix
index ebc26826..f8cd5892 100644
--- a/modules/by-name/nv/nvim/plgs/colorscheme/default.nix
+++ b/modules/by-name/nv/nvim/plgs/colorscheme/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
config,
diff --git a/modules/by-name/nv/nvim/plgs/colorscheme/lua/mk_todos_readable.lua b/modules/by-name/nv/nvim/plgs/colorscheme/lua/mk_todos_readable.lua
index d02171b5..44c76084 100644
--- a/modules/by-name/nv/nvim/plgs/colorscheme/lua/mk_todos_readable.lua
+++ b/modules/by-name/nv/nvim/plgs/colorscheme/lua/mk_todos_readable.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
local opts = { bg = "NONE", bold = true }
---@param hl_group string: The name of the hl group
diff --git a/modules/by-name/nv/nvim/plgs/colorscheme/lua/nightfox.lua b/modules/by-name/nv/nvim/plgs/colorscheme/lua/nightfox.lua
index 4c502153..38f6f0a1 100644
--- a/modules/by-name/nv/nvim/plgs/colorscheme/lua/nightfox.lua
+++ b/modules/by-name/nv/nvim/plgs/colorscheme/lua/nightfox.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
require("nightfox").setup({
options = {
-- Compiled file's destination location
diff --git a/modules/by-name/nv/nvim/plgs/comment-nvim/default.nix b/modules/by-name/nv/nvim/plgs/comment-nvim/default.nix
index bd70c5c2..68a88d32 100644
--- a/modules/by-name/nv/nvim/plgs/comment-nvim/default.nix
+++ b/modules/by-name/nv/nvim/plgs/comment-nvim/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -17,6 +26,7 @@ in {
};
};
};
+
keymaps = [
{
key = "gcc";
diff --git a/modules/by-name/nv/nvim/plgs/debugprint/default.nix b/modules/by-name/nv/nvim/plgs/debugprint/default.nix
deleted file mode 100644
index 4a3af1c5..00000000
--- a/modules/by-name/nv/nvim/plgs/debugprint/default.nix
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- pkgs,
- lib,
- config,
- ...
-}: let
- cfg = config.soispha.programs.nvim;
-in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- # TODO: package debugprint though a module
- extraConfigLuaPost = ''
- ${lib.strings.fileContents ./lua/debugprint.lua}
- '';
- extraPlugins = [
- pkgs.vimExtraPlugins.debugprint-nvim
- ];
-
- keymaps = [
- {
- key = "g?v";
- mode = ["v" "n"];
- action.__raw = ''
- function()
- return require('debugprint').debugprint({variable = true;});
- end
- '';
- options.expr = true;
- options.desc = ''
- 'variable' debug line below the current line
- '';
- }
- {
- key = "g?V";
- mode = ["v" "n"];
- action.__raw = ''
- function()
- return require('debugprint').debugprint({above = true; variable = true;}) ;
- end
- '';
- options.expr = true;
- options.desc = ''
- 'variable' debug line above the current line
- '';
- }
- {
- key = "g?p";
- mode = "n";
- action.__raw = ''
- function()
- return require('debugprint').debugprint();
- end
- '';
- options.expr = true;
- options.desc = ''
- 'plain' debug line below the current line
- '';
- }
- {
- key = "g?P";
- mode = "n";
- action.__raw = ''
- function()
- return require('debugprint').debugprint({above = true;});
- end
- '';
- options.expr = true;
- options.desc = ''
- 'plain' debug line above the current line
- '';
- }
- ];
- };
-}
diff --git a/modules/by-name/nv/nvim/plgs/debugprint/lua/debugprint.lua b/modules/by-name/nv/nvim/plgs/debugprint/lua/debugprint.lua
deleted file mode 100644
index da7e1735..00000000
--- a/modules/by-name/nv/nvim/plgs/debugprint/lua/debugprint.lua
+++ /dev/null
@@ -1,3 +0,0 @@
-require("debugprint").setup({
- create_keymaps = false,
-})
diff --git a/modules/by-name/nv/nvim/plgs/default.nix b/modules/by-name/nv/nvim/plgs/default.nix
deleted file mode 100644
index 991bc315..00000000
--- a/modules/by-name/nv/nvim/plgs/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{...}: {
- imports =
- [
- # Plugins not yet packaged in nixpkgs
- # ./debugprint
- ./lf-nvim
- # ./lsp-progress-nvim
- ]
- ++ [
- # Already packaged in nixpkgs
- ./colorscheme
- ./comment-nvim
- ./femaco
- ./flatten-nvim
- ./goto-preview
- ./harpoon
- ./leap
- ./lsp
- ./lspkind
- ./ltex_extra
- ./lualine
- ./luasnip
- ./neorg
- ./nvim-cmp
- ./nvim-lint
- ./raw_plugins
- ./telescope
- ./todo-comments
- ./treesitter
- ./vim-tex
- ./which-key
- ];
-}
diff --git a/modules/by-name/nv/nvim/plgs/femaco/default.nix b/modules/by-name/nv/nvim/plgs/femaco/default.nix
index adf0ba63..eac6b393 100644
--- a/modules/by-name/nv/nvim/plgs/femaco/default.nix
+++ b/modules/by-name/nv/nvim/plgs/femaco/default.nix
@@ -1,19 +1,29 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
- pkgs,
lib,
config,
...
}: let
cfg = config.soispha.programs.nvim;
in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- # TODO: package femaco through a module
+ # TODO: Re-active this plugin, when it does no longer depend on `treesitter-legacy` <2026-01-18>
+ home-manager.users.soispha.programs.nixvim = lib.mkIf false {
+ plugins.femaco = {
+ enable = true;
+ };
+
extraConfigLuaPost = ''
${lib.strings.fileContents ./lua/femaco.lua}
'';
- extraPlugins = [
- pkgs.vimPlugins.nvim-FeMaco-lua
- ];
+
keymaps = [
{
key = "<leader>cc";
diff --git a/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua b/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua
index c113e4c7..4dc9ce97 100644
--- a/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua
+++ b/modules/by-name/nv/nvim/plgs/femaco/lua/femaco.lua
@@ -1,4 +1,15 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
local clip_val = require("femaco.utils").clip_val
+
require("femaco").setup({
-- should prepare a new buffer and return the winid
-- by default opens a floating window
@@ -8,6 +19,7 @@ require("femaco").setup({
local buf = vim.api.nvim_create_buf(false, false)
return vim.api.nvim_open_win(buf, true, opts)
end,
+
-- should return options passed to nvim_open_win
-- @param code_block: data about the code-block with the keys
-- * range
@@ -16,7 +28,7 @@ require("femaco").setup({
float_opts = function(code_block)
return {
relative = "cursor",
- width = clip_val(5, 120, vim.api.nvim_win_get_width(0) - 10), -- TODO: how to offset sign column etc?
+ width = clip_val(5, 120, vim.api.nvim_win_get_width(0) - 10), -- TODO how to offset sign column etc?
height = clip_val(5, #code_block.lines, vim.api.nvim_win_get_height(0) - 6),
anchor = "NW",
row = 0,
@@ -26,19 +38,24 @@ require("femaco").setup({
zindex = 1,
}
end,
+
-- return filetype to use for a given lang
-- lang can be nil
ft_from_lang = function(lang) return lang end,
+
-- what to do after opening the float
post_open_float = function(winnr) vim.wo.signcolumn = "no" end,
+
-- create the path to a temporary file
create_tmp_filepath = function(filetype) return os.tmpname() end,
+
-- if a newline should always be used, useful for multiline injections
-- which separators needs to be on separate lines such as markdown, neorg etc
-- @param base_filetype: The filetype which FeMaco is called from, not the
-- filetype of the injected language (this is the current buffer so you can
-- get it from vim.bo.filetyp).
- ensure_newline = function(base_filetype) return false end,
+ ensure_newline = function(base_filetype) return base_filetype == "nix" end,
+
-- Return true if the indentation should be normalized. Useful when the
-- injected language inherits indentation from the construction scope (e.g. an
-- inline multiline sql string). If true, the leading indentation is detected,
@@ -47,5 +64,5 @@ require("femaco").setup({
-- @param base_filetype: The filetype which FeMaco is called from, not the
-- filetype of the injected language (this is the current buffer, so you can
-- get it from vim.bo.filetype).
- normalize_indent = function(base_filetype) return false end,
+ normalize_indent = function(base_filetype) return base_filetype == "nix" end,
})
diff --git a/modules/by-name/nv/nvim/plgs/flatten-nvim/default.nix b/modules/by-name/nv/nvim/plgs/flatten-nvim/default.nix
deleted file mode 100644
index 48fcd8a6..00000000
--- a/modules/by-name/nv/nvim/plgs/flatten-nvim/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- pkgs,
- lib,
- config,
- ...
-}: let
- cfg = config.soispha.programs.nvim;
-in {
- # TODO: Get this plugin working again <2025-01-29>
- home-manager.users.soispha.programs.nixvim = lib.mkIf false {
- # TODO: package flatten-nvim though a module
-
- extraConfigLuaPre = ''
- ${lib.strings.fileContents ./lua/flatten-nvim.lua}
- if os.getenv("NVIM") ~= nil then
- -- Avoid loading plugins because the host will take control of the instance anyways
- return
- end
- '';
- extraPlugins = [
- pkgs.vimPlugins.flatten-nvim
- ];
- };
-}
diff --git a/modules/by-name/nv/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua b/modules/by-name/nv/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua
deleted file mode 100644
index 2cdbcdde..00000000
--- a/modules/by-name/nv/nvim/plgs/flatten-nvim/lua/flatten-nvim.lua
+++ /dev/null
@@ -1,104 +0,0 @@
----Types:
---
--- Passed to callbacks that handle opening files
----@alias BufInfo { fname: string, bufnr: buffer }
---
--- Needed aliases
----@alias buffer integer: Buffer id
----@alias window integer: Window id
---
--- The first argument is a list of BufInfo tables representing the newly opened files.
--- The third argument is a single BufInfo table, only provided when a buffer is created from stdin.
---
--- IMPORTANT: For `block_for` to work, you need to return a buffer number OR a buffer number and a window number.
--- The `winnr` return value is not required, `vim.fn.bufwinid(bufnr)` is used if it is not provided.
--- The `filetype` of this buffer will determine whether block should happen or not.
---
----@alias OpenHandler fun(files: BufInfo[], argv: string[], stdin_buf: BufInfo, guest_cwd: string):window, buffer
---
-require("flatten").setup({
- callbacks = {
- ---Called to determine if a nested session should wait for the host to close the file.
- ---param argv: a list of all the arguments in the nested session
- ---@type fun(argv: table): boolean
- should_block = require("flatten").default_should_block,
-
- ---If this returns true, the nested session will be opened.
- ---If false, default behavior is used, and
- ---config.nest_if_no_args is respected.
- ---@type fun(host: channel):boolean
- should_nest = require("flatten").default_should_nest,
-
- ---Called before a nested session is opened.
- pre_open = function() end,
-
- ---Called after a nested session is opened.
- ---@param bufnr buffer
- ---@param winnr window
- ---@param filetype string
- ---@param is_blocking boolean
- ---@param is_diff boolean
- post_open = function(bufnr, winnr, filetype, is_blocking, is_diff)
- -- If the file is a git commit, create one-shot autocmd to delete its buffer on write
- if filetype == "gitcommit" or filetype == "gitrebase" then
- vim.api.nvim_create_autocmd("BufWritePost", {
- buffer = bufnr,
- once = true,
- callback = vim.schedule_wrap(function() vim.api.nvim_buf_delete(bufnr, {}) end),
- })
- end
- end,
-
- ---Called when a nested session is done waiting for the host.
- ---@param filetype string
- block_end = function(filetype) end,
- },
- -- <String, Bool> dictionary of filetypes that should be blocking
- block_for = {
- gitcommit = true,
- },
- -- Command passthrough
- allow_cmd_passthrough = true,
- -- Allow a nested session to open if Neovim is opened without arguments
- nest_if_no_args = false,
- -- Window options
- window = {
- -- Options:
- -- current -> open in current window (default)
- -- alternate -> open in alternate window (recommended)
- -- tab -> open in new tab
- -- split -> open in split
- -- vsplit -> open in vsplit
- -- smart -> smart open (avoids special buffers)
- -- OpenHandler -> allows you to handle file opening yourself (see Types)
- --
- -- TODO: Open gitcommit filetypes in the current buffer, everything else in a new tab <2023-08-29>
- open = "split",
-
- -- Options:
- -- vsplit -> opens files in diff vsplits
- -- split -> opens files in diff splits
- -- tab_vsplit -> creates a new tabpage, and opens diff vsplits
- -- tab_split -> creates a new tabpage, and opens diff splits
- -- OpenHandler -> allows you to handle file opening yourself (see Types)
- diff = "tab_vsplit",
-
- -- Affects which file gets focused when opening multiple at once
- -- Options:
- -- "first" -> open first file of new files (default)
- -- "last" -> open last file of new files
- focus = "first",
- },
- -- Override this function to use a different socket to connect to the host
- -- On the host side this can return nil or the socket address.
- -- On the guest side this should return the socket address
- -- or a non-zero channel id from `sockconnect`
- -- flatten.nvim will detect if the address refers to this instance of nvim, to determine if this is a host or a guest
- pipe_path = require("flatten").default_pipe_path,
- -- The `default_pipe_path` will treat the first nvim instance within a single kitty/wezterm session as the host
- -- You can configure this behaviour using the following:
- one_per = {
- kitty = true, -- Flatten all instance in the current Kitty session
- wezterm = true, -- Flatten all instance in the current Wezterm session
- },
-})
diff --git a/modules/by-name/nv/nvim/plgs/goto-preview/default.nix b/modules/by-name/nv/nvim/plgs/goto-preview/default.nix
index 5c56fe8c..93761dfd 100644
--- a/modules/by-name/nv/nvim/plgs/goto-preview/default.nix
+++ b/modules/by-name/nv/nvim/plgs/goto-preview/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/goto-preview/lua/goto-preview.lua b/modules/by-name/nv/nvim/plgs/goto-preview/lua/goto-preview.lua
index 9687a5a0..ad285033 100644
--- a/modules/by-name/nv/nvim/plgs/goto-preview/lua/goto-preview.lua
+++ b/modules/by-name/nv/nvim/plgs/goto-preview/lua/goto-preview.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
require("goto-preview").setup({
width = 120, -- Width of the floating window
height = 15, -- Height of the floating window
diff --git a/modules/by-name/nv/nvim/plgs/harpoon/default.nix b/modules/by-name/nv/nvim/plgs/harpoon/default.nix
index 05a40d9f..c85c7c80 100644
--- a/modules/by-name/nv/nvim/plgs/harpoon/default.nix
+++ b/modules/by-name/nv/nvim/plgs/harpoon/default.nix
@@ -1,100 +1,53 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
- pkgs,
- config,
lib,
+ config,
...
}: let
- numbers = ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"];
- mkNumberedCommand = {
- command_template,
- prefix,
- number,
- desc_template,
- }: {
- key = "${prefix}${number}";
- action.__raw = ''
- function()
- ${command_template number}
- end
- '';
- options.desc = "${desc_template number}";
- };
- mkGotoTerminalCommand = number: let
- desc_template = number: "Goto terminal number ${number}";
- command_template = number: ''require("harpoon.term").gotoTerminal(${number})'';
- prefix = "gt";
- in
- mkNumberedCommand {inherit desc_template command_template prefix number;};
- mkGotoFileCommand = number: let
- desc_template = number: "Goto Buffer number ${number}";
- command_template = number: ''require("harpoon.ui").nav_file(${number})'';
- prefix = "gf";
- in
- mkNumberedCommand {inherit desc_template command_template prefix number;};
-
- gotoTerminalMappings = builtins.map mkGotoTerminalCommand numbers;
- gotoFileMappings = builtins.map mkGotoFileCommand numbers;
cfg = config.soispha.programs.nvim;
in {
home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- plugins.harpoon = {
- enable = true;
- package = pkgs.vimPlugins.harpoon;
- enableTelescope = true;
- # menu.width = "vim.api.nvim_win_get_width(0) - 4"; # TODO: integrate that
- keymaps = {
- tmuxGotoTerminal = null; # TODO:
- };
- };
+ plugins.harpoon.enable = true;
+
keymaps =
- [
- {
- key = "-";
- action.__raw = ''
+ lib.mapAttrsToList
+ (key: action: {
+ mode = "n";
+ inherit key;
+ action.__raw = builtins.elemAt action 0;
+ options.silent = true;
+ options.desc = builtins.elemAt action 1;
+ })
+ {
+ # add current file
+ "<leader><leader>" = [
+ # lua
+ ''
function()
- require("harpoon.ui").nav_next()
- end
- '';
- options.desc = "go to the next marked file";
- }
- {
- key = "_";
- action.__raw = ''
- function()
- require("harpoon.ui").nav_prev()
- end
- '';
- options.desc = "go to the previous marked file";
- }
- {
- key = "<leader><leader>";
- action.__raw = ''
- function()
- require("harpoon.mark").add_file()
- end
- '';
- options.desc = "add a mark to the open file in harpoon.";
- }
- {
- key = "gqc";
- action.__raw = ''
- function()
- require("harpoon.cmd-ui").toggle_quick_menu()
+ require("harpoon"):list():add()
end
- '';
- options.desc = "toggle the harpoon command quick menu to see all commands.";
- }
- {
- key = "<leader>q";
- action.__raw = ''
+ ''
+ "Add a mark to the open file in harpoon."
+ ];
+
+ # open menu
+ "<leader>q" = [
+ # lua
+ ''
function()
- require("harpoon.ui").toggle_quick_menu()
+ require("harpoon").ui:toggle_quick_menu(require("harpoon"):list())
end
- '';
- options.desc = "toggle the harpoon normal quick menu to see all marks.";
- }
- ]
- ++ gotoFileMappings
- ++ gotoTerminalMappings;
+ ''
+ "Toggle the harpoon normal quick menu to see all marks."
+ ];
+ };
};
}
diff --git a/modules/by-name/nv/nvim/plgs/leap/default.nix b/modules/by-name/nv/nvim/plgs/leap/default.nix
deleted file mode 100644
index 57e78879..00000000
--- a/modules/by-name/nv/nvim/plgs/leap/default.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- config,
- lib,
- ...
-}: let
- cfg = config.soispha.programs.nvim;
-in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- plugins.leap = {
- enable = true;
- addDefaultMappings = false; # They don't work with dvorak.
- safeLabels = [
- "f"
- "j"
- "k"
- "l"
- "/"
- "z"
- "S"
- "F"
- "J"
- "K"
- "L"
- "H"
- "W"
- "E"
- "M"
- "B"
- "U"
- "X"
- "?"
- "Z"
- ];
- };
- keymaps = [
- {
- key = "j";
- action = "<Plug>(leap-forward-to)";
- options.desc = "jump forward to";
- }
- {
- key = "J";
- action = "<Plug>(leap-backward-to)";
- options.desc = "jump backward to";
- }
- {
- key = "gj";
- action = "<Plug>(leap-from-window)";
- options.desc = "jump to enterable windows";
- }
- /*
- {key= "x";
- mode = "v";
- action = "<Plug>(leap-forward-till)";
- options.desc = "leap forward till";
- }
- {key= "X";
- mode = "v";
- action = "<Plug>(leap-backward-till)";
- options.desc = "leap backward till";
- }
- */
- ];
- };
-}
diff --git a/modules/by-name/nv/nvim/plgs/lf-nvim/default.nix b/modules/by-name/nv/nvim/plgs/lf-nvim/default.nix
index 1e7c91e3..e652a60d 100644
--- a/modules/by-name/nv/nvim/plgs/lf-nvim/default.nix
+++ b/modules/by-name/nv/nvim/plgs/lf-nvim/default.nix
@@ -1,23 +1,95 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
- pkgs,
lib,
config,
- nixpkgs_open_prs,
- system,
...
}: let
cfg = config.soispha.programs.nvim;
in {
+ # TODO: change the nvim path, when I change the path with lf
home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- # TODO: package lf-nvim though a module
- # FIXME: change the nvim path, when I change the path with lf
- extraConfigLuaPost = ''
- ${lib.strings.fileContents ./lua/lf-nvim.lua}
- '';
- extraPlugins = [
- nixpkgs_open_prs.nixpkgs-lf.legacyPackages."${system}".vimPlugins.lf-nvim
+ plugins.lf = {
+ enable = true;
- pkgs.vimPlugins.toggleterm-nvim # required by lf-nvim
- ];
+ settings = {
+ default_actions = {
+ "<C-o>" = "tab drop";
+ "<C-t>" = "tabedit";
+ "<C-v>" = "vsplit";
+ "<C-x>" = "split";
+ };
+
+ default_action = "drop";
+
+ winblend = 10;
+ dir = "";
+ direction = "float";
+ border = "rounded";
+ height.__raw = "vim.fn.float2nr(vim.fn.round(0.75 * vim.o.lines))";
+ width.__raw = "vim.fn.float2nr(vim.fn.round(0.75 * vim.o.columns))";
+ escape_quit = true;
+ focus_on_open = true;
+ mappings = true;
+ tmux = false;
+ default_file_manager = true;
+ disable_netrw_warning = true;
+ highlights = {
+ Normal = {link = "Normal";};
+ NormalFloat = {link = "Normal";};
+ FloatBorder = {
+ guifg = "#cdcbe0";
+ guibg = "#191726";
+ };
+ };
+
+ layout_mapping = "<M-u>";
+ views = [
+ {
+ width = 0.800;
+ height = 0.800;
+ }
+ {
+ width = 0.600;
+ height = 0.600;
+ }
+ {
+ width = 0.950;
+ height = 0.950;
+ }
+ {
+ width = 0.500;
+ height = 0.500;
+ col = 0;
+ row = 0;
+ }
+ {
+ width = 0.500;
+ height = 0.500;
+ col = 0;
+ row = 0.5;
+ }
+ {
+ width = 0.500;
+ height = 0.500;
+ col = 0.5;
+ row = 0;
+ }
+ {
+ width = 0.500;
+ height = 0.500;
+ col = 0.5;
+ row = 0.5;
+ }
+ ];
+ };
+ };
};
}
diff --git a/modules/by-name/nv/nvim/plgs/lf-nvim/lua/lf-nvim.lua b/modules/by-name/nv/nvim/plgs/lf-nvim/lua/lf-nvim.lua
deleted file mode 100644
index 1eadf375..00000000
--- a/modules/by-name/nv/nvim/plgs/lf-nvim/lua/lf-nvim.lua
+++ /dev/null
@@ -1,43 +0,0 @@
-local fn = vim.fn
-
--- Defaults
-require("lf").setup({
- default_action = "drop", -- default action when `Lf` opens a file
- -- TODO: what do these mappings do?
- default_actions = { -- default action keybindings
- ["<C-t>"] = "tabedit",
- ["<C-x>"] = "split",
- ["<C-v>"] = "vsplit",
- ["<C-o>"] = "tab drop",
- },
-
- winblend = 10, -- psuedotransparency level
- dir = "", -- directory where `lf` starts ('gwd' is git-working-directory, ""/nil is CWD)
- direction = "float", -- window type: float horizontal vertical
- border = "rounded", -- border kind: single double shadow curved
- height = fn.float2nr(fn.round(0.75 * vim.o.lines)), -- height of the *floating* window
- width = fn.float2nr(fn.round(0.75 * vim.o.columns)), -- width of the *floating* window
- escape_quit = true, -- map escape to the quit command (so it doesn't go into a meta normal mode)
- focus_on_open = true, -- focus the current file when opening Lf (experimental)
- mappings = true, -- whether terminal buffer mapping is enabled
- tmux = false, -- tmux statusline can be disabled on opening of Lf
- default_file_manager = true, -- make lf default file manager
- disable_netrw_warning = true, -- don't display a message when opening a directory with `default_file_manager` as true
- highlights = { -- highlights passed to toggleterm
- Normal = { link = "Normal" },
- NormalFloat = { link = "Normal" },
- FloatBorder = { guifg = "#cdcbe0", guibg = "#191726" },
- },
-
- -- Layout configurations
- layout_mapping = "<M-u>", -- resize window with this key
- views = { -- window dimensions to rotate through
- { width = 0.800, height = 0.800 },
- { width = 0.600, height = 0.600 },
- { width = 0.950, height = 0.950 },
- { width = 0.500, height = 0.500, col = 0, row = 0 },
- { width = 0.500, height = 0.500, col = 0, row = 0.5 },
- { width = 0.500, height = 0.500, col = 0.5, row = 0 },
- { width = 0.500, height = 0.500, col = 0.5, row = 0.5 },
- },
-})
diff --git a/modules/by-name/nv/nvim/plgs/lsp-progress-nvim/default.nix b/modules/by-name/nv/nvim/plgs/lsp-progress-nvim/default.nix
deleted file mode 100644
index 1a2fb6eb..00000000
--- a/modules/by-name/nv/nvim/plgs/lsp-progress-nvim/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- lib,
- config,
- pkgs,
- ...
-}: let
- cfg = config.soispha.programs.nvim;
-in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- # TODO: package lsp-progress-nvim though a module
- extraConfigLuaPost = ''
- ${lib.strings.fileContents ./lua/lsp-progress-nvim.lua}
- '';
- extraPlugins = [
- pkgs.vimExtraPlugins.lsp-progress-nvim
- ];
-
- # Status line setup
- autoGroups.lsp_refresh.clear = true;
- autoCmd = [
- {
- event = ["User LspProgressStatusUpdated"];
- pattern = ["*"];
- callback =
- /*
- lua
- */
- {
- __raw = ''
- require("lualine").refresh
- '';
- };
- group = "lsp_refresh";
- description = "Refresh the statusbar when the lsp status was updated.";
- }
- ];
- plugins.lualine = let
- get_lsp_progress = {
- __raw =
- /*
- lua
- */
- ''
- require('lsp-progress').progress
- '';
- };
- in {
- sections = {
- lualine_c = [{name = get_lsp_progress;}];
- };
- };
- };
-}
diff --git a/modules/by-name/nv/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua b/modules/by-name/nv/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua
deleted file mode 100644
index 5a2cff26..00000000
--- a/modules/by-name/nv/nvim/plgs/lsp-progress-nvim/lua/lsp-progress-nvim.lua
+++ /dev/null
@@ -1,146 +0,0 @@
---- @type table<string, any>
-require("lsp-progress").setup({
- -- Spinning icons.
- --
- --- @type string[]
- spinner = { "⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷" },
-
- -- Spinning update time in milliseconds.
- --
- --- @type integer
- spin_update_time = 200,
-
- -- Last message cached decay time in milliseconds.
- --
- -- Message could be really fast(appear and disappear in an
- -- instant) that user cannot even see it, thus we cache the last message
- -- for a while for user view.
- --
- --- @type integer
- decay = 700,
-
- -- User event name.
- --
- --- @type string
- event = "LspProgressStatusUpdated",
-
- -- Event update time limit in milliseconds.
- --
- -- Sometimes progress handler could emit many events in an instant, while
- -- refreshing statusline cause too heavy synchronized IO, so we limit the
- -- event rate to reduce this cost.
- --
- --- @type integer
- event_update_time_limit = 100,
-
- -- Max progress string length, by default -1 is unlimited.
- --
- --- @type integer
- max_size = -1,
-
- -- Regular internal update time.
- --
- -- Emit user event to update the lsp progress status, even there's no new
- -- message.
- --
- --- @type integer
- regular_internal_update_time = 500,
-
- -- Disable emitting events on specific mode/filetype.
- -- User events would interrupt insert mode, thus break which-key like plugins behaviour.
- -- See:
- -- * https://github.com/linrongbin16/lsp-progress.nvim/issues/50
- -- * https://neovim.io/doc/user/builtin.html#mode()
- --
- --- @type table[]
- disable_events_opts = { { mode = "i", filetype = "TelescopePrompt" } },
-
- -- Format series message.
- --
- -- By default it looks like: `formatting isort (100%) - done`.
- --
- --- @param title string|nil
- --- Message title.
- --- @param message string|nil
- --- Message body.
- --- @param percentage number|nil
- --- Progress in percentage numbers: 0-100.
- --- @param done boolean
- --- Indicate whether this series is the last one in progress.
- --- @return string|nil messages
- --- The returned value will be passed to function `client_format` as
- --- one of the `series_messages` array, or ignored if return nil.
- series_format = function(title, message, percentage, done)
- local builder = {}
- local has_title = false
- local has_message = false
- if title and title ~= "" then
- table.insert(builder, title)
- has_title = true
- end
- if message and message ~= "" then
- table.insert(builder, message)
- has_message = true
- end
- if percentage and (has_title or has_message) then table.insert(builder, string.format("(%.0f%%%%)", percentage)) end
- if done and (has_title or has_message) then table.insert(builder, "- done") end
- return table.concat(builder, " ")
- end,
-
- -- Format client message.
- --
- -- By default it looks like:
- -- `[null-ls] ⣷ formatting isort (100%) - done, formatting black (50%)`.
- --
- --- @param client_name string
- --- Client name.
- --- @param spinner string
- --- Spinner icon.
- --- @param series_messages string[]|table[]
- --- Messages array.
- --- @return string|nil messages
- --- The returned value will be passed to function `format` as one of the
- --- `client_messages` array, or ignored if return nil.
- client_format = function(client_name, spinner, series_messages)
- return #series_messages > 0
- and ("[" .. client_name .. "] " .. spinner .. " " .. table.concat(series_messages, ", "))
- or nil
- end,
-
- -- Format (final) message.
- --
- -- By default it looks like:
- -- ` LSP [null-ls] ⣷ formatting isort (100%) - done, formatting black (50%)`
- --
- --- @param client_messages string[]|table[]
- --- Client messages array.
- --- @return nil|string message
- --- The returned value will be returned from `progress` API.
- format = function(client_messages)
- local sign = " LSP" -- nf-fa-gear \uf013
- return #client_messages > 0 and (sign .. " " .. table.concat(client_messages, " ")) or sign
- end,
-
- -- Enable debug.
- --
- --- @type boolean
- debug = false,
-
- -- Print log to console(command line).
- --
- --- @type boolean
- console_log = false,
-
- -- Print log to file.
- --
- --- @type boolean
- file_log = true,
-
- -- Log file to write, work with `file_log=true`.
- --
- -- For Windows: `$env:USERPROFILE\AppData\Local\nvim-data\lsp-progress.log`.
- -- For *NIX: `~/.local/share/nvim/lsp-progress.log`.
- --
- --- @type string
- file_log_name = "lsp-progress.log",
-})
diff --git a/modules/by-name/nv/nvim/plgs/lsp/default.nix b/modules/by-name/nv/nvim/plgs/lsp/default.nix
index d97f2f0a..27a6f909 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/default.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/keymaps/default.nix b/modules/by-name/nv/nvim/plgs/lsp/keymaps/default.nix
index 903e8c17..7cc9f6d5 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/keymaps/default.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/keymaps/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/default.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/default.nix
index 605046d4..0e7be6e8 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/default.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/default.nix
@@ -1,15 +1,24 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
imports = [
- # ./servers/pylyzer.nix
./servers/bashls.nix
./servers/ccls.nix
- ./servers/quick-lint-js.nix
./servers/ltex.nix
./servers/lua-ls.nix
./servers/nil-ls.nix
./servers/openscad.nix
+ ./servers/quick-lint-js.nix
./servers/ruff-lsp.nix
./servers/rust-analyzer.nix
./servers/texlab.nix
+ ./servers/zls.nix
];
}
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/bashls.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/bashls.nix
index 5a37e133..8d2b0d03 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/bashls.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/bashls.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
lib,
config,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ccls.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ccls.nix
index 9f3195fa..eed7f349 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ccls.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ccls.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ltex.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ltex.nix
index 03b7d4c1..e55cf377 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ltex.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ltex.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/lua-ls.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/lua-ls.nix
index 39e4b989..9350cd37 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/lua-ls.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/lua-ls.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/nil-ls.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/nil-ls.nix
index 94ca99ce..3b7e2523 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/nil-ls.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/nil-ls.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/openscad.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/openscad.nix
index 94f7b067..1d516c9d 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/openscad.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/openscad.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -12,13 +21,28 @@ in {
lua
*/
''
- require('lspconfig').openscad_lsp.setup{
- cmd = {"openscad-lsp", "--stdio", "--fmt-style", "WebKit"},
+ vim.lsp.config['openscad_lsp'] = {
+ cmd = {"openscad-lsp", "--stdio", "--fmt-style", "WebKit"},
}
+ vim.lsp.enable("openscad_lsp")
'';
- extraPackages = with pkgs; [
- openscad-lsp
- clang-tools # Need to satisfy `clang-format` (which is used by openscad-lsp)
+
+ autoCmd = [
+ {
+ command = "set filetype=openscad";
+ event = [
+ "BufRead"
+ "BufNewFile"
+ ];
+ pattern = [
+ "*.scad"
+ ];
+ }
+ ];
+
+ extraPackages = [
+ pkgs.openscad-lsp
+ pkgs.clang-tools # Need to satisfy `clang-format` (which is used by openscad-lsp)
];
};
}
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/pylyzer.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/pylyzer.nix
deleted file mode 100644
index 3ac66102..00000000
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/pylyzer.nix
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}: let
- cfg = config.soispha.programs.nvim;
-in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- extraConfigLuaPost =
- /*
- lua
- */
- ''
- require('lspconfig').pylyzer.setup{}
- '';
- extraPackages = with pkgs; [pylyzer];
- };
-}
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/quick-lint-js.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/quick-lint-js.nix
index 48a3a71c..097abfbe 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/quick-lint-js.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/quick-lint-js.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -12,11 +21,11 @@ in {
lua
*/
''
- require('lspconfig').quick_lint_js.setup{
- }
+ vim.lsp.enable('quick_lint_js')
'';
- extraPackages = with pkgs; [
- quick-lint-js
+
+ extraPackages = [
+ pkgs.quick-lint-js
];
};
}
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ruff-lsp.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ruff-lsp.nix
index 57cb8366..3ad3ad8f 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ruff-lsp.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/ruff-lsp.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
config,
@@ -12,6 +21,6 @@ in {
enable = true;
};
};
- extraPackages = with pkgs; [ruff];
+ extraPackages = [pkgs.ruff];
};
}
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/rust-analyzer.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/rust-analyzer.nix
index 093f5250..fd344c50 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/rust-analyzer.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/rust-analyzer.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/texlab.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/texlab.nix
index 1fe3c764..5f001177 100644
--- a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/texlab.nix
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/texlab.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/lsp/servers/servers/zls.nix b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/zls.nix
new file mode 100644
index 00000000..aab7a135
--- /dev/null
+++ b/modules/by-name/nv/nvim/plgs/lsp/servers/servers/zls.nix
@@ -0,0 +1,30 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+ lib,
+ config,
+ pkgs,
+ ...
+}: let
+ cfg = config.soispha.programs.nvim;
+in {
+ home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+ extraConfigLuaPost =
+ /*
+ lua
+ */
+ ''
+ vim.lsp.enable("zls")
+ '';
+ extraPackages = [
+ pkgs.zls
+ ];
+ };
+}
diff --git a/modules/by-name/nv/nvim/plgs/lspkind/default.nix b/modules/by-name/nv/nvim/plgs/lspkind/default.nix
index 078d607d..3846fa32 100644
--- a/modules/by-name/nv/nvim/plgs/lspkind/default.nix
+++ b/modules/by-name/nv/nvim/plgs/lspkind/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -7,6 +16,6 @@
in {
home-manager.users.soispha.programs.nixvim.plugins.lspkind = lib.mkIf cfg.enable {
enable = true;
- preset = "default"; # "codicons" is only for a font patched with vscode-codeicons.
+ settings.preset = "default"; # "codicons" is only for a font patched with vscode-codeicons.
};
}
diff --git a/modules/by-name/nv/nvim/plgs/ltex_extra/default.nix b/modules/by-name/nv/nvim/plgs/ltex_extra/default.nix
index c37a7591..a01d5653 100644
--- a/modules/by-name/nv/nvim/plgs/ltex_extra/default.nix
+++ b/modules/by-name/nv/nvim/plgs/ltex_extra/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
config,
diff --git a/modules/by-name/nv/nvim/plgs/ltex_extra/lua/ltex_extra.lua b/modules/by-name/nv/nvim/plgs/ltex_extra/lua/ltex_extra.lua
index d532428a..883b22c4 100644
--- a/modules/by-name/nv/nvim/plgs/ltex_extra/lua/ltex_extra.lua
+++ b/modules/by-name/nv/nvim/plgs/ltex_extra/lua/ltex_extra.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
require("ltex_extra").setup({
-- table <string> : languages for witch dictionaries will be loaded, e.g. { "es-AR", "en-US" }
-- https://valentjn.github.io/ltex/supported-languages.html#natural-languages
diff --git a/modules/by-name/nv/nvim/plgs/lualine/default.nix b/modules/by-name/nv/nvim/plgs/lualine/default.nix
index 2f3bb552..7a69519b 100644
--- a/modules/by-name/nv/nvim/plgs/lualine/default.nix
+++ b/modules/by-name/nv/nvim/plgs/lualine/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/default.nix b/modules/by-name/nv/nvim/plgs/luasnip/default.nix
index f67c9899..222b5070 100644
--- a/modules/by-name/nv/nvim/plgs/luasnip/default.nix
+++ b/modules/by-name/nv/nvim/plgs/luasnip/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
lib,
config,
@@ -7,14 +16,81 @@
cfg = config.soispha.programs.nvim;
in {
home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+ keymaps = [
+ {
+ key = "<C-K>";
+ mode = ["i"];
+ action.__raw = ''
+ function()
+ require('luasnip').expand()
+ end
+ '';
+ options = {
+ # silent = true;
+ desc = "Expand the snippet";
+ };
+ }
+ {
+ key = "<C-L>";
+ mode = ["i" "s"];
+ action.__raw = ''
+ function()
+ require('luasnip').jump(1)
+ end
+ '';
+ options = {
+ # silent = true;
+ desc = "Jump forward in snippet insert nodes";
+ };
+ }
+ {
+ key = "<C-J>";
+ mode = ["i" "s"];
+ action.__raw = ''
+ function()
+ require('luasnip').jump(-1)
+ end
+ '';
+ options = {
+ # silent = true;
+ desc = "Jump backwards in snippet insert nodes";
+ };
+ }
+ {
+ key = "<C-E>";
+ mode = ["i" "s"];
+ action.__raw = ''
+ function()
+ if require('luasnip').choice_active() then
+ require('luasnip').change_choice(1)
+ end
+ end
+ '';
+ options = {
+ # silent = true;
+ desc = "Cycle through the snippets choice nodes";
+ };
+ }
+ ];
plugins.luasnip = {
enable = true;
+
+ settings = {
+ # Enable auto triggered snippets.
+ enable_autosnippets = true;
+
+ # Use Tab to trigger visual selection.
+ store_selection_keys = "<Tab>";
+ };
+
+ fromLua = [
+ {
+ paths = ./snippets;
+ lazyLoad = true;
+ }
+ ];
};
- extraConfigLuaPost = ''
- ${lib.strings.fileContents ./lua/luasnip.lua};
- require("luasnip.loaders.from_lua").load({paths = "${./lua/snippets}"});
- require("luasnip.loaders.from_lua").lazy_load({paths = "${./lua/snippets}"});
- '';
+
extraPlugins = [
# needed for the todo-comments snippets
pkgs.vimPlugins.comment-nvim
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/lua/luasnip.lua b/modules/by-name/nv/nvim/plgs/luasnip/lua/luasnip.lua
deleted file mode 100644
index a05fa57f..00000000
--- a/modules/by-name/nv/nvim/plgs/luasnip/lua/luasnip.lua
+++ /dev/null
@@ -1,7 +0,0 @@
-require("luasnip").config.set_config({
- -- Enable auto triggered snippets
- enable_autosnippets = true,
-
- -- Use Tab (or some other key if you prefer) to trigger visual selection
- store_selection_keys = "<Tab>",
-})
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/all.lua b/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/all.lua
deleted file mode 100644
index 2b923f20..00000000
--- a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/all.lua
+++ /dev/null
@@ -1,211 +0,0 @@
-local ls = require("luasnip")
--- auto_pairs {{{
-local get_visual = function(args, parent)
- if #parent.snippet.env.SELECT_RAW > 0 then
- return sn(nil, i(1, parent.snippet.env.SELECT_RAW))
- else
- return sn(nil, i(1, ""))
- end
-end
-local function char_count_same(c1, c2)
- local line = vim.api.nvim_get_current_line()
- -- '%'-escape chars to force explicit match (gsub accepts patterns).
- -- second return value is number of substitutions.
- local _, ct1 = string.gsub(line, "%" .. c1, "")
- local _, ct2 = string.gsub(line, "%" .. c2, "")
- return ct1 == ct2
-end
-
-local function even_count(c, ...)
- local line = vim.api.nvim_get_current_line()
- local _, ct = string.gsub(line, c, "")
- return ct % 2 == 0
-end
-
--- This makes creation of pair-type snippets easier.
-local function pair(pair_begin, pair_end, file_types, condition_function)
- -- FIXME(@Soispha): This only works if file_types == nil, otherwise the snippet does not expand.
- -- It would be nice, if it would support both an empty array (`{}`) and nil <2023-08-27>
- -- file_types = file_types or {};
-
- return s(
- { trig = pair_begin, wordTrig = false, snippetType = "autosnippet" },
- { t({ pair_begin }), d(1, get_visual), t({ pair_end }) },
- {
- condition = function()
- local filetype_check = true
- if file_types ~= nil then filetype_check = file_types[vim.bo.filetype] or false end
- return (not condition_function(pair_begin, pair_end)) and filetype_check
- end,
- }
- )
-end
-
-local auto_pairs = {
- pair("(", ")", nil, char_count_same),
- pair("{", "}", nil, char_count_same),
- pair("[", "]", nil, char_count_same),
- pair("<", ">", { ["rust"] = true, ["tex"] = true }, char_count_same),
- pair("'", "'", nil, even_count),
- pair("\"", "\"", nil, even_count),
- pair("`", "`", nil, even_count),
-}
-
-ls.add_snippets("all", auto_pairs, { type = "snippets", key = "auto_pairs" })
--- }}}
-
--- todo_comments {{{
-local calculate_comment_string = require("Comment.ft").calculate
-local utils = require("Comment.utils")
-
-local read_git_config = function(config_value)
- local command = string.format("git config \"%s\"", config_value)
- local handle = io.popen(command)
- if handle == nil then return error(string.format("Failed to call `%s`.", command)) end
- local result = handle:read("*a")
- handle:close()
- -- stripped = string.gsub(str, '%s+', '')
- return string.gsub(result, "\n", "")
-end
-
-local name_to_handle = function(name)
- -- from: https://stackoverflow.com/a/7615129
- local split = function(inputstr, sep)
- local t = {}
- for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do
- table.insert(t, str)
- end
- return t
- end
-
- local parts = split(name, "%s")
-
- local output_name = ""
- if #parts > 2 then
- for _, val in ipairs(parts) do
- output_name = string.format("%s%s", output_name, val:sub(1, 1))
- end
- elseif #parts == 2 then
- output_name = string.format("%s%s", parts[1]:sub(1, 1), parts[2])
- elseif #parts == 1 then
- output_name = parts[1]
- else
- -- parts is 0
- output_name = "<NoName>"
- end
- return string.format("@%s", output_name:lower())
-end
-
-_G.luasnip = {}
-_G.luasnip.vars = {
- username = function() return name_to_handle(read_git_config("user.name")) end,
- email = function() return read_git_config("user.email") end,
-}
-
---- Get the comment string {beg,end} table
----@param ctype integer 1 for `line`-comment and 2 for `block`-comment
----@return table comment_strings {begcstring, endcstring}
-local get_cstring = function(ctype)
- -- use the `Comments.nvim` API to fetch the comment string for the region (eq. '--%s' or '--[[%s]]' for `lua`)
- local cstring = calculate_comment_string({ ctype = ctype, range = utils.get_region() }) or vim.bo.commentstring
- -- as we want only the strings themselves and not strings ready for using `format` we want to split the left and right side
- local left, right = utils.unwrap_cstr(cstring)
- -- create a `{left, right}` table for it
- return { left, right }
-end
-
---- Options for marks to be used in a TODO comment
----@return table,table: The first table contains a node for the date, the second for the signature
-local marks = {
- signature = function() return t("(" .. _G.luasnip.vars:username() .. ")"), t("") end,
- date_signature = function() return t("<" .. os.date("%Y-%m-%d") .. ">"), t("(" .. _G.luasnip.vars:username() .. ")") end,
- date = function() return t("<" .. os.date("%Y-%m-%d") .. ">"), t("") end,
- empty = function() return t(""), t("") end,
-}
-
----@param alias string
----@param opts table
----@param mark_function function: This function should return two nodes
----@return table: Returns the comment node
-local todo_snippet_nodes = function(alias, opts, mark_function)
- local date_node, signature_node = mark_function()
- -- format them into the actual snippet
- local comment_node = fmta("<> <><>: <> <> <>", {
- f(function()
- return get_cstring(opts.ctype)[1] -- get <comment-string[1]>
- end),
- t(alias), -- [name-of-comment]
- signature_node,
- i(0), -- {comment-text}
- date_node,
- f(function()
- return get_cstring(opts.ctype)[2] -- get <comment-string[2]>
- end),
- })
- return comment_node
-end
-
---- Generate a TODO comment snippet with an automatic description and docstring
----@param context table merged with the generated context table `trig` must be specified
----@param alias string of aliases for the todo comment (ex.: {FIX, ISSUE, FIXIT, BUG})
----@param opts table merged with the snippet opts table
----@param mark_function function: The function used to get the marks
-local todo_snippet = function(context, alias, opts, mark_function)
- opts = opts or {}
- context = context or {}
- if not context.trig then
- return error("context doesn't include a `trig` key which is mandatory", 2) -- all we need from the context is the trigger
- end
- opts.ctype = opts.ctype or 1 -- comment type can be passed in the `opts` table, but if it is not, we have to ensure, it is defined
- local alias_string = alias -- `choice_node` documentation
- context.name = context.name or (alias_string .. " comment") -- generate the `name` of the snippet if not defined
- context.dscr = context.dscr or (alias_string .. " comment with a signature-mark") -- generate the `dscr` if not defined
- context.docstring = context.docstring or (" {1:" .. alias_string .. "}: {3} <{2:mark}>{0} ") -- generate the `docstring` if not defined
- local comment_node = todo_snippet_nodes(alias, opts, mark_function)
- return s(context, comment_node, opts) -- the final todo-snippet constructed from our parameters
-end
-
----@param context table: The luasnip context
----@param opts table: The luasnip opts table, needs to have a ctype set
----@param aliases string: All aliases for a name
----@param marks table: Possible marks to account in snipped generation
----@return table: All possible snippets build from the marks
-local process_marks = function(context, aliases, opts, marks)
- local output = {}
- for mark_name, mark_function in pairs(marks) do
- local contex_trig_local = context.trig
- context.trig = context.trig .. "-" .. mark_name
- output[#output + 1] = todo_snippet(context, aliases, opts, mark_function)
- context.trig = contex_trig_local
- end
- return output
-end
-
-local todo_snippet_specs = {
- { { trig = "todo" }, { "TODO" }, { ctype = 1 } },
- { { trig = "fix" }, { "FIXME", "ISSUE" }, { ctype = 1 } },
- { { trig = "hack" }, { "HACK" }, { ctype = 1 } },
- { { trig = "warn" }, { "WARNING" }, { ctype = 1 } },
- { { trig = "perf" }, { "PERFORMANCE", "OPTIMIZE" }, { ctype = 1 } },
- { { trig = "note" }, { "NOTE", "INFO" }, { ctype = 1 } },
-
- -- NOTE: Block commented todo-comments
- { { trig = "todob" }, { "TODO" }, { ctype = 2 } },
- { { trig = "fixb" }, { "FIXME", "ISSUE" }, { ctype = 2 } },
- { { trig = "hackb" }, { "HACK" }, { ctype = 2 } },
- { { trig = "warnb" }, { "WARNING" }, { ctype = 2 } },
- { { trig = "perfb" }, { "PERF", "PERFORMANCE", "OPTIM", "OPTIMIZE" }, { ctype = 2 } },
- { { trig = "noteb" }, { "NOTE", "INFO" }, { ctype = 2 } },
-}
-
-local todo_comment_snippets = {}
-for _, v in ipairs(todo_snippet_specs) do
- local snippets = process_marks(v[1], v[2][1], v[3], marks)
- for _, value in pairs(snippets) do
- table.insert(todo_comment_snippets, value)
- end
-end
-
-ls.add_snippets("all", todo_comment_snippets, { type = "snippets", key = "todo_comments" })
-
--- }}}
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/html/html.lua b/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/html/html.lua
deleted file mode 100644
index 568c97ec..00000000
--- a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/html/html.lua
+++ /dev/null
@@ -1,102 +0,0 @@
-local get_visual = function(args, parent)
- if #parent.snippet.env.SELECT_RAW > 0 then
- return sn(nil, i(1, parent.snippet.env.SELECT_RAW))
- else
- return sn(nil, i(1))
- end
-end
-
-local line_begin = require("luasnip.extras.expand_conditions").line_begin
-
-return {
- -- HEADER
- s(
- {
- trig = "h([123456])",
- regTrig = true,
- wordTrig = false,
- snippetType = "autosnippet",
- },
- fmt(
- [[
- <h{}>{}</h{}>
- ]],
- {
- f(function(_, snip) return snip.captures[1] end),
- d(1, get_visual),
- f(function(_, snip) return snip.captures[1] end),
- }
- ),
- { condition = line_begin }
- ), -- PARAGRAPH
- s(
- { trig = "pp", snippetType = "autosnippet" },
- fmt(
- [[
- <p>{}</p>
- ]],
- { d(1, get_visual) }
- ),
- { condition = line_begin }
- ), -- UNORDERED LIST
- s(
- { trig = "itt", snippetType = "autosnippet" },
- fmt(
- [[
- <ul>
- <li>{}</li>{}
- </ul>
- ]],
- { i(1), i(0) }
- ),
- { condition = line_begin }
- ), -- LIST ITEM
- s(
- { trig = "ii", snippetType = "autosnippet" },
- fmt(
- [[
- <li>{}</li>
- ]],
- { d(1, get_visual) }
- ),
- { condition = line_begin }
- ),
- -- DOCUMENT TEMPLATE
- s(
- { trig = "base" },
- fmt(
- [[
- <!doctype HTML>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>{}</title>
- </head>
- <body>
- {}
- </body>
- </html>
- ]],
- { i(1, "FooBar"), i(0) }
- ),
- { condition = line_begin }
- ), -- ANCHOR TAG
- s(
- {
- trig = "([^%l])aa",
- regTrig = true,
- wordTrig = false,
- snippetType = "autosnippet",
- },
- fmt(
- [[
- {}<a href="{}">{}</a>
- ]],
- {
- f(function(_, snip) return snip.captures[1] end),
- i(1),
- d(2, get_visual),
- }
- )
- ),
-}
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua b/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua
deleted file mode 100644
index ef453973..00000000
--- a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/delimiter.lua
+++ /dev/null
@@ -1,28 +0,0 @@
-local get_visual = function(args, parent)
- if #parent.snippet.env.SELECT_RAW > 0 then
- return sn(nil, i(1, parent.snippet.env.SELECT_RAW))
- else
- return sn(nil, i(1, ""))
- end
-end
-
-local translation_table = { ["("] = ")", ["{"] = "}", ["["] = "]" }
-
--- Return snippet tables
-return {
- -- LEFT/RIGHT ALL BRACES
- s(
- {
- trig = "([^%a])l([%(%[%{])",
- regTrig = true,
- wordTrig = false,
- snippetType = "autosnippet",
- },
- fmta("<>\\left<><>\\right<>", {
- f(function(_, snip) return snip.captures[1] end),
- f(function(_, snip) return snip.captures[2] end),
- d(1, get_visual),
- f(function(_, snip) return translation_table[snip.captures[2]] end),
- })
- ),
-}
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/greek.lua b/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/greek.lua
deleted file mode 100644
index ebf4f9d7..00000000
--- a/modules/by-name/nv/nvim/plgs/luasnip/lua/snippets/tex/greek.lua
+++ /dev/null
@@ -1,37 +0,0 @@
--- Return snippet tables
-return {
- s({ trig = ";a", snippetType = "autosnippet" }, { t("\\alpha") }),
- s({ trig = ";b", snippetType = "autosnippet" }, { t("\\beta") }),
- s({ trig = ";g", snippetType = "autosnippet" }, { t("\\gamma") }),
- s({ trig = ";G", snippetType = "autosnippet" }, { t("\\Gamma") }),
- s({ trig = ";d", snippetType = "autosnippet" }, { t("\\delta") }),
- s({ trig = ";D", snippetType = "autosnippet" }, { t("\\Delta") }),
- s({ trig = ";e", snippetType = "autosnippet" }, { t("\\epsilon") }),
- s({ trig = ";ve", snippetType = "autosnippet" }, { t("\\varepsilon") }),
- s({ trig = ";z", snippetType = "autosnippet" }, { t("\\zeta") }),
- s({ trig = ";h", snippetType = "autosnippet" }, { t("\\eta") }),
- s({ trig = ";o", snippetType = "autosnippet" }, { t("\\theta") }),
- s({ trig = ";vo", snippetType = "autosnippet" }, { t("\\vartheta") }),
- s({ trig = ";O", snippetType = "autosnippet" }, { t("\\Theta") }),
- s({ trig = ";k", snippetType = "autosnippet" }, { t("\\kappa") }),
- s({ trig = ";l", snippetType = "autosnippet" }, { t("\\lambda") }),
- s({ trig = ";L", snippetType = "autosnippet" }, { t("\\Lambda") }),
- s({ trig = ";m", snippetType = "autosnippet" }, { t("\\mu") }),
- s({ trig = ";n", snippetType = "autosnippet" }, { t("\\nu") }),
- s({ trig = ";x", snippetType = "autosnippet" }, { t("\\xi") }),
- s({ trig = ";X", snippetType = "autosnippet" }, { t("\\Xi") }),
- s({ trig = ";i", snippetType = "autosnippet" }, { t("\\pi") }),
- s({ trig = ";I", snippetType = "autosnippet" }, { t("\\Pi") }),
- s({ trig = ";r", snippetType = "autosnippet" }, { t("\\rho") }),
- s({ trig = ";s", snippetType = "autosnippet" }, { t("\\sigma") }),
- s({ trig = ";S", snippetType = "autosnippet" }, { t("\\Sigma") }),
- s({ trig = ";t", snippetType = "autosnippet" }, { t("\\tau") }),
- s({ trig = ";f", snippetType = "autosnippet" }, { t("\\phi") }),
- s({ trig = ";vf", snippetType = "autosnippet" }, { t("\\varphi") }),
- s({ trig = ";F", snippetType = "autosnippet" }, { t("\\Phi") }),
- s({ trig = ";c", snippetType = "autosnippet" }, { t("\\chi") }),
- s({ trig = ";p", snippetType = "autosnippet" }, { t("\\psi") }),
- s({ trig = ";P", snippetType = "autosnippet" }, { t("\\Psi") }),
- s({ trig = ";w", snippetType = "autosnippet" }, { t("\\omega") }),
- s({ trig = ";W", snippetType = "autosnippet" }, { t("\\Omega") }),
-}
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/snippets/all.lua b/modules/by-name/nv/nvim/plgs/luasnip/snippets/all.lua
new file mode 100644
index 00000000..8c30063e
--- /dev/null
+++ b/modules/by-name/nv/nvim/plgs/luasnip/snippets/all.lua
@@ -0,0 +1,322 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+local ls = require("luasnip")
+local fmt = require("luasnip.extras.fmt").fmt
+
+--- Get the comment string {begin,end} table
+---
+---@param comment_type integer 1 for `line`-comment and 2 for `block`-comment
+---@return table comment_strings {["begin"]=begin_comment_string, ["end"]=end_comment_string}
+local get_comment_string = function(comment_type)
+ local calculate_comment_string = require("Comment.ft").calculate
+ local utils = require("Comment.utils")
+
+ -- use the `Comments.nvim` API to fetch the comment string for the region (eq. '--%s' or '--[[%s]]' for `lua`)
+ local cstring = calculate_comment_string({ ctype = comment_type, range = utils.get_region() })
+
+ if cstring == nil then
+ -- TODO: Use `vim.bo.commentstring` <2025-05-02>
+
+ -- Use some useful default values.
+ return { ["begin"] = "#", ["end"] = "" }
+ end
+
+ -- as we want only the strings themselves and not strings ready for using `format` we want to split the left and right side
+ local left, right = utils.unwrap_cstr(cstring)
+
+ -- create a `{left, right}` table for it
+ return { ["begin"] = left, ["end"] = right }
+end
+
+--- Wraps a table of snippet nodes in two comment function nodes.
+---
+---@param comment_type integer 1 for `line`-comment and 2 for `block`-comment
+---@param nodes table The nodes that should be wrapped
+---@return table wrapped_nodes The now wrapped `nodes` table.
+local wrap_snippet_in_comments = function(comment_type, nodes)
+ local output = {}
+
+ table.insert(output, ls.function_node(function() return get_comment_string(comment_type)["begin"] end))
+
+ for _, v in ipairs(nodes) do
+ table.insert(output, v)
+ end
+
+ table.insert(output, ls.function_node(function() return get_comment_string(comment_type)["end"] end))
+
+ return output
+end
+
+-- auto_pairs {{{
+local get_visual = function(_, parent)
+ if #parent.snippet.env.SELECT_RAW > 0 then
+ return ls.snippet_node(nil, ls.insert_node(1, parent.snippet.env.SELECT_RAW))
+ else
+ return ls.snippet_node(nil, ls.insert_node(1, ""))
+ end
+end
+
+local function char_count_same(c1, c2)
+ local line = vim.api.nvim_get_current_line()
+ -- '%'-escape chars to force explicit match (gsub accepts patterns).
+ -- second return value is number of substitutions.
+ local _, ct1 = string.gsub(line, "%" .. c1, "")
+ local _, ct2 = string.gsub(line, "%" .. c2, "")
+ return ct1 == ct2
+end
+
+local function even_count(c, ...)
+ local line = vim.api.nvim_get_current_line()
+ local _, ct = string.gsub(line, c, "")
+ return ct % 2 == 0
+end
+
+-- This makes creation of pair-type snippets easier.
+local function pair(pair_begin, pair_end, file_types, condition_function)
+ -- FIXME(@Soispha): This only works if file_types == nil, otherwise the snippet does not expand.
+ -- It would be nice, if it would support both an empty array (`{}`) and nil <2023-08-27>
+ -- file_types = file_types or {};
+
+ return ls.snippet({
+ trig = pair_begin,
+ wordTrig = false,
+ snippetType = "autosnippet",
+ }, {
+ ls.text_node({ pair_begin }),
+ ls.dynamic_node(1, get_visual),
+ ls.text_node({ pair_end }),
+ }, {
+ condition = function()
+ local filetype_check = true
+
+ if file_types ~= nil then filetype_check = file_types[vim.bo.filetype] or false end
+
+ return (not condition_function(pair_begin, pair_end)) and filetype_check
+ end,
+ })
+end
+
+local auto_pairs = {
+ pair("(", ")", nil, char_count_same),
+ pair("{", "}", nil, char_count_same),
+ pair("[", "]", nil, char_count_same),
+ pair("<", ">", { ["rust"] = true, ["tex"] = true }, char_count_same),
+ pair("'", "'", nil, even_count),
+ pair("\"", "\"", nil, even_count),
+ pair("`", "`", nil, even_count),
+}
+
+ls.add_snippets("all", auto_pairs, { type = "snippets", key = "auto_pairs" })
+-- }}}
+
+-- todo_comments {{{
+local read_git_config = function(config_value)
+ local command = string.format("git config \"%s\"", config_value)
+
+ local handle = io.popen(command)
+ if handle == nil then return error(string.format("Failed to call `%s`.", command)) end
+
+ local result = handle:read("*a")
+ handle:close()
+
+ -- stripped = string.gsub(str, '%s+', '')
+ return string.gsub(result, "\n", "")
+end
+
+--- Create a @handle from a full name.
+---
+--- Example:
+--- “Benedikt Peetz” -> “@bpeetz”
+local handle_from_name = function(name)
+ -- from: https://stackoverflow.com/a/7615129
+ local split = function(inputstr, sep)
+ local t = {}
+ for str in string.gmatch(inputstr, "([^" .. sep .. "]+)") do
+ table.insert(t, str)
+ end
+ return t
+ end
+
+ -- Split on spaces
+ local parts = split(name, "%s")
+
+ local output_name = ""
+
+ if #parts > 2 then
+ -- Only use the first chars.
+ --
+ -- Example:
+ -- “Richard Matthew Stallman” -> “rms”
+ for _, val in ipairs(parts) do
+ output_name = string.format("%s%s", output_name, val:sub(1, 1))
+ end
+ elseif #parts == 2 then
+ output_name = string.format("%s%s", parts[1]:sub(1, 1), parts[2])
+ elseif #parts == 1 then
+ output_name = parts[1]
+ elseif #parts == 0 then
+ output_name = "<NoName>"
+ end
+
+ return string.format("@%s", output_name:lower())
+end
+
+--- Generate a comment snippet
+---
+---@param trig string The trigger
+---@param name string name for the comment (ex.: {FIX, ISSUE, FIXIT, BUG})
+---@param comment_type integer The comment type.
+---@param mark_function function: The function used to get the marks
+local todo_snippet = function(trig, name, comment_type, mark_function)
+ assert(trig, "context doesn't include a `trig` key which is mandatory")
+ assert(comment_type == 1 or comment_type == 2)
+
+ local context = {}
+ context.name = name .. " comment"
+ context.trig = trig
+
+ local date_node, signature_node = mark_function()
+
+ local nodes = fmt(
+ "{} {}{}: {} {} {}",
+ wrap_snippet_in_comments(comment_type, {
+ ls.text_node(name),
+ signature_node,
+ ls.insert_node(1, "content"),
+ date_node,
+ })
+ )
+
+ return ls.snippet(context, nodes, { ctype = comment_type })
+end
+
+---@param trigger string: The luasnip trigger
+---@param comment_type integer: The luasnip comment type
+---@param name string: All aliases for a name
+---@return table: All possible snippets build from the marks
+local process_marks = function(trigger, name, comment_type)
+ local username = function() return handle_from_name(read_git_config("user.name")) end
+
+ local marks = {
+ signature = function() return ls.text_node("(" .. username() .. ")"), ls.text_node("") end,
+
+ date_signature = function()
+ return ls.text_node("<" .. os.date("%Y-%m-%d") .. ">"), ls.text_node("(" .. username() .. ")")
+ end,
+
+ date = function() return ls.text_node("<" .. os.date("%Y-%m-%d") .. ">"), ls.text_node("") end,
+
+ empty = function() return ls.text_node(""), ls.text_node("") end,
+ }
+
+ local output = {}
+ for mark_name, mark_function in pairs(marks) do
+ local trig = trigger .. "-" .. mark_name
+
+ output[#output + 1] = todo_snippet(trig, name, comment_type, mark_function)
+ end
+
+ return output
+end
+
+local todo_snippet_specs = {
+ { { trig = "todo" }, { "TODO" }, { ctype = 1 } },
+ { { trig = "fix" }, { "FIXME", "ISSUE" }, { ctype = 1 } },
+ { { trig = "hack" }, { "HACK" }, { ctype = 1 } },
+ { { trig = "warn" }, { "WARNING" }, { ctype = 1 } },
+ { { trig = "perf" }, { "PERFORMANCE", "OPTIMIZE" }, { ctype = 1 } },
+ { { trig = "note" }, { "NOTE", "INFO" }, { ctype = 1 } },
+
+ -- NOTE: Block commented todo-comments
+ { { trig = "todob" }, { "TODO" }, { ctype = 2 } },
+ { { trig = "fixb" }, { "FIXME", "ISSUE" }, { ctype = 2 } },
+ { { trig = "hackb" }, { "HACK" }, { ctype = 2 } },
+ { { trig = "warnb" }, { "WARNING" }, { ctype = 2 } },
+ { { trig = "perfb" }, { "PERF", "PERFORMANCE", "OPTIM", "OPTIMIZE" }, { ctype = 2 } },
+ { { trig = "noteb" }, { "NOTE", "INFO" }, { ctype = 2 } },
+}
+
+local todo_comment_snippets = {}
+for _, v in ipairs(todo_snippet_specs) do
+ local snippets = process_marks(v[1].trig, v[2][1], v[3].ctype)
+ for _, value in pairs(snippets) do
+ table.insert(todo_comment_snippets, value)
+ end
+end
+
+ls.add_snippets("all", todo_comment_snippets, { type = "snippets", key = "todo_comments" })
+-- }}}
+
+-- spdx snippets {{{
+local generate_spdx_snippet = function(comment_type, spdx_license_expr, trigger)
+ assert(trigger, "context doesn't include a `trig` key which is mandatory")
+ assert(comment_type == 1 or comment_type == 2)
+
+ local context = {}
+ context.name = trigger .. " spdx snippet expr"
+ context.trig = trigger
+
+ local nodes = {
+ fmt("{} SPDX-SnippetBegin {}", wrap_snippet_in_comments(comment_type, {})),
+
+ fmt(
+ "{} SPDX-SnippetCopyrightText: {} {} <{}> {}",
+ wrap_snippet_in_comments(comment_type, {
+ ls.insert_node(1, "year"),
+ ls.insert_node(2, "author"),
+ ls.insert_node(3, "email"),
+ })
+ ),
+
+ fmt(
+ "{} SPDX-License-Identifier: {} {}",
+ wrap_snippet_in_comments(comment_type, {
+ ls.text_node(spdx_license_expr),
+ })
+ ),
+
+ { ls.insert_node(4, "content") },
+
+ fmt("{} SPDX-SnippetEnd {}", wrap_snippet_in_comments(comment_type, {})),
+
+ { ls.insert_node(0) },
+ }
+
+ local newline_nodes = {}
+ for _, sub_nodes in ipairs(nodes) do
+ for _, node in ipairs(sub_nodes) do
+ table.insert(newline_nodes, node)
+ end
+
+ -- luasnip requires newlines to be encoded like this:
+ table.insert(newline_nodes, ls.text_node({ "", "" }))
+ end
+
+ return ls.snippet(context, newline_nodes, { ctype = comment_type })
+end
+
+local spdx = {
+ { trigger = "spdx-AGPL3+", license = "AGPL-3.0-or-later" },
+ { trigger = "spdx-GPL3+", license = "GPL-3.0-or-later" },
+ { trigger = "spdx-MIT", license = "MIT" },
+}
+
+local spdx_snippets = {}
+for _, value in ipairs(spdx) do
+ local snippet = generate_spdx_snippet(1, value.license, value.trigger)
+ table.insert(spdx_snippets, snippet)
+
+ snippet = generate_spdx_snippet(2, value.license, value.trigger .. "-block")
+ table.insert(spdx_snippets, snippet)
+end
+
+ls.add_snippets("all", spdx_snippets, { type = "snippets", key = "spdx_snippets" })
+-- }}}
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua b/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua
new file mode 100644
index 00000000..02d285b7
--- /dev/null
+++ b/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua
@@ -0,0 +1,41 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+local ls = require("luasnip")
+local fmt = require("luasnip.extras.fmt").fmt
+
+local get_visual = function(_, parent)
+ if #parent.snippet.env.SELECT_RAW > 0 then
+ return ls.snippet_node(nil, ls.insert_node(1, parent.snippet.env.SELECT_RAW))
+ else
+ return ls.snippet_node(nil, ls.insert_node(1, ""))
+ end
+end
+
+local translation_table = { ["("] = ")", ["{"] = "}", ["["] = "]" }
+
+-- Return snippet tables
+return {
+ -- LEFT/RIGHT ALL BRACES
+ ls.snippet(
+ {
+ trig = "([^%a])l([%(%[%{])",
+ regTrig = true,
+ wordTrig = false,
+ snippetType = "autosnippet",
+ },
+ fmt("{}\\left{}{}\\right{}", {
+ ls.function_node(function(_, snip) return snip.captures[1] end),
+ ls.function_node(function(_, snip) return snip.captures[2] end),
+ ls.dynamic_node(1, get_visual),
+ ls.function_node(function(_, snip) return translation_table[snip.captures[2]] end),
+ })
+ ),
+}
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/greek.lua b/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/greek.lua
new file mode 100644
index 00000000..a98f6e8c
--- /dev/null
+++ b/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/greek.lua
@@ -0,0 +1,49 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+local ls = require("luasnip")
+
+-- Return snippet tables
+return {
+ ls.snippet({ trig = ";a", snippetType = "autosnippet" }, { ls.text_node("\\alpha") }),
+ ls.snippet({ trig = ";b", snippetType = "autosnippet" }, { ls.text_node("\\beta") }),
+ ls.snippet({ trig = ";g", snippetType = "autosnippet" }, { ls.text_node("\\gamma") }),
+ ls.snippet({ trig = ";G", snippetType = "autosnippet" }, { ls.text_node("\\Gamma") }),
+ ls.snippet({ trig = ";d", snippetType = "autosnippet" }, { ls.text_node("\\delta") }),
+ ls.snippet({ trig = ";D", snippetType = "autosnippet" }, { ls.text_node("\\Delta") }),
+ ls.snippet({ trig = ";e", snippetType = "autosnippet" }, { ls.text_node("\\epsilon") }),
+ ls.snippet({ trig = ";ve", snippetType = "autosnippet" }, { ls.text_node("\\varepsilon") }),
+ ls.snippet({ trig = ";z", snippetType = "autosnippet" }, { ls.text_node("\\zeta") }),
+ ls.snippet({ trig = ";h", snippetType = "autosnippet" }, { ls.text_node("\\eta") }),
+ ls.snippet({ trig = ";o", snippetType = "autosnippet" }, { ls.text_node("\\theta") }),
+ ls.snippet({ trig = ";vo", snippetType = "autosnippet" }, { ls.text_node("\\vartheta") }),
+ ls.snippet({ trig = ";O", snippetType = "autosnippet" }, { ls.text_node("\\Theta") }),
+ ls.snippet({ trig = ";k", snippetType = "autosnippet" }, { ls.text_node("\\kappa") }),
+ ls.snippet({ trig = ";l", snippetType = "autosnippet" }, { ls.text_node("\\lambda") }),
+ ls.snippet({ trig = ";L", snippetType = "autosnippet" }, { ls.text_node("\\Lambda") }),
+ ls.snippet({ trig = ";m", snippetType = "autosnippet" }, { ls.text_node("\\mu") }),
+ ls.snippet({ trig = ";n", snippetType = "autosnippet" }, { ls.text_node("\\nu") }),
+ ls.snippet({ trig = ";x", snippetType = "autosnippet" }, { ls.text_node("\\xi") }),
+ ls.snippet({ trig = ";X", snippetType = "autosnippet" }, { ls.text_node("\\Xi") }),
+ ls.snippet({ trig = ";i", snippetType = "autosnippet" }, { ls.text_node("\\pi") }),
+ ls.snippet({ trig = ";I", snippetType = "autosnippet" }, { ls.text_node("\\Pi") }),
+ ls.snippet({ trig = ";r", snippetType = "autosnippet" }, { ls.text_node("\\rho") }),
+ ls.snippet({ trig = ";s", snippetType = "autosnippet" }, { ls.text_node("\\sigma") }),
+ ls.snippet({ trig = ";S", snippetType = "autosnippet" }, { ls.text_node("\\Sigma") }),
+ ls.snippet({ trig = ";t", snippetType = "autosnippet" }, { ls.text_node("\\tau") }),
+ ls.snippet({ trig = ";f", snippetType = "autosnippet" }, { ls.text_node("\\phi") }),
+ ls.snippet({ trig = ";vf", snippetType = "autosnippet" }, { ls.text_node("\\varphi") }),
+ ls.snippet({ trig = ";F", snippetType = "autosnippet" }, { ls.text_node("\\Phi") }),
+ ls.snippet({ trig = ";c", snippetType = "autosnippet" }, { ls.text_node("\\chi") }),
+ ls.snippet({ trig = ";p", snippetType = "autosnippet" }, { ls.text_node("\\psi") }),
+ ls.snippet({ trig = ";P", snippetType = "autosnippet" }, { ls.text_node("\\Psi") }),
+ ls.snippet({ trig = ";w", snippetType = "autosnippet" }, { ls.text_node("\\omega") }),
+ ls.snippet({ trig = ";W", snippetType = "autosnippet" }, { ls.text_node("\\Omega") }),
+}
diff --git a/modules/by-name/nv/nvim/plgs/neorg/default.nix b/modules/by-name/nv/nvim/plgs/neorg/default.nix
index 03afb16c..b69f5a58 100644
--- a/modules/by-name/nv/nvim/plgs/neorg/default.nix
+++ b/modules/by-name/nv/nvim/plgs/neorg/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -5,7 +14,9 @@
}: let
cfg = config.soispha.programs.nvim;
in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+ # TODO: Re-active, whence neorg actually builds with all the treesitter grammars
+ # activated <2026-01-18>
+ home-manager.users.soispha.programs.nixvim = lib.mkIf false {
extraFiles = {
"ftplugin/norg.lua".text = ''
${lib.strings.fileContents ./key_mappings.lua}
@@ -44,11 +55,7 @@ in {
__empty = null;
};
"core.dirman".config = {
- workspaces = {
- general = "~/repos/notes/general";
- journal = "~/repos/notes/journal";
- projects = "~/repos/notes/projects";
- };
+ workspaces = {};
};
"core.export".config = {
__empty = null;
diff --git a/modules/by-name/nv/nvim/plgs/neorg/key_mappings.lua b/modules/by-name/nv/nvim/plgs/neorg/key_mappings.lua
index e2ebb653..5391bf0b 100644
--- a/modules/by-name/nv/nvim/plgs/neorg/key_mappings.lua
+++ b/modules/by-name/nv/nvim/plgs/neorg/key_mappings.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
-- Override some of my default key mappings to better integrate into neorg.
-- They still to the same conceptual thing.
diff --git a/modules/by-name/nv/nvim/plgs/nvim-cmp/default.nix b/modules/by-name/nv/nvim/plgs/nvim-cmp/default.nix
index 8d61dbd7..48883bd3 100644
--- a/modules/by-name/nv/nvim/plgs/nvim-cmp/default.nix
+++ b/modules/by-name/nv/nvim/plgs/nvim-cmp/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -5,49 +14,88 @@
}: let
cfg = config.soispha.programs.nvim;
in {
- home-manager.users.soispha.programs.nixvim.plugins.cmp = lib.mkIf cfg.enable {
- /*
- TODO: integrate this:
- ```lua
- enabled = {
- function()
- -- disable completion in comments
- local context = require 'cmp.config.context'
- -- keep command mode completion enabled when cursor is in a comment
- -- te
- if vim.api.nvim_get_mode().mode == 'c' then
- return true
- else
- return not context.in_treesitter_capture("comment")
- and not context.in_syntax_group("Comment")
+ soispha.nixpkgs.unfreePackageNames = [
+ # the plugin is lacking an license and is thus unfree, effectively
+ # its okay though (TODO: investigate <2026-05-11>)?
+ "cmp-calc"
+ ];
+
+ home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+ opts.completeopt = [
+ "menu" # Show completions in a menu
+ "menuone" # Also open menu, when only one completion exists
+ "noselect" # Do not pre select one of the completions
+ ];
+
+ keymaps = [
+ {
+ key = "hh";
+ mode = ["i"];
+ action.__raw = ''
+ function()
+ require('cmp').select_next_item()
end
- end
- },
- ```
- */
- enable = true;
- autoEnableSources = true;
- settings = {
- mapping = {
- # TODO: add support for desc and which key here
- "<C-d>" = "cmp.mapping.scroll_docs(-4)"; # desc = "Scroll up by four lines"
- "<C-f>" = "cmp.mapping.scroll_docs(4)"; # desc = "Scroll down by four lines"
- "HH" = "cmp.mapping.complete()"; # desc = "Confirm snipped"
- };
+ '';
+ options.desc = "go forward in completion menu";
+ }
+ {
+ key = "uu";
+ mode = ["i"];
+ action.__raw = ''
+ function()
+ require('cmp').confirm()
+ end
+ '';
+ options.desc = "confirm the selected item";
+ }
- snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end";
+ {
+ key = "<C-d>";
+ mode = ["i"];
+ action.__raw = ''
+ function()
+ require('cmp').mapping.scroll_docs(-4)
+ end
+ '';
+ options.desc = "Scroll up by four lines";
+ }
+ {
+ key = "<C-f>";
+ mode = ["i"];
+ action.__raw = ''
+ function()
+ require('cmp').mapping.scroll_docs(4)
+ end
+ '';
+ options.desc = "Scroll down by four lines";
+ }
+ ];
- sources = [
- {name = "nvim_lsp";}
- {name = "luasnip";}
- {name = "path";}
- {name = "git";} # TODO: I might want to add config to allow all issues/prs <2023-10-16>
- # {name = "convertionalcommits";} # TODO: Useless without commitlint [https://commitlint.js.org/] <2023-10-16>
- # {name = "rg";} # TODO: This might really RIP-grep my system <2023-10-16>
- # {name = "buffer";}
- # {name = "digraphs";}
- {name = "calc";}
- ];
+ plugins.cmp = {
+ enable = true;
+ autoEnableSources = true;
+
+ settings = {
+ mapping = {};
+
+ snippet.expand.__raw = ''
+ function(args)
+ require('luasnip').lsp_expand(args.body)
+ end
+ '';
+
+ sources = [
+ {name = "nvim_lsp";}
+ {name = "luasnip";}
+ {name = "path";}
+ {name = "git";} # TODO: I might want to add config to allow all issues/prs <2023-10-16>
+ # {name = "convertionalcommits";} # TODO: Useless without commitlint [https://commitlint.js.org/] <2023-10-16>
+ # {name = "rg";} # TODO: This might really RIP-grep my system <2023-10-16>
+ # {name = "buffer";}
+ # {name = "digraphs";}
+ {name = "calc";}
+ ];
+ };
};
};
}
diff --git a/modules/by-name/nv/nvim/plgs/nvim-lint/default.nix b/modules/by-name/nv/nvim/plgs/nvim-lint/default.nix
index ee057a9b..90e81832 100644
--- a/modules/by-name/nv/nvim/plgs/nvim-lint/default.nix
+++ b/modules/by-name/nv/nvim/plgs/nvim-lint/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
config,
diff --git a/modules/by-name/nv/nvim/plgs/nvim-lint/lua/nvim-lint.lua b/modules/by-name/nv/nvim/plgs/nvim-lint/lua/nvim-lint.lua
index 770c3bb5..5b5fd4b8 100644
--- a/modules/by-name/nv/nvim/plgs/nvim-lint/lua/nvim-lint.lua
+++ b/modules/by-name/nv/nvim/plgs/nvim-lint/lua/nvim-lint.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
require("lint").linters_by_ft = {
-- text
markdown = {},
diff --git a/modules/by-name/nv/nvim/plgs/raw_plugins/default.nix b/modules/by-name/nv/nvim/plgs/raw_plugins/default.nix
deleted file mode 100644
index e5d401a0..00000000
--- a/modules/by-name/nv/nvim/plgs/raw_plugins/default.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- config,
- lib,
- ...
-}: let
- cfg = config.soispha.programs.nvim;
-in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
- # Not all plugins have own modules
- # You can add missing plugins here
- # `pkgs.vimExtraPlugins` is added by the overlay you added at the beginning
- # For a list of available plugins, look here:
- # https://github.com/jooooscha/nixpkgs-vim-extra-plugins/blob/main/plugins.md
- extraPlugins = [
- ];
- };
-}
diff --git a/modules/by-name/nv/nvim/plgs/telescope/default.nix b/modules/by-name/nv/nvim/plgs/telescope/default.nix
index 193ee1ac..b2c66edc 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/telescope/defaults/default.nix b/modules/by-name/nv/nvim/plgs/telescope/defaults/default.nix
index 11d04304..7cfe9698 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/defaults/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/defaults/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/default.nix b/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/default.nix
index 8eee9a27..693db974 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{config, ...}: let
cfg = config.soispha.programs.nvim;
in {
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/tex.lua b/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/tex.lua
index 4107a7c5..fbe7c993 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/tex.lua
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/bibtex/tex.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
-- local used = false;
-- vim.keymap.set('n', '<leader>t', function()
-- used = not used;
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/default.nix b/modules/by-name/nv/nvim/plgs/telescope/extensions/default.nix
index 0b1e033a..0b0ed0f6 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{...}: {
imports = [
./bibtex
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/frecency/default.nix b/modules/by-name/nv/nvim/plgs/telescope/extensions/frecency/default.nix
index f4e3d116..3d5eae99 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/frecency/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/frecency/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
lib,
config,
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/fzy-native/default.nix b/modules/by-name/nv/nvim/plgs/telescope/extensions/fzy-native/default.nix
index 4194e688..7a2fc164 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/fzy-native/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/fzy-native/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/default.nix b/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/default.nix
index 6153b063..4d91e988 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
lib,
config,
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua b/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua
index 48a8588d..b6542429 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/rooter/lua/rooter.lua
@@ -1,3 +1,13 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
-- Taken from: https://github.com/desdic/telescope-rooter.nvim/blob/69423216c75a5f1f1477bbf8faf6b0dc8af04099/lua/telescope/_extensions/rooter.lua
local has_telescope, telescope = pcall(require, "telescope")
if not has_telescope then
diff --git a/modules/by-name/nv/nvim/plgs/telescope/extensions/symbols/default.nix b/modules/by-name/nv/nvim/plgs/telescope/extensions/symbols/default.nix
index adbb466a..1f82523d 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/extensions/symbols/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/extensions/symbols/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
pkgs,
config,
diff --git a/modules/by-name/nv/nvim/plgs/telescope/keymaps/default.nix b/modules/by-name/nv/nvim/plgs/telescope/keymaps/default.nix
index a474f097..d5cc55f5 100644
--- a/modules/by-name/nv/nvim/plgs/telescope/keymaps/default.nix
+++ b/modules/by-name/nv/nvim/plgs/telescope/keymaps/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/todo-comments/default.nix b/modules/by-name/nv/nvim/plgs/todo-comments/default.nix
index ddbe367d..cd1a7dbf 100644
--- a/modules/by-name/nv/nvim/plgs/todo-comments/default.nix
+++ b/modules/by-name/nv/nvim/plgs/todo-comments/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
diff --git a/modules/by-name/nv/nvim/plgs/treesitter/default.nix b/modules/by-name/nv/nvim/plgs/treesitter/default.nix
index 02088d0a..1377cb8a 100644
--- a/modules/by-name/nv/nvim/plgs/treesitter/default.nix
+++ b/modules/by-name/nv/nvim/plgs/treesitter/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
pkgs,
@@ -6,54 +15,34 @@
}: let
cfg = config.soispha.programs.nvim;
in {
- home-manager.users.soispha. programs.nixvim = lib.mkIf cfg.enable {
+ home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+ # NOTE: These are required to build grammars, but I already use the nix grammars <2024-07-13>
+ dependencies = {
+ tree-sitter.enable = false;
+ nodejs.enable = false;
+ gcc.enable = false;
+ };
+
plugins.treesitter = {
enable = true;
- # NOTE: These are required to build grammars, but I already use the nix grammars <2024-07-13>
- gccPackage = null;
- nodejsPackage = null;
- treesitterPackage = null;
+ highlight.enable = true;
+ indent.enable = true;
+ folding.enable = false;
# inject nixvim specific highlighting (eg in extraConfigLua).
nixvimInjections = true;
- nixGrammars = true;
- grammarPackages =
- # Append the `tree-sitter-yts` grammar to all the other grammars.
- # TODO: Find a better way to do this. <2024-11-08>
- config.home-manager.users.soispha.programs.nixvim.plugins.treesitter.package.passthru.allGrammars
- ++ [pkgs.tree-sitter-yts];
-
- settings = {
- auto_install = false;
- ensureInstalled = "all";
- indent.enable = true;
- disabledLanguages = [];
+ grammarPackages = pkgs.vimPlugins.nvim-treesitter.allGrammars ++ [pkgs.tree-sitter-yts];
- highlight = {
- enable = true;
- disable = [];
+ # Register the parser to filetype
+ languageRegister.yts = "yts";
+ };
- # Setting this to true will run `:h syntax` and tree-sitter at the same time.
- # Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
- # Using this option may slow down your editor; and you may see some duplicate highlights.
- # Instead of true it can also be a list of languages
- additionalVimRegexHighlighting = ["latex"];
- };
+ # TODO: Is that necessary? <2026-01-18>
+ # extraPlugins = [pkgs.tree-sitter-yts];
- incrementalSelection = {
- enable = true;
- keymaps = {
- # TODO: include these in the which-key description
- initSelection = "gnn"; # set to `false` to disable one of the mappings
- nodeIncremental = "grn";
- scopeIncremental = "grc";
- nodeDecremental = "grm";
- };
- };
- };
- };
+ # TODO: Remove this by moving the queries in the package to `queries/<lang>/...`' <2026-01-18>
extraFiles = {
"queries/yts/highlights.scm".text = ''
${lib.strings.fileContents "${pkgs.tree-sitter-yts}/queries/highlights.scm"}
diff --git a/modules/by-name/nv/nvim/plgs/vim-tex/default.nix b/modules/by-name/nv/nvim/plgs/vim-tex/default.nix
index 680f169a..71422f94 100644
--- a/modules/by-name/nv/nvim/plgs/vim-tex/default.nix
+++ b/modules/by-name/nv/nvim/plgs/vim-tex/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,
@@ -5,7 +14,8 @@
}: let
cfg = config.soispha.programs.nvim;
in {
- home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable {
+ # TODO: Do I still need this module at all? <2026-01-18>
+ home-manager.users.soispha.programs.nixvim = lib.mkIf false {
opts.conceallevel = 0;
plugins.vimtex = {
diff --git a/modules/by-name/nv/nvim/plgs/which-key/default.nix b/modules/by-name/nv/nvim/plgs/which-key/default.nix
index 20004bb1..e5bca546 100644
--- a/modules/by-name/nv/nvim/plgs/which-key/default.nix
+++ b/modules/by-name/nv/nvim/plgs/which-key/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
{
config,
lib,