2023-06-18 09:51:33 +00:00
|
|
|
# TODO: vim-plug and Mason supports laziness. Probably worth it to explore incremental dependencies based on the project
|
|
|
|
# TODO: just install these things, then symlink to mason's bin directory
|
2022-12-30 08:45:15 +00:00
|
|
|
#
|
|
|
|
# One thing to consider, though, /nix/store of `nix-shell` or `nix-develop`
|
2023-06-12 06:51:47 +00:00
|
|
|
# might be different from `home-manager`'s (~/.nix_profile/bin/jq)
|
2023-06-18 00:46:31 +00:00
|
|
|
{
|
|
|
|
pkgs,
|
|
|
|
lib,
|
|
|
|
config,
|
|
|
|
proj_root,
|
|
|
|
...
|
|
|
|
}: let
|
2022-12-28 02:53:38 +00:00
|
|
|
# NOTE: Add packages to nvim_pkgs instead, so that it's available at userspace
|
|
|
|
# and is added to the path after wrapping.
|
|
|
|
# check: nix repl `homeConfigurations.hungtr.config.programs.neovim.finalPackage.buildCommand`
|
|
|
|
# see: :/--suffix.*PATH
|
|
|
|
# there should be mentions of additional packages
|
|
|
|
my_neovim = pkgs.neovim-unwrapped;
|
2023-06-18 00:46:31 +00:00
|
|
|
nvim_pkgs =
|
|
|
|
[
|
|
|
|
# pkgs.gccStdenv
|
2023-06-20 21:10:00 +00:00
|
|
|
# pkgs.tree-sitter
|
2023-06-18 00:46:31 +00:00
|
|
|
pkgs.fzf # file name fuzzy search
|
|
|
|
pkgs.ripgrep # content fuzzy search
|
|
|
|
pkgs.fd # Required by a Telescope plugin (?)
|
|
|
|
pkgs.rnix-lsp # doesn't work, Mason just installs it using cargo
|
|
|
|
pkgs.rust4cargo
|
|
|
|
pkgs.nickel
|
|
|
|
pkgs.nls
|
2023-01-19 21:37:58 +00:00
|
|
|
|
2023-06-18 00:46:31 +00:00
|
|
|
pkgs.go # doesn't work, Mason installs from runtime path
|
2023-01-25 18:44:16 +00:00
|
|
|
|
2023-06-18 00:46:31 +00:00
|
|
|
# Language-specific stuffs
|
|
|
|
pkgs.sumneko-lua-language-server
|
|
|
|
# pkgs.python3Packages.python-lsp-server
|
|
|
|
pkgs.nodePackages.pyright
|
|
|
|
pkgs.python3Packages.pylint
|
|
|
|
pkgs.python3Packages.flake8
|
|
|
|
# FIXME: installing ansible from here just doesn't work :/
|
|
|
|
# pkgs.ansible-lint
|
|
|
|
# pkgs.python38Packages.ansible
|
|
|
|
# pkgs.ansible-language-server
|
|
|
|
# TODO: the devShell should provide rust-analyzer so that
|
|
|
|
# cargo test builds binaries compatible with rust-analyzer
|
2023-01-03 22:34:51 +00:00
|
|
|
|
2023-06-18 00:46:31 +00:00
|
|
|
# pkgs.rust-analyzer
|
|
|
|
# rust_pkgs
|
|
|
|
# pkgs.evcxr # Rust REPL for Conjure!
|
2023-05-16 16:26:57 +00:00
|
|
|
]
|
2023-06-18 00:46:31 +00:00
|
|
|
++ lib.optionals (pkgs.stdenv.isDarwin) (
|
|
|
|
let
|
|
|
|
inherit (pkgs.darwin.apple_sdk.frameworks) System CoreFoundation;
|
|
|
|
in [
|
|
|
|
System
|
|
|
|
CoreFoundation
|
|
|
|
]
|
|
|
|
);
|
|
|
|
in {
|
2022-12-28 02:53:38 +00:00
|
|
|
options.base.neovim = {
|
|
|
|
enable = lib.mkOption {
|
|
|
|
default = true;
|
|
|
|
description = "enable personalized neovim as default editor";
|
|
|
|
type = lib.types.bool;
|
|
|
|
example = false;
|
2023-06-18 00:46:31 +00:00
|
|
|
f = let
|
|
|
|
adder = {
|
|
|
|
__functor = self: arg:
|
|
|
|
if builtins.isInt arg
|
|
|
|
then self // {x = self.x + arg;}
|
|
|
|
else self.x;
|
|
|
|
x = 0;
|
|
|
|
};
|
|
|
|
in {
|
|
|
|
what = adder 1 2 3 {};
|
|
|
|
};
|
2022-12-28 02:53:38 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
config = lib.mkIf config.base.neovim.enable {
|
2023-03-12 05:27:34 +00:00
|
|
|
# home-manager
|
2022-12-28 02:53:38 +00:00
|
|
|
programs.neovim = {
|
|
|
|
enable = true;
|
|
|
|
package = my_neovim;
|
|
|
|
viAlias = true;
|
|
|
|
vimAlias = true;
|
|
|
|
withPython3 = true;
|
|
|
|
withNodeJs = true;
|
|
|
|
extraPackages = nvim_pkgs;
|
2023-06-18 00:46:31 +00:00
|
|
|
extraLuaConfig = builtins.readFile "${proj_root.config.path}//neovim/init.lua";
|
|
|
|
plugins = let
|
|
|
|
inherit
|
|
|
|
(pkgs.vimPlugins)
|
|
|
|
plenary-nvim
|
|
|
|
nvim-treesitter
|
|
|
|
nvim-treesitter-textobjects
|
|
|
|
nvim-treesitter-context
|
|
|
|
telescope-fzf-native-nvim
|
|
|
|
telescope-file-browser-nvim
|
|
|
|
telescope-nvim
|
|
|
|
nvim-lspconfig
|
|
|
|
gruvbox-community
|
|
|
|
neodev-nvim
|
|
|
|
cmp-nvim-lsp
|
|
|
|
cmp-path
|
|
|
|
cmp-buffer
|
|
|
|
cmp-cmdline
|
|
|
|
nvim-cmp
|
|
|
|
lspkind-nvim
|
|
|
|
nvim-autopairs
|
|
|
|
nvim-ts-autotag
|
|
|
|
guess-indent-nvim
|
|
|
|
harpoon
|
|
|
|
zk-nvim
|
|
|
|
luasnip
|
|
|
|
fidget-nvim
|
|
|
|
rust-tools-nvim
|
|
|
|
cmp_luasnip
|
|
|
|
gitsigns-nvim
|
|
|
|
indent-blankline-nvim
|
|
|
|
lualine-nvim
|
|
|
|
mason-lspconfig-nvim
|
|
|
|
mason-nvim
|
|
|
|
neogit
|
|
|
|
nlua-nvim
|
|
|
|
nvim-jqx
|
|
|
|
nvim-surround
|
|
|
|
nvim-web-devicons
|
|
|
|
playground
|
|
|
|
todo-comments-nvim
|
|
|
|
trouble-nvim
|
|
|
|
vim-dispatch
|
|
|
|
vim-dispatch-neovim
|
|
|
|
vim-fugitive
|
|
|
|
vim-jack-in
|
2023-06-20 21:10:00 +00:00
|
|
|
sg-nvim
|
2023-09-14 05:14:16 +00:00
|
|
|
telescope-live-grep-args-nvim
|
2023-06-18 00:46:31 +00:00
|
|
|
;
|
|
|
|
in [
|
2023-06-05 03:17:13 +00:00
|
|
|
plenary-nvim
|
|
|
|
nvim-treesitter.withAllGrammars
|
|
|
|
nvim-treesitter-textobjects
|
|
|
|
telescope-fzf-native-nvim
|
|
|
|
telescope-file-browser-nvim
|
|
|
|
telescope-nvim
|
|
|
|
nvim-lspconfig
|
|
|
|
gruvbox-community
|
|
|
|
neodev-nvim
|
|
|
|
cmp-nvim-lsp
|
|
|
|
cmp-path
|
|
|
|
cmp-buffer
|
|
|
|
cmp-cmdline
|
|
|
|
nvim-cmp
|
|
|
|
lspkind-nvim
|
|
|
|
nvim-autopairs
|
|
|
|
nvim-ts-autotag
|
|
|
|
guess-indent-nvim
|
|
|
|
harpoon
|
|
|
|
zk-nvim
|
|
|
|
luasnip
|
|
|
|
nvim-treesitter-context
|
2023-06-07 04:19:13 +00:00
|
|
|
fidget-nvim
|
2023-06-12 06:51:47 +00:00
|
|
|
rust-tools-nvim
|
|
|
|
|
|
|
|
cmp_luasnip
|
|
|
|
gitsigns-nvim
|
|
|
|
indent-blankline-nvim
|
|
|
|
lualine-nvim
|
|
|
|
mason-lspconfig-nvim
|
|
|
|
mason-nvim
|
|
|
|
neogit
|
|
|
|
nlua-nvim
|
|
|
|
nvim-jqx
|
|
|
|
nvim-surround
|
|
|
|
nvim-web-devicons
|
|
|
|
playground
|
|
|
|
todo-comments-nvim
|
|
|
|
trouble-nvim
|
|
|
|
vim-dispatch
|
|
|
|
vim-dispatch-neovim
|
|
|
|
vim-fugitive
|
2023-06-18 00:46:31 +00:00
|
|
|
vim-jack-in
|
2023-06-20 21:10:00 +00:00
|
|
|
sg-nvim
|
2023-09-14 05:14:16 +00:00
|
|
|
telescope-live-grep-args-nvim
|
2023-06-18 00:46:31 +00:00
|
|
|
];
|
2022-12-28 02:53:38 +00:00
|
|
|
};
|
2022-12-30 08:45:15 +00:00
|
|
|
# home.packages = nvim_pkgs;
|
2022-12-28 02:53:38 +00:00
|
|
|
};
|
|
|
|
}
|