nixos/home/modules/neovim.nix

63 lines
1.5 KiB
Nix
Raw Normal View History

2024-08-25 01:56:46 +00:00
{ pkgs, lib, config, inputs, ... }:
2024-05-30 06:34:10 +00:00
2024-05-30 03:31:14 +00:00
let
cfg = config.snowhawk.neovim;
2024-08-25 01:56:46 +00:00
nightlyNeovim = inputs.neovim-overlay.packages.${pkgs.system}.default;
2024-05-30 03:31:14 +00:00
in
{
options.snowhawk.neovim = {
2024-08-25 01:56:46 +00:00
enable = lib.mkEnableOption "neovim home-manager module";
nightly = lib.mkEnableOption "nightly build of neovim";
2024-05-30 06:34:10 +00:00
package = lib.mkOption {
type = with lib.types; package;
default = if cfg.nightly then nightlyNeovim else pkgs.neovim-unwrapped;
2024-05-30 03:31:14 +00:00
};
};
2024-08-25 03:11:12 +00:00
2024-07-22 07:48:31 +00:00
config =
let
nvim-treesitter = pkgs.vimPlugins.nvim-treesitter;
treesitterWithGrammars = nvim-treesitter.withPlugins (_: nvim-treesitter.allGrammars);
2024-07-22 07:48:31 +00:00
treesitter-parsers = pkgs.symlinkJoin {
name = "treesitter-parsers";
paths = treesitterWithGrammars.dependencies;
};
in
lib.mkIf cfg.enable {
# Set nvim as manpager and default editor
home.sessionVariables = {
EDITOR = "nvim";
MANPAGER = "nvim +Man!";
};
2024-05-30 03:31:14 +00:00
2024-08-08 09:49:59 +00:00
xdg.configFile."nvim/lua/parsers.lua".text = /* lua */ ''
2024-07-22 07:48:31 +00:00
vim.opt.runtimepath:append ("${treesitter-parsers}")
'';
programs.neovim = {
2024-05-30 03:31:14 +00:00
enable = true;
coc.enable = false;
package = cfg.package;
2024-05-30 06:34:10 +00:00
withNodeJs = true;
withPython3 = true;
withRuby = true;
2024-05-30 03:31:14 +00:00
plugins = [
treesitterWithGrammars
];
2024-05-30 06:34:10 +00:00
2024-05-30 03:31:14 +00:00
extraPackages = with pkgs; [
nil
nixpkgs-fmt
rustup
lua-language-server
2024-05-30 06:46:12 +00:00
fzf
2024-05-30 03:31:14 +00:00
];
};
2024-07-22 07:48:31 +00:00
};
2024-05-30 03:31:14 +00:00
}