148 lines
3.2 KiB
Nix
148 lines
3.2 KiB
Nix
{ pkgs, ... }:
|
|
let
|
|
nixvim = import (
|
|
builtins.fetchGit {
|
|
url = "https://github.com/nix-community/nixvim";
|
|
ref = "nixos-24.05";
|
|
}
|
|
);
|
|
in
|
|
{
|
|
#################### Git configuration ####################
|
|
programs.git = {
|
|
enable = true;
|
|
lfs.enable = true;
|
|
config = {
|
|
user = {
|
|
email = "vili.m.sinerva@gmail.com";
|
|
name = "Vili Sinervä";
|
|
signingkey = "DF8FEAF54EFAC996!";
|
|
};
|
|
merge = {
|
|
ff = "true";
|
|
};
|
|
pull = {
|
|
ff = "only";
|
|
};
|
|
commit.gpgsign = "true";
|
|
};
|
|
};
|
|
|
|
#################### Packages ####################
|
|
environment.systemPackages = with pkgs; [
|
|
nixfmt-rfc-style
|
|
nixd
|
|
];
|
|
|
|
#################### Neovim configuration ####################
|
|
imports = [ nixvim.nixosModules.nixvim ];
|
|
|
|
programs.nixvim = {
|
|
enable = true;
|
|
defaultEditor = true;
|
|
vimAlias = true;
|
|
colorschemes.vscode.enable = true;
|
|
|
|
globals.mapleader = " ";
|
|
|
|
opts = {
|
|
colorcolumn = "100";
|
|
cursorline = true;
|
|
number = true;
|
|
showcmd = true;
|
|
signcolumn = "yes";
|
|
|
|
scrolloff = 16;
|
|
shiftwidth = 3;
|
|
tabstop = 3;
|
|
};
|
|
|
|
keymaps = [
|
|
{
|
|
key = "<C-h>";
|
|
action = "<cmd>TmuxNavigateLeft<cr>";
|
|
options.silent = true;
|
|
}
|
|
{
|
|
key = "<C-j>";
|
|
action = "<cmd>TmuxNavigateDown<cr>";
|
|
options.silent = true;
|
|
}
|
|
{
|
|
key = "<C-k>";
|
|
action = "<cmd>TmuxNavigateUp<cr>";
|
|
options.silent = true;
|
|
}
|
|
{
|
|
key = "<C-l>";
|
|
action = "<cmd>TmuxNavigateRight<cr>";
|
|
options.silent = true;
|
|
}
|
|
];
|
|
|
|
# TODO Autocomplete
|
|
# TODO Filebrowser
|
|
# TODO Check desireable keybinds and commands for all plugins
|
|
plugins = {
|
|
gitsigns.enable = true;
|
|
lualine = {
|
|
enable = true;
|
|
iconsEnabled = false;
|
|
};
|
|
markdown-preview.enable = true;
|
|
nix.enable = true;
|
|
rainbow-delimiters.enable = true;
|
|
sleuth.enable = true;
|
|
tmux-navigator = {
|
|
enable = true;
|
|
settings.no_mappings = true;
|
|
};
|
|
treesitter = {
|
|
enable = true;
|
|
folding = true;
|
|
indent = true;
|
|
nixGrammars = true;
|
|
};
|
|
|
|
# cmp-vsnip.enable = true;
|
|
friendly-snippets.enable = true;
|
|
nvim-autopairs.enable = true;
|
|
|
|
lsp = {
|
|
enable = true;
|
|
keymaps = {
|
|
diagnostic = {
|
|
"<leader>j" = "goto_next";
|
|
"<leader>k" = "goto_prev";
|
|
};
|
|
lspBuf = {
|
|
K = "hover";
|
|
gD = "references";
|
|
gd = "definition";
|
|
gi = "implementation";
|
|
gt = "type_definition";
|
|
};
|
|
};
|
|
servers = {
|
|
clangd.enable = true;
|
|
cmake.enable = true;
|
|
dockerls.enable = true;
|
|
docker-compose-language-service.enable = true;
|
|
eslint.enable = true;
|
|
html.enable = true;
|
|
jsonls.enable = true;
|
|
nixd.enable = true;
|
|
pylsp.enable = true;
|
|
rust-analyzer = {
|
|
enable = true;
|
|
installCargo = true;
|
|
installRustc = true;
|
|
};
|
|
yamlls.enable = true;
|
|
};
|
|
};
|
|
lsp-format.enable = true;
|
|
|
|
};
|
|
};
|
|
}
|