181 lines
4.7 KiB
Nix
181 lines
4.7 KiB
Nix
{ self, inputs, ... }: {
|
|
flake-file.inputs = {
|
|
nvf = {
|
|
url = "github:notashelf/nvf";
|
|
inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
};
|
|
|
|
perSystem = { system, pkgs, config, ... }:
|
|
let
|
|
commonNeovimModule = {
|
|
config.vim = {
|
|
options = {
|
|
number = true;
|
|
relativenumber = true;
|
|
expandtab = true;
|
|
shiftwidth = 4;
|
|
tabstop = 4;
|
|
softtabstop = 4;
|
|
|
|
wrap = true;
|
|
linebreak = true;
|
|
};
|
|
|
|
syntaxHighlighting = true;
|
|
|
|
theme.enable = true;
|
|
theme.name = "catppuccin";
|
|
theme.style = "mocha";
|
|
|
|
git.enable = true;
|
|
# git.neogit.enable = true;
|
|
|
|
# https://github.com/akinsho/toggleterm.nvim
|
|
terminal.toggleterm.enable = true;
|
|
terminal.toggleterm.lazygit.enable = true;
|
|
terminal.toggleterm.lazygit.direction = "float";
|
|
terminal.toggleterm.lazygit.mappings.open = "<C-g>";
|
|
|
|
languages = {
|
|
enableTreesitter = true;
|
|
enableFormat = true;
|
|
|
|
nix.enable = true;
|
|
yaml.enable = true;
|
|
toml.enable = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
telescopeModule = {
|
|
config.vim = {
|
|
telescope = {
|
|
enable = true;
|
|
extensions = [
|
|
{
|
|
name = "fzf";
|
|
packages = [ pkgs.vimPlugins.telescope-fzf-native-nvim ];
|
|
setup = {
|
|
fzf = {
|
|
fuzzy = true;
|
|
};
|
|
};
|
|
}
|
|
];
|
|
};
|
|
|
|
keymaps = [
|
|
{
|
|
desc = "Key Maps [Telescope]";
|
|
key = "<leader>fkm";
|
|
mode = "n";
|
|
silent = false;
|
|
action = "<cmd>:Telescope keymaps<CR>";
|
|
}
|
|
{
|
|
desc = "Toggle Filesystem Tree [NeoTree]";
|
|
key = "<C-b>";
|
|
mode = [ "n" "v" "t" ];
|
|
silent = false;
|
|
action = "<cmd>:Neotree toggle filesystem left action=show<CR>";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
keymapsModule = {
|
|
config.vim = {
|
|
keymaps = [
|
|
{
|
|
desc = "Edit key mappings";
|
|
key = "<leader>ekm";
|
|
mode = [ "n" ];
|
|
silent = false;
|
|
action = "<cmd>:edit +/keymaps /home/john/.config/home-manager/jsl-dendritic/modules/programs/neovim.nix<CR>";
|
|
}
|
|
{
|
|
desc = "Home Manager Switch";
|
|
key = "<leader>nhms";
|
|
mode = [ "n" ];
|
|
silent = false;
|
|
action = "<cmd>:TermExec cmd='clear && nhms && exit' name='Nix Home Manager Switch' direction=float<CR>";
|
|
}
|
|
{
|
|
key = "<C-`>";
|
|
mode = [ "n" "v" "t" ];
|
|
silent = false;
|
|
action = "<cmd>:ToggleTerm<CR>";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
in {
|
|
packages.my-neovim = ((inputs.nvf.lib.neovimConfiguration {
|
|
inherit pkgs;
|
|
modules = [
|
|
commonNeovimModule
|
|
telescopeModule
|
|
keymapsModule
|
|
{
|
|
# https://nvf.notashelf.dev/search.html
|
|
config.vim = {
|
|
utility.nix-develop.enable = true;
|
|
|
|
utility.oil-nvim.enable = true;
|
|
utility.oil-nvim.gitStatus.enable = true;
|
|
|
|
filetree.neo-tree = {
|
|
enable = true;
|
|
};
|
|
|
|
# Enable Treesitter
|
|
treesitter = {
|
|
enable = true;
|
|
grammars = with pkgs.vimPlugins.nvim-treesitter-parsers; [ python ];
|
|
};
|
|
|
|
lsp.enable = true;
|
|
|
|
languages = {
|
|
markdown = {
|
|
enable = true;
|
|
extensions = {
|
|
# render-markdown-nvim.enable = true;
|
|
markview-nvim.enable = true;
|
|
};
|
|
};
|
|
|
|
bash.enable = true;
|
|
css.enable = true;
|
|
yaml.enable = true;
|
|
toml.enable = true;
|
|
|
|
python = {
|
|
enable = true;
|
|
dap.enable = true;
|
|
format.type = [ "ruff" ];
|
|
};
|
|
};
|
|
};
|
|
}
|
|
];
|
|
}).neovim).overrideAttrs (old: {
|
|
pname = "my-neovim";
|
|
version = "1.0.0";
|
|
});
|
|
|
|
packages.neovim-min = ((inputs.nvf.lib.neovimConfiguration {
|
|
inherit pkgs;
|
|
modules = [
|
|
commonNeovimModule
|
|
telescopeModule
|
|
keymapsModule
|
|
];
|
|
}).neovim).overrideAttrs (old: {
|
|
pname = "neovim-min";
|
|
version = "1.0.0";
|
|
});
|
|
};
|
|
}
|