Start migration to using flake-parts
This commit is contained in:
164
features-home-manager/neovim/default.nix
Normal file
164
features-home-manager/neovim/default.nix
Normal file
@@ -0,0 +1,164 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [inputs.nixvim.homeModules.nixvim];
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
VISUAL = "nvim";
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
git
|
||||
gnumake
|
||||
gcc
|
||||
ripgrep
|
||||
fd
|
||||
stylua
|
||||
black
|
||||
nixfmt-rfc-style # nixfmt
|
||||
];
|
||||
|
||||
programs.nixvim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
colorschemes.catppuccin = {
|
||||
enable = true;
|
||||
settings.flavour = "mocha";
|
||||
};
|
||||
|
||||
globals.mapleader = " ";
|
||||
opts = {
|
||||
number = false;
|
||||
relativenumber = false;
|
||||
ignorecase = true;
|
||||
smartcase = true;
|
||||
};
|
||||
clipboard.register = "unnamedplus"; # Use system clipboard
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
action = "<cmd>Telescope live_grep<cr>";
|
||||
key = "<leader>/";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope find_files<cr>";
|
||||
key = "<leader><space>";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Telescope file_browser path=%:p:h<cr>";
|
||||
key = "<leader>.";
|
||||
}
|
||||
{
|
||||
action = "<cmd>Neogit<cr>";
|
||||
key = "<leader>gg";
|
||||
}
|
||||
{
|
||||
key = "<C-s>";
|
||||
action = "<esc><cmd>lua require('conform').format()<cr><cmd>write<cr>";
|
||||
mode = [
|
||||
"i"
|
||||
"x"
|
||||
"n"
|
||||
"s"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
plugins = {
|
||||
lualine.enable = true;
|
||||
commentary.enable = true;
|
||||
which-key.enable = true;
|
||||
treesitter.enable = true; # enables all grammar packages
|
||||
neogit.enable = true; # like magit
|
||||
trouble.enable = true;
|
||||
web-devicons.enable = true;
|
||||
orgmode.enable = true; # org-mode support
|
||||
|
||||
# Shows file trees
|
||||
oil = {
|
||||
enable = true;
|
||||
settings = {
|
||||
view_options.show_hidden = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Code formatting
|
||||
conform-nvim = {
|
||||
enable = true;
|
||||
settings.formatters_by_ft = {
|
||||
lua = ["stylua"];
|
||||
python = ["black"];
|
||||
nix = ["nixfmt"];
|
||||
};
|
||||
# extraOptions = {
|
||||
# default_format_opts.lsp_format = "fallback";
|
||||
# };
|
||||
};
|
||||
|
||||
# autocomplete
|
||||
cmp = {
|
||||
enable = true;
|
||||
autoEnableSources = true;
|
||||
settings.sources = [
|
||||
{name = "nvim_lsp";}
|
||||
{name = "path";}
|
||||
{name = "buffer";}
|
||||
];
|
||||
settings.mapping = {
|
||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
||||
"<C-e>" = "cmp.mapping.abort()";
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
};
|
||||
};
|
||||
|
||||
# Fuzzy finder
|
||||
telescope = {
|
||||
enable = true;
|
||||
settings.defaults.mappings = {
|
||||
i = {
|
||||
"<C-j>".__raw = "require('telescope.actions').move_selection_next";
|
||||
"<C-k>".__raw = "require('telescope.actions').move_selection_previous";
|
||||
"<tab>".__raw = "require('telescope.actions').select_default";
|
||||
};
|
||||
};
|
||||
extensions = {
|
||||
fzf-native.enable = true;
|
||||
file-browser = {
|
||||
enable = true;
|
||||
settings = {
|
||||
hidden = true; # show hidden files
|
||||
follow_symlinks = true;
|
||||
no_ignore = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
lsp = {
|
||||
enable = true; # includes lsp-config, default settings for the lsps
|
||||
servers = {
|
||||
rust_analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
nixd.enable = true; # nix
|
||||
pyright.enable = true; # python
|
||||
dockerls.enable = true; # docker
|
||||
lua_ls.enable = true; # lua
|
||||
clangd.enable = true; # c, c++
|
||||
dartls.enable = true; # dart, flutter
|
||||
digestif.enable = true; # latex
|
||||
tinymist.enable = true; # typst
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user