mirror of
https://github.com/JulienMalka/snowfield.git
synced 2025-06-08 10:09:04 +02:00
Added newton config
This commit is contained in:
parent
f3cdf9d3e2
commit
736c627795
13 changed files with 1030 additions and 8 deletions
72
home-manager-modules/neovim/default.nix
Normal file
72
home-manager-modules/neovim/default.nix
Normal file
|
@ -0,0 +1,72 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
let
|
||||
cfg = config.luj.programs.neovim;
|
||||
dusk-vim = pkgs.vimUtils.buildVimPlugin {
|
||||
name = "dusk-vim";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "notusknot";
|
||||
repo = "dusk-vim";
|
||||
rev = "8eb71f092ebfa173a6568befbe522a56e8382756";
|
||||
sha256 = "09l4hda5jnyigc2hhlirv1rc8hsnsc4zgcv4sa4br8fryi73nf4g";
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
with lib;
|
||||
{
|
||||
options.luj.programs.neovim = {
|
||||
enable = mkEnableOption "activate neovim program";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable{
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
package = pkgs.neovim-unwrapped;
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# File tree
|
||||
nvim-web-devicons
|
||||
nvim-tree-lua
|
||||
# LSP
|
||||
nvim-lspconfig
|
||||
# Languages
|
||||
vim-nix
|
||||
|
||||
# Eyecandy
|
||||
nvim-treesitter
|
||||
bufferline-nvim
|
||||
galaxyline-nvim
|
||||
nvim-colorizer-lua
|
||||
pears-nvim
|
||||
dusk-vim
|
||||
|
||||
# Lsp and completion
|
||||
nvim-lspconfig
|
||||
nvim-compe
|
||||
|
||||
# Telescope
|
||||
telescope-nvim
|
||||
|
||||
# Indent lines
|
||||
indent-blankline-nvim
|
||||
];
|
||||
extraPackages = with pkgs; [
|
||||
gcc
|
||||
rnix-lsp
|
||||
tree-sitter
|
||||
sumneko-lua-language-server
|
||||
];
|
||||
extraConfig = ''
|
||||
luafile ${./lua}/lsp.lua
|
||||
luafile ${./lua}/nvim-tree.lua
|
||||
luafile ${./lua}/galaxyline.lua
|
||||
luafile ${./lua}/settings.lua
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
204
home-manager-modules/neovim/lua/galaxyline.lua
Executable file
204
home-manager-modules/neovim/lua/galaxyline.lua
Executable file
|
@ -0,0 +1,204 @@
|
|||
-- This file configures galaxyline, a fast and small statusline for nvim.
|
||||
-- The configuration was taken from github.com/siduck76/neovim-dotfiles/
|
||||
-- All I did was change the colors. Full credit goes to siduck76
|
||||
|
||||
local gl = require("galaxyline")
|
||||
local gls = gl.section
|
||||
|
||||
gl.short_line_list = {" "} -- keeping this table { } as empty will show inactive statuslines
|
||||
|
||||
local colors = {
|
||||
bg = "#2e303e",
|
||||
line_bg = "#2e303e",
|
||||
fg = "#e3e6ee",
|
||||
green = "#29d398",
|
||||
orange = "#efb993",
|
||||
red = "#e95678",
|
||||
lightbg = "#2e303e",
|
||||
lightbasdfg = "#393b4d",
|
||||
nord = "#9699b7",
|
||||
greenYel = "#efb993"
|
||||
}
|
||||
|
||||
gls.left[1] = {
|
||||
leftRounded = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
highlight = {colors.nord, colors.bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[2] = {
|
||||
statusIcon = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
highlight = {colors.fg, colors.bg},
|
||||
separator = " ",
|
||||
separator_highlight = {colors.lightbg, colors.lightbg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[3] = {
|
||||
FileIcon = {
|
||||
provider = "FileIcon",
|
||||
condition = buffer_not_empty,
|
||||
highlight = {require("galaxyline.provider_fileinfo").get_file_icon_color, colors.lightbg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[4] = {
|
||||
FileName = {
|
||||
provider = {"FileName", "FileSize"},
|
||||
condition = buffer_not_empty,
|
||||
highlight = {colors.fg, colors.lightbg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[5] = {
|
||||
teech = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
separator = " ",
|
||||
highlight = {colors.lightbg, colors.bg}
|
||||
}
|
||||
}
|
||||
|
||||
local checkwidth = function()
|
||||
local squeeze_width = vim.fn.winwidth(0) / 2
|
||||
if squeeze_width > 40 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
gls.left[6] = {
|
||||
DiffAdd = {
|
||||
provider = "DiffAdd",
|
||||
condition = checkwidth,
|
||||
icon = " ",
|
||||
highlight = {colors.greenYel, colors.line_bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[7] = {
|
||||
DiffModified = {
|
||||
provider = "DiffModified",
|
||||
condition = checkwidth,
|
||||
icon = " ",
|
||||
highlight = {colors.orange, colors.line_bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[8] = {
|
||||
DiffRemove = {
|
||||
provider = "DiffRemove",
|
||||
condition = checkwidth,
|
||||
icon = " ",
|
||||
highlight = {colors.lightbg, colors.line_bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[9] = {
|
||||
LeftEnd = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
separator = " ",
|
||||
separator_highlight = {colors.line_bg, colors.line_bg},
|
||||
highlight = {colors.line_bg, colors.line_bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[10] = {
|
||||
DiagnosticError = {
|
||||
provider = "DiagnosticError",
|
||||
icon = " ",
|
||||
highlight = {colors.red, colors.bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[11] = {
|
||||
Space = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
highlight = {colors.line_bg, colors.line_bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.left[12] = {
|
||||
DiagnosticWarn = {
|
||||
provider = "DiagnosticWarn",
|
||||
icon = " ",
|
||||
highlight = {colors.red, colors.bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.right[1] = {
|
||||
GitIcon = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
condition = require("galaxyline.provider_vcs").check_git_workspace,
|
||||
highlight = {colors.green, colors.line_bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.right[2] = {
|
||||
GitBranch = {
|
||||
provider = "GitBranch",
|
||||
condition = require("galaxyline.provider_vcs").check_git_workspace,
|
||||
highlight = {colors.green, colors.line_bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.right[3] = {
|
||||
right_LeftRounded = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
separator = " ",
|
||||
separator_highlight = {colors.bg, colors.bg},
|
||||
highlight = {colors.lightbg, colors.bg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.right[4] = {
|
||||
ViMode = {
|
||||
provider = function()
|
||||
local alias = {
|
||||
n = "NORMAL",
|
||||
i = "INSERT",
|
||||
c = "COMMAND",
|
||||
V = "VISUAL",
|
||||
[""] = "VISUAL",
|
||||
v = "VISUAL",
|
||||
R = "REPLACE"
|
||||
}
|
||||
return alias[vim.fn.mode()]
|
||||
end,
|
||||
highlight = {colors.fg, colors.lightbg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.right[5] = {
|
||||
PerCent = {
|
||||
provider = "LinePercent",
|
||||
separator = " ",
|
||||
separator_highlight = {colors.lightbg, colors.lightbg},
|
||||
highlight = {colors.fg, colors.lightbg}
|
||||
}
|
||||
}
|
||||
|
||||
gls.right[6] = {
|
||||
rightRounded = {
|
||||
provider = function()
|
||||
return " "
|
||||
end,
|
||||
highlight = {colors.lightbg, colors.bg}
|
||||
}
|
||||
}
|
||||
|
76
home-manager-modules/neovim/lua/lsp.lua
Executable file
76
home-manager-modules/neovim/lua/lsp.lua
Executable file
|
@ -0,0 +1,76 @@
|
|||
-- This file sets up autocompletion for neovim's native lsp
|
||||
|
||||
-- This enables all the language servers I want on my system
|
||||
-- Change these to whatever languages you use
|
||||
|
||||
require'lspconfig'.rnix.setup{}
|
||||
require'lspconfig'.sumneko_lua.setup{}
|
||||
vim.o.completeopt = "menuone,noselect"
|
||||
|
||||
-- Autocompletion setup
|
||||
require'compe'.setup {
|
||||
enabled = true;
|
||||
autocomplete = true;
|
||||
debug = false;
|
||||
min_length = 1;
|
||||
preselect = 'enable';
|
||||
throttle_time = 80;
|
||||
source_timeout = 200;
|
||||
incomplete_delay = 400;
|
||||
max_abbr_width = 100;
|
||||
max_kind_width = 100;
|
||||
max_menu_width = 100;
|
||||
documentation = false;
|
||||
source = {
|
||||
path = true;
|
||||
buffer = true;
|
||||
nvim_lsp = true;
|
||||
treesitter = true;
|
||||
};
|
||||
}
|
||||
|
||||
-- Set tab to accept the autocompletion
|
||||
local t = function(str)
|
||||
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
||||
end
|
||||
_G.tab_complete = function()
|
||||
if vim.fn.pumvisible() == 1 then
|
||||
return t "<C-n>"
|
||||
else
|
||||
return t "<S-Tab>"
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
||||
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
||||
|
||||
|
||||
-- set the path to the sumneko installation; if you previously installed via the now deprecated :LspInstall, use
|
||||
local sumneko_root_path = vim.fn.stdpath('cache')..'/lspconfig/sumneko_lua/lua-language-server'
|
||||
local sumneko_binary = "lua-language-server"
|
||||
|
||||
local runtime_path = vim.split(package.path, ';')
|
||||
table.insert(runtime_path, "lua/?.lua")
|
||||
table.insert(runtime_path, "lua/?/init.lua")
|
||||
|
||||
require'lspconfig'.sumneko_lua.setup {
|
||||
cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"};
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
version = 'LuaJIT',
|
||||
path = runtime_path,
|
||||
},
|
||||
diagnostics = {
|
||||
globals = {'vim'},
|
||||
},
|
||||
workspace = {
|
||||
library = vim.api.nvim_get_runtime_file("", true),
|
||||
preloadFileSize = 120
|
||||
},
|
||||
telemetry = {
|
||||
enable = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
60
home-manager-modules/neovim/lua/nvim-tree.lua
Executable file
60
home-manager-modules/neovim/lua/nvim-tree.lua
Executable file
|
@ -0,0 +1,60 @@
|
|||
-- following options are the default
|
||||
-- each of these are documented in `:help nvim-tree.OPTION_NAME`
|
||||
require'nvim-tree'.setup {
|
||||
disable_netrw = true,
|
||||
hijack_netrw = true,
|
||||
open_on_setup = false,
|
||||
ignore_ft_on_setup = {},
|
||||
auto_close = false,
|
||||
open_on_tab = false,
|
||||
hijack_cursor = false,
|
||||
update_cwd = false,
|
||||
update_to_buf_dir = {
|
||||
enable = true,
|
||||
auto_open = true,
|
||||
},
|
||||
diagnostics = {
|
||||
enable = false,
|
||||
icons = {
|
||||
hint = "",
|
||||
info = "",
|
||||
warning = "",
|
||||
error = "",
|
||||
}
|
||||
},
|
||||
update_focused_file = {
|
||||
enable = false,
|
||||
update_cwd = false,
|
||||
ignore_list = {}
|
||||
},
|
||||
system_open = {
|
||||
cmd = nil,
|
||||
args = {}
|
||||
},
|
||||
filters = {
|
||||
dotfiles = false,
|
||||
custom = {}
|
||||
},
|
||||
git = {
|
||||
enable = true,
|
||||
ignore = true,
|
||||
timeout = 500,
|
||||
},
|
||||
view = {
|
||||
width = 30,
|
||||
height = 30,
|
||||
hide_root_folder = false,
|
||||
side = 'left',
|
||||
auto_resize = false,
|
||||
mappings = {
|
||||
custom_only = false,
|
||||
list = {}
|
||||
},
|
||||
number = false,
|
||||
relativenumber = false
|
||||
},
|
||||
trash = {
|
||||
cmd = "trash",
|
||||
require_confirm = true
|
||||
}
|
||||
}
|
96
home-manager-modules/neovim/lua/settings.lua
Normal file
96
home-manager-modules/neovim/lua/settings.lua
Normal file
|
@ -0,0 +1,96 @@
|
|||
-- Lazy load everything!
|
||||
--
|
||||
--
|
||||
--dofile("lsp.lua")
|
||||
--dofile("galaxyline.lua")
|
||||
--dofile("nvim-tree.lua")
|
||||
local opt = vim.opt
|
||||
local g = vim.g
|
||||
|
||||
|
||||
vim.cmd [[
|
||||
set nowrap
|
||||
set nobackup
|
||||
set nowritebackup
|
||||
set noerrorbells
|
||||
set noswapfile
|
||||
|
||||
colorscheme dusk
|
||||
function! Preserve(command)
|
||||
let w = winsaveview()
|
||||
execute a:command
|
||||
call winrestview(w)
|
||||
endfunction
|
||||
autocmd FileType nix map <nowait> <leader>u :call Preserve("%!update-nix-fetchgit --location=" . line(".") . ":" . col("."))<CR>
|
||||
autocmd BufWinEnter NvimTree setlocal nonumber
|
||||
map ; :
|
||||
highlight IndentBlanklineChar guifg = #393b4d
|
||||
|
||||
]]
|
||||
|
||||
-- Enable plugins
|
||||
require('bufferline').setup{}
|
||||
require('pears').setup()
|
||||
require('colorizer').setup()
|
||||
|
||||
-- Treesitter settings
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
ensure_installed = "all", -- one of "all", "maintained" (parsers with maintainers), or a list of languages
|
||||
highlight = {
|
||||
enable = true
|
||||
},
|
||||
}
|
||||
|
||||
local map = vim.api.nvim_set_keymap
|
||||
options = { noremap = true }
|
||||
map('n', '<C-p>', ':NvimTreeToggle <CR>', options)
|
||||
map('n', '<C-f>', ':Telescope find_files <CR>', options)
|
||||
map('n', '<C-n>', ':Telescope live_grep <CR>', options)
|
||||
map('n', '<C-l>', ':noh <CR>', options)
|
||||
map('n', '<C-s>', ':!xclip -sel c -o | pygmentize -f html | xclip -sel c <CR> <CR>', options)
|
||||
vim.api.nvim_set_keymap('n', '0', "getline('.')[0 : col('.') - 2] =~# '^\\s\\+$' ? '0' : '^'", {silent = true, noremap = true, expr = true})
|
||||
g.mapleader = ' '
|
||||
|
||||
-- Indent line
|
||||
g.indent_blankline_char = '▏'
|
||||
|
||||
-- Performance
|
||||
opt.lazyredraw = true;
|
||||
opt.shell = "zsh"
|
||||
opt.shadafile = "NONE"
|
||||
|
||||
-- Colors
|
||||
opt.termguicolors = true
|
||||
|
||||
-- Undo files
|
||||
opt.undofile = true
|
||||
|
||||
-- Indentation
|
||||
opt.smartindent = true
|
||||
opt.tabstop = 4
|
||||
opt.shiftwidth = 4
|
||||
opt.shiftround = true
|
||||
opt.expandtab = true
|
||||
opt.scrolloff = 3
|
||||
|
||||
-- Set clipboard to use system clipboard
|
||||
opt.clipboard = "unnamedplus"
|
||||
|
||||
-- Use mouse
|
||||
opt.mouse = "a"
|
||||
|
||||
-- Nicer UI settings
|
||||
opt.cursorline = true
|
||||
opt.relativenumber = true
|
||||
opt.number = true
|
||||
|
||||
-- Get rid of annoying viminfo file
|
||||
opt.viminfo = ""
|
||||
opt.viminfofile = "NONE"
|
||||
|
||||
-- Miscellaneous quality of life
|
||||
opt.ignorecase = true
|
||||
opt.ttimeoutlen = 5
|
||||
opt.compatible = false
|
||||
opt.hidden = true
|
||||
opt.shortmess = "atI"
|
Loading…
Add table
Add a link
Reference in a new issue