mirror of
https://github.com/iofq/nvim.nix.git
synced 2026-01-23 08:55:16 -06:00
fix ts
This commit is contained in:
parent
58c0637b78
commit
7165161856
10 changed files with 234 additions and 223 deletions
|
|
@ -39,6 +39,7 @@
|
||||||
systems = builtins.attrNames nixpkgs.legacyPackages;
|
systems = builtins.attrNames nixpkgs.legacyPackages;
|
||||||
|
|
||||||
# This is where the Neovim derivation is built.
|
# This is where the Neovim derivation is built.
|
||||||
|
plugin-overlay = import ./nix/plugin-overlay.nix { inherit inputs; };
|
||||||
neovim-overlay = import ./nix/neovim-overlay.nix { inherit inputs; };
|
neovim-overlay = import ./nix/neovim-overlay.nix { inherit inputs; };
|
||||||
in
|
in
|
||||||
flake-utils.lib.eachSystem systems (
|
flake-utils.lib.eachSystem systems (
|
||||||
|
|
@ -49,6 +50,7 @@
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.neovim-nightly-overlay.overlays.default
|
inputs.neovim-nightly-overlay.overlays.default
|
||||||
|
plugin-overlay
|
||||||
neovim-overlay
|
neovim-overlay
|
||||||
# This adds a function can be used to generate a .luarc.json
|
# This adds a function can be used to generate a .luarc.json
|
||||||
# containing the Neovim API all plugins in the workspace directory.
|
# containing the Neovim API all plugins in the workspace directory.
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ with lib;
|
||||||
{
|
{
|
||||||
# NVIM_APPNAME - Defaults to 'nvim' if not set.
|
# NVIM_APPNAME - Defaults to 'nvim' if not set.
|
||||||
# If set to something else, this will also rename the binary.
|
# If set to something else, this will also rename the binary.
|
||||||
appName ? null,
|
appName ? "nvim",
|
||||||
# The Neovim package to wrap
|
# The Neovim package to wrap
|
||||||
neovim-unwrapped ? pkgs-wrapNeovim.neovim-unwrapped,
|
neovim-unwrapped ? pkgs-wrapNeovim.neovim-unwrapped,
|
||||||
plugins ? [ ], # List of plugins
|
plugins ? [ ], # List of plugins
|
||||||
|
|
@ -35,7 +35,8 @@ with lib;
|
||||||
viAlias ? appName == "nvim", # Add a "vi" binary to the build output as an alias?
|
viAlias ? appName == "nvim", # Add a "vi" binary to the build output as an alias?
|
||||||
vimAlias ? appName == "nvim", # Add a "vim" binary to the build output as an alias?
|
vimAlias ? appName == "nvim", # Add a "vim" binary to the build output as an alias?
|
||||||
wrapRc ? true,
|
wrapRc ? true,
|
||||||
}: let
|
}:
|
||||||
|
let
|
||||||
# This is the structure of a plugin definition.
|
# This is the structure of a plugin definition.
|
||||||
# Each plugin in the `plugins` argument list can also be defined as this attrset
|
# Each plugin in the `plugins` argument list can also be defined as this attrset
|
||||||
defaultPlugin = {
|
defaultPlugin = {
|
||||||
|
|
@ -51,14 +52,7 @@ with lib;
|
||||||
externalPackages = extraPackages ++ (optionals withSqlite [ pkgs.sqlite ]);
|
externalPackages = extraPackages ++ (optionals withSqlite [ pkgs.sqlite ]);
|
||||||
|
|
||||||
# Map all plugins to an attrset { plugin = <plugin>; config = <config>; optional = <tf>; ... }
|
# Map all plugins to an attrset { plugin = <plugin>; config = <config>; optional = <tf>; ... }
|
||||||
normalizedPlugins = map (x:
|
normalizedPlugins = map (x: defaultPlugin // (if x ? plugin then x else { plugin = x; })) plugins;
|
||||||
defaultPlugin
|
|
||||||
// (
|
|
||||||
if x ? plugin
|
|
||||||
then x
|
|
||||||
else {plugin = x;}
|
|
||||||
))
|
|
||||||
plugins;
|
|
||||||
|
|
||||||
# This nixpkgs util function creates an attrset
|
# This nixpkgs util function creates an attrset
|
||||||
# that pkgs.wrapNeovimUnstable uses to configure the Neovim build.
|
# that pkgs.wrapNeovimUnstable uses to configure the Neovim build.
|
||||||
|
|
@ -80,13 +74,16 @@ with lib;
|
||||||
|
|
||||||
# This uses the ignoreConfigRegexes list to filter
|
# This uses the ignoreConfigRegexes list to filter
|
||||||
# the nvim directory
|
# the nvim directory
|
||||||
nvimRtpSrc = let
|
nvimRtpSrc =
|
||||||
|
let
|
||||||
src = ../nvim;
|
src = ../nvim;
|
||||||
in
|
in
|
||||||
lib.cleanSourceWith {
|
lib.cleanSourceWith {
|
||||||
inherit src;
|
inherit src;
|
||||||
name = "nvim-rtp-src";
|
name = "nvim-rtp-src";
|
||||||
filter = path: tyoe: let
|
filter =
|
||||||
|
path: tyoe:
|
||||||
|
let
|
||||||
srcPrefix = toString src + "/";
|
srcPrefix = toString src + "/";
|
||||||
relPath = lib.removePrefix srcPrefix (toString path);
|
relPath = lib.removePrefix srcPrefix (toString path);
|
||||||
in
|
in
|
||||||
|
|
@ -114,8 +111,7 @@ with lib;
|
||||||
# The final init.lua content that we pass to the Neovim wrapper.
|
# The final init.lua content that we pass to the Neovim wrapper.
|
||||||
# It wraps the user init.lua, prepends the lua lib directory to the RTP
|
# It wraps the user init.lua, prepends the lua lib directory to the RTP
|
||||||
# and prepends the nvim and after directory to the RTP
|
# and prepends the nvim and after directory to the RTP
|
||||||
initLua =
|
initLua = ''
|
||||||
''
|
|
||||||
LAZY_OPTS = {
|
LAZY_OPTS = {
|
||||||
performance = {
|
performance = {
|
||||||
reset_packpath = false,
|
reset_packpath = false,
|
||||||
|
|
|
||||||
|
|
@ -3,28 +3,13 @@
|
||||||
final: prev:
|
final: prev:
|
||||||
with final.pkgs.lib;
|
with final.pkgs.lib;
|
||||||
let
|
let
|
||||||
pkgs = final;
|
mkNeovim = prev.callPackage ./mkNeovim.nix { pkgs-wrapNeovim = prev; };
|
||||||
pkgs-wrapNeovim = prev;
|
|
||||||
|
|
||||||
mkNvimPlugin =
|
plugins = with final.vimPlugins; [
|
||||||
src: pname:
|
|
||||||
pkgs.vimUtils.buildVimPlugin {
|
|
||||||
inherit pname src;
|
|
||||||
version = src.lastModifiedDate;
|
|
||||||
};
|
|
||||||
mkNeovim = pkgs.callPackage ./mkNeovim.nix { inherit pkgs-wrapNeovim; };
|
|
||||||
|
|
||||||
dart-nvim-git = mkNvimPlugin inputs.dart "dart.nvim";
|
|
||||||
nvim-treesitter-textobjects-git = mkNvimPlugin inputs.nvim-treesitter-textobjects "nvim-treesitter-textobjects";
|
|
||||||
nvim-treesitter-git = pkgs.vimPlugins.nvim-treesitter.overrideAttrs (old: {
|
|
||||||
src = inputs.nvim-treesitter;
|
|
||||||
});
|
|
||||||
|
|
||||||
all-plugins = with pkgs.vimPlugins; [
|
|
||||||
blink-cmp
|
blink-cmp
|
||||||
blink-ripgrep-nvim
|
blink-ripgrep-nvim
|
||||||
conform-nvim
|
conform-nvim
|
||||||
dart-nvim-git
|
dart-nvim
|
||||||
diffview-nvim
|
diffview-nvim
|
||||||
eyeliner-nvim
|
eyeliner-nvim
|
||||||
friendly-snippets
|
friendly-snippets
|
||||||
|
|
@ -33,22 +18,21 @@ let
|
||||||
nvim-autopairs
|
nvim-autopairs
|
||||||
nvim-lint
|
nvim-lint
|
||||||
nvim-lspconfig
|
nvim-lspconfig
|
||||||
nvim-treesitter-git.withAllGrammars
|
nvim-treesitter.withAllGrammars
|
||||||
nvim-treesitter-context
|
nvim-treesitter-context
|
||||||
nvim-treesitter-textobjects-git
|
nvim-treesitter-textobjects
|
||||||
nvim-treesitter-textsubjects
|
|
||||||
quicker-nvim
|
quicker-nvim
|
||||||
refactoring-nvim
|
refactoring-nvim
|
||||||
render-markdown-nvim
|
render-markdown-nvim
|
||||||
snacks-nvim
|
snacks-nvim
|
||||||
];
|
];
|
||||||
|
|
||||||
basePackages = with pkgs; [
|
basePackages = with final; [
|
||||||
ripgrep
|
ripgrep
|
||||||
fd
|
fd
|
||||||
];
|
];
|
||||||
# Extra packages that should be included on nixos but don't need to be bundled
|
# Extra packages that should be included on nixos but don't need to be bundled
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with final; [
|
||||||
# linters
|
# linters
|
||||||
yamllint
|
yamllint
|
||||||
jq
|
jq
|
||||||
|
|
@ -69,26 +53,20 @@ let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nvim-pkg = mkNeovim {
|
nvim-pkg = mkNeovim {
|
||||||
plugins = all-plugins;
|
inherit plugins;
|
||||||
appName = "nvim";
|
|
||||||
extraPackages = basePackages ++ extraPackages;
|
extraPackages = basePackages ++ extraPackages;
|
||||||
withNodeJs = false;
|
|
||||||
withSqlite = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nvim-min-pkg = mkNeovim {
|
nvim-min-pkg = mkNeovim {
|
||||||
plugins = all-plugins;
|
inherit plugins;
|
||||||
appName = "nvim";
|
|
||||||
extraPackages = basePackages;
|
extraPackages = basePackages;
|
||||||
withNodeJs = false;
|
|
||||||
withSqlite = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# This is meant to be used within a devshell.
|
# This is meant to be used within a devshell.
|
||||||
# Instead of loading the lua Neovim configuration from
|
# Instead of loading the lua Neovim configuration from
|
||||||
# the Nix store, it is loaded from $XDG_CONFIG_HOME/nvim-dev
|
# the Nix store, it is loaded from $XDG_CONFIG_HOME/nvim-dev
|
||||||
nvim-dev = mkNeovim {
|
nvim-dev = mkNeovim {
|
||||||
plugins = all-plugins;
|
inherit plugins;
|
||||||
extraPackages = basePackages ++ extraPackages;
|
extraPackages = basePackages ++ extraPackages;
|
||||||
appName = "nvim-dev";
|
appName = "nvim-dev";
|
||||||
wrapRc = false;
|
wrapRc = false;
|
||||||
|
|
@ -96,6 +74,6 @@ in
|
||||||
|
|
||||||
# This can be symlinked in the devShell's shellHook
|
# This can be symlinked in the devShell's shellHook
|
||||||
nvim-luarc-json = final.mk-luarc-json {
|
nvim-luarc-json = final.mk-luarc-json {
|
||||||
plugins = all-plugins;
|
inherit plugins;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
29
nix/plugin-overlay.nix
Normal file
29
nix/plugin-overlay.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{ inputs, ... }:
|
||||||
|
final: prev:
|
||||||
|
let
|
||||||
|
mkNvimPlugin =
|
||||||
|
src: pname:
|
||||||
|
prev.vimUtils.buildVimPlugin {
|
||||||
|
inherit pname src;
|
||||||
|
version = src.lastModifiedDate;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
vimPlugins = prev.vimPlugins.extend (
|
||||||
|
final': prev': {
|
||||||
|
dart-nvim = mkNvimPlugin inputs.dart "dart.nvim";
|
||||||
|
nvim-treesitter-textobjects = mkNvimPlugin inputs.nvim-treesitter-textobjects "nvim-treesitter-textobjects";
|
||||||
|
nvim-treesitter = prev'.nvim-treesitter.overrideAttrs (old: rec {
|
||||||
|
src = inputs.nvim-treesitter;
|
||||||
|
name = "${old.pname}-${src.rev}";
|
||||||
|
postPatch = "";
|
||||||
|
# ensure runtime queries get linked to RTP (:TSInstall does this too)
|
||||||
|
buildPhase = "
|
||||||
|
mkdir -p $out/queries
|
||||||
|
cp -a $src/runtime/queries/* $out/queries
|
||||||
|
";
|
||||||
|
nvimSkipModules = [ "nvim-treesitter._meta.parsers" ];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -468,8 +468,8 @@ hi(0, 'MiniTablineVisible', { bg = '#1d3337', fg = '#cbd9d8' })
|
||||||
hi(0, 'MiniTablineModifiedVisible', { bg = '#587b7b', fg = '#1d3337' })
|
hi(0, 'MiniTablineModifiedVisible', { bg = '#587b7b', fg = '#1d3337' })
|
||||||
hi(0, 'MiniTablineTabpagesection', { bg = '#152528', bold = true, fg = '#e6eaea' })
|
hi(0, 'MiniTablineTabpagesection', { bg = '#152528', bold = true, fg = '#e6eaea' })
|
||||||
hi(0, 'MiniTablineFill', { link = 'TabLineFill' })
|
hi(0, 'MiniTablineFill', { link = 'TabLineFill' })
|
||||||
-- hi(0, 'MiniTablineHidden', { bg = '#1d3337', fg = '#587b7b' })
|
hi(0, 'MiniTablineHidden', { bg = '#1d3337', fg = '#587b7b' })
|
||||||
-- hi(0, 'MiniTablineModifiedHidden', { bg = '#587b7b', fg = '#1d3337' })
|
hi(0, 'MiniTablineModifiedHidden', { bg = '#587b7b', fg = '#1d3337' })
|
||||||
hi(0, 'MiniTestEmphasis', { bold = true })
|
hi(0, 'MiniTestEmphasis', { bold = true })
|
||||||
hi(0, 'MiniTestFail', { bold = true, fg = '#e85c51' })
|
hi(0, 'MiniTestFail', { bold = true, fg = '#e85c51' })
|
||||||
hi(0, 'MiniTestPass', { bold = true, fg = '#7aa4a1' })
|
hi(0, 'MiniTestPass', { bold = true, fg = '#7aa4a1' })
|
||||||
|
|
|
||||||
|
|
@ -29,5 +29,6 @@ if not LAZY_OPTS then
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
vim.cmd('packadd cfilter')
|
vim.cmd('packadd cfilter')
|
||||||
|
vim.cmd('colorscheme iofq')
|
||||||
require('lazy').setup(LAZY_OPTS)
|
require('lazy').setup(LAZY_OPTS)
|
||||||
require('config')
|
require('config')
|
||||||
|
|
|
||||||
|
|
@ -82,24 +82,24 @@ vim.api.nvim_create_autocmd('FileType', {
|
||||||
|
|
||||||
map('[c', function()
|
map('[c', function()
|
||||||
require('treesitter-context').go_to_context(vim.v.count1)
|
require('treesitter-context').go_to_context(vim.v.count1)
|
||||||
end, { desc = 'jump to TS context' })
|
end, { buffer = bufnr, desc = 'jump to TS context' })
|
||||||
map(']f', function()
|
map(']f', function()
|
||||||
require('nvim-treesitter-textobjects.move').goto_next_start('@function.outer', 'textobjects')
|
require('nvim-treesitter-textobjects.move').goto_next_start('@function.outer', 'textobjects')
|
||||||
end, { desc = 'next function def' })
|
end, { buffer = bufnr, desc = 'next function def' })
|
||||||
map('[f', function()
|
map('[f', function()
|
||||||
require('nvim-treesitter-textobjects.move').goto_previous_start('@function.outer', 'textobjects')
|
require('nvim-treesitter-textobjects.move').goto_previous_start('@function.outer', 'textobjects')
|
||||||
end, { desc = 'prev function def' })
|
end, { buffer = bufnr, desc = 'prev function def' })
|
||||||
map(']a', function()
|
map(']a', function()
|
||||||
require('nvim-treesitter-textobjects.move').goto_next_start('@parameter.inner', 'textobjects')
|
require('nvim-treesitter-textobjects.move').goto_next_start('@parameter.inner', 'textobjects')
|
||||||
end, { desc = 'next param def' })
|
end, { buffer = bufnr, desc = 'next param def' })
|
||||||
map('[a', function()
|
map('[a', function()
|
||||||
require('nvim-treesitter-textobjects.move').goto_previous_start('@parameter.inner', 'textobjects')
|
require('nvim-treesitter-textobjects.move').goto_previous_start('@parameter.inner', 'textobjects')
|
||||||
end, { desc = 'prev param def' })
|
end, { buffer = bufnr, desc = 'prev param def' })
|
||||||
map('a]', function()
|
map('a]', function()
|
||||||
require('nvim-treesitter-textobjects.swap').swap_next('@parameter.inner')
|
require('nvim-treesitter-textobjects.swap').swap_next('@parameter.inner')
|
||||||
end, { desc = 'swap next arg' })
|
end, { buffer = bufnr, desc = 'swap next arg' })
|
||||||
map('a[', function()
|
map('a[', function()
|
||||||
require('nvim-treesitter-textobjects.swap').swap_previous('@parameter.inner')
|
require('nvim-treesitter-textobjects.swap').swap_previous('@parameter.inner')
|
||||||
end, { desc = 'swap prev arg' })
|
end, { buffer = bufnr, desc = 'swap prev arg' })
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ vim.opt.tabstop = 2 -- 2 space tabs are based
|
||||||
vim.opt.updatetime = 250 -- decrease update time
|
vim.opt.updatetime = 250 -- decrease update time
|
||||||
vim.opt.virtualedit = 'onemore'
|
vim.opt.virtualedit = 'onemore'
|
||||||
vim.opt.winborder = 'rounded'
|
vim.opt.winborder = 'rounded'
|
||||||
vim.cmd('colorscheme iofq')
|
|
||||||
|
|
||||||
-- Configure Neovim diagnostic messages
|
-- Configure Neovim diagnostic messages
|
||||||
vim.diagnostic.config {
|
vim.diagnostic.config {
|
||||||
|
|
@ -32,5 +31,7 @@ vim.diagnostic.config {
|
||||||
source = 'if_many',
|
source = 'if_many',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
require('config.keymaps')
|
vim.schedule(function()
|
||||||
require('config.autocmd')
|
require('config.autocmd')
|
||||||
|
require('config.keymaps')
|
||||||
|
end)
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ return {
|
||||||
'phpactor',
|
'phpactor',
|
||||||
'gopls',
|
'gopls',
|
||||||
'lua_ls',
|
'lua_ls',
|
||||||
|
'basedpyright',
|
||||||
}
|
}
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd('LspAttach', {
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
'iofq/dart.nvim',
|
'iofq/dart.nvim',
|
||||||
event = 'VeryLazy',
|
lazy = false,
|
||||||
|
priority = 1001,
|
||||||
config = true,
|
config = true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -13,15 +14,12 @@ return {
|
||||||
'nvim-treesitter/nvim-treesitter',
|
'nvim-treesitter/nvim-treesitter',
|
||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
branch = 'main',
|
branch = 'main',
|
||||||
main = 'nvim-treesitter.configs',
|
|
||||||
config = true,
|
|
||||||
dependencies = {
|
dependencies = {
|
||||||
{
|
{
|
||||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||||
branch = 'main',
|
branch = 'main',
|
||||||
config = true,
|
config = true,
|
||||||
},
|
},
|
||||||
'RRethy/nvim-treesitter-textsubjects',
|
|
||||||
{
|
{
|
||||||
'nvim-treesitter/nvim-treesitter-context',
|
'nvim-treesitter/nvim-treesitter-context',
|
||||||
opts = {
|
opts = {
|
||||||
|
|
@ -49,6 +47,7 @@ return {
|
||||||
'sindrets/diffview.nvim',
|
'sindrets/diffview.nvim',
|
||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
opts = {
|
opts = {
|
||||||
|
use_icons = false,
|
||||||
enhanced_diff_hl = true,
|
enhanced_diff_hl = true,
|
||||||
default_args = {
|
default_args = {
|
||||||
DiffviewOpen = { '--imply-local' },
|
DiffviewOpen = { '--imply-local' },
|
||||||
|
|
@ -105,12 +104,16 @@ return {
|
||||||
{
|
{
|
||||||
'stevearc/quicker.nvim',
|
'stevearc/quicker.nvim',
|
||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
config = true,
|
opts = {
|
||||||
|
follow = {
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
'<leader>qf',
|
'<leader>qf',
|
||||||
function()
|
function()
|
||||||
require('quicker').toggle()
|
require('quicker').toggle { max_height = 20 }
|
||||||
end,
|
end,
|
||||||
desc = 'Toggle qflist',
|
desc = 'Toggle qflist',
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue