clean things up
This commit is contained in:
parent
7da9807f23
commit
434ace2a77
7 changed files with 160 additions and 286 deletions
163
flake.nix
163
flake.nix
|
@ -1,22 +1,3 @@
|
|||
# Copyright (c) 2023 BirdeeHub
|
||||
# Licensed under the MIT license
|
||||
|
||||
# This is an empty nixCats config.
|
||||
# you may import this template directly into your nvim folder
|
||||
# and then add plugins to categories here,
|
||||
# and call the plugins with their default functions
|
||||
# within your lua, rather than through the nvim package manager's method.
|
||||
# Use the help, and the example repository https://github.com/BirdeeHub/nixCats-nvim
|
||||
|
||||
# It allows for easy adoption of nix,
|
||||
# while still providing all the extra nix features immediately.
|
||||
# Configure in lua, check for a few categories, set a few settings,
|
||||
# output packages with combinations of those categories and settings.
|
||||
|
||||
# All the same options you make here will be automatically exported in a form available
|
||||
# in home manager and in nixosModules, as well as from other flakes.
|
||||
# each section is tagged with its relevant help section.
|
||||
|
||||
{
|
||||
description = "A Lua-natic's neovim flake, with extra cats! nixCats!";
|
||||
|
||||
|
@ -38,20 +19,7 @@
|
|||
url = "github:linrongbin16/lsp-progress.nvim";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
# see :help nixCats.flake.inputs
|
||||
# If you want your plugin to be loaded by the standard overlay,
|
||||
# i.e. if it wasnt on nixpkgs, but doesnt have an extra build step.
|
||||
# Then you should name it "plugins-something"
|
||||
# If you wish to define a custom build step not handled by nixpkgs,
|
||||
# then you should name it in a different format, and deal with that in the
|
||||
# overlay defined for custom builds in the overlays directory.
|
||||
# for specific tags, branches and commits, see:
|
||||
# https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#examples
|
||||
|
||||
};
|
||||
|
||||
# see :help nixCats.flake.outputs
|
||||
outputs =
|
||||
{
|
||||
self,
|
||||
|
@ -63,40 +31,21 @@
|
|||
inherit (nixCats) utils;
|
||||
luaPath = "${./.}";
|
||||
forEachSystem = utils.eachSystem nixpkgs.lib.platforms.all;
|
||||
# the following extra_pkg_config contains any values
|
||||
# which you want to pass to the config set of nixpkgs
|
||||
# import nixpkgs { config = extra_pkg_config; inherit system; }
|
||||
# will not apply to module imports
|
||||
# as that will have your system values
|
||||
extra_pkg_config = {
|
||||
# allowUnfree = true;
|
||||
};
|
||||
# sometimes our overlays require a ${system} to access the overlay.
|
||||
# management of this variable is one of the harder parts of using flakes.
|
||||
|
||||
# so I have done it here in an interesting way to keep it out of the way.
|
||||
|
||||
# First, we will define just our overlays per system.
|
||||
# later we will pass them into the builder, and the resulting pkgs set
|
||||
# will get passed to the categoryDefinitions and packageDefinitions
|
||||
# which follow this section.
|
||||
|
||||
# this allows you to use ${pkgs.system} whenever you want in those sections
|
||||
# without fear.
|
||||
inherit
|
||||
(forEachSystem (
|
||||
system:
|
||||
let
|
||||
# see :help nixCats.flake.outputs.overlays
|
||||
dependencyOverlays = # (import ./overlays inputs) ++
|
||||
[
|
||||
# This overlay grabs all the inputs named in the format
|
||||
# `plugins-<pluginName>`
|
||||
# Once we add this overlay to our nixpkgs, we are able to
|
||||
# use `pkgs.neovimPlugins`, which is a set of our plugins.
|
||||
(utils.standardPluginOverlay inputs)
|
||||
# add any flake overlays here.
|
||||
];
|
||||
dependencyOverlays = (import ./nix/overlays.nix) ++ [
|
||||
# This overlay grabs all the inputs named in the format
|
||||
# `plugins-<pluginName>`
|
||||
# Once we add this overlay to our nixpkgs, we are able to
|
||||
# use `pkgs.neovimPlugins`, which is a set of our plugins.
|
||||
(utils.standardPluginOverlay inputs)
|
||||
# add any flake overlays here.
|
||||
];
|
||||
in
|
||||
# these overlays will be wrapped with ${system}
|
||||
# and we will call the same utils.eachSystem function
|
||||
|
@ -119,27 +68,9 @@
|
|||
...
|
||||
}@packageDef:
|
||||
{
|
||||
# to define and use a new category, simply add a new list to a set here,
|
||||
# and later, you will include categoryname = true; in the set you
|
||||
# provide when you build the package using this builder function.
|
||||
# see :help nixCats.flake.outputs.packageDefinitions for info on that section.
|
||||
|
||||
# propagatedBuildInputs:
|
||||
# this section is for dependencies that should be available
|
||||
# at BUILD TIME for plugins. WILL NOT be available to PATH
|
||||
# However, they WILL be available to the shell
|
||||
# and neovim path when using nix develop
|
||||
propagatedBuildInputs = {
|
||||
general =
|
||||
with pkgs;
|
||||
[
|
||||
];
|
||||
};
|
||||
|
||||
# lspsAndRuntimeDeps:
|
||||
# this section is for dependencies that should be available
|
||||
# at RUN TIME for plugins. Will be available to PATH within neovim terminal
|
||||
# this includes LSPs
|
||||
# lspsAndRuntimeDeps: this section is for dependencies that should be
|
||||
# available at RUN TIME for plugins. Will be available to PATH within
|
||||
# neovim terminal this includes LSPs
|
||||
lspsAndRuntimeDeps = {
|
||||
general = with pkgs; [
|
||||
# essential
|
||||
|
@ -157,6 +88,8 @@
|
|||
rustfmt
|
||||
black
|
||||
stylua
|
||||
marksman
|
||||
tinymist
|
||||
];
|
||||
};
|
||||
|
||||
|
@ -244,67 +177,19 @@
|
|||
# libgit2
|
||||
];
|
||||
};
|
||||
|
||||
# environmentVariables:
|
||||
# this section is for environmentVariables that should be available
|
||||
# at RUN TIME for plugins. Will be available to path within neovim terminal
|
||||
# environmentVariables = {
|
||||
# test = {
|
||||
# CATTESTVAR = "It worked!";
|
||||
# };
|
||||
# };
|
||||
|
||||
# If you know what these are, you can provide custom ones by category here.
|
||||
# If you dont, check this link out:
|
||||
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/setup-hooks/make-wrapper.sh
|
||||
# extraWrapperArgs = {
|
||||
# test = [
|
||||
# ''--set CATTESTVAR2 "It worked again!"''
|
||||
# ];
|
||||
# };
|
||||
|
||||
# lists of the functions you would have passed to
|
||||
# python.withPackages or lua.withPackages
|
||||
|
||||
# get the path to this python environment
|
||||
# in your lua config via
|
||||
# vim.g.python3_host_prog
|
||||
# or run from nvim terminal via :!<packagename>-python3
|
||||
# extraPython3Packages = {
|
||||
# test = (_: [ ]);
|
||||
# };
|
||||
# # populates $LUA_PATH and $LUA_CPATH
|
||||
# extraLuaPackages = {
|
||||
# test = [ (_: [ ]) ];
|
||||
# };
|
||||
};
|
||||
|
||||
# And then build a package with specific categories from above here:
|
||||
# All categories you wish to include must be marked true,
|
||||
# but false may be omitted.
|
||||
# This entire set is also passed to nixCats for querying within the lua.
|
||||
|
||||
# see :help nixCats.flake.outputs.packageDefinitions
|
||||
packageDefinitions = {
|
||||
# These are the names of your packages
|
||||
# you can include as many as you wish.
|
||||
nvim =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# they contain a settings set defined above
|
||||
# see :help nixCats.flake.outputs.settings
|
||||
settings = {
|
||||
wrapRc = true;
|
||||
# IMPORTANT:
|
||||
# your alias may not conflict with your other packages.
|
||||
aliases = [
|
||||
"vim"
|
||||
"vi"
|
||||
];
|
||||
# neovim-unwrapped = inputs.neovim-nightly-overlay.packages.${pkgs.system}.neovim;
|
||||
neovim-unwrapped = pkgs.neovim-unwrapped;
|
||||
};
|
||||
# and a set of categories that you want
|
||||
# (and other information to pass to lua)
|
||||
categories = {
|
||||
general = true;
|
||||
gitPlugins = true;
|
||||
|
@ -316,12 +201,8 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
# In this section, the main thing you will need to do is change the default package name
|
||||
# to the name of the packageDefinitions entry you wish to use as the default.
|
||||
defaultPackageName = "nvim";
|
||||
in
|
||||
|
||||
# see :help nixCats.flake.outputs.exports
|
||||
forEachSystem (
|
||||
system:
|
||||
let
|
||||
|
@ -334,20 +215,11 @@
|
|||
;
|
||||
} categoryDefinitions packageDefinitions;
|
||||
defaultPackage = nixCatsBuilder defaultPackageName;
|
||||
# this is just for using utils such as pkgs.mkShell
|
||||
# The one used to build neovim is resolved inside the builder
|
||||
# and is passed to our categoryDefinitions and packageDefinitions
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
# these outputs will be wrapped with ${system} by utils.eachSystem
|
||||
|
||||
# this will make a package out of each of the packageDefinitions defined above
|
||||
# and set the default package to the one passed in here.
|
||||
packages = utils.mkAllWithDefault defaultPackage;
|
||||
|
||||
# choose your package for devShell
|
||||
# and add whatever else you want in it.
|
||||
devShells = {
|
||||
default = pkgs.mkShell {
|
||||
name = defaultPackageName;
|
||||
|
@ -363,16 +235,10 @@
|
|||
}
|
||||
)
|
||||
// {
|
||||
|
||||
# these outputs will be NOT wrapped with ${system}
|
||||
|
||||
# this will make an overlay out of each of the packageDefinitions defined above
|
||||
# and set the default overlay to the one named here.
|
||||
overlays = utils.makeOverlays luaPath {
|
||||
inherit nixpkgs dependencyOverlays extra_pkg_config;
|
||||
} categoryDefinitions packageDefinitions defaultPackageName;
|
||||
|
||||
# we also export a nixos module to allow reconfiguration from configuration.nix
|
||||
nixosModules.default = utils.mkNixosModules {
|
||||
inherit
|
||||
defaultPackageName
|
||||
|
@ -384,7 +250,6 @@
|
|||
nixpkgs
|
||||
;
|
||||
};
|
||||
# and the same for home manager
|
||||
homeModule = utils.mkHomeModules {
|
||||
inherit
|
||||
defaultPackageName
|
||||
|
|
|
@ -1,26 +1,28 @@
|
|||
local lspconfig = require("lspconfig")
|
||||
|
||||
lspconfig.lua_ls.setup({
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
|
||||
version = "LuaJIT",
|
||||
},
|
||||
diagnostics = {
|
||||
-- Get the language server to recognize the `vim` global
|
||||
globals = { "vim", "nixCats", "MiniBufremove" },
|
||||
},
|
||||
workspace = {
|
||||
-- Make the server aware of Neovim runtime files
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
},
|
||||
-- Do not send telemetry data containing a randomized but unique identifier
|
||||
telemetry = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
|
||||
version = "LuaJIT",
|
||||
},
|
||||
diagnostics = {
|
||||
-- Get the language server to recognize the `vim` global
|
||||
globals = { "vim", "nixCats", "MiniBufremove" },
|
||||
},
|
||||
workspace = {
|
||||
-- Make the server aware of Neovim runtime files
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
},
|
||||
-- Do not send telemetry data containing a randomized but unique identifier
|
||||
telemetry = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
lspconfig.nixd.setup({})
|
||||
lspconfig.marksman.setup({})
|
||||
lspconfig.tinymist.setup({})
|
||||
|
|
7
lua/plugins/autopairs.lua
Normal file
7
lua/plugins/autopairs.lua
Normal file
|
@ -0,0 +1,7 @@
|
|||
return {
|
||||
"nvim-autopairs",
|
||||
event = "BufEnter",
|
||||
after = function()
|
||||
require("nvim-autopairs").setup()
|
||||
end,
|
||||
}
|
60
lua/plugins/gitsigns.lua
Normal file
60
lua/plugins/gitsigns.lua
Normal file
|
@ -0,0 +1,60 @@
|
|||
return {
|
||||
"gitsigns.nvim",
|
||||
event = "BufEnter",
|
||||
after = function()
|
||||
require("gitsigns").setup({
|
||||
on_attach = function(bufnr)
|
||||
local gitsigns = require("gitsigns")
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map("n", "]c", function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal({ "]c", bang = true })
|
||||
else
|
||||
gitsigns.nav_hunk("next")
|
||||
end
|
||||
end)
|
||||
|
||||
map("n", "[c", function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal({ "[c", bang = true })
|
||||
else
|
||||
gitsigns.nav_hunk("prev")
|
||||
end
|
||||
end)
|
||||
|
||||
-- Actions
|
||||
map("n", "<leader>gs", gitsigns.stage_hunk)
|
||||
map("n", "<leader>gr", gitsigns.reset_hunk)
|
||||
map("v", "<leader>gs", function()
|
||||
gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end)
|
||||
map("v", "<leader>gr", function()
|
||||
gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end)
|
||||
map("n", "<leader>gS", gitsigns.stage_buffer)
|
||||
map("n", "<leader>gu", gitsigns.undo_stage_hunk)
|
||||
map("n", "<leader>gR", gitsigns.reset_buffer)
|
||||
map("n", "<leader>gp", gitsigns.preview_hunk)
|
||||
map("n", "<leader>gb", function()
|
||||
gitsigns.blame_line({ full = true })
|
||||
end)
|
||||
map("n", "<leader>gb", gitsigns.toggle_current_line_blame)
|
||||
map("n", "<leader>gd", gitsigns.diffthis)
|
||||
map("n", "<leader>gD", function()
|
||||
gitsigns.diffthis("~")
|
||||
end)
|
||||
map("n", "<leader>gtd", gitsigns.toggle_deleted)
|
||||
|
||||
-- Text object
|
||||
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>")
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
51
lua/plugins/lsp-progress.lua
Normal file
51
lua/plugins/lsp-progress.lua
Normal file
|
@ -0,0 +1,51 @@
|
|||
return {
|
||||
"lsp-progress",
|
||||
after = function()
|
||||
require("lsp-progress").setup({
|
||||
client_format = function(client_name, spinner, series_messages)
|
||||
if #series_messages == 0 then
|
||||
return nil
|
||||
end
|
||||
return {
|
||||
name = client_name,
|
||||
body = spinner .. " " .. table.concat(series_messages, ", "),
|
||||
}
|
||||
end,
|
||||
format = function(client_messages)
|
||||
--- @param name string
|
||||
--- @param msg string?
|
||||
--- @return string
|
||||
local function stringify(name, msg)
|
||||
return msg and string.format("%s %s", name, msg) or name
|
||||
end
|
||||
|
||||
local sign = "" -- nf-fa-gear \uf013
|
||||
local lsp_clients = vim.lsp.get_clients()
|
||||
local messages_map = {}
|
||||
for _, climsg in ipairs(client_messages) do
|
||||
messages_map[climsg.name] = climsg.body
|
||||
end
|
||||
|
||||
if #lsp_clients > 0 then
|
||||
table.sort(lsp_clients, function(a, b)
|
||||
return a.name < b.name
|
||||
end)
|
||||
local builder = {}
|
||||
for _, cli in ipairs(lsp_clients) do
|
||||
if type(cli) == "table" and type(cli.name) == "string" and string.len(cli.name) > 0 then
|
||||
if messages_map[cli.name] then
|
||||
table.insert(builder, stringify(cli.name, messages_map[cli.name]))
|
||||
else
|
||||
table.insert(builder, stringify(cli.name))
|
||||
end
|
||||
end
|
||||
end
|
||||
if #builder > 0 then
|
||||
return sign .. " " .. table.concat(builder, ", ")
|
||||
end
|
||||
end
|
||||
return ""
|
||||
end,
|
||||
})
|
||||
end,
|
||||
}
|
|
@ -5,65 +5,10 @@ return {
|
|||
require("plugins.harpoon"),
|
||||
require("plugins.lualine"),
|
||||
require("plugins.conform"),
|
||||
{
|
||||
"lsp-progress",
|
||||
after = function()
|
||||
require("lsp-progress").setup({
|
||||
client_format = function(client_name, spinner, series_messages)
|
||||
if #series_messages == 0 then
|
||||
return nil
|
||||
end
|
||||
return {
|
||||
name = client_name,
|
||||
body = spinner .. " " .. table.concat(series_messages, ", "),
|
||||
}
|
||||
end,
|
||||
format = function(client_messages)
|
||||
--- @param name string
|
||||
--- @param msg string?
|
||||
--- @return string
|
||||
local function stringify(name, msg)
|
||||
return msg and string.format("%s %s", name, msg) or name
|
||||
end
|
||||
|
||||
local sign = "" -- nf-fa-gear \uf013
|
||||
local lsp_clients = vim.lsp.get_clients()
|
||||
local messages_map = {}
|
||||
for _, climsg in ipairs(client_messages) do
|
||||
messages_map[climsg.name] = climsg.body
|
||||
end
|
||||
|
||||
if #lsp_clients > 0 then
|
||||
table.sort(lsp_clients, function(a, b)
|
||||
return a.name < b.name
|
||||
end)
|
||||
local builder = {}
|
||||
for _, cli in ipairs(lsp_clients) do
|
||||
if type(cli) == "table" and type(cli.name) == "string" and string.len(cli.name) > 0 then
|
||||
if messages_map[cli.name] then
|
||||
table.insert(builder, stringify(cli.name, messages_map[cli.name]))
|
||||
else
|
||||
table.insert(builder, stringify(cli.name))
|
||||
end
|
||||
end
|
||||
end
|
||||
if #builder > 0 then
|
||||
return sign .. " " .. table.concat(builder, ", ")
|
||||
end
|
||||
end
|
||||
return ""
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
require("plugins.lsp-progress"),
|
||||
require("plugins.gitsigns"),
|
||||
require("plugins.autopairs"),
|
||||
{ "telescope-ui-select.nvim", priority = 70 },
|
||||
{
|
||||
"nvim-autopairs",
|
||||
event = "BufEnter",
|
||||
after = function()
|
||||
require("nvim-autopairs").setup()
|
||||
end,
|
||||
},
|
||||
{
|
||||
"nvim-lspconfig",
|
||||
event = "BufEnter",
|
||||
|
@ -111,6 +56,7 @@ return {
|
|||
},
|
||||
{
|
||||
"typst-preview",
|
||||
filetypes = { "*.typ" },
|
||||
after = function()
|
||||
require("typst-preview").setup({
|
||||
dependencies_bin = {
|
||||
|
@ -220,66 +166,6 @@ return {
|
|||
require("mini.hipatterns").setup()
|
||||
end,
|
||||
},
|
||||
{
|
||||
"gitsigns.nvim",
|
||||
event = "BufEnter",
|
||||
after = function()
|
||||
require("gitsigns").setup({
|
||||
on_attach = function(bufnr)
|
||||
local gitsigns = require("gitsigns")
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map("n", "]c", function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal({ "]c", bang = true })
|
||||
else
|
||||
gitsigns.nav_hunk("next")
|
||||
end
|
||||
end)
|
||||
|
||||
map("n", "[c", function()
|
||||
if vim.wo.diff then
|
||||
vim.cmd.normal({ "[c", bang = true })
|
||||
else
|
||||
gitsigns.nav_hunk("prev")
|
||||
end
|
||||
end)
|
||||
|
||||
-- Actions
|
||||
map("n", "<leader>gs", gitsigns.stage_hunk)
|
||||
map("n", "<leader>gr", gitsigns.reset_hunk)
|
||||
map("v", "<leader>gs", function()
|
||||
gitsigns.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end)
|
||||
map("v", "<leader>gr", function()
|
||||
gitsigns.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end)
|
||||
map("n", "<leader>gS", gitsigns.stage_buffer)
|
||||
map("n", "<leader>gu", gitsigns.undo_stage_hunk)
|
||||
map("n", "<leader>gR", gitsigns.reset_buffer)
|
||||
map("n", "<leader>gp", gitsigns.preview_hunk)
|
||||
map("n", "<leader>gb", function()
|
||||
gitsigns.blame_line({ full = true })
|
||||
end)
|
||||
map("n", "<leader>gb", gitsigns.toggle_current_line_blame)
|
||||
map("n", "<leader>gd", gitsigns.diffthis)
|
||||
map("n", "<leader>gD", function()
|
||||
gitsigns.diffthis("~")
|
||||
end)
|
||||
map("n", "<leader>gtd", gitsigns.toggle_deleted)
|
||||
|
||||
-- Text object
|
||||
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>")
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"neogit",
|
||||
cmd = "Neogit",
|
||||
|
|
3
nix/overlays.nix
Normal file
3
nix/overlays.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Overlays for building custom non-trivial plugins
|
||||
|
||||
[ (self: super: { }) ]
|
Loading…
Reference in a new issue