From df310b3e252948355f7ea0feb48eb2aee0e9b29a Mon Sep 17 00:00:00 2001 From: Frothy <76622149+FrothyMarrow@users.noreply.github.com> Date: Sat, 22 Jul 2023 16:05:08 -0400 Subject: [PATCH 1/7] fix: update bufferline from v3.0.1 branch to main --- flake.lock | 7 +++---- flake.nix | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 69727eee..cbd1ec79 100644 --- a/flake.lock +++ b/flake.lock @@ -919,16 +919,15 @@ "nvim-bufferline-lua": { "flake": false, "locked": { - "lastModified": 1666171880, - "narHash": "sha256-hueIGT7KOhca0kP0M1nUYzBrzMz+DpuZSOt5iyuEa40=", + "lastModified": 1689661992, + "narHash": "sha256-0BJXUDGeUhPALEnPgO4ix+GgI/3P/Foiqi0tf2mgUXg=", "owner": "akinsho", "repo": "nvim-bufferline.lua", - "rev": "e70be6232f632d16d2412b1faf85554285036278", + "rev": "d24378edc14a675c820a303b4512af3bbc5761e9", "type": "github" }, "original": { "owner": "akinsho", - "ref": "v3.0.1", "repo": "nvim-bufferline.lua", "type": "github" } diff --git a/flake.nix b/flake.nix index 67d38251..44af3f56 100644 --- a/flake.nix +++ b/flake.nix @@ -181,7 +181,7 @@ # Tablines nvim-bufferline-lua = { - url = "github:akinsho/nvim-bufferline.lua?ref=v3.0.1"; + url = "github:akinsho/nvim-bufferline.lua"; flake = false; }; From 16340dc8b7fd77c247f434e438557a1fe50a2297 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 24 Jul 2023 08:18:19 +0300 Subject: [PATCH 2/7] docs: wording --- .github/CONTRIBUTING.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 19f02879..10371c90 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -30,22 +30,21 @@ Here are the overall boundaries I would like you to follow while contributing to #### Documentation -If you are making a pull request to add a - +If you are making a pull request to add a #### Style **Nix** -We use Alejandra for formatting nix code, which can be invoked directly with `nix fmt` in the repository. +We use Alejandra for formatting nix code, which can be invoked directly by running `nix fmt` in the repository. While Alejandra is mostly opinionated on how code looks after formatting, certain formattings are done at the user's discretion. Please use one line code for attribute sets that contain only one subset. For example: -```nix +```nix # parent modules should always be unfolded -module = { +module = { value = mkEnableOption "some description" // { default = true; }; # same as parent modules, unfold submodules subModule = { @@ -65,15 +64,16 @@ If you move a line down after the merge operator, Alejandra will automatically u module = { key = mkEnableOption "some description" // { default = true; # we want this to be inline - }; + }; # ... } ``` For lists, it's up mostly to your discretion but please try to avoid unfolded lists if there is only one item in the list. + ```nix -# ok +# ok acceptableList = [ item1 item2 @@ -85,10 +85,11 @@ acceptableList = [ listToBeAvoided = [item1 item2 item3 item4]; ``` -*This will be moved elsewhere, disregard unless you are adding a new plugin with keybinds* +_This will be moved elsewhere, disregard unless you are adding a new plugin with keybinds_ + #### Keybinds -##### Custom key mappings support for a plugin +##### Custom key mappings support for a plugin To add custom keymappings to a plugin, a couple of helper functions are available in the project. @@ -237,5 +238,3 @@ in { ``` If you have come across a plugin that has an API that doesn't seem to easily allow custom keybindings, don't be scared to implement a draft PR. We'll help you get it done. - - From b52d0a802a28f2800eddaf454eb02d47738226f8 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 24 Jul 2023 08:18:49 +0300 Subject: [PATCH 3/7] docs: fix typo in issue search URL --- .github/ISSUE_TEMPLATE/bug_report.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 14e8cbe0..c9270b26 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -7,7 +7,7 @@ body: id: no-duplicate-issues attributes: label: "⚠️ Please verify that this bug has NOT been reported before." - description: "Search in the issues sections by clicking [HERE](https://github.com/notashelf/neovim-flake4/issues?q=)" + description: "Search in the issues sections by clicking [HERE](https://github.com/notashelf/neovim-flake/issues?q=)" options: - label: "I checked all existing issues and didn't find a similar issue" required: true From caef26936a7f612d53ea8f5c39611026730c4e4a Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 24 Jul 2023 08:19:08 +0300 Subject: [PATCH 4/7] docs: cleanup --- .../pull_request_template.md | 5 +- docs/home-manager.adoc | 77 ------------------- 2 files changed, 2 insertions(+), 80 deletions(-) delete mode 100644 docs/home-manager.adoc diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md index c50c5aa6..ca65c8b2 100644 --- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md @@ -18,11 +18,10 @@ Please delete any options that are not relevant. ## Checklist -Please try to check at least a majority of the checklist before opening your pull request. PRs -Exceptions to this will be reviewed on a case by case basis. +Please try to check at least a majority of the checklist before opening your pull request. Exceptions to this will be reviewed on a case by case basis. - [ ] My code follows the style and contributing guidelines of this project. -- [ ] I ran Alejandra to format my code. +- [ ] I ran Alejandra to format my code (`nix fmt`). - [ ] I have performed a self-review of my own code and tested it. - [ ] I have commented my code, particularly in hard-to-understand areas. - [ ] My changes generate no new warnings. diff --git a/docs/home-manager.adoc b/docs/home-manager.adoc deleted file mode 100644 index f2380928..00000000 --- a/docs/home-manager.adoc +++ /dev/null @@ -1,77 +0,0 @@ -[[ch-hm-module]] -== Home Manager - -The Home Manager module allows us to customize the different `vim` options. To use it, we first add the input flake. - -[source,nix] ----- -{ - neovim-flake = { - url = github:notashelf/neovim-flake; - # you can override input nixpkgs - inputs.nixpkgs.follows = "nixpkgs"; - }; -} ----- - -Followed by importing the HM module. - -[source,nix] ----- -{ - imports = [ neovim-flake.homeManagerModules.default ]; -} ----- - -Then we should be able to use the given module. E.g. - -[source,nix] ----- -{ - programs.neovim-flake = { - - enable = true; - # your settings need to go into the settings attrset - settings = { - vim.viAlias = false; - vim.vimAlias = true; - vim.lsp = { - enable = true; - }; - }; - }; -} ----- - -=== Custom vim plugins - -It's possible to add custom vim plugins by using the startPlugins and lua DAG settings. First we install the plugin by adding it to startPlugins. This example uses nvim-surround, but the process will be similar for other plugins as well. - -[source,nix] ----- -{ - programs.neovim-flake = { - enable = true; - settings = { - vim.startPlugins = [ pkgs.vimPlugins.nvim-surround ]; - }; - }; -} ----- - -Then we continue by requiring the plugin in lua using DAG settings. Please note that you're able to name this setting to however you want, the name will add a `--SECTION ` in the init.vim, under which it will be initialized. - -[source,nix] ----- -{ - programs.neovim-flake = { - enable = true; - settings = { - vim.startPlugins = [ pkgs.vimPlugins.nvim-surround ]; - luaConfigRC.nvim-surround = nvim-flake.lib.nvim.dag.entryAnywhere '' # nvim-flake is a reference to the flake. Please change this accordingly to your config. - require("nvim-surround").setup() - ''; - }; - }; -} ----- \ No newline at end of file From e9e6ed82b0c0729afeddfa1e8769801f83ab72b4 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 24 Jul 2023 08:19:27 +0300 Subject: [PATCH 5/7] CI: clean up workflows --- .github/workflows/cachix.yml | 12 ++++++------ .github/workflows/check.yml | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/cachix.yml b/.github/workflows/cachix.yml index 536061a5..c6be3e80 100644 --- a/.github/workflows/cachix.yml +++ b/.github/workflows/cachix.yml @@ -11,15 +11,15 @@ on: - .gitignore jobs: - cahix: + cachix: runs-on: ubuntu-latest strategy: matrix: package: - - default - - nix - - tidal - - maximal + - default + - nix + - tidal + - maximal steps: - uses: easimon/maximize-build-space@v6 with: @@ -30,7 +30,7 @@ jobs: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 with: - extra_nix_config: | + extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} auto-optimise-store = true experimental-features = nix-command flakes diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 91bbb8f6..c6d46d65 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -20,10 +20,11 @@ jobs: extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - run: nix flake check + format-with-alejandra: name: Formatting via Alejandra runs-on: ubuntu-latest - steps: + steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 with: @@ -32,4 +33,3 @@ jobs: auto-optimise-store = true experimental-features = nix-command flakes - run: nix run nixpkgs#alejandra -- -c . - From 111c2ad3177787aa215b52e29c162b9758c7c0c1 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 24 Jul 2023 08:21:54 +0300 Subject: [PATCH 6/7] docs: add @FrothyMarrow to credits --- .github/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/README.md b/.github/README.md index 0020b1b1..e7dcdb3e 100644 --- a/.github/README.md +++ b/.github/README.md @@ -52,7 +52,7 @@

-[Get Started]: #try-it-out +[Get Started]: #get-started [Documentation]: #documentation [Help]: #help [Contribute]: #contributing @@ -144,8 +144,8 @@ Special thanks to - [@FlafyDev](https://github.com/FlafyDev) - For getting the home-manager to work - [@n3oney](https://github.com/n3oney) - For making custom keybinds finally possible - [@horriblename](https://github.com/horriblename) - For actively implementing planned features and quality of life updates -- [@FlafyDev](https://github.com/FlafyDev) - For getting the home-manager to work - [@Yavko](https://github.com/Yavko) - For the amazing neovim-flake logo +- [@FrothyMarrow](https://github.com/FrothyMarrow) - For seeing mistakes that I could not and everyone who has submitted issues or pull requests! From 4233a2c20d77e054b4c783263878354a905ddafe Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Mon, 24 Jul 2023 16:51:24 +0300 Subject: [PATCH 7/7] feat: copilot completions in nvim-cmp sources --- configuration.nix | 5 ++++- flake.lock | 17 +++++++++++++++++ flake.nix | 5 +++++ lib/types/plugins.nix | 1 + modules/assistant/copilot/config.nix | 20 +++++++++++++++----- modules/assistant/copilot/copilot.nix | 17 ++++++++++++----- modules/completion/nvim-cmp/config.nix | 1 + 7 files changed, 55 insertions(+), 11 deletions(-) diff --git a/configuration.nix b/configuration.nix index a38a2dae..250fafdb 100644 --- a/configuration.nix +++ b/configuration.nix @@ -202,7 +202,10 @@ inputs: let }; vim.assistant = { - copilot.enable = isMaximal; + copilot = { + enable = isMaximal; + cmp.enable = isMaximal; + }; }; vim.session = { diff --git a/flake.lock b/flake.lock index cbd1ec79..3741f250 100644 --- a/flake.lock +++ b/flake.lock @@ -224,6 +224,22 @@ "type": "github" } }, + "copilot-cmp": { + "flake": false, + "locked": { + "lastModified": 1683831407, + "narHash": "sha256-+MzEGnhlrYRvAfskOwmw69OC1CsPXt7s3z+xPe9XPqs=", + "owner": "zbirenbaum", + "repo": "copilot-cmp", + "rev": "c2cdb3c0f5078b0619055af192295830a7987790", + "type": "github" + }, + "original": { + "owner": "zbirenbaum", + "repo": "copilot-cmp", + "type": "github" + } + }, "copilot-lua": { "flake": false, "locked": { @@ -1352,6 +1368,7 @@ "cmp-vsnip": "cmp-vsnip", "codewindow-nvim": "codewindow-nvim", "comment-nvim": "comment-nvim", + "copilot-cmp": "copilot-cmp", "copilot-lua": "copilot-lua", "crates-nvim": "crates-nvim", "dashboard-nvim": "dashboard-nvim", diff --git a/flake.nix b/flake.nix index 44af3f56..d207bff5 100644 --- a/flake.nix +++ b/flake.nix @@ -481,6 +481,11 @@ flake = false; }; + copilot-cmp = { + url = "github:zbirenbaum/copilot-cmp"; + flake = false; + }; + # Session management nvim-session-manager = { url = "github:Shatur/neovim-session-manager"; diff --git a/lib/types/plugins.nix b/lib/types/plugins.nix index 111fd8c1..aed65f44 100644 --- a/lib/types/plugins.nix +++ b/lib/types/plugins.nix @@ -87,6 +87,7 @@ with lib; let "nvim-surround" "nvim-dap" "nvim-dap-ui" + "copilot-cmp" ]; # You can either use the name of the plugin or a package. pluginsType = with types; diff --git a/modules/assistant/copilot/config.nix b/modules/assistant/copilot/config.nix index c920e355..349d6106 100644 --- a/modules/assistant/copilot/config.nix +++ b/modules/assistant/copilot/config.nix @@ -21,16 +21,21 @@ with builtins; let ''; in { config = mkIf cfg.enable { - vim.startPlugins = [ - "copilot-lua" - cfg.copilotNodePackage - ]; + vim.startPlugins = + [ + "copilot-lua" + cfg.copilotNodePackage + ] + ++ lib.optionals (cfg.cmp.enable) [ + "copilot-cmp" + ]; vim.luaConfigRC.copilot = nvim.dag.entryAnywhere '' require("copilot").setup({ -- available options: https://github.com/zbirenbaum/copilot.lua - copilot_node_command = "${cfg.copilot_node_command}", + copilot_node_command = "${cfg.copilotNodeCommand}", panel = { + enabled = ${lib.boolToString (!cfg.cmp.enable)}, keymap = { jump_prev = false, jump_next = false, @@ -44,6 +49,7 @@ in { }, }, suggestion = { + enabled = ${lib.boolToString (!cfg.cmp.enable)}, keymap = { accept = false, accept_word = false, @@ -54,6 +60,10 @@ in { }, }, }) + + ${lib.optionalString (cfg.cmp.enable) '' + require("copilot_cmp").setup() + ''} ''; vim.maps.normal = mkMerge [ diff --git a/modules/assistant/copilot/copilot.nix b/modules/assistant/copilot/copilot.nix index 003308a0..927604ca 100644 --- a/modules/assistant/copilot/copilot.nix +++ b/modules/assistant/copilot/copilot.nix @@ -10,6 +10,7 @@ with builtins; let in { options.vim.assistant.copilot = { enable = mkEnableOption "GitHub Copilot AI assistant"; + cmp.enable = mkEnableOption "nvim-cmp integration for GitHub Copilot"; panel = { position = mkOption { @@ -91,16 +92,22 @@ in { }; }; - copilot_node_command = mkOption { + copilotNodeCommand = mkOption { type = types.str; default = "${lib.getExe cfg.copilotNodePackage}"; - description = "Path to nodejs"; + description = '' + The command that will be executed to initiate nodejs for GitHub Copilot. + Recommended to leave as default. + ''; }; copilotNodePackage = mkOption { - type = with types; nullOr package; # TODO - maybe accept a path as well? imperative users might want to use something like nvm - default = pkgs.nodejs-slim; # this will likely need to be downgraded because Copilot does not stay up to date with NodeJS - description = "The package that will be used for Copilot. NodeJS v18 is recommended."; + type = with types; nullOr package; + default = pkgs.nodejs-slim; + description = '' + The nodeJS package that will be used for GitHub Copilot. If you are using a custom node command + you may want to set this option to null so that the package is not pulled from nixpkgs. + ''; }; }; } diff --git a/modules/completion/nvim-cmp/config.nix b/modules/completion/nvim-cmp/config.nix index e49fdb94..52e89725 100644 --- a/modules/completion/nvim-cmp/config.nix +++ b/modules/completion/nvim-cmp/config.nix @@ -49,6 +49,7 @@ in { "buffer" = "[Buffer]"; "crates" = "[Crates]"; "path" = "[Path]"; + "copilot" = "[Copilot]"; }; vim.maps.insert = mkMerge [