mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-04-25 17:38:29 +02:00
feat: access extraPackages in neovim's terminal - add a shell wrapper
This commit is contained in:
8
flake.lock
generated
8
flake.lock
generated
@@ -45,16 +45,16 @@
|
||||
"astronvim": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1699528269,
|
||||
"narHash": "sha256-cC1isyscpvNQ07n/Eb6rlfvuQ/K+7mCjdGJq4m/PUHk=",
|
||||
"lastModified": 1701266895,
|
||||
"narHash": "sha256-wttBcj9OoFHx+EukGzQYKHVlApphZXzZqY5zP5chU6g=",
|
||||
"owner": "AstroNvim",
|
||||
"repo": "AstroNvim",
|
||||
"rev": "59d657c223038359b2b5e230805abca8d919280d",
|
||||
"rev": "bdbc0fef3f33443251e6b45b252b98c42335b881",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "AstroNvim",
|
||||
"ref": "v3.37.12",
|
||||
"ref": "v3.39.0",
|
||||
"repo": "AstroNvim",
|
||||
"type": "github"
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@
|
||||
|
||||
# AstroNvim is an aesthetic and feature-rich neovim config.
|
||||
astronvim = {
|
||||
url = "github:AstroNvim/AstroNvim/v3.37.12";
|
||||
url = "github:AstroNvim/AstroNvim/v3.39.0";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#############################################################
|
||||
|
||||
home.packages = with pkgs; [
|
||||
(python311.withPackages (
|
||||
(python3.withPackages (
|
||||
ps:
|
||||
with ps; [
|
||||
ipython
|
||||
|
||||
@@ -7,7 +7,7 @@ return {
|
||||
signcolumn = "auto", -- Show sign column when used only
|
||||
spell = false, -- Spell checking
|
||||
swapfile = false, -- Swapfile
|
||||
smartindent = false; -- fix https://github.com/ryan4yin/nix-config/issues/4
|
||||
smartindent = false, -- fix https://github.com/ryan4yin/nix-config/issues/4
|
||||
},
|
||||
},
|
||||
|
||||
@@ -24,7 +24,6 @@ return {
|
||||
{ import = "astrocommunity.motion.leap-nvim" },
|
||||
{ import = "astrocommunity.motion.flit-nvim" },
|
||||
{ import = "astrocommunity.scrolling.nvim-scrollbar" },
|
||||
{ import = "astrocommunity.editing-support.auto-save-nvim" },
|
||||
{ import = "astrocommunity.editing-support.todo-comments-nvim" },
|
||||
-- Language Support
|
||||
---- Frontend & NodeJS
|
||||
@@ -67,22 +66,36 @@ return {
|
||||
"zbirenbaum/copilot.lua",
|
||||
opts = function(_, opts)
|
||||
opts.filetypes = {
|
||||
yaml = true;
|
||||
yaml = true,
|
||||
markdown = true,
|
||||
}
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"0x00-ketsu/autosave.nvim",
|
||||
opts = function(_, opts)
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
"akinsho/toggleterm.nvim",
|
||||
opts = function(_, opts)
|
||||
-- custom shell with all neovim's exra packags accessible
|
||||
opts.shell = "nvim-nushell";
|
||||
end,
|
||||
},
|
||||
|
||||
-- markdown preview
|
||||
{
|
||||
'0x00-ketsu/markdown-preview.nvim',
|
||||
ft = {'md', 'markdown', 'mkd', 'mkdn', 'mdwn', 'mdown', 'mdtxt', 'mdtext', 'rmd', 'wiki'},
|
||||
"0x00-ketsu/markdown-preview.nvim",
|
||||
ft = { "md", "markdown", "mkd", "mkdn", "mdwn", "mdown", "mdtxt", "mdtext", "rmd", "wiki" },
|
||||
config = function()
|
||||
require('markdown-preview').setup {
|
||||
require("markdown-preview").setup({
|
||||
-- your configuration comes here
|
||||
-- or leave it empty to use the default settings
|
||||
-- refer to the setup section below
|
||||
}
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
@@ -90,7 +103,7 @@ return {
|
||||
{
|
||||
"gbprod/yanky.nvim",
|
||||
opts = function()
|
||||
local mapping = require "yanky.telescope.mapping"
|
||||
local mapping = require("yanky.telescope.mapping")
|
||||
local mappings = mapping.get_defaults()
|
||||
mappings.i["<c-p>"] = nil
|
||||
return {
|
||||
@@ -140,11 +153,12 @@ return {
|
||||
|
||||
-- joining blocks of code into oneline, or splitting one line into multiple lines.
|
||||
{
|
||||
'Wansmer/treesj',
|
||||
keys = { '<space>m', '<space>j', '<space>s' },
|
||||
dependencies = { 'nvim-treesitter/nvim-treesitter' },
|
||||
"Wansmer/treesj",
|
||||
keys = { "<space>m", "<space>j", "<space>s" },
|
||||
dependencies = { "nvim-treesitter/nvim-treesitter" },
|
||||
config = function()
|
||||
require('treesj').setup({--[[ your config ]]})
|
||||
require("treesj").setup({ --[[ your config ]]
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
@@ -159,22 +173,22 @@ return {
|
||||
hide_gitignored = false,
|
||||
},
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
-- The plugin offers the alibity to refactor code.
|
||||
{
|
||||
"ThePrimeagen/refactoring.nvim",
|
||||
dependencies = {
|
||||
{"nvim-lua/plenary.nvim"},
|
||||
{"nvim-treesitter/nvim-treesitter"}
|
||||
}
|
||||
{ "nvim-lua/plenary.nvim" },
|
||||
{ "nvim-treesitter/nvim-treesitter" },
|
||||
},
|
||||
},
|
||||
-- The plugin offers the abilibty to search and replace.
|
||||
{
|
||||
"nvim-pack/nvim-spectre",
|
||||
dependencies = {
|
||||
{"nvim-lua/plenary.nvim"},
|
||||
}
|
||||
{ "nvim-lua/plenary.nvim" },
|
||||
},
|
||||
},
|
||||
|
||||
-- full signature help, docs and completion for the nvim lua API.
|
||||
@@ -186,7 +200,7 @@ return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
local utils = require "astronvim.utils";
|
||||
local utils = require("astronvim.utils")
|
||||
opts.incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
@@ -213,14 +227,14 @@ return {
|
||||
|
||||
-- implementation/definition preview
|
||||
{
|
||||
'rmagatti/goto-preview',
|
||||
"rmagatti/goto-preview",
|
||||
config = function()
|
||||
require('goto-preview').setup {}
|
||||
end
|
||||
require("goto-preview").setup({})
|
||||
end,
|
||||
},
|
||||
|
||||
-- Undo tree
|
||||
{ "debugloop/telescope-undo.nvim", },
|
||||
{ "debugloop/telescope-undo.nvim" },
|
||||
|
||||
-- Install lsp, formmatter and others via home manager instead of Mason.nvim
|
||||
-- LSP installations
|
||||
@@ -245,7 +259,7 @@ return {
|
||||
{
|
||||
"jose-elias-alvarez/null-ls.nvim",
|
||||
opts = function(_, opts)
|
||||
local null_ls = require "null-ls"
|
||||
local null_ls = require("null-ls")
|
||||
local code_actions = null_ls.builtins.code_actions
|
||||
local diagnostics = null_ls.builtins.diagnostics
|
||||
local formatting = null_ls.builtins.formatting
|
||||
@@ -302,8 +316,9 @@ return {
|
||||
},
|
||||
|
||||
{
|
||||
'nvim-telescope/telescope.nvim', branch = '0.1.x',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
"nvim-telescope/telescope.nvim",
|
||||
branch = "0.1.x",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
init = function()
|
||||
-- 1. Disable highlighting for certain filetypes
|
||||
-- 2. Ignore files larger than a certain filesize
|
||||
@@ -322,7 +337,9 @@ return {
|
||||
|
||||
local new_maker = function(filepath, bufnr, opts)
|
||||
opts = opts or {}
|
||||
if opts.use_ft_detect == nil then opts.use_ft_detect = true end
|
||||
if opts.use_ft_detect == nil then
|
||||
opts.use_ft_detect = true
|
||||
end
|
||||
|
||||
-- 1. Check if the file is in the bad_files array, and if so, don't highlight it
|
||||
opts.use_ft_detect = opts.use_ft_detect == false and false or bad_files(filepath)
|
||||
@@ -330,7 +347,9 @@ return {
|
||||
-- 2. Check the file size, and ignore it if it's too big(preview nothing).
|
||||
filepath = vim.fn.expand(filepath)
|
||||
vim.loop.fs_stat(filepath, function(_, stat)
|
||||
if not stat then return end
|
||||
if not stat then
|
||||
return
|
||||
end
|
||||
if stat.size > filesize_threshold then
|
||||
return
|
||||
else
|
||||
@@ -339,13 +358,13 @@ return {
|
||||
end)
|
||||
end
|
||||
|
||||
require("telescope").setup {
|
||||
require("telescope").setup({
|
||||
defaults = {
|
||||
buffer_previewer_maker = new_maker,
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
-- Configure require("lazy").setup() options
|
||||
@@ -354,7 +373,7 @@ return {
|
||||
performance = {
|
||||
rtp = {
|
||||
-- customize default disabled vim plugins
|
||||
disabled_plugins = { };
|
||||
disabled_plugins = {},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -17,7 +17,12 @@ return {
|
||||
["<leader>bn"] = { "<cmd>tabnew<cr>", desc = "New tab" },
|
||||
-- quick save
|
||||
["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
|
||||
["<leader>tp"] = { function() utils.toggle_term_cmd("ipython") end, desc = "ToggleTerm python" },
|
||||
|
||||
-- Terminal
|
||||
-- NOTE: https://neovim.io/doc/user/builtin.html#jobstart()
|
||||
-- 1. If {cmd} is a List it runs directly (no 'shell')
|
||||
-- 2. If {cmd} is a String it runs in the 'shell'
|
||||
["<leader>tp"] = { function() utils.toggle_term_cmd({ cmd = "ipython" }) end, desc = "ToggleTerm python" },
|
||||
|
||||
-- search and replace globally
|
||||
['<leader>ss'] = {'<cmd>lua require("spectre").toggle()<CR>', desc = "Toggle Spectre" },
|
||||
|
||||
@@ -27,16 +27,19 @@
|
||||
programs = {
|
||||
neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
||||
viAlias = false;
|
||||
defaultEditor = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
withPython3 = true;
|
||||
withNodeJs = true;
|
||||
# currently we use lazy.nvim as neovim's package manager, so comment this one.
|
||||
# plugins = with pkgs.vimPlugins; [
|
||||
# # search all the plugins using https://search.nixos.org/packages
|
||||
# ];
|
||||
|
||||
# Extra packages only available to nvim(won't pollute the global home environment)
|
||||
extraPackages = with pkgs;
|
||||
extraPackages = with pkgs; let
|
||||
nvim_extra =
|
||||
[
|
||||
#-- c/c++
|
||||
cmake
|
||||
@@ -50,8 +53,20 @@
|
||||
|
||||
#-- python
|
||||
nodePackages.pyright # python language server
|
||||
python311Packages.black # python formatter
|
||||
python311Packages.ruff-lsp
|
||||
python3Packages.black # python formatter
|
||||
python3Packages.ruff-lsp
|
||||
(python3.withPackages (
|
||||
ps:
|
||||
with ps; [
|
||||
pynvim # Python client and plugin host for Nvim
|
||||
|
||||
ipython
|
||||
pandas
|
||||
requests
|
||||
pyquery
|
||||
pyyaml
|
||||
]
|
||||
))
|
||||
|
||||
#-- rust
|
||||
rust-analyzer
|
||||
@@ -94,6 +109,7 @@
|
||||
shfmt
|
||||
|
||||
#-- javascript/typescript --#
|
||||
nodePackages.nodejs
|
||||
nodePackages.typescript
|
||||
nodePackages.typescript-language-server
|
||||
# HTML/CSS/JSON/ESLint language servers extracted from vscode
|
||||
@@ -136,11 +152,27 @@
|
||||
verible
|
||||
]
|
||||
);
|
||||
in
|
||||
nvim_extra
|
||||
++ [
|
||||
# NOTE: shells installed by Nix will ignore the `PATH` env passed by parent process,
|
||||
# so to access the packages we installed here in neovim's shell session(`:terminal`),
|
||||
# we have to create a shell wrapper with the packages in `PATH` env.
|
||||
(pkgs.runCommand "nvim-shell" rec {
|
||||
nativeBuildInputs =
|
||||
nvim_extra
|
||||
++ [
|
||||
pkgs.nushell
|
||||
pkgs.bash
|
||||
];
|
||||
PATH = lib.makeBinPath nativeBuildInputs;
|
||||
} ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
# currently we use lazy.nvim as neovim's package manager, so comment this one.
|
||||
# plugins = with pkgs.vimPlugins; [
|
||||
# # search all the plugins using https://search.nixos.org/packages
|
||||
# ];
|
||||
ln -s ${pkgs.nushell}/bin/nu $out/bin/nvim-nushell
|
||||
ln -s ${pkgs.bash}/bin/bash $out/bin/nvim-bash
|
||||
'')
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
# homebrew need to be installed manually, see https://brew.sh
|
||||
homebrew = {
|
||||
enable = true;
|
||||
enable = false;
|
||||
|
||||
onActivation = {
|
||||
autoUpdate = false;
|
||||
|
||||
Reference in New Issue
Block a user