feat: add couple more vim plugins via nixpkgs
parent
a5186b204c
commit
a6c979c659
|
@ -78,3 +78,4 @@ fi
|
||||||
|
|
||||||
- Otherwise, consult [`gh-gist:meeech/a_help-osx-borked-my-nix.md`](https://gist.github.com/meeech/0b97a86f235d10bc4e2a1116eec38e7e)
|
- Otherwise, consult [`gh-gist:meeech/a_help-osx-borked-my-nix.md`](https://gist.github.com/meeech/0b97a86f235d10bc4e2a1116eec38e7e)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ end
|
||||||
|
|
||||||
-- Do Plug if plugin not yet linked in `rtp`. This takes care of Nix-compatibility
|
-- Do Plug if plugin not yet linked in `rtp`. This takes care of Nix-compatibility
|
||||||
local function WPlug(plugin_path, ...)
|
local function WPlug(plugin_path, ...)
|
||||||
local plugin_name = plugin_path:match("/([^/]+)$")
|
local plugin_name = string.lower(plugin_path:match("/([^/]+)$"))
|
||||||
if not installed_plugins[plugin_name] then
|
if not installed_plugins[plugin_name] then
|
||||||
Plug(plugin_path, ...)
|
Plug(plugin_path, ...)
|
||||||
end
|
end
|
||||||
|
@ -802,30 +802,6 @@ require('mason-lspconfig').setup_handlers({
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
-- ["rust_analyzer"] = function()
|
|
||||||
-- require('lspconfig').rust_analyzer.setup {
|
|
||||||
-- on_attach = on_attach,
|
|
||||||
-- capabilities = capabilities,
|
|
||||||
-- settings = {
|
|
||||||
-- checkOnSave = {
|
|
||||||
-- command = "clippy",
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- end,
|
|
||||||
-- ["astro"] = function()
|
|
||||||
-- print('configuring astro')
|
|
||||||
-- require('lspconfig').astro.setup {
|
|
||||||
-- on_attach = on_attach,
|
|
||||||
-- capabilities = capabilities,
|
|
||||||
-- init_options = {
|
|
||||||
-- configuration = {},
|
|
||||||
-- typescript = {
|
|
||||||
-- serverPath = data_dir
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- end
|
|
||||||
})
|
})
|
||||||
require("rust-tools").setup {
|
require("rust-tools").setup {
|
||||||
tools = {
|
tools = {
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
# TODO: vim-plug and Mason supports laziness. Probably worth it to explore
|
# TODO: vim-plug and Mason supports laziness. Probably worth it to explore incremental dependencies based on the project
|
||||||
# incremental dependencies based on the project
|
|
||||||
# TODO: just install these things, then symlink to mason's bin directory
|
# TODO: just install these things, then symlink to mason's bin directory
|
||||||
#
|
#
|
||||||
# One thing to consider, though, /nix/store of `nix-shell` or `nix-develop`
|
# One thing to consider, though, /nix/store of `nix-shell` or `nix-develop`
|
||||||
# might be different from `home-manager`'s
|
# might be different from `home-manager`'s (~/.nix_profile/bin/jq)
|
||||||
{ pkgs, lib, config, proj_root, ... }:
|
{ pkgs, lib, config, proj_root, ... }:
|
||||||
let
|
let
|
||||||
# NOTE: Add packages to nvim_pkgs instead, so that it's available at userspace
|
# NOTE: Add packages to nvim_pkgs instead, so that it's available at userspace
|
||||||
|
@ -34,7 +33,6 @@ let
|
||||||
|
|
||||||
pkgs.go # doesn't work, Mason installs from runtime path
|
pkgs.go # doesn't work, Mason installs from runtime path
|
||||||
|
|
||||||
|
|
||||||
# Language-specific stuffs
|
# Language-specific stuffs
|
||||||
pkgs.sumneko-lua-language-server
|
pkgs.sumneko-lua-language-server
|
||||||
# pkgs.python3Packages.python-lsp-server
|
# pkgs.python3Packages.python-lsp-server
|
||||||
|
@ -78,21 +76,7 @@ in
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
withPython3 = true;
|
withPython3 = true;
|
||||||
withNodeJs = true;
|
withNodeJs = true;
|
||||||
# Attempt 4: Correct way to make neovim aware of packages
|
|
||||||
# homeConfigurations.config.programs.neovim takes UNWRAPPED neovim
|
|
||||||
# and wraps it.
|
|
||||||
# Ideally, we build our own neovim and add that to config.home.packages
|
|
||||||
# to share it with nixOS. But we don't really need to share
|
|
||||||
extraPackages = nvim_pkgs;
|
extraPackages = nvim_pkgs;
|
||||||
# only for here for archive-documentation
|
|
||||||
# extraPython3Packages = (pypkgs: [
|
|
||||||
# # pypkgs.python-lsp-server
|
|
||||||
# pypkgs.ujson
|
|
||||||
# ]);
|
|
||||||
# I use vim-plug, so I probably don't require packaging
|
|
||||||
# extraConfig actually writes to init-home-manager.vim (not lua)
|
|
||||||
# https://github.com/nix-community/home-manager/pull/3287
|
|
||||||
# extraConfig = builtins.readFile "${proj_root}/neovim/init.lua";
|
|
||||||
extraLuaConfig = (builtins.readFile "${proj_root.config.path}//neovim/init.lua");
|
extraLuaConfig = (builtins.readFile "${proj_root.config.path}//neovim/init.lua");
|
||||||
plugins = (let inherit (pkgs.vimPlugins)
|
plugins = (let inherit (pkgs.vimPlugins)
|
||||||
plenary-nvim
|
plenary-nvim
|
||||||
|
@ -125,6 +109,27 @@ in
|
||||||
zk-nvim
|
zk-nvim
|
||||||
luasnip
|
luasnip
|
||||||
fidget-nvim
|
fidget-nvim
|
||||||
|
rust-tools-nvim
|
||||||
|
|
||||||
|
cmp_luasnip
|
||||||
|
gitsigns-nvim
|
||||||
|
indent-blankline-nvim
|
||||||
|
lualine-nvim
|
||||||
|
mason-lspconfig-nvim
|
||||||
|
mason-nvim
|
||||||
|
neogit
|
||||||
|
nlua-nvim
|
||||||
|
nvim-jqx
|
||||||
|
nvim-surround
|
||||||
|
nvim-web-devicons
|
||||||
|
playground
|
||||||
|
todo-comments-nvim
|
||||||
|
trouble-nvim
|
||||||
|
vim-dispatch
|
||||||
|
vim-dispatch-neovim
|
||||||
|
vim-fugitive
|
||||||
|
vim-jack-in
|
||||||
|
|
||||||
; in [
|
; in [
|
||||||
plenary-nvim
|
plenary-nvim
|
||||||
nvim-treesitter.withAllGrammars
|
nvim-treesitter.withAllGrammars
|
||||||
|
@ -149,6 +154,26 @@ in
|
||||||
luasnip
|
luasnip
|
||||||
nvim-treesitter-context
|
nvim-treesitter-context
|
||||||
fidget-nvim
|
fidget-nvim
|
||||||
|
rust-tools-nvim
|
||||||
|
|
||||||
|
cmp_luasnip
|
||||||
|
gitsigns-nvim
|
||||||
|
indent-blankline-nvim
|
||||||
|
lualine-nvim
|
||||||
|
mason-lspconfig-nvim
|
||||||
|
mason-nvim
|
||||||
|
neogit
|
||||||
|
nlua-nvim
|
||||||
|
nvim-jqx
|
||||||
|
nvim-surround
|
||||||
|
nvim-web-devicons
|
||||||
|
playground
|
||||||
|
todo-comments-nvim
|
||||||
|
trouble-nvim
|
||||||
|
vim-dispatch
|
||||||
|
vim-dispatch-neovim
|
||||||
|
vim-fugitive
|
||||||
|
vim-jack-in
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
# home.packages = nvim_pkgs;
|
# home.packages = nvim_pkgs;
|
||||||
|
|
|
@ -0,0 +1,104 @@
|
||||||
|
#!/usr/bin/env python3 # A simple playground to explore vim plugins that are available in nixpkgs
|
||||||
|
|
||||||
|
import csv
|
||||||
|
import urllib.request
|
||||||
|
from io import StringIO
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
UPSTREAM_CSV = "https://raw.githubusercontent.com/NixOS/nixpkgs/master/pkgs/applications/editors/vim/plugins/vim-plugin-names"
|
||||||
|
|
||||||
|
|
||||||
|
def load_csv(url):
|
||||||
|
with urllib.request.urlopen(url) as response:
|
||||||
|
data = response.read().decode()
|
||||||
|
return csv.DictReader(StringIO(data))
|
||||||
|
|
||||||
|
|
||||||
|
class VimPlugins:
|
||||||
|
def __init__(self, url: str, sqlite: str = ":memory:"):
|
||||||
|
self.conn = sqlite3.connect(sqlite)
|
||||||
|
csv_data = load_csv(url)
|
||||||
|
fieldnames = csv_data.fieldnames or ["repo", "branch", "alias"]
|
||||||
|
|
||||||
|
cur = self.create_table()
|
||||||
|
for row in csv_data:
|
||||||
|
fields = ", ".join(f'"{row[field]}"' for field in fieldnames)
|
||||||
|
cur.execute(f"INSERT INTO {self.table_name()} VALUES ({fields})")
|
||||||
|
|
||||||
|
self.conn.commit()
|
||||||
|
|
||||||
|
def create_table(self, cursor=None):
|
||||||
|
cur = self.conn.cursor() if not cursor else cursor
|
||||||
|
cur.execute(f'''
|
||||||
|
CREATE TABLE {self.table_name()} (
|
||||||
|
"repo" TEXT,
|
||||||
|
"branch" TEXT,
|
||||||
|
"alias" TEXT
|
||||||
|
);
|
||||||
|
''')
|
||||||
|
return cur
|
||||||
|
|
||||||
|
def table_name(self):
|
||||||
|
return "vim_plugins"
|
||||||
|
|
||||||
|
def query(self, query: str):
|
||||||
|
return self.conn.cursor().execute(query).fetchall()
|
||||||
|
|
||||||
|
|
||||||
|
def vim_plugin_slug(name: str):
|
||||||
|
return name.replace(".", "-").lower()
|
||||||
|
|
||||||
|
|
||||||
|
def name_from_repo(repo: str):
|
||||||
|
spl = repo.split("/")
|
||||||
|
return vim_plugin_slug(spl[-1] or spl[-2])
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# REPL zone
|
||||||
|
vp = VimPlugins(UPSTREAM_CSV)
|
||||||
|
need_install_plugins = """
|
||||||
|
tjdevries/nlua.nvim
|
||||||
|
yioneko/nvim-yati
|
||||||
|
nathanalderson/yang.vim
|
||||||
|
numToStr/Comment.nvim
|
||||||
|
lewis6991/gitsigns.nvim
|
||||||
|
tpope/vim-fugitive
|
||||||
|
williamboman/mason.nvim
|
||||||
|
williamboman/mason-lspconfig.nvim
|
||||||
|
TimUntersberger/neogit
|
||||||
|
folke/trouble.nvim
|
||||||
|
tpope/vim-dispatch
|
||||||
|
clojure-vim/vim-jack-in
|
||||||
|
radenling/vim-dispatch-neovim
|
||||||
|
gennaro-tedesco/nvim-jqx
|
||||||
|
kylechui/nvim-surround
|
||||||
|
simrat39/inlay-hints.nvim
|
||||||
|
gruvbox-community/gruvbox
|
||||||
|
nvim-lualine/lualine.nvim
|
||||||
|
lukas-reineke/indent-blankline.nvim
|
||||||
|
kyazdani42/nvim-web-devicons
|
||||||
|
m-demare/hlargs.nvim
|
||||||
|
folke/todo-comments.nvim
|
||||||
|
nvim-treesitter/playground
|
||||||
|
saadparwaiz1/cmp_luasnip
|
||||||
|
L3MON4D3/LuaSnip
|
||||||
|
arthurxavierx/vim-caser
|
||||||
|
~/local_repos/ts-ql
|
||||||
|
""".split()
|
||||||
|
need_install_plugins = [plugin.strip() for plugin in plugins]
|
||||||
|
need_install_plugins = [plugin for plugin in plugins if len(plugin) > 0]
|
||||||
|
need_install_plugins_gh = [
|
||||||
|
f"https://github.com/{plugin}/".lower() for plugin in need_install_plugins if plugin[0] not in "~./"]
|
||||||
|
values = vp.query(f"SELECT LOWER(repo), alias from {vp.table_name()}")
|
||||||
|
need_install = []
|
||||||
|
for repo, alias in values:
|
||||||
|
if repo in need_install_plugins_gh:
|
||||||
|
need_install.append(vim_plugin_slug(alias) if len(alias) > 0 else name_from_repo(repo))
|
||||||
|
print("need_install", "\n".join(need_install))
|
||||||
|
|
||||||
|
repos = [repo for repo, _ in values]
|
||||||
|
not_in_repo = [name_from_repo(gh) for gh in need_install_plugins_gh if gh not in repos]
|
||||||
|
print("not in repo", not_in_repo) # nvim-yati, yang-vim, Comment-nvim, inlay-hints-nvim, hlargs-nvim, vim-caser, gruvbox-community
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue