forked from foxora/nix
276 lines
7.5 KiB
Nix
276 lines
7.5 KiB
Nix
# TODO: look into changing to this:
|
|
# https://github.com/BirdeeHub/nix-wrapper-modules
|
|
{
|
|
inputs,
|
|
spkgs,
|
|
mpkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (inputs.nixcats)
|
|
utils
|
|
;
|
|
in
|
|
{
|
|
imports = [
|
|
inputs.nixcats.homeModule
|
|
];
|
|
|
|
config = {
|
|
# this value, nixCats is the defaultPackageName you pass to mkNixosModules
|
|
# it will be the namespace for your options.
|
|
nixCats = {
|
|
enable = true;
|
|
nixpkgs_version = inputs.nixpkgs-unstable;
|
|
# this will add the overlays from ./overlays and also,
|
|
# add any plugins in inputs named "plugins-pluginName" to pkgs.neovimPlugins
|
|
# It will not apply to overall system, just nixCats.
|
|
addOverlays =
|
|
# (import ./overlays inputs) ++
|
|
[
|
|
(utils.standardPluginOverlay inputs)
|
|
];
|
|
# see the packageDefinitions below.
|
|
# This says which of those to install.
|
|
packageNames = [ "auroranvim" ];
|
|
|
|
luaPath = "${./.}";
|
|
|
|
# the .replace vs .merge options are for modules based on existing configurations,
|
|
# they refer to how multiple categoryDefinitions get merged together by the module.
|
|
# for useage of this section, refer to :h nixCats.flake.outputs.categories
|
|
categoryDefinitions.replace =
|
|
{
|
|
pkgs,
|
|
settings,
|
|
categories,
|
|
extra,
|
|
name,
|
|
mkNvimPlugin,
|
|
...
|
|
}@packageDef:
|
|
{
|
|
lspsAndRuntimeDeps = with pkgs; {
|
|
general = [
|
|
ripgrep
|
|
fd
|
|
];
|
|
treesitter = [
|
|
tree-sitter
|
|
];
|
|
lang = {
|
|
lua = {
|
|
lsp = [ lua-language-server ];
|
|
format = [ stylua ];
|
|
};
|
|
nix = {
|
|
lsp = [
|
|
nil
|
|
nix-doc # TODO: i forgot what this is for
|
|
];
|
|
format = [ nixfmt ];
|
|
};
|
|
rust = {
|
|
lsp = [
|
|
cargo
|
|
mpkgs.rust-analyzer
|
|
];
|
|
format = [ rustfmt ];
|
|
};
|
|
zig = [
|
|
spkgs.zls # FIX: using spkgs version as zls is broken rn ;-;
|
|
];
|
|
elixir = [
|
|
elixir-ls
|
|
];
|
|
gleam = [
|
|
gleam
|
|
];
|
|
haskell = {
|
|
lsp = [ haskell-language-server ];
|
|
format = [ ormolu ];
|
|
};
|
|
java = [
|
|
jdt-language-server
|
|
javaPackages.compiler.openjdk17
|
|
javaPackages.compiler.openjdk21
|
|
];
|
|
};
|
|
};
|
|
|
|
startupPlugins = with pkgs.vimPlugins; {
|
|
general = [
|
|
lze
|
|
plenary-nvim
|
|
nvim-notify
|
|
nvim-web-devicons
|
|
base16-nvim
|
|
mini-nvim
|
|
];
|
|
treesitter = [
|
|
nvim-treesitter-textobjects
|
|
nvim-treesitter.withAllGrammars
|
|
];
|
|
};
|
|
|
|
optionalPlugins = with pkgs.vimPlugins; {
|
|
general = [
|
|
];
|
|
ui = [
|
|
dressing-nvim
|
|
];
|
|
qol = [
|
|
undotree
|
|
mini-hipatterns
|
|
];
|
|
telescope = [
|
|
telescope-nvim
|
|
telescope-fzf-native-nvim
|
|
telescope-ui-select-nvim
|
|
];
|
|
fyler = [
|
|
fyler-nvim
|
|
];
|
|
lsp = [
|
|
nvim-lspconfig
|
|
];
|
|
completion = [
|
|
blink-cmp
|
|
nvim-cmp
|
|
luasnip
|
|
friendly-snippets
|
|
cmp_luasnip
|
|
cmp-buffer
|
|
cmp-path
|
|
cmp-nvim-lua
|
|
cmp-nvim-lsp
|
|
cmp-cmdline
|
|
cmp-nvim-lsp-signature-help
|
|
cmp-cmdline-history
|
|
lspkind-nvim
|
|
];
|
|
format = [
|
|
conform-nvim
|
|
];
|
|
comment = [
|
|
comment-nvim
|
|
];
|
|
lang = {
|
|
java = [
|
|
nvim-jdtls
|
|
];
|
|
};
|
|
};
|
|
|
|
# shared libraries to be added to LD_LIBRARY_PATH
|
|
# variable available to nvim runtime
|
|
sharedLibraries = {
|
|
general = with pkgs; [
|
|
# libgit2
|
|
];
|
|
};
|
|
|
|
environmentVariables = {
|
|
lang = {
|
|
rust.lsp = {
|
|
# it literally won't see the rust-analyzer provided to it
|
|
# if you don't use an envrionment variable to tell it
|
|
RUST_ANALYZER_CMD = "${mpkgs.rust-analyzer}/bin/rust-analyzer";
|
|
};
|
|
elixir.lsp = {
|
|
ELIXIR_LS_CMD = "${pkgs.elixir-ls}/scripts/language_server.sh";
|
|
};
|
|
java.lsp = {
|
|
JAVA_HOME = "${pkgs.javaPackages.compiler.openjdk17}";
|
|
OPENJDK_17 = "${pkgs.javaPackages.compiler.openjdk17}";
|
|
OPENJDK_21 = "${pkgs.javaPackages.compiler.openjdk21}";
|
|
};
|
|
};
|
|
};
|
|
|
|
extraWrapperArgs = {
|
|
test = [
|
|
''--set CATTESTVAR2 "It worked again!"''
|
|
];
|
|
};
|
|
# lists of the functions you would have passed to
|
|
# python.withPackages or lua.withPackages
|
|
|
|
# get the path to this python environment
|
|
# in your lua config via
|
|
# vim.g.python3_host_prog
|
|
# or run from nvim terminal via :!<packagename>-python3
|
|
extraPython3Packages = {
|
|
test = _: [ ];
|
|
};
|
|
# populates $LUA_PATH and $LUA_CPATH
|
|
extraLuaPackages = {
|
|
test = [ (_: [ ]) ];
|
|
};
|
|
};
|
|
|
|
# see :help nixCats.flake.outputs.packageDefinitions
|
|
packageDefinitions.replace = {
|
|
# these are the names of your packages
|
|
# you can include as many as you wish.
|
|
auroranvim =
|
|
{ pkgs, ... }:
|
|
{
|
|
# they contain a settings set defined above
|
|
# see :help nixCats.flake.outputs.settings
|
|
settings = {
|
|
wrapRc = true;
|
|
# IMPORTANT:
|
|
# your alias may not conflict with your other packages.
|
|
aliases = [
|
|
"auroravim"
|
|
"auravim"
|
|
"foxyvim"
|
|
"avix"
|
|
"fvix"
|
|
"auim"
|
|
];
|
|
};
|
|
# and a set of categories that you want
|
|
# (and other information to pass to lua)
|
|
categories = {
|
|
general = true;
|
|
|
|
ui = true;
|
|
qol = true;
|
|
telescope = true;
|
|
fyler = true;
|
|
lsp = true;
|
|
completion = true;
|
|
treesitter = true;
|
|
format = true;
|
|
comment = true;
|
|
|
|
lang = {
|
|
lua = {
|
|
lsp = true;
|
|
format = true;
|
|
};
|
|
nix = {
|
|
lsp = true;
|
|
format = true;
|
|
};
|
|
rust = {
|
|
lsp = true;
|
|
format = true;
|
|
};
|
|
zig = true;
|
|
elixir = true;
|
|
gleam = true;
|
|
haskell = {
|
|
lsp = true;
|
|
format = true;
|
|
};
|
|
java = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|