rice nixvim
This commit is contained in:
parent
328438e8ec
commit
013e5ce859
|
@ -2,5 +2,10 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./zsh.nix
|
./zsh.nix
|
||||||
|
./nixvim.nix
|
||||||
] ;
|
] ;
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
pkgs.ripgrep
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,356 @@
|
||||||
|
{ inputs, pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
inputs.nixvim.homeManagerModules.nixvim
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.nixvim = {
|
||||||
|
enable = true;
|
||||||
|
enableMan = true; # install man pages for nixvim options
|
||||||
|
|
||||||
|
clipboard.register = "unnamedplus"; # use system clipboard instead of internal registers
|
||||||
|
|
||||||
|
colorschemes.kanagawa = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
commentStyle = {
|
||||||
|
italic = true;
|
||||||
|
};
|
||||||
|
dimInactive = true;
|
||||||
|
terminalColors = true;
|
||||||
|
theme = "wave";
|
||||||
|
transparent = false;
|
||||||
|
undercurl = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
#
|
||||||
|
# ========= General Appearance =========
|
||||||
|
#
|
||||||
|
background = "";
|
||||||
|
number = true; # show line numbers
|
||||||
|
relativenumber = true; # show relative linenumbers
|
||||||
|
laststatus = 0; # Display status line always
|
||||||
|
history = 1000; # Store lots of :cmdline history
|
||||||
|
showcmd = true; # Show incomplete cmds down the bottom
|
||||||
|
showmode = true; # Show current mode down the bottom
|
||||||
|
autoread = true; # Reload files changed outside vim
|
||||||
|
lazyredraw = true; # Redraw only when needed
|
||||||
|
showmatch = true; # highlight matching braces
|
||||||
|
ruler = true; # show current line and column
|
||||||
|
visualbell = true; # No sounds
|
||||||
|
|
||||||
|
listchars = "trail:·"; # Display tabs and trailing spaces visually
|
||||||
|
|
||||||
|
# ========= Font =========
|
||||||
|
guifont = "NotoSansMono:h9"; # fontname:fontsize
|
||||||
|
|
||||||
|
# ========= Cursor =========
|
||||||
|
guicursor = "n-v-c-sm:block,i-ci-ve:ver25,r-cr-o:hor20,n-v-i:blinkon0";
|
||||||
|
|
||||||
|
# ========= Redirect Temp Files =========
|
||||||
|
# backup
|
||||||
|
backupdir = "$HOME/.local/state/vim/backup//,/tmp//,.";
|
||||||
|
writebackup = false;
|
||||||
|
# swap
|
||||||
|
directory = "$HOME/.local/vim/swap//,/tmp//,.";
|
||||||
|
|
||||||
|
# ================ Indentation ======================
|
||||||
|
autoindent = true;
|
||||||
|
cindent = true; # automatically indent braces
|
||||||
|
smartindent = true;
|
||||||
|
smarttab = true;
|
||||||
|
shiftwidth = 2;
|
||||||
|
softtabstop = 4;
|
||||||
|
tabstop = 2;
|
||||||
|
expandtab = true;
|
||||||
|
|
||||||
|
# ================ Folds ============================
|
||||||
|
foldmethod = "indent"; # fold based on indent
|
||||||
|
foldnestmax = 3; # deepest fold is 3 levels
|
||||||
|
foldenable = false; # don't fold by default
|
||||||
|
|
||||||
|
# ================ Completion =======================
|
||||||
|
wildmode = "list:longest";
|
||||||
|
wildmenu = true; # enable ctrl-n and ctrl-p to scroll thru matches
|
||||||
|
|
||||||
|
# stuff to ignore when tab completing
|
||||||
|
wildignore = "*.o,*.obj,*~,vim/backups,sass-cache,DS_Store,vendor/rails/**,vendor/cache/**,*.gem,log/**,tmp/**,*.png,*.jpg,*.gif";
|
||||||
|
|
||||||
|
# ================ Scrolling ========================
|
||||||
|
scrolloff = 4; # Start scrolling when we're 4 lines away from margins
|
||||||
|
sidescrolloff = 15;
|
||||||
|
sidescroll = 1;
|
||||||
|
|
||||||
|
# ================ Searching ========================
|
||||||
|
incsearch = true;
|
||||||
|
hlsearch = true;
|
||||||
|
ignorecase = true;
|
||||||
|
smartcase = true;
|
||||||
|
|
||||||
|
# ================ Movement ========================
|
||||||
|
backspace = "indent,eol,start"; # allow backspace in insert mode
|
||||||
|
};
|
||||||
|
|
||||||
|
#
|
||||||
|
# ========= UI Plugins =========
|
||||||
|
#
|
||||||
|
|
||||||
|
plugins.nvim-colorizer = {
|
||||||
|
enable = true;
|
||||||
|
fileTypes = [ "*" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.lualine = {
|
||||||
|
enable = true;
|
||||||
|
theme = "auto";
|
||||||
|
componentSeparators = {
|
||||||
|
left = "";
|
||||||
|
right = "";
|
||||||
|
};
|
||||||
|
sectionSeparators = {
|
||||||
|
left = "";
|
||||||
|
right = "";
|
||||||
|
};
|
||||||
|
sections = {
|
||||||
|
lualine_a = [ "mode" ];
|
||||||
|
lualine_b = [ "branch" "diff" "diagnostics" ];
|
||||||
|
lualine_c = [ "filename" ];
|
||||||
|
lualine_x = [ "encoding" "fileformat" "filetype" ];
|
||||||
|
lualine_y = [ "progress" ];
|
||||||
|
lualine_z = [ "locations" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#
|
||||||
|
# ========= File Search =========
|
||||||
|
#
|
||||||
|
plugins.telescope = {
|
||||||
|
# https://github.com/nvim-telescope/telescope.nvim
|
||||||
|
enable = true;
|
||||||
|
extensions.fzy-native.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# ========= File Nav ===========
|
||||||
|
#
|
||||||
|
plugins.harpoon = {
|
||||||
|
enable = true;
|
||||||
|
keymaps = {
|
||||||
|
toggleQuickMenu = "<leader>b";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins.nvim-tree = {
|
||||||
|
enable = true;
|
||||||
|
view.width = {
|
||||||
|
min = 30;
|
||||||
|
max = -1;
|
||||||
|
padding = 1;
|
||||||
|
};
|
||||||
|
disableNetrw = true;
|
||||||
|
filters.dotfiles = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#
|
||||||
|
# ========== Dev Tools =========
|
||||||
|
#
|
||||||
|
plugins.surround.enable = true; # vim-surround
|
||||||
|
|
||||||
|
plugins.gitsigns = {
|
||||||
|
enable = true;
|
||||||
|
settings.signs.add = {
|
||||||
|
hl = "GitSignsAdd";
|
||||||
|
text = " ▎";
|
||||||
|
numhl = "GitSignsAddNr";
|
||||||
|
linehl = "GitSignsAddLn";
|
||||||
|
};
|
||||||
|
settings.signs.change = {
|
||||||
|
hl = "GitSignsChange";
|
||||||
|
text = " ▎";
|
||||||
|
numhl = "GitSignsChangeNr";
|
||||||
|
linehl = "GitSignsChangeLn";
|
||||||
|
};
|
||||||
|
settings.signs.delete = {
|
||||||
|
hl = "GitSignsDelete";
|
||||||
|
text = " ●";
|
||||||
|
numhl = "GitSignsDeleteNr";
|
||||||
|
linehl = "GitSignsDeleteLn";
|
||||||
|
};
|
||||||
|
settings.signs.topdelete = {
|
||||||
|
hl = "GitSignsDelete";
|
||||||
|
text = " ●";
|
||||||
|
numhl = "GitSignsDeleteNr";
|
||||||
|
linehl = "GitSignsDeleteLn";
|
||||||
|
};
|
||||||
|
settings.signs.changedelete = {
|
||||||
|
hl = "GitSignsChange";
|
||||||
|
text = " ▎";
|
||||||
|
numhl = "GitSignsChangeNr";
|
||||||
|
linehl = "GitSignsChangeLn";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Load Plugins that aren't provided as modules by nixvim
|
||||||
|
extraPlugins = builtins.attrValues {
|
||||||
|
inherit (pkgs.vimPlugins)
|
||||||
|
ale
|
||||||
|
vim-numbertoggle# Use relative number on focused buffer only
|
||||||
|
vimade# Dim unfocused buffers
|
||||||
|
vimwiki# Vim Wiki
|
||||||
|
YouCompleteMe# Code completion engine
|
||||||
|
vim-dadbod
|
||||||
|
vim-dadbod-ui
|
||||||
|
|
||||||
|
# Keep vim-devicons as last entry
|
||||||
|
vim-devicons;
|
||||||
|
};
|
||||||
|
|
||||||
|
# ========= Mapleader =========
|
||||||
|
globals.mapleader = ";";
|
||||||
|
|
||||||
|
#
|
||||||
|
# ========= Key binds =========
|
||||||
|
#
|
||||||
|
keymaps = [
|
||||||
|
# Switching windows
|
||||||
|
{
|
||||||
|
mode = [ "n" ];
|
||||||
|
action = "<C-W>h";
|
||||||
|
key = "<S-h>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = [ "n" ];
|
||||||
|
action = "<C-W>j";
|
||||||
|
key = "<S-j>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = [ "n" ];
|
||||||
|
action = "<C-W>k";
|
||||||
|
key = "<S-k>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = [ "n" ];
|
||||||
|
action = "<C-W>l";
|
||||||
|
key = "<S-l>";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# Toggle nvim-tree
|
||||||
|
{
|
||||||
|
mode = [ "n" ];
|
||||||
|
action = "<cmd>NvimTreeFindFileToggle<CR>";
|
||||||
|
key = "tt";
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# clear search highlighting
|
||||||
|
mode = [ "n" ];
|
||||||
|
key = "<space><space>";
|
||||||
|
action = "<cmd>nohlsearch<CR>";
|
||||||
|
options = { noremap = true; };
|
||||||
|
}
|
||||||
|
|
||||||
|
# ========== Telescope Plugin =========
|
||||||
|
{
|
||||||
|
# find files
|
||||||
|
mode = [ "n" ];
|
||||||
|
key = "<Leader>ff";
|
||||||
|
action = "<cmd>Telescope find_files<CR>";
|
||||||
|
options = { noremap = true; };
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# live grep
|
||||||
|
mode = [ "n" ];
|
||||||
|
key = "<Leader>fg";
|
||||||
|
action = "<cmd>Telescope live_grep<CR>";
|
||||||
|
options = { noremap = true; };
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# buffers
|
||||||
|
mode = [ "n" ];
|
||||||
|
key = "<Leader>fb";
|
||||||
|
action = "<cmd>Telescope buffers<CR>";
|
||||||
|
options = { noremap = true; };
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# help tags
|
||||||
|
mode = [ "n" ];
|
||||||
|
key = "<Leader>fh";
|
||||||
|
action = "<cmd>Telescope help_tags<CR>";
|
||||||
|
options = { noremap = true; };
|
||||||
|
}
|
||||||
|
|
||||||
|
];
|
||||||
|
extraConfigVim = ''
|
||||||
|
" ================ Persistent Undo ==================
|
||||||
|
" Keep undo history across sessions, by storing in file.
|
||||||
|
" Only works all the time.
|
||||||
|
if has('persistent_undo')
|
||||||
|
silent !mkdir ~/.vim/backups > /dev/null 2>&1
|
||||||
|
set undodir=~/.vim/backups
|
||||||
|
set undofile
|
||||||
|
endif
|
||||||
|
|
||||||
|
" ================ Vim Wiki config =================
|
||||||
|
" See :h vimwiki_list for info on registering wiki paths
|
||||||
|
let wiki_0 = {}
|
||||||
|
let wiki_0.path = '~/dotfiles.wiki/'
|
||||||
|
let wiki_0.index = 'home'
|
||||||
|
let wiki_0.syntax = 'markdown'
|
||||||
|
let wiki_0.ext = '.md'
|
||||||
|
|
||||||
|
" fill spaces in page names with _ in pathing
|
||||||
|
let wiki_0.links_space_char = '_'
|
||||||
|
|
||||||
|
" ================ Ale ========================
|
||||||
|
" linter and fixer packages have to be installed via AUR or pamac
|
||||||
|
let g:ale_linters = {
|
||||||
|
\ 'c': ['clang-tidy'],
|
||||||
|
\ 'python': ['flake8'],
|
||||||
|
\ 'vim': ['vint'],
|
||||||
|
\ 'markdown': ['markdownlint'],
|
||||||
|
\ }
|
||||||
|
|
||||||
|
let g:ale_fixers = {
|
||||||
|
\ 'c': ['clang-format'],
|
||||||
|
\ 'javascript': ['prettier', 'eslint'],
|
||||||
|
\ 'json': ['fixjson', 'prettier'],
|
||||||
|
\ 'python': ['black', 'isort'],
|
||||||
|
\ }
|
||||||
|
|
||||||
|
" Set global fixers for all file types except Markdown
|
||||||
|
" Why? because double spaces at the end of a line in markdown indicate a
|
||||||
|
" linebreak without creating a new paragraph
|
||||||
|
function! SetGlobalFixers()
|
||||||
|
let g:ale_fixers['*'] = ['trim_whitespace', 'remove_trailing_lines']
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
augroup GlobalFixers
|
||||||
|
autocmd!
|
||||||
|
autocmd VimEnter * call SetGlobalFixers()
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
" Set buffer-local fixers for Markdown files
|
||||||
|
augroup MarkdownFixers
|
||||||
|
autocmd!
|
||||||
|
autocmd FileType markdown let b:ale_fixers = ['prettier']
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
let g:ale_fix_on_save = 1
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
|
@ -15,3 +15,4 @@
|
||||||
./common/optional/git.nix
|
./common/optional/git.nix
|
||||||
|
|
||||||
];
|
];
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.firefox
|
pkgs.firefox
|
||||||
pkgs.neovim
|
|
||||||
pkgs.kitty
|
pkgs.kitty
|
||||||
pkgs.zathura
|
pkgs.zathura
|
||||||
pkgs.xfce.thunar
|
pkgs.xfce.thunar
|
||||||
|
|
|
@ -41,7 +41,7 @@ in
|
||||||
pkgs.curl
|
pkgs.curl
|
||||||
pkgs.just
|
pkgs.just
|
||||||
pkgs.git
|
pkgs.git
|
||||||
pkgs.neovim
|
pkgs.vim
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue