diff --git a/flake.nix b/flake.nix index 64d3178..a592a4a 100644 --- a/flake.nix +++ b/flake.nix @@ -96,6 +96,7 @@ gzip inject inject-darwin + (inputs.nixvimunstable.legacyPackages.${system}.makeNixvim (import ./home/modules/baseline/vim/config.nix { inherit pkgs; })) self'.checks.pre-commit-check.enabledPackages tmux xonsh diff --git a/home/modules/baseline/vim.nix b/home/modules/baseline/vim.nix index d0b969f..60624f9 100644 --- a/home/modules/baseline/vim.nix +++ b/home/modules/baseline/vim.nix @@ -1,145 +1,9 @@ -{ lib, pkgs, config, ... }: +{ pkgs, ... }: -let - vim-xonsh = pkgs.vimUtils.buildVimPlugin { - name = "vim-xonsh"; - src = pkgs.fetchFromGitHub { - owner = "meatballs"; - repo = "vim-xonsh"; - rev = "929f35e"; - hash = "sha256-ugHLu2Z9bTtQsIp4FQPKxgjVe9oZNjfQYrP+aHu+/uU="; - }; - }; -in { + # The Hack font is used in the Fugitive sidebars fonts.fontconfig.enable = true; home.packages = [ (pkgs.nerdfonts.override { fonts = [ "Hack" ]; }) ]; - programs.nixvim = { - enable = true; - colorschemes.gruvbox.enable = true; - globals = { - indent_guides_enable_on_vim_startup = 1; - nix_recommended_style = 0; - }; - opts = { - background = "dark"; - backup = false; - copyindent = true; - cursorline = true; - expandtab = false; - hidden = true; - hlsearch = true; - ignorecase = true; - lazyredraw = true; - list = true; - listchars = "tab:→ ,extends:→,precedes:←,trail:·,eol:¬"; - mouse = "a"; - number = true; - preserveindent = true; - relativenumber = true; - shiftwidth = 4; - showcmd = true; - showmatch = true; - signcolumn = "yes"; - smartcase = true; - softtabstop = 4; - tabstop = 4; - # Setting for CtrlP - wildignore = "*.swp,*.pyc,*.class,.tox"; - wrap = false; - writebackup = false; - }; - keymaps = - let - winMove = key: { mode = "n"; key = ""; action = "${key}"; }; - in - [{ - mode = "n"; - key = ""; - action = ":BufExplorer"; - } - { - mode = "n"; - key = ""; - #action = ":NERDTreeToggle"; - action = ":Neotree toggle"; - } - { - mode = "n"; - key = ""; - action = ":Neotree float git_status toggle"; - } - (winMove "h") - (winMove "j") - (winMove "k") - (winMove "l")]; - plugins = { - airline.enable = true; - cmp = { - enable = true; - autoEnableSources = true; - settings.sources = [ - { name = "nvim_lsp"; } - { name = "buffer"; group_index = 2; } - { name = "path"; gruop_index = 3; } - ]; - }; - direnv.enable = true; - gitgutter.enable = true; - fugitive.enable = true; - fzf-lua = { - enable = true; - keymaps = { - "" = { - action = "files"; - settings = { - previewers.cat.cmd = "${pkgs.coreutils}/bin/cat"; - winopts.height = 0.5; - }; - }; - "" = { - action = "git_files"; - settings = { - previewers.cat.cmd = "${pkgs.coreutils}/bin/cat"; - winopts.height = 0.5; - }; - }; - }; - profile = "fzf-vim"; - }; - lsp = { - enable = true; - servers = { - ansiblels.enable = true; - cmake.enable = true; - gopls.enable = true; - html.enable = true; - nixd.enable = true; - pylsp.enable = true; - pyright.enable = true; - rust-analyzer = { - # No need to have these installed on every one of my systems - installCargo = false; - installRustc = false; - enable = true; - }; - terraformls.enable = true; - }; - }; - neo-tree.enable = true; - notify.enable = true; - web-devicons.enable = true; - } // (lib.mkIf (lib.versionAtLeast config.system.nixos.release "24.11") { }); - extraConfigLua = builtins.replaceStrings [ "@git@" ] [ "${pkgs.git}/bin/git" ] (builtins.readFile ./vim/extra.lua); - extraConfigVim = builtins.readFile ./vim/extra.vimrc; - extraPlugins = with pkgs.vimPlugins; [ - bufexplorer - context-vim - vim-indent-guides - vim-xonsh - ]; - viAlias = true; - vimAlias = true; - }; + programs.nixvim = (import ./vim/config.nix { inherit pkgs; }) // { enable = true; }; } diff --git a/home/modules/baseline/vim/config.nix b/home/modules/baseline/vim/config.nix new file mode 100644 index 0000000..f586be4 --- /dev/null +++ b/home/modules/baseline/vim/config.nix @@ -0,0 +1,141 @@ +{ pkgs, ... }: +let + vim-xonsh = pkgs.vimUtils.buildVimPlugin { + name = "vim-xonsh"; + src = pkgs.fetchFromGitHub { + owner = "meatballs"; + repo = "vim-xonsh"; + rev = "929f35e"; + hash = "sha256-ugHLu2Z9bTtQsIp4FQPKxgjVe9oZNjfQYrP+aHu+/uU="; + }; + }; +in +{ + colorschemes.gruvbox.enable = true; + globals = { + indent_guides_enable_on_vim_startup = 1; + nix_recommended_style = 0; + }; + opts = { + background = "dark"; + backup = false; + copyindent = true; + cursorline = true; + expandtab = false; + hidden = true; + hlsearch = true; + ignorecase = true; + lazyredraw = true; + list = true; + listchars = "tab:→ ,extends:→,precedes:←,trail:·,eol:¬"; + mouse = "a"; + number = true; + preserveindent = true; + relativenumber = true; + shiftwidth = 4; + showcmd = true; + showmatch = true; + signcolumn = "yes"; + smartcase = true; + softtabstop = 4; + tabstop = 4; + # Setting for CtrlP + wildignore = "*.swp,*.pyc,*.class,.tox"; + wrap = false; + writebackup = false; + }; + keymaps = + let + winMove = key: { mode = "n"; key = ""; action = "${key}"; }; + in + [{ + mode = "n"; + key = ""; + action = ":BufExplorer"; + } + { + mode = "n"; + key = ""; + #action = ":NERDTreeToggle"; + action = ":Neotree toggle"; + } + { + mode = "n"; + key = ""; + action = ":Neotree float git_status toggle"; + } + (winMove "h") + (winMove "j") + (winMove "k") + (winMove "l")]; + plugins = { + airline.enable = true; + cmp = { + enable = true; + autoEnableSources = true; + settings = { + sources = [ + { name = "nvim_lsp"; } + { name = "buffer"; group_index = 2; } + { name = "path"; gruop_index = 3; } + ]; + }; + }; + direnv.enable = true; + gitgutter.enable = true; + fugitive.enable = true; + fzf-lua = { + enable = true; + keymaps = { + "" = { + action = "files"; + settings = { + previewers.cat.cmd = "${pkgs.coreutils}/bin/cat"; + winopts.height = 0.5; + }; + }; + "" = { + action = "git_files"; + settings = { + previewers.cat.cmd = "${pkgs.coreutils}/bin/cat"; + winopts.height = 0.5; + }; + }; + }; + profile = "fzf-vim"; + }; + lsp = { + enable = true; + servers = { + ansiblels.enable = true; + cmake.enable = true; + gopls.enable = true; + html.enable = true; + nixd.enable = true; + pylsp.enable = true; + pyright.enable = true; + rust-analyzer = { + # No need to have these installed on every one of my systems + installCargo = false; + installRustc = false; + enable = true; + }; + terraformls.enable = true; + }; + }; + neo-tree.enable = true; + notify.enable = true; + web-devicons.enable = true; + }; + extraConfigLua = builtins.replaceStrings [ "@git@" ] [ "${pkgs.git}/bin/git" ] (builtins.readFile ./extra.lua); + extraConfigVim = builtins.readFile ./extra.vimrc; + extraPlugins = with pkgs.vimPlugins; [ + bufexplorer + + context-vim + vim-indent-guides + vim-xonsh + ]; + viAlias = true; + vimAlias = true; +}