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
|
|
|
|
2024-08-25 03:08:51 +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
|
|
|
|
2024-08-25 03:08:51 +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;
|
2024-11-24 01:04:24 +00:00
|
|
|
treesitterWithGrammars = nvim-treesitter.withAllGrammars;
|
2024-05-30 22:04:10 +00:00
|
|
|
|
2024-07-22 07:48:31 +00:00
|
|
|
treesitter-parsers = pkgs.symlinkJoin {
|
|
|
|
name = "treesitter-parsers";
|
|
|
|
paths = treesitterWithGrammars.dependencies;
|
|
|
|
};
|
|
|
|
in
|
|
|
|
lib.mkIf cfg.enable {
|
2024-08-30 03:27:43 +00:00
|
|
|
snowhawk.repo-clone.enable = true;
|
2024-08-30 03:32:25 +00:00
|
|
|
repo-clone.repos = {
|
|
|
|
"${config.home.homeDirectory}/.config/nvim".url = lib.zgitRepo "nvim";
|
|
|
|
};
|
2024-08-30 03:27:43 +00:00
|
|
|
|
2024-07-22 07:48:31 +00:00
|
|
|
# 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-10-20 11:20:05 +00:00
|
|
|
stylua
|
2024-10-20 11:26:39 +00:00
|
|
|
taplo
|
2024-11-26 02:28:06 +00:00
|
|
|
gnumake
|
|
|
|
zig
|
2024-11-29 20:51:30 +00:00
|
|
|
clang-tools
|
2024-05-30 03:31:14 +00:00
|
|
|
];
|
|
|
|
};
|
2024-07-22 07:48:31 +00:00
|
|
|
};
|
2024-05-30 03:31:14 +00:00
|
|
|
}
|