mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-21 17:59:48 +01:00
Merge pull request #81 from n3oney/release/v0.4
feat: make it possible to use strings for the RC
This commit is contained in:
commit
6aec7e7a80
4 changed files with 48 additions and 3 deletions
34
docs/custom-plugins.adoc
Normal file
34
docs/custom-plugins.adoc
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[[ch-custom-plugins]]
|
||||||
|
== Custom Plugins
|
||||||
|
|
||||||
|
You can use custom plugins, before they are implemented in the flake.
|
||||||
|
To add a plugin, you need to add it to your config's `config.vim.startPlugins` array.
|
||||||
|
This is an example of adding the FrenzyExists/aquarium-vim plugin:
|
||||||
|
|
||||||
|
[source,nix]
|
||||||
|
----
|
||||||
|
{
|
||||||
|
config.vim.startPlugins = [
|
||||||
|
(pkgs.fetchFromGitHub {
|
||||||
|
owner = "FrenzyExists";
|
||||||
|
repo = "aquarium-vim";
|
||||||
|
rev = "d09b1feda1148797aa5ff0dbca8d8e3256d028d5";
|
||||||
|
sha256 = "CtyEhCcGxxok6xFQ09feWpdEBIYHH+GIFVOaNZx10Bs=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
However, just making the plugin available might not be enough. In that case, you can write custom vimscript or lua config, using `config.vim.configRC` or `config.vim.luaConfigRC` respectively.
|
||||||
|
These options are attribute sets, and you need to give the configuration you're adding some name, like this:
|
||||||
|
|
||||||
|
[source,nix]
|
||||||
|
----
|
||||||
|
{
|
||||||
|
config.vim.configRC.aquarium = "colorscheme aquiarum";
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Note: If your configuration needs to be put in a specific place in the config, you can use functions from `inputs.neovim-flake.lib.nvim.dag` to order it. Refer to https://github.com/nix-community/home-manager/blob/master/modules/lib/dag.nix.
|
||||||
|
|
||||||
|
Also, if you successfully made your plugin work, please make a PR to add it to the flake, or open an issue with your findings so that we can make it available for everyone easily.
|
|
@ -19,6 +19,7 @@
|
||||||
<xi:include href="try-it-out.xml"/>
|
<xi:include href="try-it-out.xml"/>
|
||||||
<xi:include href="default-configs.xml"/>
|
<xi:include href="default-configs.xml"/>
|
||||||
<xi:include href="custom-configs.xml"/>
|
<xi:include href="custom-configs.xml"/>
|
||||||
|
<xi:include href="custom-plugins.xml"/>
|
||||||
<xi:include href="home-manager.xml"/>
|
<xi:include href="home-manager.xml"/>
|
||||||
<xi:include href="languages.xml"/>
|
<xi:include href="languages.xml"/>
|
||||||
<appendix xml:id="ch-options">
|
<appendix xml:id="ch-options">
|
||||||
|
|
|
@ -16,6 +16,10 @@ https://github.com/n3oney[n3oney]:
|
||||||
|
|
||||||
* Moved default keybinds into keybinds section of each module
|
* Moved default keybinds into keybinds section of each module
|
||||||
|
|
||||||
|
* Simplified luaConfigRC and configRC setting - they can now just take strings
|
||||||
|
|
||||||
|
* Refactored the resolveDag function - you can just provide a string now, which will default to dag.entryAnywhere
|
||||||
|
|
||||||
https://github.com/horriblename[horriblename]:
|
https://github.com/horriblename[horriblename]:
|
||||||
|
|
||||||
* Added `clangd` as alternative lsp for C/++.
|
* Added `clangd` as alternative lsp for C/++.
|
||||||
|
|
|
@ -132,13 +132,13 @@ in {
|
||||||
|
|
||||||
configRC = mkOption {
|
configRC = mkOption {
|
||||||
description = "vimrc contents";
|
description = "vimrc contents";
|
||||||
type = nvim.types.dagOf types.lines;
|
type = types.oneOf [(nvim.types.dagOf types.lines) types.str];
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
luaConfigRC = mkOption {
|
luaConfigRC = mkOption {
|
||||||
description = "vim lua config";
|
description = "vim lua config";
|
||||||
type = nvim.types.dagOf types.lines;
|
type = types.oneOf [(nvim.types.dagOf types.lines) types.str];
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -282,7 +282,13 @@ in {
|
||||||
dag,
|
dag,
|
||||||
mapResult,
|
mapResult,
|
||||||
}: let
|
}: let
|
||||||
sortedDag = nvim.dag.topoSort dag;
|
# When the value is a string, default it to dag.entryAnywhere
|
||||||
|
finalDag = lib.mapAttrs (name: value:
|
||||||
|
if builtins.isString value
|
||||||
|
then nvim.dag.entryAnywhere value
|
||||||
|
else value)
|
||||||
|
dag;
|
||||||
|
sortedDag = nvim.dag.topoSort finalDag;
|
||||||
result =
|
result =
|
||||||
if sortedDag ? result
|
if sortedDag ? result
|
||||||
then mapResult sortedDag.result
|
then mapResult sortedDag.result
|
||||||
|
|
Loading…
Reference in a new issue