From 78b2d62ce2669f0e23b6afda5fc30203c34be354 Mon Sep 17 00:00:00 2001 From: Smaug123 Date: Fri, 22 Mar 2024 21:01:26 +0000 Subject: [PATCH] Python setup --- home-manager/home.nix | 39 ++++++++++++++++++++++++++--- home-manager/nvim/init.lua | 1 + home-manager/{ => nvim}/init.vim | 2 ++ home-manager/nvim/lspconfig.lua | 3 +++ home-manager/nvim/treesitter.lua | 10 ++++++++ home-manager/nvim/venv-selector.lua | 19 ++++++++++++++ 6 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 home-manager/nvim/init.lua rename home-manager/{ => nvim}/init.vim (99%) create mode 100644 home-manager/nvim/lspconfig.lua create mode 100644 home-manager/nvim/treesitter.lua create mode 100644 home-manager/nvim/venv-selector.lua diff --git a/home-manager/home.nix b/home-manager/home.nix index 7748795..daf197e 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -152,10 +152,39 @@ plugin = nixpkgs.vimPlugins.molokai; config = '' colorscheme molokai - ''; + ''; } + { + plugin = nixpkgs.vimPlugins.nvim-treesitter.withAllGrammars; + config = builtins.readFile ./nvim/treesitter.lua; + type = "lua"; + } + + { + plugin = nixpkgs.vimPlugins.nvim-lspconfig; + config = builtins.readFile ./nvim/lspconfig.lua; + type = "lua"; + } + nixpkgs.vimPlugins.telescope-nvim nixpkgs.vimPlugins.tagbar nixpkgs.vimPlugins.fzf-vim + { + plugin = let + name = "venv-selector.nvim"; + rev = "2ad34f36d498ff5193ea10f79c87688bd5284172"; + in + nixpkgs.vimUtils.buildVimPlugin { + name = name; + src = nixpkgs.fetchFromGitHub { + owner = "linux-cultist"; + repo = name; + rev = rev; + hash = "sha256-aOga7kJ1y3T2vDyYFl/XHOwk35ZqeUcfPUk+Pr1mIeo="; + }; + }; + config = builtins.readFile ./nvim/venv-selector.lua; + type = "lua"; + } { plugin = nixpkgs.vimPlugins.Ionide-vim; config = '' @@ -198,8 +227,8 @@ vimdiffAlias = true; withPython3 = true; - extraLuaConfig = ''vim.g.python3_host_prog="${pythonEnv}/bin/python"''; - extraConfig = builtins.readFile ./init.vim; + extraLuaConfig = builtins.replaceStrings ["%PYTHONENV%"] ["${pythonEnv}"] (builtins.readFile ./nvim/init.lua); + # extraConfig = builtins.readFile ./nvim/init.vim; }; programs.direnv = { @@ -253,6 +282,7 @@ nixpkgs.lnav nixpkgs.age nixpkgs.nodejs + nixpkgs.nodePackages.pyright nixpkgs.sqlitebrowser nixpkgs.typst nixpkgs.poetry @@ -263,6 +293,7 @@ nixpkgs.ffmpeg nixpkgs.bat nixpkgs.pandoc + nixpkgs.fd (nixpkgs.nerdfonts.override {fonts = ["FiraCode" "DroidSansMono"];}) ]; @@ -281,7 +312,7 @@ (require 'evil) (evil-mode 1) (evil-set-undo-system 'undo-redo) - ;; Allow hash to be entered + ;; Allow hash to be entered (global-set-key (kbd "M-3") '(lambda () (interactive) (insert "#"))) ''; }; diff --git a/home-manager/nvim/init.lua b/home-manager/nvim/init.lua new file mode 100644 index 0000000..5ca4e79 --- /dev/null +++ b/home-manager/nvim/init.lua @@ -0,0 +1 @@ +vim.g.python3_host_prog = "%PYTHONENV%/bin/python" diff --git a/home-manager/init.vim b/home-manager/nvim/init.vim similarity index 99% rename from home-manager/init.vim rename to home-manager/nvim/init.vim index a7e9453..9fcc085 100644 --- a/home-manager/init.vim +++ b/home-manager/nvim/init.vim @@ -1,6 +1,8 @@ set nu colorscheme molokai +set mouse= + """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Maintainer: " Amir Salihefendic — @amix3k diff --git a/home-manager/nvim/lspconfig.lua b/home-manager/nvim/lspconfig.lua new file mode 100644 index 0000000..5abadcc --- /dev/null +++ b/home-manager/nvim/lspconfig.lua @@ -0,0 +1,3 @@ +require('lspconfig').pyright.setup { +} + diff --git a/home-manager/nvim/treesitter.lua b/home-manager/nvim/treesitter.lua new file mode 100644 index 0000000..9c2c009 --- /dev/null +++ b/home-manager/nvim/treesitter.lua @@ -0,0 +1,10 @@ +require'nvim-treesitter.configs'.setup { + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = false, + + highlight = { + enable = true, + }, +} + diff --git a/home-manager/nvim/venv-selector.lua b/home-manager/nvim/venv-selector.lua new file mode 100644 index 0000000..a5e5b90 --- /dev/null +++ b/home-manager/nvim/venv-selector.lua @@ -0,0 +1,19 @@ +local venv_selector = require 'venv-selector' + +venv_selector.setup { + --- other configuration + changed_venv_hooks = { venv_selector.hooks.pyright }, + name = { "venv", ".venv" }, +} + +vim.api.nvim_create_autocmd('VimEnter', { + desc = 'Auto select virtualenv Nvim open', + pattern = '*', + callback = function() + local venv = vim.fn.findfile('pyproject.toml', vim.fn.getcwd() .. ';') + if venv ~= '' then + require('venv-selector').retrieve_from_cache() + end + end, + once = true, +})