From a12ae9cb3fdba6962a842a3d377ab1e48a46eab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 26 Oct 2024 17:02:51 +0200 Subject: [PATCH 1/6] feat(nvim): add treesitter-textobjects --- .../new_plugins/treesitter-textobjects.nix | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 modules/programs/nvim/new_plugins/treesitter-textobjects.nix diff --git a/modules/programs/nvim/new_plugins/treesitter-textobjects.nix b/modules/programs/nvim/new_plugins/treesitter-textobjects.nix new file mode 100644 index 0000000..589b923 --- /dev/null +++ b/modules/programs/nvim/new_plugins/treesitter-textobjects.nix @@ -0,0 +1,91 @@ +{ config, lib, pkgs, inputs, ... }: + +let + inherit (lib) mkEnableOption mkIf readFile; +in +{ + home-manager.users.moritz.programs.nixvim = { + plugins.treesitter-textobjects = { + enable = true; + move = { + enable = true; + gotoNext = { + "]f" = { + desc = "Next function"; + query = "@function.outer"; + }; + "]c" = { + desc = "Next class"; + query = "@class.outer"; + }; + "]b" = { + desc = "Next block"; + query = "@block.outer"; + }; + "]P" = { + desc = "Next parameter"; + query = "@parameter.outer"; + }; + }; + gotoPrevious = { + "[f" = { + desc = "Previous function"; + query = "@function.outer"; + }; + "[c" = { + desc = "Previous class"; + query = "@class.outer"; + }; + "[b" = { + desc = "Previous block"; + query = "@block.outer"; + }; + "[P" = { + desc = "Previous parameter"; + query = "@parameter.outer"; + }; + }; + }; + select = { + enable = true; + keymaps = { + "af" = { + desc = "function"; + query = "@function.outer"; + }; + "if" = { + desc = "inner function"; + query = "@function.inner"; + }; + "ac" = { + desc = "class"; + query = "@class.outer"; + }; + "ic" = { + desc = "inner class"; + query = "@class.inner"; + }; + "ab" = { + desc = "block"; + query = "@block.outer"; + }; + "ib" = { + desc = "inner block"; + query = "@block.inner"; + }; + "aP" = { + desc = "parameter"; + query = "@parameter.outer"; + }; + "iP" = { + desc = "inner parameter"; + query = "@parameter.inner"; + }; + }; + }; + }; + performance.combinePlugins.standalonePlugins = [ + "nvim-treesitter-textobjects" + ]; + }; +} From fb41614b4f38ce80b0b67b1087c1f342824062fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 26 Oct 2024 17:03:53 +0200 Subject: [PATCH 2/6] feat(nvim): enable default catppuccin integrations --- modules/programs/nvim/new_plugins/catppuccin.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/programs/nvim/new_plugins/catppuccin.nix b/modules/programs/nvim/new_plugins/catppuccin.nix index 795c81e..a9c4f76 100644 --- a/modules/programs/nvim/new_plugins/catppuccin.nix +++ b/modules/programs/nvim/new_plugins/catppuccin.nix @@ -10,6 +10,7 @@ in colorschemes.catppuccin = { enable = true; settings.flavour = "macchiato"; + settings.default_integrations = true; }; }; } From 89fe11a95f25cabb0119d227a7c793b6375f821e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 26 Oct 2024 17:04:37 +0200 Subject: [PATCH 3/6] feat(nvim): add incremental selection in ts --- modules/programs/nvim/new_plugins/treesitter.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/programs/nvim/new_plugins/treesitter.nix b/modules/programs/nvim/new_plugins/treesitter.nix index 6ccb255..f0409fc 100644 --- a/modules/programs/nvim/new_plugins/treesitter.nix +++ b/modules/programs/nvim/new_plugins/treesitter.nix @@ -11,6 +11,12 @@ in nixvimInjections = true; settings.indent.enable = true; settings.highlight.enable = true; + settings.incremental_selection = { + enable = true; + keymaps.init_selection = "gn"; + keymaps.node_decremental = "gp"; + keymaps.node_incremental = "gn"; + }; }; performance.combinePlugins.standalonePlugins = [ "nvim-treesitter" From 49afd873daffb91af1abe6b891da10a7b18ad9c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 26 Oct 2024 17:05:31 +0200 Subject: [PATCH 4/6] feat(nvim): add better default mappings (yank + indent) --- modules/programs/nvim/new_plugins/other.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/programs/nvim/new_plugins/other.nix b/modules/programs/nvim/new_plugins/other.nix index a65cd02..6c72959 100644 --- a/modules/programs/nvim/new_plugins/other.nix +++ b/modules/programs/nvim/new_plugins/other.nix @@ -26,6 +26,9 @@ in { keymaps = [ { key = ""; action = "noh"; options.desc = "Escape and clear hlsearch"; mode = [ "i" "n" ]; } + { key = "<"; action = " Date: Sat, 26 Oct 2024 17:06:15 +0200 Subject: [PATCH 5/6] feat(nvim): add cheap openai provider for avante --- modules/programs/nvim/new_plugins/avante.nix | 22 ++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/modules/programs/nvim/new_plugins/avante.nix b/modules/programs/nvim/new_plugins/avante.nix index 1b807d2..3ad02e6 100644 --- a/modules/programs/nvim/new_plugins/avante.nix +++ b/modules/programs/nvim/new_plugins/avante.nix @@ -19,14 +19,28 @@ in require("avante_lib").load() require("avante").setup({ provider = "openai", - auto_suggestions_provider = "openai", + auto_suggestions_provider = "openai-cheap", behaviour = { - -- auto_suggestions = true, + auto_suggestions = false, }, openai = { model = "gpt-4o", - api_key_name = "cmd:cat /run/agenix/openai" - } + api_key_name = "cmd:cat /run/agenix/openai", + }, + vendors = { + ---@type AvanteProvider + ["openai-cheap"] = { + model = "gpt-4o-mini", + api_key_name = "cmd:cat /run/agenix/openai", + endpoint = "https://api.openai.com/v1", + parse_curl_args = function(opts, code_opts) + return require("avante.providers").openai.parse_curl_args(opts, code_opts) + end, + parse_response_data = function(data_stream, event_state, opts) + return require("avante.providers").openai.parse_response(data_stream, event_state, opts) + end + }, + }, }) ''; plugins.dressing.enable = true; From a6309af0e6485e8ad4c5340ff93cde7ea945b065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sat, 26 Oct 2024 17:07:33 +0200 Subject: [PATCH 6/6] feat(nvim): add conventional commits to lazygit --- modules/profiles/base.nix | 60 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index b8766c8..9aa5607 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -246,7 +246,6 @@ in f fd gi - lazygit parallel ripgrep vim @@ -300,6 +299,65 @@ in ]; }; starship.enable = true; + lazygit.enable = true; + lazygit.settings = { + customCommands = [ + { + key = ""; + context = "global"; + description = "Create new conventional commit"; + prompts = [ + { + type = "menu"; + key = "Type"; + title = "Type of change"; + options = [ + { name = "build"; description = "Changes that affect the build system or external dependencies"; value = "build"; } + { name = "feat"; description = "A new feature"; value = "feat"; } + { name = "fix"; description = "A bug fix"; value = "fix"; } + { name = "chore"; description = "Other changes that don't modify src or test files"; value = "chore"; } + { name = "ci"; description = "Changes to CI configuration files and scripts"; value = "ci"; } + { name = "docs"; description = "Documentation only changes"; value = "docs"; } + { name = "perf"; description = "A code change that improves performance"; value = "perf"; } + { name = "refactor"; description = "A code change that neither fixes a bug nor adds a feature"; value = "refactor"; } + { name = "revert"; description = "Reverts a previous commit"; value = "revert"; } + { name = "style"; description = "Changes that do not affect the meaning of the code"; value = "style"; } + { name = "test"; description = "Adding missing tests or correcting existing tests"; value = "test"; } + ]; + } + { + type = "input"; + title = "Scope"; + key = "Scope"; + initialValue = ""; + } + { + type = "menu"; + key = "Breaking"; + title = "Breaking change"; + options = [ + { name = "no"; value = ""; } + { name = "yes"; value = "!"; } + ]; + } + { + type = "input"; + title = "message"; + key = "Message"; + initialValue = ""; + } + { + type = "confirm"; + key = "Confirm"; + title = "Commit"; + body = "Are you sure you want to commit?"; + } + ]; + command = "git commit --message '{{.Form.Type}}{{ if .Form.Scope }}({{ .Form.Scope }}){{ end }}{{.Form.Breaking}}: {{.Form.Message}}'"; + loadingText = "Creating conventional commit..."; + } + ]; + }; }; home = { username = "moritz";