{ pkgs, ... }: { imports = [ ./telescope.nix ]; programs.nixvim = { colorscheme = "sonokai"; enable = true; extraPlugins = [ pkgs.vimPlugins.indentLine pkgs.vimPlugins.nvim-lspconfig pkgs.vimPlugins.polyglot pkgs.vimPlugins.sonokai pkgs.vimPlugins.vim-better-whitespace (pkgs.vimUtils.buildVimPlugin { pname = "lualine-so-fancy.nvim"; version = "HEAD"; src = pkgs.fetchFromGitHub { owner = "meuter"; repo = "lualine-so-fancy.nvim"; rev = "45197358e5274d301d98638bf079f3437d6eacf8"; sha256 = "sha256-j6XI4cw1ouYEvSiKdam8RAqxefDqeLwe37Qir/UO+8g="; }; }) ]; globals = { mapleader = ","; sonokai_style = "atlantis"; sonokai_disable_italic_comment = 1; }; keymaps = [ { key = "rm"; action = "RenderMarkdown toggle"; } { key = "g"; action = "Git"; } { key = "gp"; action = "Git push"; } { key = "gl"; action = "Git log"; } { key = "gbl"; action = "Git blame"; } { key = "gbr"; action = "Git branch"; } ]; opts = { colorcolumn = "88"; cursorline = true; number = true; spell = true; termguicolors = true; textwidth = 80; }; plugins = { cmp = { enable = true; # Completion autoEnableSources = true; settings.sources = [ { name = "nvim_lsp"; } { name = "path"; } { name = "buffer"; } ]; settings.mapping = { "" = "cmp.mapping.scroll_docs(-2)"; "" = "cmp.mapping.scroll_docs(2)"; "" = "cmp.mapping.complete()"; "" = "cmp.mapping.close()"; "" = "cmp.mapping(cmp.mapping.select_next_item({behavior = cmp.SelectBehavior.Select}), {'i', 's'})"; "" = "cmp.mapping(cmp.mapping.select_prev_item({behavior = cmp.SelectBehavior.Select}), {'i', 's'})"; "" = "cmp.mapping.confirm({ select = false, behavior = cmp.ConfirmBehavior.Replace })"; }; }; committia.enable = true; # Enhanced git commits fugitive.enable = true; gitsigns.enable = true; # Show git change in first line guess-indent.enable = true; # Guess indent of the file lsp.enable = true; lsp.servers = { bashls.enable = true; dockerls.enable = true; gitlab_ci_ls.enable = true; gitlab_ci_ls.package = pkgs.gitlab-ci-ls; gopls.enable = true; helm_ls.enable = true; jsonls.enable = true; nixd.enable = true; pylsp = { enable = true; settings.plugins = { black.enabled = true; isort.enabled = true; ruff.enabled = true; ruff.formatEnabled = false; }; }; terraformls = { enable = true; rootDir = "require('lspconfig.util').root_pattern('.git', '.terraform')"; }; tflint.enable = true; yamlls.enable = true; }; lsp-format.enable = true; # Automatically format on save lsp-lines.enable = true; # Display LSP hints in lines lsp-signature.enable = true; # Show function signature when typing lualine.enable = true; # Status line lualine.settings.sections = { lualine_a = [ "fancy_mode" ]; lualine_b = [ "fancy_branch" "fancy_diff" ]; lualine_c = [ "fancy_cwd" "filename" ]; lualine_x = [ "fancy_diagnostics" "fancy_searchcount" ]; lualine_y = [ "fancy_filetype" ]; lualine_z = [ "fancy_lsp_servers" ]; }; render-markdown.enable = true; treesitter.enable = true; web-devicons.enable = true; }; }; }